Token导航 LogoToken导航TokenDH.com
Vehicle Diagnostic Assistant logo
AI代理stdio官方级别未说明来源级核验

Vehicle Diagnostic Assistant

MCP Server

一个通过AI代理连接汽车OBD-II端口进行故障诊断的智能工具,适用于车辆维修和健康监测。

工具数

3

提示词数

0

GitHub Stars

2

资源数

0
PythonClaudeAI代理Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

castlebbs

提供方

castlebbs

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

黑客松

这是我们为Anthropic Gradio MCP的第一个生日黑客马拉松提交的一部分:https://huggingface.co/spaces/MCP-1st-Birthday/Vehicle-Diagnostic-Assistant

此存储库涵盖了AI Agent。我们也在黑客马拉松中开发了MCP服务器,您可以在此处访问:https://github.com/castlebbs/Embedded-MCP-ELM327

项目概述

对于第二次黑客马拉松,我们决定玩得开心,并创建了一个直接连接到您的汽车并帮助您诊断问题的AI代理。

对于这个项目,我们做了:

  • AI代理和聊天机器人执行汽车诊断
  • 诊断MCP服务器,我们直接安装在OBD-II设备上。
大多数汽车都有一个OBD-II端口,可以让诊断设备与汽车的计算机通信。机械师将他们的扫描仪连接到这个端口,以读取汽车健康信息,并找出警告灯亮起的原因。

上面是我们使用的OBD-II加密狗,我们不得不打开它,用我们的特殊黑客马拉松固件替换固件☺️

HuggingFace空间上的演示正在连接到OBD-II _模拟器_ (我们不希望每个人都弄乱我们的车:-)。有趣的是,模拟器也是一个Gradio空间: OBD-II模拟器Gradio空间

如果您想了解更多关于我们如何在诊断设备上实现MCP服务器的详细信息,请导航到“嵌入式设备上的MCP服务器”选项卡。

查看我们对上一次活动的参与情况: 游戏中AI生成3D环境.

______________________________________________________________________

技术架构

系统概述

车辆诊断助手由三个主要部件组成:

  1. Gradio Web界面 -面向用户的聊天界面,支持流式响应
  2. LangChain/LangGraph代理 -协调工具调用和AI推理
  3. MCP 服务器 -通过模型上下文协议提供车辆诊断功能
User → Gradio UI → LangGraph Agent → MCP Tools → OBD-II Device → Vehicle ECU
                        ↓
                   AI Model (Nebius/Anthropic)
                        ↓
                   Additional Tools (YouTube, VIN decoder, calculators)

组件详情

1.AI代理(app.py)

代理人使用 LangGraph 对于支持流媒体的有状态会话管理:

  • 模型:可配置的LLM后端:

- Nebius AI(Qwen3-Coder-480B,Llama-3.3-70B,DeepSeek-R1)

  • 检查点:InMemorySaver用于会话状态持久化
  • 消息流:通过工具调用跟踪逐个令牌流式传输
  • 会话管理:使用UUID进行基于线程的对话隔离

代理配置:

agent = create_agent(
    model=model,
    system_prompt=system_prompt,
    tools=all_tools,
    checkpointer=checkpointer,
)

2.MCP服务器集成

运输:基于HTTP的流媒体协议(streamable_http) 协议:基于HTTP的JSON-RPC 2.0 端点:

  • 物理设备: http://192.168.10.69/mcp
  • 模拟器: https://castlebbs-elm327-simulator.hf.space/gradio_api/mcp/

可用的MCP工具:

  • get_system_status -MCP服务器状态信息
  • send_elm327_command -原始ELM327 AT命令和OBD-II PID查询
  • get_history -历史PID数据检索

3.自定义工具(tools.py)

代理可以访问专门的处理工具:

OBD-II数据处理:

  • hex_to_decimal(hex_value) -将十六进制响应转换为十进制
  • combine_bytes(byte_a, byte_b, byte_c, byte_d) -多字节值组合(大端序)
  • calculate_obd_value(formula, bytes) -应用OBD-II公式(例如。, (A*256+B)/4 RPM)

车辆信息:

  • decode_vin(vin) -通过NHTSA vPIC API查找VIN
  • search_youtube_video(query) -维修教程搜索

安全特性:

  • safe_eval() -沙盒公式计算(无任意代码执行)
  • 有限运营商: +, -, *, /, //, %, **, unary +/-
  • 指数限制和除零保护

4.嵌入式MCP服务器(W600-B800固件)

硬件平台:

  • 微控制器:WinnerMicro W600-B800
  • RTOS:自由
  • 网络堆栈:lwIP
  • 通信:UART到ELM327芯片(38400波特,8N1)

