📖 目录

MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 于 2024 年 11 月推出的开放标准,旨在为大型语言模型(LLMs)提供统一接口,以便连接和调用外部数据源和工具。

MCP 遵循 C/S 架构:

MCP Server
实际运行外部工具(如访问文件系统、发送邮件、查询日历)的服务端叫做 MCP Server。它负责处理请求并将结果返回给 Client。

MCP Client
运行着与大模型对话的客户端(可能会使用工具)叫做 MCP Client。在 Claude Code 中,Claude Code(或 Claude 桌面版)作为客户端,连接到这些服务器。我们可以在项目根目录下创建 .mcp.json 文件来配置连接的 MCP Server。

查找和构建 MCP 服务器

在 Anthropic Directory 中浏览已审核的连接器。Directory 连接器使用与 Claude Code 相同的 MCP 基础设施,因此您可以使用 claude mcp add 添加列出的任何远程服务器。

Anthropic Directory: https://claude.ai/directory

Note: 国内显示不可用,其它支持的地区正常显示可用的 MCP 服务。

安装 MCP 服务器

MCP 服务器可以根据您的需求以多种方式进行配置:

选项 1:添加远程 HTTP 服务器
HTTP 服务器是连接到远程 MCP 服务器的推荐选项。这是云服务最广泛支持的传输方式。

基本语法: claude mcp add --transport http 'name' 'url'

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

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

在这里插入图片描述

在通过 .mcp.json~/.claude.jsonclaude mcp add-json 中的 JSON 配置 MCP 服务器时,type 字段接受 streamable-http 作为 http 的别名。MCP 规范对此传输使用名称 streamable-http,因此从服务器文档复制的配置无需修改即可工作。

案例实现:
使用魔塔社区里的一个 MCP 服务并运行服务。

MCP 的配置可以直接获取到:

在这里插入图片描述

在这里插入图片描述

配置如下的 .mcp.json 并放在根目录下,Claude Code 会识别到,并可以使用该服务。

在这里插入图片描述

选项 2:SSE (Server-Sent Events) 传输已弃用。请在可用的地方使用 HTTP 服务器。

选项 3:添加本地 stdio 服务器
Stdio 服务器作为您机器上的本地进程运行。它们非常适合需要直接系统访问或自定义脚本的工具。

Claude Code 在生成的服务器的环境中设置 CLAUDE_PROJECT_DIR,指向项目根目录,因此服务器可以解析项目相对路径,而无需依赖工作目录。这与 hooks 在其 CLAUDE_PROJECT_DIR 变量中接收的目录相同。从服务器进程内部读取它,例如 Node 中的 process.env.CLAUDE_PROJECT_DIR 或 Python 中的 os.environ["CLAUDE_PROJECT_DIR"]。服务器也可以调用 MCP roots/list 请求,该请求返回启动 Claude Code 的目录。

基本语法 claude mcp add [options] 'name' -- 'command' [args...]

真实示例:添加 Airtable 服务器
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \ -- npx -y airtable-mcp-server

案例实现:
使用 Spring Boot 实现一个 MCP 服务并进行打包。

配置如下的 .mcp.json 并放在根目录下,Claude Code 会识别到,并询问是否启用该服务。

在这里插入图片描述

调用 MCP 服务:

在这里插入图片描述

在这里插入图片描述

WebSocket 服务器保持持久的双向连接,适合于向 Claude 主动推送事件的远程 MCP 服务器。当服务器仅响应请求时,需要改用 HTTP,因为 HTTP 支持 OAuth 和 claude mcp add --transport 标志,而 WebSocket 两者都不支持。

.mcp.json 中或使用 claude mcp add-json 配置 WebSocket 服务器:

claude mcp add-json events-server \
'{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

type: "ws" 条目接受与 http 相同的 urlheadersheadersHelpertimeoutalwaysLoad 字段。身份验证仅限于标头,因此在 headers 中传递静态令牌或在连接时使用 headersHelper 生成一个。claude mcp add --transport 标志不接受 ws

管理 MCP 服务器

配置后,您可以使用这些命令管理 MCP 服务器:

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

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

删除服务器 claude mcp remove github

(在 Claude Code 中)检查服务器状态 /mcp

在这里插入图片描述

插件提供的 MCP 服务器

Plugins 可以捆绑 MCP 服务器,在启用插件时自动提供工具和集成。插件 MCP 服务器的工作方式与用户配置的服务器相同。

插件 MCP 服务器的工作原理:

  • 插件在插件根目录的 .mcp.json 中或在 plugin.json 中内联定义 MCP 服务器。启用插件时,其 MCP 服务器会自动启动。
  • 插件 MCP 工具与手动配置的 MCP 工具一起出现。
  • 插件服务器通过插件安装进行管理(不是 /mcp 命令)。

插件 MCP 功能:

  • 自动生命周期:在会话启动时,启用的插件服务器会自动连接。如果在会话期间启用或禁用插件,请运行 /reload-plugins 以连接或断开其 MCP 服务器。
  • 环境变量:对捆绑的插件文件使用 ${CLAUDE_PLUGIN_ROOT},对持久状态使用 ${CLAUDE_PLUGIN_DATA}(在插件更新后仍然存在),以及对稳定项目根目录使用 ${CLAUDE_PROJECT_DIR}
  • 用户环境访问:访问与手动配置的服务器相同的环境变量。
  • 多种传输类型:支持 stdio、SSE、HTTP 和 WebSocket 传输(传输支持可能因服务器而异)。

Claude Code 支持 MCP list_changed 通知,允许 MCP 服务器动态更新其可用工具、提示和资源,而无需您断开连接并重新连接。当 MCP 服务器发送 list_changed 通知时,Claude Code 会自动刷新来自该服务器的可用功能。

MCP 其它功能持续更新中…

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