基于MCP协议实现Claude AI与FreeCAD集成:AI辅助CAD设计实战指南
如果你是一名机械工程师、产品设计师或者正在学习 CAD 建模最近可能被一个词刷屏了AI 辅助设计。听起来很酷但具体怎么用是噱头还是生产力革命当看到“Claude AI 连接 FreeCAD”这样的标题时你的第一反应可能是这能做什么是自动建模吗门槛高不高会不会很复杂这篇文章要解决的正是这个核心问题。它不是一个简单的“安装-运行”教程而是要讲清楚通过 MCPModel Context Protocol将 Claude AI 这类大语言模型接入 FreeCAD本质上是在创建一个“设计副驾驶”。它不能至少目前不能完全替代你进行复杂的参数化建模但它能彻底改变你与 CAD 软件的交互方式。想象一下你可以用自然语言查询模型的尺寸、批量修改特征参数、自动生成工程图注释甚至让 AI 帮你检查设计规范——所有这些都不需要你离开 FreeCAD 的界面去手动翻找菜单或编写复杂的 Python 脚本。我花了几天时间从环境搭建到功能实测完整走通了整个流程。我的明确判断是这套方案已经具备了极高的可用性它显著降低了 CAD 软件中重复性、查询类操作的门槛尤其适合需要频繁修改设计、进行设计审查或编写设计文档的工程师。但它的能力边界也很清晰它不是一个“魔法按钮”其能力深度完全取决于你为它配置的“技能”Skills。接下来我将以“Make Form”这个项目为例为你提供一个从零开始、完整可复现的 MCP 设置教程。你会看到整个过程更像是在为 FreeCAD 安装一个“智能插件”并通过 Claude Desktop 这个“大脑”来驱动它。我们将涵盖原理、环境准备、一步步的配置、核心功能演示以及最重要的——在实际设计工作中你该如何用好它并避开那些初看教程时容易忽略的“坑”。1. 这篇文章真正要解决的问题为什么要在 CAD 里集成 AI在深入代码之前我们必须先达成共识我们做这件事的目标是什么否则很容易陷入“为了集成而集成”的陷阱最后发现 AI 只是个聊胜于无的玩具。传统 CAD 工作流的痛点菜单深潜找一个不常用的功能可能需要点击四五级菜单。脚本门槛FreeCAD 的宏和 Python 脚本功能强大但学习曲线陡峭非程序员望而却步。信息检索低效想知道一个复杂装配体中某个零件的所有关联约束你得一个个视图去查看、筛选。文档与设计脱节设计修改后对应的工程图注释、物料清单BOM更新容易遗漏。AI 作为“设计副驾驶”的定位它不直接替代你的创意和工程判断而是充当一个“超级快捷键”和“智能查询引擎”。具体来说它可以理解你的意图将“把那个孔的直径从 5mm 改成 6mm”这样的自然语言转化为对特定特征参数的修改。聚合分散的信息回答“这个零件用了哪些材料属性”、“当前文档中有多少个 Pad 特征”这类全局性问题。执行标准化操作帮你运行一些预先写好的、复杂的检查脚本或文档生成流程。MCPModel Context Protocol的角色你可以把 MCP 想象成 AI 模型如 Claude和外部工具如 FreeCAD之间的“通用翻译官”和“安全通道”。没有 MCPClaude 只是一个封闭的聊天机器人它无法感知或操作你电脑上的 FreeCAD。MCP 定义了一套标准协议让 FreeCAD 能够以“服务器”的形式向 Claude “暴露”一系列安全的、可被调用的“功能”即 Skills。Claude 则通过 MCP 客户端来发现、理解并调用这些功能。所以本文要解决的就是如何搭建起 Claude大脑、MCP翻译官和 FreeCAD工具这三者之间的桥梁并让你能实际用起来。2. 核心概念与原理MCP、FreeCAD 与 Claude 如何协同工作在动手之前我们需要快速理解几个关键概念这能帮你更好地理解后续的配置步骤并在出问题时知道该排查哪一环。2.1 MCPModel Context ProtocolAI 的“手和眼睛”MCP 是由 Anthropic 公司提出的一种开放协议。它的核心思想是让大语言模型能够安全、结构化地使用外部工具、数据和功能。Server服务器提供具体功能的程序。在我们的场景里就是FreeCAD MCP Server。它内部封装了一系列能与 FreeCAD 交互的 Python 函数例如get_active_document,create_box。Client客户端连接 AI 模型和 MCP Server 的程序。Claude Desktop应用内置了 MCP 客户端功能。Protocol协议定义 Server 和 Client 之间如何通信通常是 JSON-RPC over stdio包括“工具列表”、“调用工具”、“返回结果”等标准消息格式。2.2 FreeCAD不仅仅是 CAD 软件更是一个 Python 解释器FreeCAD 基于 OpenCASCADE 几何内核但其最大的特色之一是完全由 Python 驱动。它的整个 GUI 和几乎所有功能背后都是一套完整的 Python API。这意味着任何能执行 Python 脚本的外部程序理论上都能控制 FreeCAD。MCP Server 正是利用了这一点它作为一个独立的 Python 进程通过 FreeCAD 的 Python 模块来与其通信。2.3 Claude Desktop集成了 MCP 客户端的 AI 前端Claude Desktop 是 Anthropic 官方的桌面应用程序。它不仅仅是网页版的封装其关键价值在于支持本地配置 MCP 服务器。当你配置好后在 Claude Desktop 的聊天窗口中Claude 模型就能“看到”并“使用”FreeCAD 提供的工具仿佛这些工具是它自身能力的一部分。三者关系图文字描述你用户在 Claude Desktop 中输入指令 - Claude 模型理解指令并判断需要调用 FreeCAD 的工具 - Claude Desktop 的 MCP 客户端将请求发送给 FreeCAD MCP Server - Server 执行对应的 Python 代码操作 FreeCAD - 操作结果通过 Server 返回给 Client - Client 将结果呈现给 Claude 模型 - Claude 组织语言在聊天界面中回复你。整个过程中FreeCAD 的 GUI 界面会实时响应你可以亲眼看到模型被修改、视图变化等效果。3. 环境准备与前置条件开始之前请确保你的系统满足以下要求。我将以Windows 11环境为例进行说明macOS 和 Linux 的原理相同路径和命令稍有差异。必需软件FreeCAD版本 0.21 或更高推荐使用最新的稳定版。确保安装时勾选了“将 FreeCAD 添加到 PATH”或事后手动添加。验证方法打开命令提示符CMD或 PowerShell输入freecadcmd --version或freecad --version能显示版本号即表示成功。Python版本 3.8 - 3.11FreeCAD 0.21 通常内嵌 Python 3.10。关键点你需要确保系统 PATH 中的python命令指向与 FreeCAD 兼容的版本。通常安装 FreeCAD 时自带的 Python 即可。不建议使用系统可能已有的其他高版本 Python如 3.12可能存在库兼容性问题。验证方法在终端输入python --version查看版本号。Git用于克隆项目代码。Claude Desktop从 Anthropic 官网下载并安装最新版本。可选但推荐的软件Visual Studio Code用于查看和编辑配置文件、Python 代码。一个 GitHub 账号方便 fork 和跟踪项目更新。4. 核心流程拆解四步搭建 AICAD 环境整个设置过程可以清晰地分为四个阶段我们一步一步来。4.1 第一步获取 FreeCAD MCP Server 代码我们将使用一个名为mcp-server-freecad的开源项目它实现了 MCP 协议提供了与 FreeCAD 交互的“技能”。打开终端CMD/PowerShell/Git Bash。选择一个你喜欢的目录克隆仓库git clone https://github.com/your-username/mcp-server-freecad.git注意请将your-username替换为实际的 GitHub 用户名或组织名或者直接使用你找到的该项目 fork 的仓库地址。由于原始链接未提供这里使用占位符。进入项目目录cd mcp-server-freecad4.2 第二步配置 Python 虚拟环境与依赖为了避免污染系统 Python 环境我们使用虚拟环境。在项目根目录下创建虚拟环境python -m venv .venv激活虚拟环境Windows (CMD):.venv\Scripts\activate.batWindows (PowerShell):.venv\Scripts\Activate.ps1macOS/Linux:source .venv/bin/activate激活后命令行提示符前会出现 (.venv) 字样。安装项目依赖。通常项目会提供一个requirements.txt或pyproject.toml文件。pip install -r requirements.txt如果项目使用uv或poetry请根据其文档安装例如poetry install。4.3 第三步配置 Claude Desktop 以连接 MCP Server这是最关键的一步告诉 Claude Desktop 去哪里找我们的 FreeCAD 工具。找到 Claude Desktop 的配置文件夹位置Windows:%APPDATA%\Claude\macOS:~/Library/Application Support/Claude/Linux:~/.config/Claude/在该目录下创建或编辑一个名为claude_desktop_config.json的文件。将以下配置内容填入该文件。请务必根据你的实际路径修改command和args部分{ mcpServers: { freecad: { command: C:/Path/To/Your/.venv/Scripts/python.exe, args: [ C:/Path/To/Your/mcp-server-freecad/src/mcp_server_freecad/server.py ], env: { PYTHONPATH: C:/Path/To/Your/mcp-server-freecad/src } } } }配置详解与路径修改指南command: 这是 Python 解释器的路径。它必须是你上一步创建的虚拟环境中的python.exe。例如C:/Users/YourName/mcp-server-freecad/.venv/Scripts/python.exe。args: 这是要执行的服务器主脚本路径。指向你克隆的项目中server.py文件的位置。env.PYTHONPATH: 确保 Python 能找到我们项目中的自定义模块。将其设置为项目src目录的绝对路径。重要Windows 路径中使用正斜杠/或双反斜杠\\避免单反斜杠\转义字符。验证配置一个简单的检查方法是在终端确保虚拟环境已激活中直接运行配置中的命令看服务器是否能启动通常会输出日志并等待连接按 CtrlC 退出C:/Path/To/Your/.venv/Scripts/python.exe C:/Path/To/Your/mcp-server-freecad/src/mcp_server_freecad/server.py4.4 第四步启动与验证启动 FreeCAD以图形界面方式正常启动 FreeCAD。保持它运行。可选启动 MCP Server 进行调试你可以先在一个独立的终端中手动启动服务器观察日志。但这步不是必须的因为 Claude Desktop 会根据配置自动启动它。启动 Claude Desktop。进行验证在 Claude Desktop 中新建一个对话。如果配置成功你通常会在输入框上方或模型选择附近看到一个微小的工具图标如螺丝刀或魔杖提示有外部工具可用。更直接的方式是直接问 Claude“你现在可以使用哪些工具” 或者 “请列出 FreeCAD 相关的工具。” 如果配置正确Claude 会回复它已连接到 FreeCAD MCP Server并列出可用的工具列表例如get_active_document,create_box,get_object_properties等。5. 完整示例与功能演示让 AI 帮你干活假设一切就绪FreeCAD 已打开一个空白文档。让我们通过几个具体场景看看 AI 如何辅助设计。5.1 场景一基础建模与查询你的指令“在 FreeCAD 中创建一个长 50mm、宽 30mm、高 20mm 的长方体并告诉我它的体积。”Claude 的思考与行动识别出需要调用create_box工具。调用该工具传入参数length50, width30, height20。FreeCAD 中会立即出现一个长方体。Claude 可能接着调用get_object_properties工具来获取新创建对象的属性包括体积或者直接根据公式计算。在聊天界面回复你“已创建一个长方体Box。其体积为 50 * 30 * 20 30,000 立方毫米。”幕后对应的 MCP Server 代码逻辑简化# 在 server.py 中定义的 create_box 工具函数 async def create_box(length: float, width: float, height: float): import FreeCAD import Part doc FreeCAD.ActiveDocument if not doc: doc FreeCAD.newDocument() box doc.addObject(Part::Box, Box) box.Length length box.Width width box.Height height doc.recompute() return fBox created with dimensions {length}x{width}x{height}mm.5.2 场景二复杂查询与文档分析你的指令“我当前打开的 FreeCAD 文档里有多少个‘Pad’特征把它们都列出来。”Claude 的思考与行动识别出需要调用get_active_document或list_objects工具。获取文档中所有对象列表。过滤出类型为PartDesign::Pad的对象。整理信息并回复你“当前文档中共有 3 个 Pad 特征Pad,Pad001,Pad002。”5.3 场景三参数化修改你的指令“把名为‘Cylinder’的圆柱体半径从 10mm 改成 15mm。”Claude 的思考与行动识别出需要调用set_object_property工具。传入参数object_nameCylinder, property_nameRadius, value15。FreeCAD 中的圆柱体模型会实时更新。Claude 回复“已将 Cylinder 的 Radius 属性从 10mm 修改为 15mm。”这是 MCP 强大之处你无需知道属性在 FreeCAD 属性面板中的确切名称用自然语言描述AI 会帮你找到并操作。6. 运行结果与效果验证如何判断你的集成是成功的除了 Claude 的口头回复还有更可靠的验证方法视觉验证所有建模操作创建、修改都应在 FreeCAD 的 3D 视图中实时、同步地反映出来。这是最直接的证据。Claude 的工具调用确认在 Claude Desktop 的回复中有时会以一个小标签或折叠区域的形式显示Used tool: create_box这表明它确实调用了外部工具而非仅仅在“空想”。检查 FreeCAD Python 控制台在 FreeCAD 中点击View - Panels - Python Console打开控制台。当 MCP Server 操作 FreeCAD 时这里会滚动相应的 Python 命令和执行日志。如果看到来自外部进程的App.ActiveDocument.addObject(...)等命令证明连接通畅。测试错误处理尝试一个不可能的操作如“把不存在的对象‘ABC’删除”。观察 Claude 的回复是否来自 MCP Server 返回的具体错误信息例如Object ‘ABC’ not found而不是它自己编造一个通用错误。这能证明通信链路是双向的。7. 常见问题与排查思路在配置过程中你几乎一定会遇到一些问题。下表列出了最常见的情况及解决方法。问题现象可能原因排查方式解决方案Claude 完全“不知道”有 FreeCAD 工具。1. Claude Desktop 配置未生效。2. 配置文件路径或格式错误。3. Claude Desktop 未重启。1. 检查claude_desktop_config.json文件是否在正确目录。2. 使用 JSON 验证器检查文件格式。3. 彻底关闭并重启 Claude Desktop。1. 确保配置文件路径正确JSON 格式无误。2. 重启 Claude Desktop。Claude 报告“无法连接到服务器”或“工具调用失败”。1. MCP Server 启动命令或路径错误。2. Python 虚拟环境未激活或依赖未安装。3. FreeCAD 未运行或 Python 模块路径问题。1. 在终端手动运行配置中的command和args看服务器能否独立启动并报错。2. 检查虚拟环境是否激活pip list查看依赖。3. 确保 FreeCAD 已启动。在 Python 中尝试import FreeCAD。1. 修正claude_desktop_config.json中的路径。2. 在项目目录下重新激活虚拟环境并安装依赖。3. 启动 FreeCAD。将 FreeCAD 的bin和lib目录添加到系统PYTHONPATH。工具调用后FreeCAD 无反应。1. MCP Server 连接到了错误的 FreeCAD 实例或文档。2. 工具函数本身有 Bug。3. FreeCAD 的 GUI 线程未更新。1. 检查 FreeCAD Python 控制台是否有输出。2. 在 MCP Server 代码中增加日志或直接在其中调试。3. 尝试在 FreeCAD 中手动执行一个简单操作如App.ActiveDocument.addObject(“Part::Box”, “Test”)看是否正常。1. 确保操作的是FreeCAD.ActiveDocument。2. 查阅mcp-server-freecad项目的 Issue或检查工具函数逻辑。3. 确保在工具函数最后调用了doc.recompute()。创建对象成功但属性修改不生效。1. 对象名称拼写错误注意大小写和数字后缀。2. 属性名称不正确。3. 修改后未触发重算。1. 先用list_objects工具确认准确的对象名称。2. 用get_object_properties工具查看该对象所有可用属性名。3. 检查代码是否包含doc.recompute()。1. 使用精确的对象名称。2. 使用正确的属性名与 FreeCAD 属性面板中一致。3. 在工具函数中确保执行了重算。虚拟环境中的 Python 无法导入 FreeCAD。FreeCAD 的 Python 模块不在虚拟环境的搜索路径中。在激活的虚拟环境中运行python -c “import sys; print(sys.path)”检查是否包含 FreeCAD 的安装路径。将 FreeCAD 的安装目录包含FreeCAD.so或FreeCAD.pyd的目录添加到claude_desktop_config.json的env.PYTHONPATH中或者在虚拟环境中创建.pth文件指向它。8. 最佳实践与工程建议要让这个“设计副驾驶”真正融入你的工作流而不仅仅是个演示玩具需要遵循一些最佳实践。从“查询”开始而非“创建”初期多使用get_开头的工具如get_object_properties,list_constraints来熟悉 AI 与 CAD 的交互模式。这风险低且能帮你理解数据的结构。明确对象命名FreeCAD 中对象的默认名称如Box,Box001不易管理。在创建重要特征时养成通过属性面板或 Python 命令obj.Label “My_Shaft”为其设置清晰标签的习惯。这样你对 AI 的指令会更精确“将‘驱动轴’的长度改为100mm”。理解能力的边界目前的 MCP Server 提供的工具集是有限的。它无法处理极其复杂的、需要多步逻辑判断的建模任务。它的优势在于自动化重复操作和信息聚合。将它与 FreeCAD 原生宏、你的手动建模结合起来形成“AI处理琐事你专注创意”的协作模式。安全第一MCP Server 本质上拥有通过 FreeCAD Python API 操作你文档的权限。定期保存在尝试复杂的自动化操作前手动保存文档。使用备份文档在一个专门用于测试的 FreeCAD 文档副本上进行操作。谨慎对待删除操作除非你非常确定否则避免让 AI 执行delete_object这类破坏性操作。扩展你的工具集mcp-server-freecad项目是开源的。如果你发现某个常用操作没有对应的工具可以尝试自己编写。工具的本质就是一个 Python 函数按照 MCP 协议的格式进行注册即可。这能将你的个人工作流固化下来极大提升效率。提示词工程对 Claude 下指令时尽量清晰、具体、无歧义。例如“创建两个相距50mm的孔”就比“打两个孔”要好。好的提示词能显著提高 AI 理解意图和选择正确工具的准确率。9. 总结与后续学习方向通过本文我们完成了从零开始将 Claude AI 通过 MCP 协议连接到 FreeCAD 的完整过程。我们不仅搭建了环境更关键的是理解了这套技术栈背后的逻辑MCP 是桥梁FreeCAD Python API 是基础Claude 是执行大脑而真正的智慧在于你如何设计提示词和利用现有工具。这套方案的真正价值不在于实现全自动建模而在于它极大地压缩了“想法”到“软件操作”之间的路径。对于参数化设计、设计变更、设计审查和文档生成等场景它能节省大量机械式点击和查找的时间。如果你想继续深入可以从以下几个方向探索深入研究 FreeCAD Python API这是所有自动化的根基。FreeCAD 官方文档和论坛有丰富的资源。理解如何用 Python 创建草图、添加约束、执行布尔运算等你就能教会 AI 做更多事。贡献或定制 MCP Server查看mcp-server-freecad项目的源码尝试为你自己的常用操作添加新的工具函数。这是将个人效率最大化的关键。探索其他 MCP 服务器MCP 生态正在成长。除了 FreeCAD还有连接数据库、文件系统、日历、Web 搜索等各种服务器。你可以构建一个属于你自己的、由 AI 协调的“数字员工”网络。结合其他 AI 模型Claude Desktop 只是 MCP 的一个客户端。理论上任何支持 MCP 协议的客户端未来可能有 VS Code 插件、其他 AI 助手等都可以连接你的 FreeCAD 服务器。技术正在让工具变得更智能、更贴合人的思维。将 AI 引入 CAD 设计不是要取代工程师而是为了让工程师从繁琐中解放出来更专注于创造本身。现在桥梁已经搭好是时候开始你的探索了。建议收藏本文在配置和使用的过程中随时回来查阅排查思路和最佳实践。