MCP(Model Context Protocol)是 Anthropic 于 2024 年 11 月发布的开放标准,让 Claude Code 通过统一的 JSON-RPC 接口调用外部工具——数据库、浏览器、API 等。在 MCP 出现之前,每一项 AI 工具集成都是定制的;MCP 让集成变得可组合。本文聚焦落地配置,讲清楚配置文件放哪里、五个值得优先安装的 server,以及典型故障排查思路。
MCP 到底是什么
架构:一个MCP server就是在你机器上运行的一个
进程(远端托管的server也支持)。Claude Code启动
时会拉起每个已配置的MCP server,接收该server提供
的工具列表,随后在会话中按名调用这些工具。所有
通信走stdin/stdout,基于JSON-RPC 2.0。本地server
不需要HTTP、不需要端口、也无需任何网络配置。
配置文件放在哪里
~/.claude/settings.json 全局配置,对本机
所有Claude Code会话
生效
.claude/settings.json(项目目录) 项目级配置,仅在
该目录内运行时生效,
同名键覆盖全局配置
项目级文件适合放项目专属的 server(比如绑定某个项目数据库连接串的 server);全局文件适合放每个项目都用得到的 server(比如 Fetch 与 GitHub)。
安全提示:项目目录中的.claude/settings.json若
包含凭据,必须加入.gitignore。曾有事故正是凭据
通过npm包随settings.json一起对外泄露
基础配置结构
settings.json 中的 mcpServers 键是一个映射:从 server 名称到 server 配置,每条配置说明该 server 进程如何启动。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "ghp_your_fine_grained_token_here"}
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}几点关键说明:
- npx上的-y参数会在缺包时自动安装,配置方便但
首次启动会稍慢,可通过固定版本规避
- 凭据放在env对象中,不要作为命令行参数——参数
会被记录,环境变量默认不会
- Server名(键)随意定,仅用于错误信息和Claude
看到的工具描述
值得优先安装的五个 Server
1. Filesystem —— 给 Claude Code 对指定目录的读写权限。没有它,Claude Code 只能读你显式粘贴进会话的文件或工作目录已有的文件。装上它,Claude 可以遍历目录树、按路径读取任意文件以及向磁盘写入。包名后跟的路径参数即"允许根"——项目内安装就传项目根目录,只有确实需要跨目录浏览时才考虑传 home 目录。
2. Memory —— 提供一个跨会话持久化的本地知识图谱。Claude 可以存事实、关系与观察,后续会话无需重新读源码即可调取。默认以 JSON 形式存放在 ~/.claude-memory/。这是 Claude Code 最接近"记得你的项目"的能力——它不是自动的(Claude 必须显式存观察),但配好以后,把项目搁置一段时间再回来,能显著降低重新探索的成本。
3. GitHub —— 给 Claude 访问 GitHub API 的能力:读 issue 与 PR、搜索代码、创建 issue、发评论、管理分支。
{
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "github_pat_..."}
}
}需要一把范围限定在你想授权的仓库的细粒度个人访问令牌(PAT)——一把对账户内所有仓库具备写权限的 PAT 是相当重要的凭据,应当像对待部署密钥一样对待。
4. Playwright —— 通过 Playwright 给 Claude 一个真正的浏览器,可以打开页面、点击、填表单、截屏、抽取页面结构。这与 Fetch server 不同——Playwright 会渲染 JavaScript,Fetch 不会。
{
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}浏览器按需启动,Claude Code 会话结束时关闭,默认无界面运行——想看着它运行,在 args 里加 --headed。
5. Fetch —— 抓取网页内容并转成 Markdown。不需要 JavaScript 渲染的页面(文档站、GitHub README、博客文章)用它比 Playwright 更轻,属于 Anthropic 官方参考实现集。
{
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}这个 server 需要 uvx(Astral 出品的 Python 包运行器),用 pip install uv 安装。如果只想留在 Node 生态,社区有 npm 封装版本,但官方版本是 Python。
验证 server 是否跑起来
修改完 settings.json 后启动一个新会话,直接问Claude:"What MCP tools do you have access to?" Claude 应该会列出你配置过的 server 与各自提供的工具。如果某个 server 缺席,故障通常是这三种之一:
1. 包没装上:-y会自动装,但可能因npm镜像缓慢或
网络防火墙失败,手动跑一遍npx命令看具体报错
2. 路径不对:Filesystem server接收绝对路径,
相对路径或拼写错误会导致启动失败,错误日志
记在~/.claude/logs/
3. 凭据无效:server起来了但调用工具时报错,最
常见原因是API key过期,先在curl中直接验证
凭据再排查MCP这一层
项目级 vs 全局配置的组织方式
常见做法:
全局配置放Fetch、Memory、Playwright——这些在
任何项目里都用得上
项目级配置放Filesystem(允许根设为项目根)、该
项目的数据库server,以及范围限定到本项目仓库的
GitHub server
这样切到任意项目目录,Claude Code都会自动加载
正确的server集合,无需手动切换配置
远端 MCP Server
Anthropic 在 2026 年初新增了对远端 MCP server 的支持(走 SSE 而非 stdio),配置使用 url 键替代 command 与 args:
{
"mcpServers": {
"stripe": {
"url": "https://mcp.stripe.com",
"headers": {"Authorization": "Bearer sk_live_..."}
}
}
}对于自身维护托管 MCP 端点的服务(如 Stripe),远端 server 很方便,代价是每次工具调用多一次网络往返,凭据走线上——务必只用 HTTPS 远端,把 Authorization header 像保护环境变量中的 API key 一样对待。
安全考量
每多装一个server,就给会话多一份攻击面:
- 只装活跃组织维护或有公司背书的server
- 安装前阅读源码中的工具描述——嵌在工具元数据里
的恶意指令是已记录在案的攻击向量
- 使用最小权限凭据——只读单仓库的GitHub token
不应该具备对所有仓库的写权限
- .claude/settings.json若含凭据,绝不入git
实战建议
1. 新手入门优先装Filesystem,这是解锁Claude
Code项目内自主操作能力的第一步
2. 长期项目务必配Memory server,避免每次重启
会话都要重新探索一遍项目结构
3. GitHub token严格按最小权限原则申请,只授予
当前项目仓库的读写范围
4. 需要抓取JS渲染页面用Playwright,纯静态文档
页面用Fetch更轻量,不要一律用重量级方案
5. 全局/项目级配置分层组织,减少来回手动切换的
维护成本
总结
MCP 让 Claude Code 从"回答问题的助手"进化成"能操作真实系统的 Agent"。五个官方参考 server 覆盖了文件、记忆、代码托管、浏览器和网页抓取五大高频场景,是绝大多数开发者都值得优先配置的起点。
来源:MCP server 2026 教程:安装、配置并跑起你的第一个 server — Septim Labs