MCP接入(按需):什么时候才真需要MCP,怎么接现成server
- 能判断自己的场景到底需不需要MCP,不盲目跟风装一堆server
- 理解MCP滥用为什么拖慢AI工具,知道token开销从哪里来
- 能按配置示例成功接入一个现成MCP server并验证是否生效
- 掌握Skills优先MCP按需的选型原则,碰到新需求有判断框架
新手一听"MCP",第一反应往往是:这是高级功能,得装上才算用好 Claude Code。于是打开 GitHub,搜 awesome-mcp-servers,把看起来有用的都塞进配置文件,然后发现 Claude Code 变慢了、响应时间长了、有时候还莫名其妙绕远路。
问题不在 MCP 本身,在于用错了场景。
MCP 是连接外部系统的标准协议,不是 Claude Code 的"必装增强包"。大多数日常编程任务,你完全不需要它。这篇的核心就是教你辨别那条线:什么时候该上 MCP,什么时候别碰它。
MCP 是什么
MCP(Model Context Protocol)是让 AI 工具连接外部系统的标准协议。
原理很直接:Claude Code 默认只能读写你本地的文件、执行本地命令。如果你想让它读数据库里的数据、调用某个 SaaS 的 API、拿到你公司内网服务的内容,就需要一个"桥"。MCP 就是这个桥的标准。
它的工作方式是这样的:
- 你启动一个 MCP server(一个独立进程,可以是你自己写的,也可以是别人开源的)
- 这个 server 暴露一组"工具"(tools),比如"查询数据库"、"搜索 Confluence 页面"、"调用 GitHub API"
- Claude Code 启动时读取你的 MCP 配置,知道有哪些 server 可用
- 当 AI 认为需要用某个工具时,它会调用对应的 MCP server,拿回结果,再继续推理
详细的概念解释可以看 MCP 是什么、什么时候才该上,这篇更聚焦在"怎么接"和"什么时候接"。
什么时候才真需要 MCP
有一个简单的判断标准:你需要 AI 读写你本地文件系统和代码之外的数据,才需要 MCP。
以下场景,MCP 是真的有用:
| 场景 | 为什么需要 MCP |
|---|---|
| 让 AI 直接查你的 PostgreSQL 数据库,帮你写 SQL 或排查数据问题 | 数据在数据库里,Claude Code 本身触达不到 |
| 让 AI 搜索你公司的 Notion / Confluence 知识库 | 数据在 SaaS 平台,需要 API 认证才能访问 |
| 让 AI 操作 GitHub Issues、PR,帮你做代码审查流 | 需要 GitHub REST API,本地没有这些数据 |
| 让 AI 调用内部微服务 API,帮你调试接口联调问题 | 内部 API 需要认证,Claude Code 自己发不了这个请求 |
以下场景,你不需要 MCP:
- 改代码、写功能、跑测试——这些 Claude Code 直接操作本地文件就够了
- 用常见命令行工具(
grep、curl公开 API 等)——直接在对话里让 AI 执行命令 - 复用自定义工作流、快捷指令——这是 Skills 的场景,不是 MCP
- 学习和理解代码、生成文档——纯文本任务,不需要连接外部系统
一句话判断:"AI 需要读写我本地没有的外部数据" → 考虑 MCP;其他情况先用 Skills 或直接对话。
为什么别一上来就堆 MCP
这是新手最常见的误操作,值得单独说清楚。
原因一:每个 MCP server 都占上下文窗口。
Claude Code 每次启动,会把所有已注册的 MCP server 暴露的工具定义(工具名称、参数说明、描述文本)全部加载进上下文。你装了 5 个 server,每个 server 有 10 个工具,加起来几十条工具描述,少则几千 token,多则上万 token——这些 token 还没干任何事,就已经被"开场白"吃掉了。
可用的上下文变少了,AI 能"看到"你代码的范围就变窄了,长对话越往后越容易出现"忘了之前做了什么"的问题。
原因二:AI 会被额外工具分心。
工具越多,AI 每次推理时需要"决策"是否使用某个工具的开销越大。有时候它会莫名其妙地调用一个你根本没想用的 MCP 工具,绕了一大圈,结果还不如直接回答。这不是 bug,是工具列表太长导致的推理质量下降。
原因三:没用到的连接是纯负担。
你装了 GitHub MCP server,但今天只是在调 CSS 样式——那个 server 的工具定义仍然占着 token,而且 server 进程还在后台跑着,占内存和端口。
正确的使用姿势:按项目配置,按需启用。 项目 A 需要查数据库,就在项目 A 的配置里加数据库 MCP;项目 B 是纯前端,什么都不加。关于如何做好 Skills 和 MCP 的调度决策,可以对照看 3.8 的判断表。
怎么接一个现成 MCP server
以接入官方的 Filesystem MCP server(允许 AI 在指定路径读写文件,适合需要跨项目操作文件的场景)为例,演示完整配置流程。
注意:具体配置字段、server 名称、包版本以官方文档为准(Claude Code MCP 文档)。下面给的是流程示范,不是可直接复制的生产配置。
第一步:安装 server 包
大多数开源 MCP server 以 npm 包形式发布:
npm install -g @modelcontextprotocol/server-filesystem
安装完成后验证:
npx @modelcontextprotocol/server-filesystem --help
看到帮助信息说明包安装正常。
第二步:编辑 Claude Code 配置文件
Claude Code 的 MCP 配置放在 .claude/settings.json(项目级)或 ~/.claude/settings.json(全局级)里。项目级配置只对这个项目生效,推荐优先用项目级。
打开或创建配置文件,加入 mcpServers 字段:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/你要授权访问的目录路径"
]
}
}
}
关键字段说明:
command:启动 server 用的命令(npx、node、python等,取决于 server 的实现语言)args:传给命令的参数数组,通常第一个是包名,后面是 server 需要的参数- 路径参数:filesystem server 要求指定允许操作的目录,这是权限边界
第三步:重启 Claude Code,验证是否加载
退出 Claude Code,重新在项目目录启动:
claude
进入交互界面后,输入:
/mcp
你应该看到什么:列出当前已加载的 MCP servers,其中应该出现你刚加的 filesystem,状态是 connected 或 running。如果出现 error 或 not connected,说明 server 启动失败,去查下一节的故障排查表。
然后测试一下工具是否真的可用:
> 列出 /你授权的目录 里有哪些文件
AI 会调用 filesystem server 的 list_directory 工具,返回文件列表。能看到文件列表说明接入成功。
不同类型 server 的配置差异
| Server 类型 | command 字段 | 常见 args 格式 |
|---|---|---|
| npm 包 | npx |
["-y", "包名", ...参数] |
| 本地 Node.js 脚本 | node |
["路径/server.js", ...参数] |
| Python server | python 或 uvx |
["-m", "模块名"] 或包名 |
| 本地可执行文件 | 可执行文件路径 | 对应参数 |
Skills 优先,MCP 按需:选型原则
碰到一个新需求,应该先问自己这几个问题,再决定要不要用 MCP:
1. 任务只需要操作本地文件和代码吗? → 是的话,直接用 Claude Code 对话,不需要任何额外东西。
2. 需要复用某段工作流、特定格式的指令、或者给 AI 提供额外的背景知识?
→ 用 Skills(.claude/skills/ 下的 markdown 文件)。Skills 是轻量的,不占额外 token,加载按需。
3. 需要 AI 访问本地没有的外部系统数据(数据库、SaaS、内部 API)? → 这才是 MCP 的场景。先看有没有现成的开源 server,有的话按本篇接入;没有的话,再考虑自己写。
4. 需要给 AI 执行复杂的、需要多步骤自动触发的任务? → 看 3.8 的决策表,评估是 slash command、Skills 还是 MCP 更合适。
这个顺序很重要:对话 → Skills → MCP,越往后越重,越往后越需要确认是真的有必要。
Claude Code 的完整工具能力概览见 /tools/claude-code/,包括 MCP 支持的范围和局限。
故障排查表
| 症状 | 原因 | 解法 |
|---|---|---|
/mcp 显示 server 状态是 error |
server 启动命令找不到,或包没安装 | 先单独在终端运行 command + args,看报什么错;确认包已全局安装 |
/mcp 显示 connected,但 AI 说"没有这个工具" |
工具名称或 server 暴露的工具与 AI 的理解不一致 | 输入 /mcp 看具体工具列表,确认工具名;可能需要在对话里明确说"用 filesystem server 的 xxx 工具" |
| AI 调用工具时返回权限错误 | server 配置的路径或认证信息不对 | 检查 args 里的路径是否存在、是否有读写权限;API 类 server 检查 token/key 是否设置正确 |
| Claude Code 启动变慢,响应时间明显增加 | MCP server 启动耗时,或 server 进程响应慢 | 排查各 server 的启动日志;不需要的 server 从配置里移除 |
| 加了 MCP 之后 AI 频繁调用不该用的工具 | 工具描述文本太模糊,AI 容易误判 | 查 server 的工具描述;减少不必要的 server 数量;在对话开头明确"本次任务不需要用数据库" |
| 配置文件修改后不生效 | 没有重启 Claude Code | 完全退出(Ctrl+D)再重新启动 |
常见问题
Q:项目级配置和全局配置哪个优先?
两个配置会合并,项目级的配置会覆盖全局配置中同名的 server。建议:通用 server(比如你每个项目都用的 GitHub server)放全局;只有特定项目需要的(比如只连这个项目的数据库)放项目级。这样你的全局上下文不会被每个项目都塞进去,管理也更清晰。
Q:我找到一个看起来有用的第三方 MCP server,可以装吗?
可以装,但先看几件事:这个 server 的权限范围是什么(它会读写哪些数据、调用哪些 API);是否有 star 数量和维护记录;args 里传的 token/key 是否只给了最小必要权限。MCP server 本质上是一个有读写权限的进程,权限过大是常见风险。
Q:自己的内部 API 没有现成的 MCP server,必须自己写吗?
不一定。先评估:如果只是偶尔让 AI 调几个 API,直接在对话里让 Claude Code 用 curl 或写一段脚本去调,反而更灵活,不需要 MCP。只有当你需要在多个场景里反复、稳定地让 AI 访问这个 API,才值得花时间做一个 MCP server。
Q:MCP server 的 token/key 写在配置文件里安全吗?
.claude/settings.json 如果放在项目目录里,注意不要把它提交进 git(加到 .gitignore)。更好的做法是通过环境变量传 key,然后在 args 里引用环境变量,避免 key 硬编码在文件里。具体做法以你使用的 server 文档说明为准。
Q:用了 MCP 之后感觉 AI 回答质量下降,是什么原因?
最常见的原因是 server 数量太多,工具描述占用了大量 token,AI 可用来"理解你代码"的上下文窗口变小了。先试试把不用的 server 暂时注释掉,重启 Claude Code,对比一下质量变化。
AI 编程工具的能力边界和 MCP 支持详情,可以在 /tools/claude-code/ 找到完整说明。
👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。