内容
# dSPACE SystemDesk MCP 服务器
本 MCP 服务器通过其 COM 自动化接口自动执行 dSPACE SystemDesk 操作。
它涵盖了 SystemDesk 的生命周期、项目操作和 AUTOSAR 文件导入/验证。
SystemDesk 是 AI 驱动的 AUTOSAR 生成的强大伙伴,AI 代理创建全面的架构描述,而 SystemDesk 通过其强大的验证功能确保正确性、一致性和合规性。
## 前提条件
- 已安装 dSPACE SystemDesk 并拥有有效的许可证
- Python 3.10 或更新版本
- `uv`,Python 包和项目管理器,用于创建环境、安装依赖项和从此检出运行服务器。从官方 Astral 文档安装:<https://docs.astral.sh/uv/getting-started/installation/>
- 一个 MCP 客户端(例如 VS Code、Cursor、Claude Desktop)
## 安装
1. 打开存储库/文件夹。
2. 使用以下命令从 `pyproject.toml` 创建项目环境并安装依赖项:
```powershell
uv sync
```
## 与 MCP 客户端一起使用
1. 在您的 MCP 客户端(例如 VS Code、Claude Code、Cursor、Claude Desktop)中,添加一个新的 MCP 服务器。
2. 使用以下命令将其配置为 **stdio** MCP 服务器:
```powershell
path\to\this\cloned\repo\SystemDeskMCP.cmd
```
例如,作为 `.vscode/mcp.json` 条目:
```json
{
"servers": {
"SystemDeskMCP": {
"type": "stdio",
"command": "path\\to\\this\\cloned\\repo\\SystemDeskMCP.cmd",
"args": []
}
}
}
```
3. 在您的客户端中重新连接/重新加载 MCP 服务器。
4. 运行一个快速检查提示,例如:`调用 start_systemdesk() 并报告结果。`
## 用法(工具顺序)
推荐流程:
1. `start_systemdesk()`
2. `create_project(project_path, project_name)` 或打开现有项目
3. `import_autosar_file(file_path)`
4. `validate_autosar(output_format="markdown" | "json")`
5. `close_project(save_project=True)`
6. `close_systemdesk(save_project=True)`
重要:
- `start_systemdesk()` 必须在调用其他任何 SystemDesk 工具之前调用。
- `import_autosar_file` 仅支持具有 `.arxml` 扩展名的文件。
- 如果 SystemDesk 显示阻塞对话框,启动/COM 访问可能会暂时失败。
## 开发设置
使用以下命令从 `pyproject.toml` 创建项目环境并安装开发依赖项:
```powershell
uv sync --extra dev
```
### 运行测试
```powershell
uv run pytest
```
要收集覆盖率:
```powershell
uv run pytest --cov=systemdesk_mcp
```
对于针对现有 SystemDesk 安装的端到端烟雾测试,请使用 `.github/prompts/smoke-test.prompt.md` 中的提示。
## 可用的 MCP 工具
- `start_systemdesk()`
- `get_systemdesk_status()`
- `close_systemdesk(save_project=True)`
- `create_project(project_path, project_name)`
- `close_project(save_project=True)`
- `import_autosar_file(file_path)`
- `validate_autosar(output_format="markdown" | "json")`
## 扩展服务器
通过在 `src/systemdesk_mcp/server.py` 中定义一个用 `@mcp.tool()` 装饰的函数来添加新工具:
```python
@mcp.tool()
def my_new_tool(param: str) -> str:
"""显示给 MCP 客户端的描述。"""
app = _get_app() # 检索活动 COM 连接
# ... 调用 app.* COM 方法 ...
return "result"
```
使用 `_get_app()` 访问实时的 SystemDesk COM 对象。
## 故障排除
- **`win32com 未安装`**:运行 `uv sync` 安装 `pywin32`
- **`class not registered` / `invalid class string`**:检查 SystemDesk 安装/COM 注册
- **`blocked` / `rejected`**:关闭 SystemDesk 中的打开对话框并重试
- **`access denied`**:根据需要以提升的权限启动 MCP 服务器
## 文件概览
- `src/systemdesk_mcp/server.py`:MCP 服务器和工具
- `tests/`:单元测试和 ARXML 测试夹具
- `pyproject.toml`:项目元数据和 Python 依赖项(使用 `uv` 管理)
- `SystemDeskMCP.cmd`:MCP 客户端使用的便捷启动器
- `.github/prompts/smoke-test.prompt.md`:端到端烟雾测试提示