
通过 MCP(Model Context Protocol)连接外部工具和数据源,让 Claude Code 的能力无限扩展。
MCP(Model Context Protocol)是一个标准协议,让 AI 系统能够连接外部工具、API 和数据源。通过配置 MCP 服务器,Claude Code 可以:
MCP 服务器可以在以下位置配置:
| 位置 | 文件 | 作用域 |
|---|---|---|
| 项目根目录 | .mcp.json | 项目级(推荐) |
| 项目设置 | .claude/settings.json | 项目级 |
| 用户设置 | ~/.claude/settings.json | 全局 |
| 企业管理 | managed-settings.json | 管理员 |
| Agent 定义 | .claude/agents/*.md | Agent 专属 |
除了手动维护配置文件,也可以用 claude mcp add <name> <commandOrUrl> [args...] 直接把服务器写入配置。该命令会根据 --scope 将内容保存到不同文件:
--scope project → 写入项目根目录的 .mcp.json--scope local(默认)→ 写入 .claude/settings.local.json--scope user → 写入 ~/.claude/settings.json首次添加的服务器依然会触发与文件配置相同的信任审批;批准结果记录在 .claude/settings.local.json 中。
--scope local|user|project 决定谁能看到该服务器,默认为当前项目本机(local)。--transport stdio|http|sse,默认 stdio。如果命令像 URL 却没指定传输,CLI 会警告以免把远程服务器当成本地进程。-e/--env KEY=value 仅适用于 stdio 服务器,为子进程注入环境变量,可用多次。-H/--header "K: V" 用于 HTTP/SSE 服务器附加请求头。--client-id、--client-secret、--callback-port 仅对 HTTP/SSE 生效;--client-secret 会提示输入密钥并安全存入 .claude/settings.local.json(或对应 scope 的设置文件)。claude mcp xaa setup,然后为 HTTP/SSE 命令附加 --xaa --client-id ... --client-secret。.mcp.json),若服务器配置与策略冲突会立即报错。/mcp 查看新服务器是否已就绪。使用
claude mcp add --help可以查看全部标志位和更详细的说明。
<commandOrUrl> 当作可执行文件,[args...] 通过 -- 传递。OAuth、headers、--xaa 在 stdio 模式下会被忽略。若误把 URL 写在这里,命令会输出纠正提示。--transport http 并传入服务器 URL,可选 headers、OAuth、XAA。适合一次性请求/响应的 REST 样式 MCP。--transport sse 连接长轮询/Server-Sent Events 端点。和 HTTP 一样支持 headers/OAuth/XAA,但更适合持续流式能力。1. stdio 服务器(带环境变量和子命令)
claude mcp add -s project -e API_KEY=$INTERNAL_KEY filesystem -- npx -y @anthropic/mcp-filesystem /srv/shared
2. HTTP 服务器(自定义 Header)
claude mcp add --scope user --transport http corridor https://app.corridor.dev/api/mcp \
-H "Authorization: Bearer $CORRIDOR_TOKEN" \
-H "X-Tenant: ops"
3. SSE 服务器(OAuth + 回调端口)
claude mcp add --transport sse sentry https://mcp.sentry.dev/mcp \
--client-id $SENTRY_CLIENT_ID \
--client-secret \
--callback-port 38910
上述命令在写入配置后,会提示首次连接仍需在 Claude 中批准,与直接编辑 .mcp.json 的审批流程一致。密钥和 Token 一律保存在本地设置文件中,不会写入版本控制。完成添加后,可随时运行 /mcp 检查状态,并通过 claude mcp add --help 了解更多进阶选项。
.mcp.json 格式项目根目录下的 .mcp.json 是最常用的配置方式:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"slack": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-slack"],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
}
}
}
}
最常见的类型,通过 stdin/stdout 通信:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["./mcp-server/index.js"],
"env": {
"API_KEY": "${MY_API_KEY}"
}
}
}
}
直接从 npm 安装并运行:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "/path/to/allowed/dir"]
}
}
}
连接远程 MCP 服务器:
{
"mcpServers": {
"remote-server": {
"url": "https://mcp.example.com/sse",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
}
}
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
功能:创建 Issue、PR、查看代码、管理仓库等。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y", "@anthropic/mcp-filesystem",
"/Users/me/documents",
"/Users/me/downloads"
]
}
}
}
让 Claude 访问项目目录之外的文件。
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
}
}
}
}
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-brave-search"],
"env": {
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
}
}
}
}
{
"mcpServers": {
"internal-api": {
"command": "python3",
"args": ["-m", "my_company.mcp_server"],
"env": {
"API_ENDPOINT": "https://api.internal.company.com",
"API_TOKEN": "${INTERNAL_API_TOKEN}"
}
}
}
}
Agent 可以声明自己需要的 MCP 服务器:
---
name: devops-agent
description: DevOps 运维 Agent
mcpServers:
- github
- slack
---
---
name: data-agent
description: 数据分析 Agent
mcpServers:
- name: analytics-db
command: npx
args: ["-y", "@anthropic/mcp-postgres"]
env:
DATABASE_URL: "${ANALYTICS_DB_URL}"
---
---
name: jira-agent
description: Jira 项目管理 Agent
requiredMcpServers:
- jira
---
设置 requiredMcpServers 后,如果对应的 MCP 服务器未配置,该 Agent 将不可用。
项目 .mcp.json 中的 MCP 服务器首次使用时会弹窗询问用户是否信任。批准后记录在:
// .claude/settings.local.json
{
"enabledMcpjsonServers": ["github", "slack"],
"disabledMcpjsonServers": ["untrusted-server"]
}
// .claude/settings.json 或 settings.local.json
{
"enableAllProjectMcpServers": true
}
⚠️ 仅在信任项目中的所有 MCP 定义时使用。
管理员可以限制允许使用的 MCP 服务器:
// managed-settings.json
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverName": "internal-api" },
{ "serverCommand": ["npx", "-y", "@company/approved-mcp"] },
{ "serverUrl": "https://*.company.com/*" }
]
}
匹配方式(三选一):
serverName — 按名称匹配serverCommand — 按命令精确匹配serverUrl — 按 URL 模式匹配(支持通配符 *){
"deniedMcpServers": [
{ "serverName": "dangerous-tool" },
{ "serverUrl": "https://*.untrusted.com/*" }
]
}
黑名单优先级高于白名单。
{
"allowManagedMcpServersOnly": true
}
设置后,用户仍可添加自己的 MCP 服务器,但只有管理员定义的白名单控制哪些能用。
MCP 配置中的环境变量使用 ${VAR_NAME} 语法引用运行时环境变量:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"env": {
"API_KEY": "${MY_API_KEY}",
"DB_HOST": "${DB_HOST:-localhost}",
"DEBUG": "true"
}
}
}
}
也可以在 settings.json 的 env 字段中预设环境变量:
{
"env": {
"GITHUB_TOKEN": "ghp_xxxx",
"SLACK_BOT_TOKEN": "xoxb-xxxx"
}
}
当沙箱启用时,MCP 服务器的网络访问也受沙箱限制:
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["api.github.com", "slack.com"]
}
}
}
确保 MCP 服务器需要访问的域名在白名单中。
在 Claude Code 中使用 /mcp 命令查看当前已连接的 MCP 服务器。
| 问题 | 解决方案 |
|---|---|
| 服务器启动失败 | 检查 command 和 args 是否正确,手动运行命令测试 |
| 环境变量未生效 | 确认变量已设置,使用 echo $VAR_NAME 验证 |
| 权限被拒绝 | 检查 allowedMcpServers 白名单 |
| 网络不通 | 沙箱模式下需要将域名加入 allowedDomains |
| 服务器频繁断开 | 检查服务器进程是否稳定,查看日志输出 |
.mcp.json 中硬编码 Token.mcp.json 提交到 Git — 团队共享 MCP 配置settings.local.json 的 env — 个人的不提交allowedMcpServers 防止不受控的外部连接requiredMcpServers — 确保依赖的服务器可用