Model Context Protocol(MCP)是 Anthropic 开发的开放标准协议,让 Claude Code 能够连接到数据库、API、文件系统等各种外部工具和数据源。本文介绍如何为 Claude Code 配置和使用 MCP 服务器。
什么是 MCP?
MCP 是 AI 助手与外部工具连接的标准协议,类似于 AI 世界的「USB-C 接口」。通过 MCP:
- Claude 可以查询你的数据库
- 访问第三方 API(GitHub、Jira、Slack 等)
- 读取本地文件系统中通常不在项目目录的数据
- 调用自定义工具和服务
添加 MCP 服务器
方法 1:命令行添加(推荐)
# 添加 stdio 类型的 MCP 服务器
claude mcp add <server-name> --transport stdio -- <command> [args...]
# 示例:添加文件系统 MCP 服务器
claude mcp add filesystem --transport stdio -- npx -y @modelcontextprotocol/server-filesystem /path/to/files
# 添加带环境变量的 MCP 服务器
claude mcp add github --transport stdio --env GITHUB_TOKEN=your_token -- npx -y @modelcontextprotocol/server-github
# 添加 HTTP 类型的 MCP 服务器(远程)
claude mcp add my-api --transport http https://api.example.com/mcp
# 添加 SSE 类型的 MCP 服务器
claude mcp add my-service --transport sse https://service.example.com/mcp方法 2:直接编辑配置文件
用户级别(全项目可用):~/.claude.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"],
"type": "stdio"
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
},
"type": "stdio"
}
}
}项目级别(与团队共享):.mcp.json
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://localhost:5432/mydb"
},
"type": "stdio"
}
}
}管理 MCP 服务器
# 列出所有 MCP 服务器
claude mcp list
# 查看服务器详情
claude mcp get <server-name>
# 删除 MCP 服务器
claude mcp remove <server-name>Anthropic 官方 MCP 服务器
以下是 Anthropic 官方支持的常用 MCP 服务器:
文件系统操作
claude mcp add filesystem --transport stdio -- npx -y @modelcontextprotocol/server-filesystem /allowed/path功能:读写文件系统,支持路径白名单控制权限。
GitHub 集成
claude mcp add github --transport stdio --env GITHUB_TOKEN=your_token -- npx -y @modelcontextprotocol/server-github功能:管理仓库、搜索代码、操作 Issue 和 PR。
PostgreSQL 数据库
claude mcp add postgres --transport stdio --env POSTGRES_URL=postgres://localhost/mydb -- npx -y @modelcontextprotocol/server-postgres功能:查询和探索 PostgreSQL 数据库(只读访问)。
Brave Search
claude mcp add brave-search --transport stdio --env BRAVE_API_KEY=your_key -- npx -y @modelcontextprotocol/server-brave-search功能:通过 Brave Search API 进行网络搜索。
Puppeteer 浏览器控制
claude mcp add puppeteer --transport stdio -- npx -y @modelcontextprotocol/server-puppeteer功能:控制 Chrome 浏览器,适合 UI 测试和网页自动化。
Slack 集成
claude mcp add slack --transport stdio --env SLACK_BOT_TOKEN=xoxb-your_token SLACK_TEAM_ID=T_id -- npx -y @modelcontextprotocol/server-slack功能:发送和读取 Slack 消息,管理频道。
在会话中使用 MCP 工具
添加 MCP 服务器后,Claude 会自动在合适时机使用这些工具:
# 使用 GitHub MCP 查找 PR
find all open PRs related to authentication in the main repository
# 使用数据库 MCP 查询
show me the most active users from the users table in the last 7 days
# 使用文件系统 MCP 访问项目外文件
read the nginx config at /etc/nginx/nginx.conf and suggest optimizations查看可用的 MCP 工具:
/mcp创建自定义 MCP 服务器
使用 TypeScript 创建简单的 MCP 服务器:
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';
const server = new Server(
{ name: 'my-custom-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// 定义工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: 'get_project_status',
description: '获取项目的当前状态和统计',
inputSchema: {
type: 'object',
properties: {
project: { type: 'string', description: '项目名称' }
},
required: ['project']
}
}]
}));
// 处理工具调用
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'get_project_status') {
const { project } = request.params.arguments;
// 实现你的逻辑
return {
content: [{ type: 'text', text: `项目 ${project} 状态:正常运行` }]
};
}
throw new Error(`Unknown tool: ${request.params.name}`);
});
// 启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);注册自定义服务器:
claude mcp add my-server --transport stdio -- node /path/to/my-server.js远程 MCP 服务器(HTTP/SSE)
连接到远程托管的 MCP 服务器:
# HTTP(推荐,支持 StreamableHTTP)
claude mcp add remote-service --transport http https://mcp.company.com/api
# SSE(旧格式,仍受支持)
claude mcp add legacy-service --transport sse https://mcp.company.com/sseMCP 安全最佳实践
- 最小权限:文件系统 MCP 只允许访问必要的路径
- 凭证管理:敏感 token 通过环境变量传入,不要硬编码
- 可信来源:只使用来自可信提供商的 MCP 服务器
- 定期审查:检查已配置的 MCP 服务器列表,移除不再需要的
- 项目隔离:敏感工具配置在用户级别,项目
.mcp.json只放通用工具
总结
MCP 协议为 Claude Code 打开了连接外部世界的大门。从数据库查询到 GitHub 操作,从网络搜索到浏览器自动化,MCP 让 Claude Code 能够在更广泛的工作场景中发挥作用。随着 MCP 生态的不断扩展,可用的集成将会越来越丰富。
来源:Claude Code 官方文档 - MCP Integration 原文作者:Anthropic Team