关于 FreeCAD MCP
FreeCAD MCP 是一个连接 AI Agent 与 FreeCAD 的 MCP 服务,面向参数化设计、CNC 刀路生成和网格处理。用户提供设计意图与专业判断,Agent 负责执行 FreeCAD 操作。项目定位为日常个人使用,而非演示项目。
主要功能
- 01通过 30 余个工具操作 FreeCAD
- 02支持 PartDesign 与草图约束检查
- 03生成 CAM 刀路(需 FreeCAD 开发版)
- 04读取 Report View 与操作日志以诊断错误
- 05可同时管理多个 FreeCAD 实例
适用场景
- 01根据尺寸要求逐步设计机械零件
- 02读取 FreeCAD 报错并解释原因
- 03为 CNC 铣削生成 G-code 并导出 STEP 文件
MCP 相关
该服务作为 MCP 服务端,向 MCP 客户端暴露 FreeCAD 的建模、诊断与导出工具,并通过本地 socket 与 FreeCAD 内的 AICopilot 工作台通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/blwfish/freecad-mcp:latest本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/blwfish/freecad-mcp:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
freecad-mcp
这个工具能做什么
这是 AI Agent 与 FreeCAD 之间的桥梁,能为参数化设计、CNC 刀具路径生成和网格处理提供思路。你负责提出设计意图并做出领域判断,Agent 负责处理 FreeCAD 的具体操作。协作起来,可以加快工作进度,共同设计那些手工制作需要数小时的东西,理清 FreeCAD 擅长生成的晦涩错误信息,还能找出那些独自几乎不可能发现的隐蔽、棘手的建模问题。这个工具是为日常个人使用而打造的,适用于设计零件、生成刀具路径、打印和切割,而非演示。完整的工具参考请参阅 TOOLS.md。
可以一起完成的工作
- 梳理设计方案——“我需要一块安装板,尺寸为 100x60mm,有四个 M3 孔,边角倒圆。什么方案合适?”你提出需求和约束;Agent 负责建模、指出未明确的决策,并与你反复迭代。
- 诊断问题——“我刚刚尝试拉伸这个草图,结果很奇怪——FreeCAD 到底在告诉我什么?”Agent 可以读取 Report View、检查草图约束,并用你能据此采取行动的方式解释当前情况。
- 改进现有零件——“这面墙好像太薄了,而且圆角可能无法经受打印——我们一起看看吧。”
- 规划 CNC 刀具路径——“我想铣削这个凹槽——我们一起为这种材料选合适的刀具和参数吧。”
- 制作可复用的工具——“我每次做支架都要重复这个工作流——我们编写一个宏,从尺寸表格生成这些支架吧。”
- 提交前检查成果——“这个模型有几何错误吗?”“这些墙能经受打印吗?”“这些零件会互相碰撞吗?”
- 处理网格——“我有制造商提供的 STL 文件——我们把它导入 FreeCAD 并添加安装结构吧。”
- 导出用于制造——“把它导出为 STEP,并为我的 CNC 铣床生成 G-code。”
实际效果
下面是我使用 MCP 的几个示例。
调试损坏的外部引用——FreeCAD 无法恢复的链接、看似与你对模型的了解相矛盾的错误信息,以及通过直接读取文件找到的一行修复方案。
设计屋顶瓦生成器——经过几轮讨论,设计出一个参数化生成器,可根据参数表格为任意屋顶表面铺设瓦片。
入门指南
FreeCAD 版本支持: 除 CAM 以外的所有工具都支持 FreeCAD 1.1.x(当前稳定版)。CAM 刀具路径生成需要使用当前的 FreeCAD 每周开发版(上游改用基于日历的版本号之前称为“1.2-dev”,例如
26.3.x)——Path 工作台 API 在 1.1 与开发版系列之间发生了不兼容的变更。本项目跟进最新的每周版本。
本项目在 macOS 上使用 Claude Code 开发。代码支持 macOS、Windows 和 Linux——其他平台应该也能运行,但测试较少。我们会考虑其他 Agent 和平台相关的 PR。此外,我们还使用 LM Studio 的原生 MCP 客户端(qwen/qwen2.5-coder-14b、qwen/qwen3-32b、google/gemma-4-e4b)进行了手动冒烟测试,以确认协议在 Claude 之外也能正常往返——详情和注意事项请参阅 AGENT-INSTALL.md。
告诉你的 AI Agent:
前往 https://github.com/blwfish/freecad-mcp 并阅读 AGENT-INSTALL.md 文件。按照说明在此机器上安装和配置 FreeCAD MCP 服务。
你的 Agent 会处理剩下的所有工作——安装先决条件、克隆仓库、设置 FreeCAD 插件并完成注册。设置完成后,你就可以让 Agent 设计零件。
验证安装
FreeCAD 运行且已加载 AICopilot 工作台后,打开 Report View(菜单:View → Panels → Report View)。你应该会看到类似以下内容:

