g1331/dbc-mcp-server
If you are the rightful owner of dbc-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The DBC MCP Server is a robust tool designed for managing DBC files, enabling users to create, edit, and delete signals, messages, and nodes efficiently.
open_dbc
Open or create a DBC file.
get_dbc_info
Retrieve DBC file information and statistics.
list_signals
List all signals.
get_signal_info
Get detailed information about a specific signal.
search_signals
Search and filter signals.
create_signal
Create a signal within a specified message.
add_signal_to_message
Convenience function to create a message and signal.
update_signal
Update signal properties.
delete_signal
Delete a signal.
encode_signal
Encode a physical value to a raw value.
decode_signal
Decode a raw value to a physical value.
list_messages
List all messages.
create_message
Create a new message.
delete_message
Delete a message.
list_nodes
List all nodes.
create_node
Create a new node.
update_node
Rename a node.
delete_node
Delete a node.
DBC MCP Server
基于 fastmcp 和 cantools 库的 MCP 服务器,用于创建、编辑和删除 DBC 文件中的信号、消息和节点。
🚀 最新改进
本项目经过全面重构和功能扩展,主要改进包括:
✅ 核心功能扩展
- 消息管理: 完整的消息CRUD操作
- 信号搜索: 按名称、单位、长度等条件搜索信号
- 信号编码/解码: 原始值和物理值转换
- DBC文件信息: 获取文件统计信息和结构概览
- 改进的信号创建: 重新设计了信号创建逻辑,移除不合理的默认消息
✅ 代码质量提升
- 测试覆盖率: 从基础测试提升到60%覆盖率
- 类型安全: 完整的mypy类型检查支持
- 代码质量: 通过ruff格式和质量检查
- CI/CD: 完整的GitHub Actions工作流
✅ 兼容性修复
- cantools兼容: 修复了cantools导入问题
- Python版本: 支持Python 3.10+
功能特性
核心功能
- DBC文件操作:打开、创建、修改DBC文件
- 消息管理:创建、删除、列出消息 (
create_message
,delete_message
,list_messages
) - 信号管理:创建、更新、删除、搜索信号
- 节点管理:创建、更新、删除和列出节点
高级功能
- 信号详细信息:获取特定信号的完整信息 (
get_signal_info
) - 信号搜索:按名称模式、单位、长度范围搜索信号 (
search_signals
) - 信号编码/解码:原始值与物理值转换 (
encode_signal
,decode_signal
) - 文件信息:获取DBC文件统计信息 (
get_dbc_info
) - 便利函数:一步创建消息和信号 (
add_signal_to_message
)
技术特性
- 内存缓存:提高文件操作性能
- 类型安全:完整的类型提示和mypy检查支持
- 全面测试:60%测试覆盖率,包含边界情况测试
- 双重模式:支持作为 MCP 服务器或 Python 库使用
- CI/CD:完整的GitHub Actions工作流
安装
从 PyPI 安装(推荐)
pip install dbc-mcp-server
从源码安装
# 克隆项目
git clone https://github.com/g1331/dbc-mcp-server.git
cd dbc-mcp-server
# 安装依赖
pip install -e .
# 或使用 uv(推荐)
uv sync
开发环境安装
# 安装开发依赖
pip install -e ".[dev]"
# 或使用 uv
uv sync --group dev
使用方法
1. 作为 MCP 服务器运行
MCP 服务器需要通过 MCP 客户端(如 Claude Desktop、Cline 等)来使用。你可以通过以下两种方式启动服务器:
# 使用命令行工具
dbc-mcp-server
# 或直接运行模块
python -m dbc_mcp_server.main
配置 MCP 客户端
在你的 MCP 客户端配置文件中添加以下配置:
{
"mcpServers": {
"dbc-server": {
"command": "uv",
"args": ["run", "python", "-m", "dbc_mcp_server.main"],
"cwd": "/path/to/DBC-mcp-server"
}
}
}
或者使用 Python 直接运行:
{
"mcpServers": {
"dbc-server": {
"command": "python",
"args": ["-m", "dbc_mcp_server.main"],
"cwd": "/path/to/DBC-mcp-server",
"env": {
"PYTHONPATH": "/path/to/DBC-mcp-server/src"
}
}
}
}
可用的 MCP 工具
服务器提供以下 MCP 工具:
文件操作
- open_dbc - 打开或创建 DBC 文件
- get_dbc_info - 获取DBC文件信息和统计
信号操作 3. list_signals - 列出所有信号 4. get_signal_info - 获取特定信号详细信息 5. search_signals - 搜索和过滤信号 6. create_signal - 在指定消息中创建信号 7. add_signal_to_message - 便利函数:创建消息和信号 8. update_signal - 更新信号属性 9. delete_signal - 删除信号 10. encode_signal - 物理值编码为原始值 11. decode_signal - 原始值解码为物理值
消息操作 12. list_messages - 列出所有消息 13. create_message - 创建新消息 14. delete_message - 删除消息
节点操作 15. list_nodes - 列出所有节点 16. create_node - 创建新节点 17. update_node - 重命名节点 18. delete_node - 删除节点
2. 作为 Python 库使用
你可以在 Python 代码中直接使用这个库:
from dbc_mcp_server import (
open_dbc, create_message, add_signal_to_message,
get_dbc_info, search_signals, encode_signal, decode_signal
)
# 打开或创建 DBC 文件
result = open_dbc("vehicle.dbc")
print(f"打开结果: {result}")
# 创建消息
create_message("vehicle.dbc", "EngineData", 0x100, 8)
# 添加信号到消息(便利函数)
add_signal_to_message(
path="vehicle.dbc",
message_name="EngineData",
message_id=0x100,
message_length=8,
signal_name="VehicleSpeed",
start_bit=0,
length=16,
byte_order="little_endian",
is_signed=False,
scale=0.1,
offset=0.0,
minimum=0.0,
maximum=250.0,
unit="km/h",
comment="车辆速度信号"
)
# 获取DBC文件信息
info = get_dbc_info("vehicle.dbc")
print(f"消息数: {info['total_messages']}, 信号数: {info['total_signals']}")
# 搜索信号
speed_signals = search_signals("vehicle.dbc", name_pattern="Speed")
print(f"速度相关信号: {speed_signals}")
# 信号编码/解码
encoded = encode_signal("vehicle.dbc", "VehicleSpeed", 100.5) # 物理值 -> 原始值
decoded = decode_signal("vehicle.dbc", "VehicleSpeed", 1005) # 原始值 -> 物理值
print(f"编码: {encoded}, 解码: {decoded}")
🧪 测试
运行测试
# 运行所有测试
pytest tests/ -v
# 运行测试并生成覆盖率报告
coverage run -m pytest tests/ -v --ignore=tests/test_performance.py
coverage report --show-missing
代码质量检查
# 类型检查
mypy src/dbc_mcp_server
mypy tests/
# 代码格式和质量检查
ruff check src/ tests/
ruff format src/ tests/
测试覆盖率
当前测试覆盖率: 60%
- 核心功能: 完全覆盖
- 边界情况: 全面测试
- 错误处理: 完整验证
🔧 开发
项目结构
src/dbc_mcp_server/
├── __init__.py # 包初始化和导出
├── main.py # MCP服务器入口点
├── server.py # 核心DBC操作功能
└── py.typed # 类型检查标记
tests/
├── conftest.py # 测试配置和fixtures
├── test_signal.py # 信号操作测试
├── test_node.py # 节点操作测试
├── test_new_features.py # 新功能测试
└── test_edge_cases.py # 边界情况测试
贡献指南
- Fork项目
- 创建功能分支
- 添加测试用例
- 确保所有检查通过
- 提交Pull Request
📈 CI/CD
项目配置了完整的GitHub Actions工作流:
- 多Python版本测试: Python 3.10, 3.11, 3.12
- 代码质量检查: ruff, mypy
- 测试覆盖率: 自动生成和上传
- 安全扫描: safety, bandit
- 包构建: 自动构建和验证
许可证
本项目基于 MIT 许可证开源 - 详见 文件。