内容
# AutoCAD MCP Server
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io)
**让 AI 智能体直接操控 AutoCAD!让 AI 替您绘图、标注、修改、导出。**
**Control AutoCAD directly from AI agents — draw, annotate, modify, and export through natural language.**
---
## 📋 简介 / Overview
AutoCAD MCP Server 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io) 服务器,它将 AutoCAD 2020+ 的绘图能力封装为 47 个标准化工具。任何支持 MCP 协议的 AI 智能体(如 Reasonix、Claude Desktop、Cursor、VS Code Cline 等),都可以通过自然语言直接操控 AutoCAD。
**支持的 AutoCAD 版本:** 2020+ (Windows only)
**技术原理:** 通过 `pywin32` 调用 AutoCAD COM API。
---
## 🚀 快速开始 / Quick Start
### 安装 / Installation
```bash
# 克隆仓库 / Clone
git clone https://github.com/your-username/autocad-mcp-server.git
cd autocad-mcp-server
# 安装依赖 / Install dependencies
pip install -r requirements.txt
# 安装本包 / Install the package
pip install -e .
```
### 测试 / Test
```bash
# 验证导入 / Verify import
python3 -c "from autocad_mcp_server.server import server; print('OK:', len(server._tool_manager._tools), 'tools')"
# 输出: OK: 47 tools
```
---
## ⚙️ 配置 / Configuration
### Reasonix
在 `~/.mcp.json` 或项目根目录的 `.mcp.json` 中添加:
```json
{
"mcpServers": {
"autocad": {
"command": "python3",
"args": [
"-u",
"-m",
"autocad_mcp_server.server"
],
"description": "Control AutoCAD 2020+ via AI agents"
}
}
}
```
### Claude Desktop
编辑 `%APPDATA%\Claude\claude_desktop_config.json`:
```json
{
"mcpServers": {
"autocad": {
"command": "python3",
"args": [
"-u",
"-m",
"autocad_mcp_server.server"
],
"description": "AutoCAD drawing control"
}
}
}
```
### Cursor
在项目根目录创建 `.cursor/mcp.json`:
```json
{
"mcpServers": {
"autocad": {
"command": "python3",
"args": [
"-u",
"-m",
"autocad_mcp_server.server"
]
}
}
}
```
### VS Code (Cline)
编辑 `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`:
```json
{
"mcpServers": {
"autocad": {
"command": "python3",
"args": [
"-u",
"-m",
"autocad_mcp_server.server"
],
"disabled": false,
"autoApprove": []
}
}
}
```
---
## 🛠️ 工具列表 / Tools (47 total)
### 绘图 / Drawing (8 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_draw_line` | 画直线 |
| `autocad_draw_circle` | 画圆 |
| `autocad_draw_arc` | 画弧 |
| `autocad_draw_polyline` | 画多段线 |
| `autocad_draw_rectangle` | 画矩形 |
| `autocad_draw_polygon` | 画正多边形 |
| `autocad_draw_ellipse` | 画椭圆 |
| `autocad_draw_spline` | 画样条曲线 |
### 图层 / Layers (4 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_create_layer` | 创建/获取图层 |
| `autocad_set_current_layer` | 设置当前图层 |
| `autocad_layer_control` | 控制图层状态(开关/冻结/锁定/打印) |
| `autocad_list_layers` | 列出所有图层 |
### 标注 / Annotation (9 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_add_text` | 添加单行文字 |
| `autocad_add_mtext` | 添加多行文字 |
| `autocad_add_dim_linear` | 线性尺寸标注 |
| `autocad_add_dim_aligned` | 对齐尺寸标注 |
| `autocad_add_dim_diameter` | 直径标注 |
| `autocad_add_dim_radius` | 半径标注 |
| `autocad_add_leader` | 引线标注 |
### 文档 / Document (7 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_new_drawing` | 新建图纸 |
| `autocad_open_drawing` | 打开 DWG 文件 |
| `autocad_save_drawing` | 保存图纸 |
| `autocad_close_drawing` | 关闭图纸 |
| `autocad_export_to_pdf` | 导出为 PDF |
| `autocad_export_to_dxf` | 导出为 DXF |
| `autocad_plot_to_pdf` | 打印输出 PDF |
### 编辑 / Modify (10 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_move` | 移动实体 |
| `autocad_copy` | 复制实体 |
| `autocad_rotate` | 旋转实体 |
| `autocad_scale` | 缩放实体 |
| `autocad_mirror` | 镜像实体 |
| `autocad_offset` | 偏移复制 |
| `autocad_erase` | 删除实体 |
| `autocad_zoom_extents` | 缩放到图形范围 |
| `autocad_zoom_window` | 窗口缩放 |
| `autocad_get_entity_count` | 获取实体数量 |
### 图块 / Blocks (4 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_create_block` | 创建图块定义 |
| `autocad_insert_block` | 插入图块 |
| `autocad_explode_block` | 分解图块 |
| `autocad_list_blocks` | 列出图块定义 |
### 查询 / Query (6 tools)
| 工具名 | 功能 |
|--------|------|
| `autocad_get_distance` | 计算两点距离 |
| `autocad_get_area` | 计算多边形面积 |
| `autocad_get_entity_info` | 查询实体详细信息 |
| `autocad_list_entities` | 列出当前图纸实体 |
| `autocad_undo` | 撤销 |
| `autocad_redo` | 重做 |
---
## 📝 使用示例 / Usage Examples
### 基础绘图 / Basic Drawing
> _"在 AutoCAD 中画一条从 (0,0) 到 (100,50) 的直线,图层设为 '墙体'"_
>
> AI 调用: `autocad_draw_line(0, 0, 100, 50, "墙体")`
### 复杂施工图流程 / Complex Workflow
> _"新建图纸 → 创建图层'墙体'(红色)和'标注'(青色) → 切换到墙体图层 → 画一堵 10m×3m 的墙(矩形) → 切换到标注图层 → 标注尺寸 → 导出 PDF"_
### 批量操作 / Batch Operations
> _"选中所有 '门窗' 图层的实体 → 移动到 (200, 0) → 缩放到图形范围"_
---
## 📂 项目结构 / Project Structure
```
src/autocad_mcp_server/
├── __init__.py # Package 入口
├── server.py # MCP Server 主入口(47 个工具注册)
├── cad_connection.py # AutoCAD COM 连接管理
├── tools_drawing.py # 绘图工具
├── tools_layer.py # 图层管理
├── tools_annotation.py # 标注注释
├── tools_document.py # 文档操作
├── tools_modify.py # 编辑修改
├── tools_block.py # 图块操作
└── tools_query.py # 查询测量
```
---
## ⚠️ 系统要求 / Requirements
| 项目 | 要求 |
|------|------|
| 操作系统 | Windows 10/11 (仅 Windows,因为 AutoCAD COM API) |
| Python | 3.10+ |
| AutoCAD | 2020+ (任何版本,只要 COM 接口可用) |
| 依赖 | `mcp>=1.0.0`, `pywin32>=311` |
---
## 📄 许可证 / License
本项目采用 [GNU General Public License v3.0](LICENSE)。
---
## 🤝 贡献 / Contributing
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建功能分支 (`git checkout -b feature/my-feature`)
- 提交更改 (`git commit -am 'Add my feature'`)
- 推送到分支 (`git push origin feature/my-feature`)
- 创建 Pull Request