固件功能:

  • OTA(空中下载)固件更新
  • 用于远程调试的UDP系统日志
  • ELM327协议驱动程序,带模拟模式
  • MCP端点的HTTP服务器
  • JSON-RPC 2.0请求处理程序

协议栈:

MCP Client (Agent) → HTTP Request → JSON-RPC 2.0 → MCP Method Router → Tool Handlers → ELM327 Driver → UART → ELM327 Chip → CAN Bus → Vehicle ECU

OBD-II协议

OBD-II(车载诊断II) 是一种标准化的车辆诊断协议:

  • PID(参数ID):传感器数据的标准化代码(例如。, 01 0C 发动机转速)
  • DTC(故障诊断码):格式为P0XXX、C0XXX、B0XXX、U0XXX的错误代码
  • 模式:

- 模式01:当前数据 - 模式02:冻结帧数据 - 模式03:存储的DTC - 模式04:清除故障诊断码 - 模式09:车辆信息(VIN)

ELM327:工业标准OBD-II解释器芯片,将UART命令转换为CAN/ISO协议。

______________________________________________________________________

安装和设置

先决条件

  • Python 3.8+
  • pip包管理器
  • 访问OBD-II设备或模拟器

安装步骤

  1. 克隆仓库:
   git clone 
   cd Vehicle-Diagnostic-Assistant
  1. 安装依赖项:
   pip install -r requirements.txt
  1. 配置API密钥:

- 对于Nebius AI:设置 NEBIUS_API_KEY 环境变量

  1. 配置MCP服务器端点app.py:
   "url": "http://192.168.10.69/mcp",  # Physical device
   # or
   "url": "https://castlebbs-elm327-simulator.hf.space/gradio_api/mcp/",  # Simulator
  1. 启动应用程序:
   python app.py

Docker部署

docker-compose up --build

______________________________________________________________________

用法示例

基本车辆诊断

示例1:检查发动机状态

User: "Get system information"
Agent: [Calls get_system_status tool] → Shows information about the ELM327 MCP server.

示例2:读取发动机转速

User: "What's my current RPM?"
Agent: [Calls send_obd2_command with PID 01 0C] → "41 0C 1A F8"
Agent: [Calls combine_bytes + calculate_obd_value] → "1710 RPM"

示例3:解码VIN

User: "Decode VIN 5TDKRKEC7PS142916"
Agent: [Calls decode_vin tool] → Returns make, model, year, engine specs

示例4:诊断错误代码

User: "I have a P0420 code, what does it mean?"
Agent: [Analyzes DTC] → "Catalyst System Efficiency Below Threshold"
Agent: [Calls search_youtube_video] → Returns repair tutorial link

高级用法

自定义PID计算:

# The agent can calculate any OBD-II PID using formulas
# Example: Fuel pressure (PID 01 0A)
calculate_obd_value("A * 3", byte_a="4F")  # Returns 237 kPa

历史数据分析:

# Retrieve historical PID data collected by the MCP server
get_history(pid="01 0C", limit=10)  # Last 10 RPM readings

______________________________________________________________________

依赖项

Python包(requirements.txt)

langchain                    # LLM framework
langchain[anthropic]         # Anthropic Claude support (optional)
langchain_nebius             # Nebius AI integration
langchain-mcp-adapters       # MCP protocol adapters
gradio                       # Web UI framework
youtube-search               # YouTube API wrapper

嵌入式固件依赖关系

  • WinnerMicro W600 SDK -FreeRTOS、lwIP、外围设备驱动程序
  • EasyLogger -针对UDP syslog支持进行了修改
  • 自定义库:

- elm327.c -ELM327协议驱动程序 - mcp_http.c -MCP的HTTP服务器 - mcp_jsonrpc.c -JSON-RPC 2.0实现 - mcp_methods.c -MCP工具处理程序

______________________________________________________________________

开发说明

系统提示设计

代理使用中定义的系统提示 prompts.py.

DTC显示部件

dtc_display.py 模块提供了一个自定义的Gradio组件,用于呈现故障诊断码,该组件具有:

  • 颜色编码的严重程度(红色表示严重,黄色表示警告)
  • 描述和可能原因
  • 建议维修

流媒体架构

代理通过以下方式实现逐个令牌的流式传输:

  • 实时工具调用可视化
  • 部分工具调用的参数累积
  • 多个工具的并发消息跟踪
  • 带有加载指示器的流畅用户体验

使用模拟器进行测试

Gradio OBD-II模拟器提供:

  • 没有真实车辆的模拟ECU响应
  • 可配置的发动机参数
  • DTC注入用于测试诊断工作流程
  • 安全的发展环境

______________________________________________________________________

技术规格

通信协议

