Skip to main content
Glama
hj2018118

cad_mcp_server

by hj2018118
README.md
# DrawMCP

面向 AutoCAD / 中望CAD(ZWCAD)/ FreeCAD 的 MCP(Model Context Protocol)工具集:把三种 CAD 的绘图、查询、编辑与导出能力封装成 MCP 工具,供本地大模型或外部 Agent 调用。

本仓库包含以下组件:

- `cad_mcp_server/`:MCP Server(HTTP + JSON-RPC 2.0,路径 `/mcp`)
- `cad_chat_desktop/`:桌面 Chat GUI(PySide6 + LangChain 工具调用)
- `cad_autocad_plugin/`:AutoCAD .NET 插件(通过本地 HTTP Bridge 连接)
- `cad_zwcad_plugin/`:中望CAD(ZWCAD).NET 插件(通过本地 HTTP Bridge 连接)
- `cad_freecad_workbench/`:FreeCAD Workbench(Python 插件:本地 HTTP API + 信息输出面板)

文档导航(建议先读):
- `docs/README.md`(完整导航)
- `docs/freecad_setup.md`
- `docs/zwcad_setup.md`(中望 2026:真实程序集名、端口 56101、NETLOAD 步骤)
- `docs/manual_test_cases.md`(人工输入测试用例:逐条粘进聊天框的话术 + 该看到什么)

> `create_venv_env.bat` / `run_cad_mcp.bat` / `start_server.bat` / `start_gui.bat` / `start_all.bat` 便于快速跑通与联调。

### 1. 安装依赖

桌面 GUI 依赖 PySide6,建议 Python 3.12 或 3.13。

也可以直接运行根目录的 `create_venv_env.bat` 一键创建 venv 并安装依赖(默认放在仓库外 `..\_env\.venv312`)。

建议把虚拟环境放到仓库外(仓库目录保持干净,便于上传 GitHub)。在仓库根目录下执行:

```powershell
py -3.12 -m venv ..\_env\.venv312
..\_env\.venv312\Scripts\python -m pip install -r .\requirements.txt
```

也可以直接使用根目录一键脚本(Windows):
- 创建 venv + 安装依赖:`create_venv_env.bat`
- 启动(三实例 + GUI):`run_cad_mcp.bat`
- 说明文档:`docs/windows_bats.md`

更多环境说明见:
- `docs/python_env.md`
- `docs/conda_env.md`

### 2. 启动(Windows,CAD 插件/http 模式)

说明:
- 也可直接使用根目录一键脚本 `start_server.bat autocad`(或 `zwcad` / `freecad`)。
- 需要先在 CAD 插件侧配置 token,并在这里通过 `CAD_PLUGIN_TOKEN` 传入同一个 token。
- 三个 CAD 平台要并行,就起三个 MCP 实例(端口对应见 `docs/platform_testing.md` 第 1 节)。

启动 MCP Server(连接插件):

```powershell
$env:CAD_BRIDGE_MODE="http"
$env:CAD_PLUGIN_BASE_URL="http://127.0.0.1:56100"
$env:CAD_PLUGIN_TOKEN="<你的token>"
..\_env\.venv312\Scripts\python -m cad_mcp_server
```

默认监听 `http://127.0.0.1:9100/mcp`(可通过 `MCP_PORT` 修改)。

### 3. 启动 MCP Server(可选:mock 自测)

也可用根目录一键脚本:`start_server.bat mock` 或 `start_all.bat mock`。

```powershell
$env:CAD_BRIDGE_MODE="mock"
..\_env\.venv312\Scripts\python -m cad_mcp_server
```

默认监听 `http://127.0.0.1:9100/mcp`(可通过 `MCP_PORT` 修改)。

服务端同时提供对外集成接口(REST / OpenAI tools / Skills),详见:
- `docs/integration/external_agent_integration.md`

### 4. 启动桌面 GUI

也可用根目录一键脚本:`start_gui.bat`(或 `start_all.bat mock` 一次启动 server+gui)。

```powershell
..\_env\.venv312\Scripts\python -m cad_chat_desktop
```

默认:
- LLM:LM Studio(`http://127.0.0.1:1234/v1`,model=`google/gemma-4-e4b`)
- MCP Endpoint:`http://127.0.0.1:9100/mcp`

也可以使用 conda(同样建议放到仓库外),详见 `docs/conda_env.md`。

### 5. 版权与许可

#### 许可协议

本项目采用 **MIT License**,完整条款见 [LICENSE](LICENSE)。

Copyright (c) 2026 

在遵守 MIT 条款(保留版权与本许可声明)的前提下,你可以自由使用、修改、分发本项目,包括用于商业用途。本项目按「原样」提供,不附带任何明示或默示担保。

#### AI 辅助开发说明

本项目的源代码与文档在开发过程中,使用了阿里云通义千问(Qwen)系列大模型辅助完成代码编写、文档整理等工作。

#### 第三方组件与商标

- **Python 依赖**(FastAPI、uvicorn、httpx、pydantic、PyYAML、langchain 等):版权归各自作者,许可多为 MIT / BSD,具体以各项目仓库声明为准;运行时经 `pip install -r requirements.txt` 获取,本仓库不再分发。
- **PySide6 / Qt for Python**:采用 LGPLv3 等许可,本仓库仅以依赖方式引用,未修改其源码。
- **厂商 SDK 程序集**:AutoCAD(`accoremgd` / `acdbmgd` / `acmgd`)、中望CAD(`ZwManaged` / `ZwDatabaseMgd`)、FreeCAD 的头文件与程序集均为各厂商的专有软件,本仓库**不随附、也不再分发**这些文件,构建时只从本机已安装的官方程序目录引用。
- **商标**:AutoCAD、ZWCAD、FreeCAD、Qwen 等名称与商标归各自权利人所有,本项目与上述厂商之间不存在隶属、赞助或背书关系。