MCP OBD-II 服务器
使用OBD-II(车载诊断系统II)标准从车辆中读取PID(参数标识符)的模型上下文协议(MCP)服务器。
特点/特性
- 通过串行/USB/蓝牙连接到OBD-II适配器
- 读取传感器数据(转速、速度、温度、燃油、排放等)
- 查询单个PID或PID批次
- 列出您车辆支持的PID(参数标识符)
- 获取故障诊断码(DTCs)
- 自动检测端口、波特率和协议
- 无需硬件的测试模拟模式
要求
- Python 3.10及以上版本
- 兼容ELM327的OBD-II适配器
- 建议:使用基于USB的(设备),而非蓝牙,因为USB通常更稳定。 - 这个很不错:Vgate vLinker FS OBD2 USB适配器,适用于Scan HS/MS-CAN汽车开关 - 使用这个亚马逊联盟链接(美国): https://amzn.to/3WP2pAg(该链接可直接访问亚马逊,但无法直接翻译,保持原样),德国: https://amzn.to/4hiAjXz(注:此网址为亚马逊链接,直接翻译网址无实际意义,故在此仅说明其为亚马逊链接) - 或者,如果你愿意这么说的话,这只是一个普通的链接: https://www.amazon.de/dp/B094Z7PBLS?ref=ppx_yo2ov_dt_b_fed_asin_title(该链接为亚马逊德国站的商品页面,直接翻译链接内容无实际意义,但可简述为:亚马逊德国站上某商品的直接链接,商品ASIN为B094Z7PBLS,通过特定参考代码访问)
- 配备OBD-II接口的车辆(美国1996年以后,欧洲2001年以后)
安装
创建一个虚拟环境。稍后在MCP服务器配置中,您将使用该环境中的Python路径
python -m venv .venv如果尚未激活,请激活您刚刚创建的虚拟环境:
source .venv/bin/activatecd mcp_obd_ii
pip install -e .或者直接安装依赖项:
pip install -r requirements.txt然后,通过启用(放置一个)来让您的AI代理(如Claude Code)使用MCP .mcp.json 将文件放入你运行代理程序的文件夹中:
{
"mcpServers": {
"mcp_obd_ii": {
"type": "stdio",
"command": "/path/to/your/mcp_obd_ii/.venv/bin/python",
"args": ["-m", "mcp_obd_ii"],
"env": {
"PYTHONPATH": "/path/to/your/mcp_obd_ii/src"
}
}
}
}替换 /path/to/your/mcp_obd_ii 替换为您的安装实际路径。
使用此MCP服务器启动Claude Code:
claude --strict-mcp-config --mcp-config /path/to/your/.mcp.json可用工具
连接管理
obd_connect- 建立OBD连接(自动检测或手动配置)obd_disconnect- 平稳地关闭连接obd_status- 获取连接状态和车辆信息
基本查询
obd_query_pid- 通过名称查询单个PID(例如,“RPM”,“SPEED”)obd_query_multiple- 高效查询多个PIDobd_list_supported- 列出您的车辆支持的所有PID(参数标识符)
类别查询
obd_engine_data- 获取所有与发动机相关的数据obd_fuel_system- 获取所有燃油系统数据
诊断故障代码 (DTCs)
obd_get_dtcs- 获取当前的故障诊断码obd_clear_dtcs- 清除所有故障诊断码(⚠️ 警告:此操作具有破坏性)obd_get_pending_dtcs- 获取待处理(尚未确认)的故障诊断码(DTCs)obd_get_freeze_frame- 获取DTC(故障诊断代码)的冻结帧数据obd_get_readiness- 获取排放准备监控状态
建筑学
mcp_obd_ii/
├── __init__.py # Package exports
├── __main__.py # FastMCP server & tools
├── connection_manager.py # Singleton OBD connection
├── decorators.py # Error handling & tool wrappers
├── helpers.py # Query & formatting utilities
└── response_models.py # Data structures & enums依赖项
mcp- 模型上下文协议SDKpyserial- 串口通信obd- Python OBD-II 库(pyobd 分支)
开发说明
模拟模式
模拟模式允许在没有实际OBD-II硬件的情况下进行测试和开发。它会为基本PID返回虚假的传感器数据。
启用模拟模式:
{
"mcpServers": {
"mcp_obd_ii": {
"type": "stdio",
"command": "/path/to/your/mcp_obd_ii/.venv/bin/python",
"args": ["-m", "mcp_obd_ii"],
"env": {
"PYTHONPATH": "/path/to/your/mcp_obd_ii/src",
"MOCK_OBD": "true"
}
}
}
}在模拟模式下支持的功能:
- ✅ 基本PID(参数标识符):转速(RPM)、速度(SPEED)、冷却液温度(COOLANT_TEMP)、发动机负荷(ENGINE_LOAD)、节气门位置(THROTTLE_POS)、进气温度(INTAKE_TEMP)、空气流量(MAF)、燃油量(FUEL_LEVEL)
- ✅ 连接管理:连接、断开连接、状态
- ❌ DTCs:不支持(返回错误)
- ❌ 准备就绪监视器:不支持
- ❌ 冻结帧:不支持
如果(满足条件),模拟模式会自动激活 obd 库未安装。
用例:
- 在没有汽车的情况下测试MCP集成
- 持续集成/持续交付(CI/CD)流水线
- 开发和调试
- 示威游行