协议详细信息
应用程序MCP(模型上下文协议)工具调用接口
RPCJSON-RPC 2.0请求/响应格式
传输HTTP。可流式传输HTTP
车辆OBD-IIISO 15765-4(CAN)、ISO 9141-2、ISO 14230-4
解释器ELM327AT命令集
物理UART38400波特,8N1

支持的OBD-II PID

代理可以查询任何标准PID,包括:

  • 01 00:支持PID\[01-20\]
  • 01 0C:发动机转速
  • 01 0天:车辆速度
  • 01 05:发动机冷却液温度
  • 01 0F:进气温度
  • 01 11:油门位置
  • 01 10:MAF空气流量
  • 01 0E:时间提前
  • 01 2F:燃油箱液位
  • 09 02:车辆识别码(VIN)

错误处理

  • MCP连接故障:带有错误消息的优雅降级
  • 工具超时:具有重试逻辑的20秒超时
  • 无效响应:十六进制验证和格式检查
  • 除以零:在所有计算工具中都受到保护
  • JSON-RPC格式错误:根据规范的错误代码响应

______________________________________________________________________

团队

  • @stargarnet:人工智能试剂开发
  • @castlebbs:MCP服务器和嵌入式固件

AI积分赞助商

  • Nebius代币工厂

技术栈

前端和代理:

  • Gradio 6-交互式网络界面
  • LangChain/LangGraph-代理编排
  • Nebius AI/人类克劳德-语言模型

后端工具:

  • MCP服务器(嵌入OBD-II加密狗或模拟器中)

- 系统状态监控 - ELM327命令执行 - OBD-II PID查询 - 历史数据检索

  • OBD-II响应解码工具
  • 十六进制转换实用程序
  • NHTSA vPIC VIN解码器
  • YouTube搜索集成

嵌入式系统:

  • WinnerMicro W600-B800微控制器
  • FreeRTOS+lwIP
  • 自定义ELM327驱动器
  • HTTP/JSON-RPC服务器

______________________________________________________________________

项目结构

Vehicle-Diagnostic-Assistant/
├── app.py                      # Main Gradio application
├── tools.py                    # Custom LangChain tools
├── prompts.py                  # System prompts for the agent
├── dtc_display.py              # DTC rendering component
├── requirements.txt            # Python dependencies
├── docker-compose.yml          # Docker deployment config
├── Dockerfile                  # Container build instructions
├── styles.css                  # Custom UI styling
│
├── assets/                     # Images and media
│   ├── obd.png                 # Hardware photos
│   ├── agent.png               # UI screenshots
│   └── probes.png              # Firmware upload setup
│
├── MCP_servers/
│   └── gradio-OBD2-simulator/  # Simulator MCP server
│       ├── app.py              # Gradio simulator interface
│       └── README.md           # Simulator documentation
│
├── hackathon_detail.md         # Hackathon submission details
├── mcp_server_detail.md        # Embedded firmware documentation
└── LICENSE                     # Project license

关键文件说明

  • app.py:主要应用程序入口点。初始化LangGraph代理,连接到MCP服务器,处理流式聊天界面
  • tools.py:定义用于十六进制转换、字节组合、OBD-II计算、VIN解码和YouTube搜索的自定义工具
  • prompts.py:包含系统提示,为代理提供车辆诊断知识
  • dtc_display.py:自定义Gradio组件,用于呈现带有颜色编码的故障诊断码
  • mcp_server_detail.md:嵌入式固件实施的完整技术文档

______________________________________________________________________

故障排除

常见问题

MCP服务器连接失败

  • 验证设备是否已通电并连接到Wi-Fi
  • 检查IP地址是否与配置匹配
  • 确保防火墙允许端口80上的HTTP流量
  • 先用模拟器测试: https://castlebbs-elm327-simulator.hf.space/gradio_api/mcp/

车辆无响应

  • 确保车辆点火开关打开(发动机不需要运转)
  • 检查OBD-II加密狗是否完全插入车辆端口
  • 验证ELM327芯片是否响应AT命令
  • 尝试重置ELM327:发送 ATZ 命令

刀具超时错误

  • 增加超时时间 app.py: "timeout": 30.0
  • 检查MCP服务器的网络延迟
  • 验证车辆ECU是否响应(尝试不同的PID)

十六进制值无效

  • 确保响应格式正确(空格分隔的十六进制字节)
  • 检查ELM327的“无数据”或错误响应
  • 验证车辆是否支持PID(01 00 查询)

______________________________________________________________________

许可证

此项目根据LICENSE文件中指定的条款获得许可。

目录标签

目录标签

PythonClaudeAI代理OBD-II诊断本地部署车辆维修健康监测嵌入式系统

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP