MDF MCP服务器
用于分析ASAM MDF(测量数据格式)文件的模型上下文协议(MCP)服务器。使AI助手能够访问和分析汽车和工业测量数据。
🚀 快速开始
使用uvx(推荐)
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Run the server directly
uvx mcp-server-mdf地方发展
# Clone and setup
git clone https://github.com/Shanko-26/mdfmcp
cd mdfmcp
# Install in virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e .
# Run the server
mcp-server-mdf📋 特性
- MDF文件支持:版本2.x、3.x和4.x
- AI原生接口:专为LLM集成而设计
- 数据分析:统计、绘图、信号处理
- 格式导出:CSV、HDF5、Parquet、MATLAB
- 会话管理:多文件支持
- 高性能:高效的大文件处理
🔧 配置
重要:此MCP服务器需要直接访问文件系统才能读取MDF文件。它最适合支持本地文件操作的IDE。
兼容IDE
对于带有Continue.dev的VS代码
添加到MCP配置中:
{
"mcpServers": {
"mdf": {
"command": "uvx",
"args": ["mcp-server-mdf@latest"]
}
}
}用于游标IDE
增添 ~/.cursor/mcp.json:
{
"mcpServers": {
"mdf": {
"command": "uvx",
"args": ["mcp-server-mdf@latest"]
}
}
}适用于Windsurf/Codeium
使用相同的uvx命令遵循IDE的MCP配置指南。
解决uvx路径问题
如果你收到“找不到命令”错误,请找到你的uvx路径:
which uvx # On macOS/Linux
where uvx # On Windows然后在配置中使用完整路径:
{
"mcpServers": {
"mdf": {
"command": "/Users/username/.local/bin/uvx",
"args": ["mcp-server-mdf"]
}
}
}📁 文件组织
智能工作空间搜索:服务器会自动在项目中查找MDF文件:
your-project/
├── data.mf4 # ✅ Found by filename
├── data/
│ └── test.mf4 # ✅ Found in data/ folder
├── measurements/
│ └── run1.mf4 # ✅ Found in measurements/ folder
├── test_data/
├── examples/
└── samples/使用示例:
"data.mf4"→ 自动搜索工作区"./data/test.mf4"→ 当前目录的相对路径"/absolute/path/file.mf4"→ 完全绝对路径- 不区分大小写
"DATA.MF4"发现"data.mf4"
🔄 保持最新状态
始终使用最新版本 通过添加 @latest 到IDE配置:
{
"mcpServers": {
"mdf": {
"command": "uvx",
"args": ["mcp-server-mdf@latest"]
}
}
}检查版本: uvx mcp-server-mdf@latest --version
📊 使用示例
打开并分析MDF文件
User: Open the measurement file at /data/test_drive.mf4
Assistant: I'll open that MDF file for you.
[Opens file]
Successfully opened test_drive.mf4:
- Session ID: mdf_a3b2c1d4
- Version: 4.10
- Channels: 847
- Duration: 1823.4 seconds列出和搜索频道
User: What temperature channels are available?
Assistant: Let me search for temperature-related channels.
Found 23 temperature channels:
- Engine_Temp (°C) - Engine coolant temperature
- Oil_Temp (°C) - Engine oil temperature
- Ambient_Temp (°C) - Outside air temperature分析和绘制信号
User: Show me the engine speed statistics and plot it
Assistant: I'll analyze the engine speed signal.
Engine Speed Analysis:
- Mean: 2,847 RPM
- Max: 6,234 RPM
- Std Dev: 1,123 RPM
[Shows time-series plot of engine speed]🛠️ 可用工具
会话管理
open_mdf-打开MDF文件close_mdf-关闭会话list_sessions-显示活动会话get_file_info-获取文件元数据
数据访问
list_channels-列出可用频道mdf_get-提取单通道数据mdf_select-提取多个通道mdf_get_master-获取时间通道数据
分析
calculate_statistics-计算信号统计plot_signals-创建可视化mdf_to_dataframe-转换为pandas DataFrame
数据操作
mdf_cut-提取时间片mdf_filter-过滤特定频道mdf_resample-更改采样率
出口
mdf_export-导出为各种格式mdf_convert-在MDF版本之间转换mdf_save-保存修改后的文件
🐳 Docker部署(替代方案)
构建图像
docker build -t mcp-server-mdf .运行容器
# Basic run
docker run -it --rm mcp-server-mdf
# With volume mount for data
docker run -it --rm -v /path/to/mdf/files:/data mcp-server-mdf
# With custom environment
docker run -it --rm -e MAX_SESSIONS=20 mcp-server-mdfDocker的MCP配置
{
"mcpServers": {
"mdf": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "/path/to/data:/data", "mcp-server-mdf"]
}
}
}🧪 测试
# Run tests
pytest tests/
# Test server manually
python tests/manual_test.py📁 项目结构
mdfmcp/
├── src/mdfmcp/
│ ├── __init__.py
│ └── server.py # Main MCP server
├── tests/
│ ├── conftest.py
│ ├── manual_test.py
│ └── test_server.py
├── examples/
│ ├── basic_usage.py
│ └── test_data_generator.py
├── Dockerfile
├── requirements.txt
├── pyproject.toml
└── README.md🔧 发展
设置开发环境
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .代码质量
# Format code
black src/
# Lint
ruff src/
# Type checking
mypy src/🚨 故障排除
常见问题
- 大文件内存错误
- 使用 memory="low" 打开文件时 - 减少并发会话
- 找不到频道
- 频道名称区分大小写 - 使用正则表达式模式进行灵活搜索
- Docker构建失败
- 确保Docker正在运行 - 检查Dockerfile语法
🙏 致谢
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
依赖项:此项目使用LGPL v3+许可的asammdf。asammdf库仍然是一个单独的组件,不会被此项目修改。