关于此输出,有几点值得了解:
- AI Copilot Service starting — 确认 AICopilot 工作台已正确加载。如果看不到此消息,说明插件未安装,或 FreeCAD 未能找到它。
- Debug/crash infrastructure loaded — 活动监测工具正在运行。如果操作过程中出现问题,日志和崩溃报告会自动捕获。
- Socket server started / Claude ready — 桥接服务正在监听。这行消息表示你的 AI Agent 可以连接。
- Font alias warning(橙色)— 无害的 Qt 提示,大多数 macOS 系统上都会出现,与当前操作无关。这不是问题。
运行多个 FreeCAD 实例
MCP 可以同时与多个 FreeCAD 实例通信——这适用于比较本地调试版本与标准发行版、在旁边窗口中运行回归测试并保持主工作区打开,或在同一个 Claude 会话中驱动无头工作进程。
每个 FreeCAD 进程(GUI 或无头)都会在启动时生成一个 UUID,在 /tmp/freecad_mcp_<uuid>.sock 创建自己的套接字,并将发现文件写入 ~/.cache/freecad-mcp/instances/<uuid>.json。桥接服务会扫描此目录以查找运行中的实例,无论这些实例由谁启动。
启动时的可选环境变量:
FREECAD_MCP_LABEL=<name>— 为实例指定一个易读的名称(否则默认为 UUID)FREECAD_MCP_SOCKET=<path>— 完全覆盖套接字路径(适用于 CI / 脚本严格控制的启动流程)
从 Agent 列出实例并切换:
list_freecad_instances # all live instances + active doc info
select_freecad_instance uuid=<id> # by uuid
select_freecad_instance label="weekly" # or by label
从 Agent 启动实例:
spawn_freecad_instance gui=true label="private" \
freecad_binary=/path/to/your/private/build/bin/FreeCAD
spawn_freecad_instance gui=true label="weekly" \
freecad_binary=/Applications/FreeCAD.app/Contents/MacOS/FreeCAD
未明确选择实例时的解析规则:0 个运行中的实例 → 报错;1 个运行中的实例 → 自动选择;2 个或更多运行中的实例 → 报错并列出实例(调用 select_freecad_instance)。
开发者指南
# Unit tests (1430 tests, no FreeCAD required)
python3 -m pytest tests/unit/
# Integration tests (147 tests, requires running FreeCAD with AICopilot loaded)
python3 -m pytest tests/integration/
# All tests with coverage
python3 -m pytest --cov=AICopilot
提示词缓存与直接调用 Claude API
**对于 Claude 用户:最简单、最省钱的方式是直接使用 Claude Code、Web 界面或 CLI 工具。**这些平台会自动处理提示词缓存和成本优化,你无需操心。如果你只是使用此 MCP 在 FreeCAD 中设计零件,请使用 Claude Code。无需继续阅读本节。
如果你正在构建会直接调用 Claude API(使用 Anthropic SDK)的应用或集成,就必须了解提示词缓存。Claude 桌面应用、Web 界面和 CLI 工具会自动缓存文件上下文和工具引用——你看不到这项优化,但它能降低基于相同上下文重复查询时的延迟和成本。
直接调用 API 时,必须显式管理缓存。MCP 服务本身不会调用 API,但如果你要构建会调用 API 的集成或扩展:
- 在部署前阅读 Anthropic SDK 文档,了解提示词缓存
- 了解缓存 TTL(通常为 5 分钟)和成本影响(占输入令牌的 20%)
- 请注意,缓存键包含模型、系统提示词和精确的令牌边界——细微差异也会导致缓存失效
- 如果上下文频繁更新(例如文档状态快照),请考虑缓存失效风险
同样,如果你在工作流中集成其他 MCP 服务或 Agent,它们也可能存在 README 中未记录的类似注意事项。请查看其文档或源代码,了解缓存行为、异步任务处理和令牌限制——不要假设它们的工作方式与 Claude Code 相同。
测试套件通过单元测试覆盖处理程序分发层、基础设施和文档操作,并通过针对运行中的 FreeCAD 实例的集成测试,端到端覆盖 Part、PartDesign、Sketch、Draft、Boolean、Transform、Measurement 和 CAM 工作流。CI 会在每次推送时运行这两个测试套件。
内置诊断
MCP 包含操作日志记录、崩溃捕获和报告视图访问功能。FreeCAD 自带的错误报告往往晦涩难懂——OCCT 内核崩溃不会留下任何痕迹,而出现的错误消息也需要结合上下文才能解读。这些工具能提供所需的上下文。
大多数用户和开发者只有在需要时才会知道这套基础设施的存在。请参阅 docs/diagnostics.md,其中包含完整指南和真实示例;当出现问题时,Agent 应遵循的逐步调查流程请参阅 AGENT-DEBUGGING.md。
完整的技术细节、架构、贡献指南以及如何添加新工具,请参阅 AGENT-INSTALL.md。
安全
此工具会授予你的 AI Agent 对 FreeCAD Python 环境的完整访问权限,包括文件系统和操作系统——这是有意为之。这也意味着 Agent 会将文档内容(对象标签、宏源码、电子表格值)直接读入其推理上下文,因此对待来自不可信来源的 FreeCAD 文件,应与对待不可信代码一样谨慎。完整的安全模型、实用的缓解措施以及漏洞报告方式,请参阅 SECURITY.md。
MCP 还会每天检查一次 GitHub 是否有更新版本——它会向 GitHub 公共 API 发起普通拉取请求,将结果缓存并记录在本地的 ~/.cache/freecad-mcp/version_check.log 中,以便审计。详情请参阅 SECURITY.md。
问题反馈
如果遇到 Bug,请提交问题——无声失败对任何人都没有帮助。Agent 不会告诉你哪里出了问题;它们只会让任务失败。什么样的问题报告才有用,请参阅 CONTRIBUTING.md。
许可证
LGPL-2.1-or-later
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

