青蛙小白
博客 / 2025/09

在 Claude Code 中配置和使用 MCP 服务器

2025/09/20 · — 字 · 阅读约 — 分钟 ·
目录

MCP(Model Context Protocol)是一个开源标准,用于 AI 工具集成。通过 MCP 服务器,Claude Code 可以连接到外部工具和数据源,包括数据库、API 和各种服务。

本文基于 Claude的官方文档 介绍如何在 Claude Code 中配置和管理 MCP 服务器。

MCP 能做什么

配置 MCP 服务器后,可以让 Claude Code 执行:

  • 从问题跟踪器实现功能:“添加 JIRA 问题 ENG-4521 中描述的功能并在 GitHub 上创建 PR”
  • 分析监控数据:“检查 Sentry 查看 ENG-4521 功能的错误情况”
  • 查询数据库:“根据 PostgreSQL 数据库查找 10 个使用该功能的用户邮箱”
  • 集成设计:“根据 Slack 中发布的新 Figma 设计更新邮件模板”

安装 MCP 服务器

方法一:添加远程 HTTP 服务器(推荐)

HTTP 服务器是连接远程 MCP 服务器的推荐选项。

# 基本语法
claude mcp add --transport http <name> <url>

# 示例:连接到 Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp

# 带 Bearer token 的示例
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

方法二:添加本地 stdio 服务器

stdio 服务器作为本地进程运行,适合需要直接系统访问或自定义脚本的工具。

# 基本语法
claude mcp add --transport stdio <name> -- <command> [args...]

# 示例:添加时间服务器
claude mcp add --transport stdio time -- npx -y @anthropic/mcp-server-time

# 带环境变量的示例
claude mcp add --transport stdio airtable --env AIRTABLE_API_KEY=YOUR_KEY \
  -- npx -y airtable-mcp-server
关于 -- 参数:双破折号分隔 Claude 的 CLI 标志和传递给 MCP 服务器的命令。-- 之前的是 Claude 的选项(如 --env--scope),之后的是运行 MCP 服务器的实际命令。

Windows 用户注意:在原生 Windows(非 WSL)上,使用 npx 的本地 MCP 服务器需要 cmd /c 包装器:

claude mcp add --transport stdio my-server -- cmd /c npx -y @some/package

方法三:从 JSON 配置添加

# 添加 HTTP 服务器
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp"}'

# 添加 stdio 服务器
claude mcp add-json local-tool '{"type":"stdio","command":"/path/to/tool","args":["--config","config.json"]}'

管理命令

# 列出所有配置的服务器
claude mcp list

# 获取特定服务器的详细信息
claude mcp get github

# 移除服务器
claude mcp remove github

配置作用域(Scope)

MCP 服务器可以在三个不同的作用域级别配置:

Local 作用域(默认)

  • 存储位置~/.claude.json(在项目路径下)
  • 访问范围:仅对在当前项目目录中可见
  • 适用场景:个人开发服务器、实验性配置或包含敏感凭据的服务器
# 添加 local 作用域服务器(默认)
claude mcp add --transport http stripe https://mcp.stripe.com

# 显式指定
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

Project 作用域

  • 存储位置:项目根目录的 .mcp.json 文件
  • 版本控制:可以提交到版本控制系统
  • 安全性:使用前需要用户批准
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

.mcp.json 文件格式:

{
  "mcpServers": {
    "shared-server": {
      "command": "/path/to/server",
      "args": [],
      "env": {}
    }
  }
}

重置项目批准选择:

claude mcp reset-project-choices

User 作用域

  • 存储位置~/.claude.json
  • 访问范围:跨所有项目可用,但仅当前用户账户私有
  • 适用场景:跨项目频繁使用的个人工具
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

作用域优先级

当同名服务器存在于多个作用域时,优先级为:

  1. Local 作用域(最高)
  2. Project 作用域
  3. User 作用域(最低)

环境变量扩展

Claude Code 在 .mcp.json 文件中支持环境变量扩展:

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

支持的语法:

  • ${VAR} - 扩展为环境变量 VAR 的值
  • ${VAR:-default} - 如果 VAR 未设置,则使用默认值

可扩展的位置:commandargsenvurlheaders

OAuth 2.0 认证

许多云端 MCP 服务器需要认证:

# 1. 添加需要认证的服务器
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

# 2. 在 Claude Code 中使用 /mcp 命令进行认证
> /mcp

认证令牌会安全存储并自动刷新。使用 /mcp 菜单中的 “Clear authentication” 可撤销访问。

MCP 资源引用

使用 @ 提及引用 MCP 服务器提供的资源:

# 分析 GitHub 问题
> Can you analyze @github:issue://123 and suggest a fix?

# 查看 API 文档
> Please review the API documentation at @docs:file://api/authentication

# 比较多个资源
> Compare @postgres:schema://users with @docs:file://database/user-model

MCP 提示词(prompts)作为斜杠命令

MCP 服务器可以暴露提示词,这些提示词会成为 Claude Code 中的斜杠命令:

# 无参数执行
> /mcp__github__list_prs

# 带参数执行
> /mcp__github__pr_review 456
> /mcp__jira__create_issue "Bug in login flow" high

将 Claude Code 用作 MCP 服务器

Claude Code 本身也可以作为 MCP 服务器供其他应用使用:

claude mcp serve

在其他使用MCP服务器的工具中,例如 Claude Desktop 中配置(claude_desktop_config.json):

{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}

MCP 输出限制

  • 输出警告阈值:10,000 tokens
  • 默认最大限制:25,000 tokens

配置更高限制:

export MAX_MCP_OUTPUT_TOKENS=50000
claude

配置MCP服务器启动超时:

MCP_TIMEOUT=10000 claude

实用示例

示例 1:使用 Sentry 监控错误

# 1. 添加 Sentry MCP 服务器
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

# 2. 使用 /mcp 进行认证
> /mcp

# 3. 调试生产问题
> "What are the most common errors in the last 24 hours?"
> "Show me the stack trace for error ID abc123"

示例 2:查询 PostgreSQL 数据库

# 1. 添加数据库服务器
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:password@host:5432/analytics"

# 2. 自然语言查询
> "What's our total revenue this month?"
> "Show me the schema for the orders table"

安全警告

使用 MCP 服务器时需注意以下安全事项:

  • 来源可信:仅安装来自可信来源的 MCP 服务器
  • 权限最小化:为数据库等敏感服务使用只读凭据,避免授予不必要的权限
  • 提示词注入:处理外部内容的 MCP 服务器可能被用于注入恶意指令,需保持警惕

参考

评论