Munder Difflin 实践指南:如何为 Claude Code 添加 MCP 服务器(`claude mcp add`、scope 作用域与逐 Agent 授权)

发布时间:2026/9/17 21:02:10
Munder Difflin 实践指南:如何为 Claude Code 添加 MCP 服务器(`claude mcp add`、scope 作用域与逐 Agent 授权) Munder Difflin 实践指南如何为 Claude Code 添加 MCP 服务器claude mcp add、scope 作用域与逐 Agent 授权【免费下载链接】munder-difflinA local multi-agent harness that works with your existing Claude Code, Codex subscriptions, allows you to run an office of agents项目地址: https://gitcode.com/GitHub_Trending/mu/munder-difflin导读本文以claude mcp add一条命令为起点完整讲解为 Claude Code 添加 MCP 服务器的三种方式——CLI 命令、手工编辑.mcp.json、以及在 Munder Difflin 的 Capabilities能力界面中按 Agent 单独授权。读完你将掌握 local / project / user 三种作用域的区别与取舍、带密钥服务器的接入姿势、以及 Munder Difflin 如何把默认 MCP 服务器写入每个 Agent 的独立会话配置实现一个办公室、每名员工各拿各的钥匙。MCP 服务器是什么MCPModel Context Protocol服务器是一个独立程序为 Agent 提供其内置能力之外的工具或数据比如检索 Issue、查询数据库、驱动浏览器。Anthropic 于 2024 年 11 月 25 日开源了 MCP 协议及其初始 SDK 和一批参考服务器Claude Code 只是众多 MCP 客户端之一——任何符合规范的服务器都可以接入。只要服务器被添加进客户端它的工具就会和 Claude Code 内置工具并排出现在会话中。想深入了解 host、client、server 三层角色以及工具发现机制可阅读仓库内的 《What Is an MCP Server?》。如果你同时在跑多个 Claude Code 会话它们读取的是同一份项目级服务器配置无需逐个配置——这一点在 《Manage Multiple Claude Code Sessions》 中有更完整的讨论。一条命令添加服务器claude mcp add为 Claude Code 添加 MCP 服务器的标准姿势是一条命令claude mcp add加上你自选的名称以及能启动服务器的命令或 URL。Claude Code 会把它写入配置文件并在下次启动会话时加载该服务器的工具。以仓库文档中记录的实测过程为例环境为 Claude Code2.1.267$ claude --version 2.1.267 (Claude Code) $ mkdir -p mcp-demo cd mcp-demo $ claude mcp add --scope project demo-docs -- npx -y modelcontextprotocol/server-everything Added stdio MCP server demo-docs with command: npx -y modelcontextprotocol/server-everything to project config File modified: your folder/mcp-demo/.mcp.json $ cat .mcp.json { mcpServers: { demo-docs: { type: stdio, command: npx, args: [-y, modelcontextprotocol/server-everything], env: {} } } }注意两点命令即写即生效claude mcp add在命令执行的那一刻就把配置块写入了.mcp.json不需要额外保存或重启进程只需在同一个文件夹里新开一个会话即可让工具生效。本地服务器用 stdio托管服务器用 HTTP本地工具默认以stdio类型启动服务器名后面的--之后就是启动命令。对于托管在远程的服务器则把本地命令换成--transport http标志加 URL——这与 Anthropic 官方 quickstart 中接入其文档服务器的写法一致。三种作用域local、project 与 user作用域标志--scope决定还有谁能看到这台服务器这是理解claude mcp add的关键作用域默认可见范围写入位置典型用途local是仅你自己且仅在你执行命令的该项目中生效私有本地配置试用、临时调试project否克隆该项目仓库的全体协作者.mcp.json提交进仓库团队共享的数据库、Issue 追踪服务器user否你打开的所有项目仍仅限你自己用户级全局配置个人常用的搜索服务器等跨项目工具project scope写入上面展示的.mcp.json并提交队友克隆仓库后自动获得同一套服务器。适合任何团队在仓库里共同需要的东西。user scope注册一次在你打开的每一个项目里都能用但依然私有。适合你个人到处都要用的工具。local scope只在你当前项目、当前机器上生效。适合先试试看。文档里开了一个无伤大雅的玩笑Michael Scott 会把所有东西都放进 project scope然后把 API key 也提交进仓库供全办公室阅读——这显然是个反面教材密钥类配置绝不能进版本库。需要 API Key 的服务器怎么加带密钥的服务器通过-e标志在添加时传入环境变量格式为-e API_KEYxxx放在服务器名和命令之后。例如claude mcp add my-server -e API_KEYxxx -- npx -y server 的 npm 包而走浏览器 OAuth 登录的托管服务器比如 Anthropic 官方文档中的托管示例则相反添加时只给 URL之后在会话内部通过/mcp命令完成登录授权。手工编辑.mcp.json跳过 CLI 直接写 JSON完全可以。三种作用域最终写入的都是同一套 JSON 结构所以你可以手工编写条目而不是执行命令。这在服务器需要多个环境变量、你想把整个条目模板化放进一个文件时尤其顺手{ mcpServers: { my-server: { type: stdio, command: npx, args: [-y, the servers npm package], env: { API_KEY: your key here } } } }有两个必须记住的运行时行为读取时机在会话启动时Claude Code 只在会话开始时读取.mcp.json不会在会话运行中途热加载。改完配置要开新会话。项目级服务器首次需要审批以文档中的 demo 为例运行claude mcp list时demo-docs显示为pending approval待批准而非connected已连接这正是设计意图。审批应当基于你读过它到底做什么而不是条件反射——服务器的工具描述本质上是 Claude 会读取的文本对它的恶意篡改正是仓库中 《MCP Security Tool Poisoning》 一文所覆盖的攻击形态。VS Code 与桌面版的表现大体一致只是入口不同VS Code 与 Claude Code 桌面版各自有独立的面板入口来添加服务器而不是终端命令Claude Code on the web则直接读取仓库中已提交的.mcp.json桌面版与 CLI 读取的是同一份~/.claude.json和.mcp.json但当服务器名冲突时桌面版自己claude_desktop_config.json里的条目会胜出。Munder Difflin让一台 MCP 服务器只发给一个 Agent从 Munder Difflin 0.4.7 起Pro 工作区的Capabilities能力屏幕可以针对同一楼层上的不同 Agent 分别开关同一台 MCP 服务器——给 Agent A 开、给 Agent B 关对于能写入数据或持有密钥的服务器仍然需要一次显式的是。这套能力建立在 Claude Code 自身机制之上而不是替代它办公室里的每个 Claude Code Agent 都是一个真实的claude会话依然会拾取你在 user / project 作用域添加的服务器正如仓库内 《MCP and Skills in a Hive》 一文所解释的。Capabilities 是额外的旋钮用来把服务器从本可以够到它的那个 Agent身边拿开。源码视角默认 MCP 目录与三级信任分层Munder Difflin 为每个 Agent 会话预置的默认 MCP 服务器定义在 src/shared/mcpCatalog.ts 中。这份目录把服务器按**信任层级tier**分组层级直接决定要不要人点头safe-readonly安全只读无需密钥、不会在工作目录之外产生破坏性写入。随产品默认开启defaultEnabled: true例如 Sequential Thinking、Time、Fetch、Context7 Docsfilesystem与git也属于这一类但会在合并时被限定到 Agent 的工作目录cwd永远不是整盘访问write可写能修改工作区之外的状态默认关闭需要同意门槛consent-gatedsecret密钥需要 API key / token / 连接串例如 GitHubGITHUB_PERSONAL_ACCESS_TOKEN、数据库DATABASE_URL、邮件日历、带 key 的 Web Search默认关闭同样需要显式同意。值得留意的一个工程细节参考服务器并不都是 npm 包。目录注释中标注了几台官方服务器以 Pythonuvx而非 Nodenpx分发例如 Time、Fetch、Git命令中如实反映了各自真实的传输方式未经验证的条目被标记为// TODO-verify。从目录到会话配置mcpDefaults与逐 Agent 合并safe-readonly默认开启、其余默认关闭的种子值由defaultMcpDefaults()从目录自动推导保证两者永不漂移并写入 src/main/config.ts 的mcpDefaults配置项注释明确说明它是按目录 id 键控的默认 MCP 包同意状态。用户在设置界面里翻转这些开关——对应 UI 组件 McpDefaultsSettings.tsx 会把目录按 tier 分组展示并在写入时带上 enabled 状态变更 的提示。真正的合并发生在 src/main/hive.ts 的hookSettings()与buildDefaultMcpServers()中只写会话级settings.json绝不碰~/.claudeMunder Difflin 把 MCP 配置写进每个 Agent 的逐会话 settings 文件因此用户自己全局配置的 MCP 服务器永远不会被覆盖Claude 会以叠加additive方式合并目录 ∩ 同意只有enabled的服务器才会被纳入consented ?? defaultEnabledwrite / secret 需要显式同意e.tier ! safe-readonly consented ! true时直接跳过——即便用户手工改坏或部分编辑了mcpDefaults也无法静默武装一台带密钥的服务器注释称其为纵深防御cwd 限定filesystem/git的cwd占位符在合并时被替换为 Agent 的 cwd严格限定在工作区内命名空间隔离写入的服务器 id 统一加前缀变成munder-id避免与用户~/.claude中同名服务器互相顶掉。顺带一提渲染层在 useHive.ts 中会把工具名以mcp__开头的调用自动归到 MCP 工位显示而不是静默落在普通桌面上——多 Agent 楼层上你一眼就能看出哪个 Agent 正在调哪台 MCP 服务器。招聘清单hire manifest里的 MCP 声明如果你通过招聘清单hire manifest为办公室引入新 AgentAddAgentModal.tsx 会把清单中请求的mcpServers分为两拨展示safe-readonly一栏标注安全、默认已启用其余一栏标注⚠️ 需要你的同意——默认不启用并提示在 设置 → MCP 中审核后启用。也就是说任何要求非只读权限的服务器都无法绕过人工同意悄悄上岗。小结三种入口一个目的场景推荐方式单机快速接入一台本地服务器claude mcp add name -- command团队共享同一台服务器claude mcp add --scope project提交.mcp.json个人所有项目通用claude mcp add --scope user托管服务器claude mcp add --transport http name url多环境变量、想模板化直接手写.mcp.json多 Agent 办公室内按人授权Munder Difflin 的 Capabilities 屏幕需要再次强调以上一切都不依赖 Munder Difflin——claude mcp add是 Claude Code 自己的命令在裸终端里行为完全一致。一个 harness多 Agent 编排工具的价值在于当办公室里同时跑着好几个 Agent、而其中只有一个应该握着某把钥匙的时候它能做到一钥匙一人。下载 Munder Difflin 即可体验——经典办公室classic office免费Capabilities 随 Pro 提供。【免费下载链接】munder-difflinA local multi-agent harness that works with your existing Claude Code, Codex subscriptions, allows you to run an office of agents项目地址: https://gitcode.com/GitHub_Trending/mu/munder-difflin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考