OBD-II数据读取服务

MCP OBD-II Server是一个通过OBD-II标准从汽车读取参数ID(PIDs)的服务,支持连接多种适配器,读取传感器数据、查询诊断故障码等功能。

  • by janspoerer
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 janspoerer/mcp_obd_ii

使用说明

MCP OBD-II 服务器

使用OBD-II(车载诊断系统II)标准从车辆中读取PID(参数标识符)的模型上下文协议(MCP)服务器。

特点/特性

  • 通过串行/USB/蓝牙连接到OBD-II适配器
  • 读取传感器数据(转速、速度、温度、燃油、排放等)
  • 查询单个PID或PID批次
  • 列出您车辆支持的PID(参数标识符)
  • 获取故障诊断码(DTCs)
  • 自动检测端口、波特率和协议
  • 无需硬件的测试模拟模式

要求

安装

创建一个虚拟环境。稍后在MCP服务器配置中,您将使用该环境中的Python路径

python -m venv .venv

如果尚未激活,请激活您刚刚创建的虚拟环境:

source .venv/bin/activate
cd 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 - 高效查询多个PID
  • obd_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 - 模型上下文协议SDK
  • pyserial - 串口通信
  • 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)流水线
  • 开发和调试
  • 示威游行