嗨,我是 Lena。大概几周前我突然想明白了一件事,却又有点纳闷:为什么我会拖到现在才想通。
我一直在用 Claude Code——跑 shell、改文件、一步步做重构。挺有用,但总觉得还是各干各的。后来我连上了一个 GitHub MCP server,让它去 review 一个 pull request、顺便看看相关的 Sentry 报错、再更新一下 Jira 工单。同一次会话里,三个服务串起来了,居然真能跑通。
那一刻它就不像「聪明一点的终端壳」了,而更像可以拼起来的东西。这篇文章,是我希望自己当初就能读到的那份——免得为了搞明白这些,在零散文档和 GitHub issue 里再泡上两小时。
Claude Code 里 MCP 是怎么工作的
Claude Code 本身就是一个 MCP client。 这个区分很重要。单论本体,它能读文件、跑 bash、搜代码、调 Anthropic API,已经不少了。但如果没有东西把它们连起来,它就碰不到你的 GitHub repo、Postgres 表,或者 Figma 画板。
那个「东西」就是 MCP——一个开源标准,用来把 AI 和工具接在一起。你每加一个 MCP server,Claude Code 就多一批可用 tool:查库、读 Jira ticket、跟各种外部服务打交道。
Claude Code 怎么处理 tool call
当 Claude Code 决定要调某个 MCP tool 时,它不会闷头就发。每次调用 MCP tool 之前,它都会弹出权限提示——把 tool 名字和输入参数摆出来,让你先看一眼它打算干什么,再执行。
Tool 名字有一套固定格式:mcp__<server-name>__<tool-name>。所以 filesystem server 的读文件 tool 会变成 mcp__filesystem__read_file。如果你在 headless 或 CI 里预批准 tool,这个命名规则就很重要。
MCP 比内置 tool 多出来的那部分
Claude Code 自带的 tool,把本地环境照顾得挺好。它们做不到的是:够到外部服务、查数据库、从 issue tracker 拉数据。MCP 把这条胳膊接长——每个 server 都给 Claude Code 一组新能力:查库、开 GitHub issue、跑浏览器测试,或者从 Figma 拉 design token。
Model Context Protocol specification 里定义了三个核心原语:Resources(原始数据)、Tools(动作)、Prompts(可复用模板)。日常里你打交道最多的,其实还是 Tools。
在 Claude Code 里安装和配置 MCP server
MCP 配置放哪儿
Claude Code 主要会在两个地方放 MCP 配置:
- Project scope —— 项目目录下的
.mcp.json,可以进版本库,和团队共享 - User scope —— 用户设置里,所有项目通用
项目里还可以用 .claude/settings.local.json 做覆盖;用户本机私货可以放在 ~/.claude/settings.local.json。
多数个人开发者,用户级往往更顺手。团队场景的话,.mcp.json 更合适——跟着 repo 一起走。
怎么写一条 server 记录
最常用的是 claude mcp add。对远程 MCP server,官方更推荐 HTTP transport,也是云服务里支持最广的一种:
# Remote HTTP server (recommended for cloud services)
claude mcp add --transport http notion https://mcp.notion.com/mcp
# Local stdio server (for tools needing direct system access)
claude mcp add --scope project filesystem -- npx -y @modelcontextprotocol/server-filesystem /home/user/projects
# User-scoped (available across all projects)
claude mcp add --scope user my-db -- npx -y @my-org/mcp-server-postgres
很多人在这里绊一下:所有选项(--transport、--env、--scope)都必须写在 server 名字前面。-- 用来把 server 名字和后面的命令参数隔开。顺序一乱,flag 就会被传给错误的进程。
如果你在 Windows 上,记得给 npx 包一层 cmd /c:
claude mcp add --transport stdio my-server -- cmd /c npx -y @some/package
没有这层 cmd /c,Windows 往往没法直接执行 npx,然后你就看到 "Connection closed."
怎么确认连上了
加完 server 之后跑:
claude mcp list
在 Claude Code 会话里用 /mcp 打开管理面板,看每个 server 是 connected、disconnected 还是 error。
在会话里试 tool call
状态显示 connected 之后,直接让 Claude Code 用它就行。比如接上 filesystem server 之后说:"Read the file at /home/user/projects/config.json"。配置对的话,执行前会先弹出那条权限提示。
顺带一提:MCP 相关行为会随着 Claude Code 更新变。一切以官方 Claude Code MCP documentation 为准——如果和这里写的不一致,以文档为准。
我在 Claude Code 里会优先考虑的 MCP server
下面是我觉得 表现比较稳定 的一批,依据是 2026 年初还在维护的情况。GitHub 上的 official MCP servers repository 里有完整清单——有些是 Anthropic 维护的,更多是社区作品。
Filesystem —— 地基级。读、写、整理本地文件,目录边界可配。你能控制暴露哪些目录。
claude mcp add --scope project filesystem -- npx -y @modelcontextprotocol/server-filesystem /your/project/path
GitHub —— 用 personal access token,走 HTTP transport 加上 GitHub MCP server:
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT"}}'
这样 Claude Code 能碰 PR、issue、repo。很适合问那种:"Review the diff in PR #234 and leave inline comments."
PostgreSQL —— 让 Claude 直接查你的库。把 connection string 配成环境变量:
claude mcp add --scope user my-db -- npx -y @modelcontextprotocol/server-postgres
# Set DATABASE_URL in your environment
Web search / Fetch —— Firecrawl MCP 会抓 URL,吐干净的 Markdown。Claude 需要最新 API 文档或训练数据里没有的第三方资料时,很省事。
Context7 —— 按版本拉库文档。特别适合你用的框架版本,在训练数据里又比较糊的时候。
Sequential Thinking —— 不是数据源,是个「推理」向的 server。帮 Claude 在做大块重构之前,先把步骤摊开。
一句实在的提醒:第三方 MCP server 要谨慎用。 Anthropic 并没有逐一验证每个 MCP server 的正确性或安全性。尤其是会拉取不可信内容的 server,要特别当心 prompt injection 风险。
Claude Code 里 MCP 出问题怎么排
Server 根本不出现
最常见是 PATH。Claude Code 起 MCP server 子进程时的 shell 环境,往往和你日常终端不一样,所以 node、npx 可能找不到。如果你用 nvm,要么写死 Node 二进制路径,要么把 nvm 初始化那段放进非交互 shell 也会读的 profile 里。
JSON 也要自检:尾逗号、缺引号、没转义的反斜杠,都会导致默默失败——JSON 不允许尾逗号,这在 MCP 配置文件里简直是家常便饭。重启前先用 JSON linter 过一遍。
Tool call 报错
如果能连上但 tool call 失败,先核对 tool 名格式:mcp__<server-name>__<tool-name>。再确认环境变量(API key、connection string)在 shell 里真的设了——Claude Code 继承的是进程环境,不会自动去读你的 .env。
如果是 SSE transport 闹脾气:官方说 MCP_TIMEOUT 对 SSE 连接不适用——换成 HTTP transport 往往更稳,文档也更推荐。
MCP 之外:怎么让 Claude Code 的产出真的能被复用
我经常会想这件事。MCP 解决的是 够得着 的问题——GitHub、数据库、Slack 都能摸了。但每次会话还是从零开始。它修好的坑、摸出来的模式、走得通的做法,并不会自动变成你系统里的「默认套路」。
「Claude 这次帮了大忙」和「这份帮忙已经固化进我的工作流」之间,确实有一道缝;而且这道缝,跟 MCP 解决的不是同一类问题。
眼下比较务实的做法其实很朴素:用 CLAUDE.md 把希望 Claude 反复用的写法记下来;把好用的 prompt 跟代码一起 commit;把一次成功的 Claude Code 会话当成值得沉淀的东西——而不只是用完即走。
FAQ
怎么给 Claude Code 加 MCP server?
跑 claude mcp add,选对 transport。远程服务用 --transport http;本地工具用 --transport stdio。用 --scope project 绑项目,或 --scope user 绑用户。完整语法和例子在 official Claude Code MCP docs。
Claude Code 的 MCP 配置文件在哪?
项目级在仓库根目录的 .mcp.json。用户级在 Claude Code 的用户设置里。更复杂的也可以直接改 ~/.claude.json——改完记得校验 JSON 再重启。
哪些 MCP server 和 Claude Code 最搭?
对多数开发者:GitHub MCP server + filesystem server 能覆盖最高频场景。经常查库就加 PostgreSQL。文档密集型工作值得折腾一下 Context7。大块多步重构可以试试 Sequential Thinking。先上一两个,确认连得干净,再慢慢加。
我会继续盯着这套东西怎么演进。上面这份清单反映的是 2026 年初还真在维护、能用的——不是听起来很酷、实际上吃灰的那种。




