RSS

第 9 章 / 共 12 章

接入外部世界:MCP 与插件

约 10 分钟 更新于

9.1 什么时候需要往外接

到第 8 章为止,Claude Code 的能力都局限在你的文件系统和 shell 里。但真实工作里,很多信息不在仓库中:工单在 Jira,日志在监控平台,数据在数据库,设计稿在设计工具里。

MCP(Model Context Protocol)就是把这些外部系统接进来的标准接口。接进来之后,它可以直接查工单、读日志、执行只读 SQL,而不需要你手工复制粘贴。

第9章:会话、MCP 服务器与外部系统的关系
图 9.1:注意每个 MCP 服务器都是独立的进程或远程服务,Claude Code 只是它的客户端。这个结构决定了两件事:一是每接一个都会占用上下文预算(工具定义要进上下文),二是每接一个都是一次信任决策。

9.2 接入三步

第一步:添加服务器。 远程 HTTP 服务器:

claude mcp add --transport http notion https://mcp.notion.com/mcp

本地进程(stdio):

claude mcp add --transport stdio my-db -- npx -y some-database-mcp

带鉴权头:

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer $GITHUB_TOKEN"

第二步:选作用域。 三种:

作用域存在哪适用
local(默认)你的本地配置只有你、只在这个项目用
project项目里的 .mcp.json团队共享,进版本库
user你的全局配置你所有项目都用

团队共享的写法:

claude mcp add --transport http stripe --scope project https://mcp.stripe.com

对应的 .mcp.json

{
  "mcpServers": {
    "stripe": {
      "type": "http",
      "url": "https://mcp.stripe.com"
    },
    "internal-db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@acme/db-mcp"],
      "env": {
        "DATABASE_URL": "${READONLY_DATABASE_URL}"
      }
    }
  }
}

注意 ${READONLY_DATABASE_URL} 这种环境变量展开——永远不要把密钥直接写进会提交的 .mcp.json

第三步:验证。

claude mcp list

会话里用 /mcp 查看连接状态、完成 OAuth 登录、或临时禁用某个服务器。

9.3 一个重要的取舍:MCP 不总是最优解

官方成本文档里有一条容易被忽略的建议:能用 CLI 工具解决的,优先用 CLI 工具,而不是 MCP 服务器。

理由是上下文成本。一个 MCP 服务器会把它的全部工具定义放进上下文,哪怕这次任务一个都用不上。而 ghawskubectl 这类命令行工具,Claude Code 本来就能通过 Bash 调用,成本接近于零。

一个实际的判断顺序:

  1. 这件事有成熟的 CLI 吗?有就用 CLI(gh pr listaws s3 ls);
  2. 没有 CLI,但有官方 MCP 服务器?接 MCP;
  3. 都没有?考虑写个小脚本,比接一个第三方 MCP 更可控。

9.4 插件:把一整套配置打包分发

插件可以把技能、子代理、钩子、MCP 配置打成一个包,一次安装。首次交互式启动时,官方市场会自动加入;社区市场需要手动添加:

/plugin marketplace add anthropics/claude-plugins-community

然后浏览和安装:

/plugin

插件详情页会显示一个很有用的信息:上下文成本估算。装之前看一眼,你就知道这个插件会吃掉多少预算。

已安装列表里还有一个”最近未使用”分组(按一定时间和会话数统计),这是官方专门为裁剪上下文成本设计的入口。定期去这个分组里清理,是一个见效很快的习惯。

有一类插件对静态类型语言特别值得装:代码智能(LSP)插件。装上对应语言的 LSP 后,它编辑完能立刻拿到类型诊断,也能直接跳转定义,而不必”grep 一下再读五个文件”。需要注意的是,LSP 插件依赖本机安装对应的语言服务器。

9.5 信任:这一节请不要跳过

官方文档对插件的措辞非常直接:

插件和市场是高度可信的组件,能以你的用户权限在你的机器上执行任意代码

MCP 服务器同理,官方的说法是:连接前先确认你信任这个服务器;会抓取外部内容的服务器会带来提示注入风险。Anthropic 会按上架标准审核目录里的连接器,但不对任何 MCP 服务器做安全审计或托管

一份实用的接入前检查清单:

  • 这个服务器是官方发布的,还是第三方的?
  • 它需要哪些凭据?能不能给一个只读的、最小权限的?
  • 它会不会把我的代码或数据发到外部?
  • 它抓取的内容会不会进入我的上下文?(如果会,那些内容就是不可信输入)
  • 团队共享的 .mcp.json 里有没有硬编码的密钥?

关于最后两条,第 12 章会展开讲提示注入的具体形态。

9.6 社区生态:怎么看待那些高星仓库

社区里有大量围绕 Claude Code 的项目:配置模板集合、子代理合集、钩子示例、使用量统计工具、甚至把 Claude Code 指向其他模型供应商的路由器。它们的星标数往往很高。

几条务实的建议:

  • 索引类项目(各种 awesome 清单)适合用来找灵感,但里面的链接质量参差,也不经 Anthropic 审核;
  • 大规模注入型框架(一次性给你几十个命令和代理)恰恰是官方警告的上下文膨胀来源。它们宣称的”节省 token”多数没有独立验证;
  • 模型路由类项目把 Claude Code 指向非 Anthropic 模型,这超出官方支持范围,也可能触及服务条款,不建议初学者碰;
  • 看维护状态而不是星标数。有些被广泛引用的钩子示例仓库已经半年没有更新,而钩子的字段在此期间已经变过。

判断一个社区项目值不值得用,比看星标有效的三个信号是:最近一次提交时间、issue 是否有人回、以及它有没有明确的许可证。

9.7 常见坑

9.8 本章练习与检查点

你现在的成果:你的 Claude Code 现在能看到仓库以外的世界了,而且你知道每接一样东西的代价和风险各是什么。

广告位 · Multiplex 关联广告