自 Anthropic 于 2024 年 11 月 25 日公开推出 Model Context Protocol (MCP) 以来,MCP 已迅速从概念走向实用生态:开放规范与多个参考服务器已可用,社区实现(内存服务器、文件系统访问、网页抓取器)已在 GitHub 和 NPM 上发布,且 MCP 已被 Claude for Desktop 与第三方工具等客户端支持。该协议不断演进(规范与服务器示例在 2025 年持续更新),厂商与工程师也在发布更安全、令牌高效的集成模式。
本文将手把手带你构建一个 MCP 服务器、将其连接到 Claude Desktop,以及你在生产环境中需要的实践 / 安全 / 内存技巧。
什么是 Model Context Protocol (MCP)?
通俗定义
Model Context Protocol (MCP) 是一种开放、标准化的协议,让运行模型的宿主(例如 Claude Desktop 等应用)能够方便地调用暴露出“资源”(文件、数据库行)、“工具”(模型可调用的函数)与“提示词”(模型可用的模板)的外部服务。MCP 不再需要为每个模型与每个工具分别实现 N×M 的集成,而是提供一致的客户端–服务器模式与运行时约定,使任何支持 MCP 的模型宿主都可以使用任何符合 MCP 的服务器——开发者只需构建一次服务,任何支持 MCP 的模型或 UI(如 Claude Desktop)都能使用。
MCP 现在为何重要
自 Anthropic 在 2024 年底开源 MCP 以来,该协议迅速成为工具集成的事实互操作层(Claude、VS Code 扩展与其他代理环境)。MCP 降低重复工作、加速连接器(Google Drive、GitHub、Slack 等)的开发,并使为助手附加持久化内存存储更加容易。
MCP 的架构是什么、如何工作?
在高层,MCP 定义了三个角色组与若干交互模式。
核心组件:客户端、服务器与注册表
- MCP 客户端(宿主): 希望获取上下文数据的 LLM 宿主或应用——Claude Desktop、VS Code 代理或网页应用。客户端会发现并连接一个或多个 MCP 服务器。
- MCP 服务器(资源提供者): 一个网络服务,通过 MCP 模式暴露资源(文件、记忆、数据库、操作)。服务器声明其能力,并提供客户端可调用的端点。
- 注册表 / 发现: 可选的组件或配置文件,帮助客户端发现可用的 MCP 服务器、列出能力并管理权限或安装(桌面“扩展”是其中一种用户体验层)。
消息流与能力协商
MCP 交互通常遵循以下模式:
- 发现 / 注册: 客户端了解可用的服务器(本地、网络或经策展的注册表)。
- 能力宣告: 服务器共享一个清单,描述资源、方法与授权要求。
- 请求 / 响应: 客户端发出结构化请求(例如“读取文件 X”、“搜索关于 Y 的记忆”或“用这些文件创建 PR”),服务器以类型化的上下文数据响应。
- 操作结果与流式传输: 服务器可流式返回结果或提供长时运行操作端点。规范定义了类型化的资源描述符与响应的模式。
安全模型与信任边界
MCP 有意标准化控制面,让 LLM 能在用户数据上行动并执行操作。这种能力需要谨慎的安全控制:
- 当服务器可访问私有数据或执行特权操作(例如写入代码仓库)时,建议使用明确的用户同意 / 提示。
- 最小权限清单: 服务器应声明最低范围,客户端应仅请求必要能力。
- 传输与认证: 对敏感集成使用 TLS、令牌化凭据与仅本地端点。社区与平台厂商(例如 Microsoft 在 Windows)正在试验注册表与 UI 机制以降低风险。
为何将 Claude 与 MCP 服务器集成?
将 Claude 与 MCP 服务器集成可解锁三类实用能力:
实时、可执行的上下文
不必再将过期快照复制进提示词;Claude 可在查询时请求最新上下文(文件、会话历史、数据库行)。这意味着更少的模糊检索与更新鲜的输出。Anthropic 的演示展示了 Claude 如何通过 MCP 创建 GitHub PR 或读取本地文件。
小而可组合的工具,而非一个巨型适配器
你可以编写聚焦的 MCP 服务器——一个用于日历、一个用于文件系统、一个用于向量内存存储——并在不同的 Claude 实例或客户端(桌面、IDE、网页)间复用。这种模块化比定制集成更易扩展。
持久且标准化的记忆
MCP 支持记忆服务:持久化存储,用于编码会话历史、个人偏好与结构化用户状态。因为 MCP 标准化了资源模型,多个客户端可以复用同一个记忆服务器,并在应用间保持一致的用户上下文。社区已有若干记忆服务与扩展模式。
更好的用户体验与本地控制(Claude Desktop)
在桌面客户端上,MCP 支持具有直接本地文件系统访问(经用户同意)的本地服务器,使隐私敏感的集成无需云端 API 即可实现。Anthropic 的 Desktop Extensions 是在本机上简化 MCP 服务器安装与发现的一种示例。
如何创建一个 MCP 服务器
开始前需要准备
- Claude Desktop:为你的操作系统安装最新的 Claude Desktop 版本,并在设置中确保启用 MCP/Extensions 支持。部分功能可能需要付费计划(Claude Pro 或同等)。
- 开发机:Node.js(建议 >=16/18)或 Python 3.10+,若要将本地服务器暴露到互联网以便测试,准备 ngrok 或本地隧道方案。生产环境使用 TLS。
- MCP 项目在主文档与 GitHub 仓库提供了 SDK 与模板;按官方说明安装 Python 或 Node SDK。
选项 A — 安装现有(示例)MCP 服务器
Anthropic 提供示例服务器,包括记忆、文件系统与工具。
克隆参考服务器:
git clone https://github.com/modelcontextprotocol/servers.git
cd servers
其中可见如下目录:
filesystem/
fetch/
memory/
weather/
安装示例服务器:
cd memory
npm install
npm run dev
这会启动 MCP 服务器,通常位于:
http://localhost:3000
确认清单端点可用,并且调用某个工具能返回类型正确的 JSON。
选项 B — 创建你自己的 MCP 服务器(学习推荐)
1) 创建项目文件夹
mkdir my-mcp-server
cd my-mcp-server
npm init -y
2) 安装 MCP 服务器 SDK
npm install @modelcontextprotocol/server
3) 创建一个基础服务器文件
创建 server.js:
touch server.js
粘贴最小 MCP 服务器实现:
import { createServer } from "@modelcontextprotocol/server";
const server = createServer({
name: "my-custom-server",
version: "0.1.0",
tools: [
{
name: "hello_world",
description: "Returns a simple greeting",
input_schema: {
type: "object",
properties: {
name: { type: "string" }
},
required:
},
output_schema: {
type: "object",
properties: {
message: { type: "string" }
}
},
handler: async ({ name }) => {
return { message: `Hello, ${name}!` };
}
}
]
});
server.listen(3000);
console.log("MCP server running on http://localhost:3000");
这是一个完整的 MCP 服务器,暴露了单个工具:hello_world。
如何将 Claude Desktop 连接到 MCP 服务器?
下面是一个将简单 MCP 服务器注册到 Claude Desktop 的实操流程。本节涵盖环境搭建、创建服务器清单、暴露客户端期望的端点,以及配置 Claude Desktop 使用该服务器。
1) 打开 Claude Desktop 的开发者连接区域
在 Claude Desktop:Settings → Developer(或根据构建版本为 Settings → Connectors)。可以添加远程/本地 MCP 服务器或“Add connector”。具体 UI 可能随版本变化——若未看到,请检查桌面应用的 “Developer” 菜单或最新发行说明。

2) 若配置本地服务器:创建或定位配置文件
启动 Claude 桌面应用后,它会自动在名为 ClaudeDesktopConfig.json 的文件中配置发现到的所有 MCP 服务器。第一步是定位并打开此文件,若不存在则创建:
Windows 用户:文件位于 “%APPDATA%\Claude\claude_desktop_config.json”。
Mac 用户:文件位于 “~/Library/Application Support/Claude/claude_desktop_config.json”。
3) 将服务器添加到 Claude Desktop
让 Claude Desktop 识别 MCP 服务器有两种用户体验路径:
Desktop Extensions / 一键安装器:Anthropic 提供了“Desktop Extensions”的文档,可打包清单与安装器,让用户通过一键流程添加服务器(用于广泛分发时推荐)。你可以打包清单与服务器元数据,便于安装。
本地服务器注册(开发者模式):用于本地测试:
- 将清单放置于本地约定路径,或在
https://localhost:PORT/.well-known/mcp-manifest.json提供。 - 在 Claude Desktop 设置中打开 MCP/Extensions 面板,选择 “Add local server” 或 “Add server by URL”,并粘贴清单 URL 或令牌。
- 当客户端提示时授予所需权限。Claude 将枚举服务器资源,并将其作为可用工具/记忆呈现。
现在选择安装本地 MCP:添加一个 mcpServers 部分,列出你的服务器名称与用于启动它的绝对路径/命令。保存并重启 Claude Desktop。
重启后,Claude 的 UI 会呈现 MCP 工具(Search & Tools 图标),并允许你测试所暴露的操作(例如,“What’s the weather in Sacramento?”)。若宿主未检测到你的服务器,请查看 mcp.log 文件与 mcp-server-<name>.log 的 STDERR 输出。
4) 测试集成
在 Claude 对话中输入:
Call the hello_world tool with name="Alice"
Claude 会调用你的 MCP 服务器,并用工具输出进行响应。
如何通过 MCP 实现一个记忆服务(进阶技巧)?
记忆服务是最强大的 MCP 服务器之一,因为它能在会话间持久化并呈现用户上下文。以下最佳实践与实现建议源自规范、Claude 文档与社区模式。
记忆数据模型与设计
- 结构化 vs 非结构化: 同时存储结构化事实(例如姓名、偏好标记)与非结构化会话片段。使用类型化元数据用于快速过滤。
- 分块与向量嵌入: 将长文档或对话拆分为语义连贯的片段,并存储向量嵌入以支持相似度搜索。这能提升召回率并在检索时减少令牌使用。
- 新近性与显著性信号: 记录时间戳与显著性分数;允许偏好更近期或高显著性的记忆项的查询。
- 隐私标签: 用敏感性标签(私有、共享、临时)标注条目,便于客户端提示用户同意。
记忆操作的 API 模式
至少实现三类操作:
write:接受带元数据的记忆项,返回确认与存储 ID。query:接受自然语言查询或结构化过滤器,返回 top-k 匹配的记忆(可选包含可解释性元数据)。delete/update:支持生命周期操作与用户的明确遗忘请求。
设计响应时包含溯源信息(记忆来源)与置信度/相似度分数,便于客户端与模型决定使用记忆的力度。
面向 Claude 的检索增强策略
- 短上下文窗口: 返回简洁的记忆片段而非全文;必要时让 Claude 再请求完整上下文。
- 摘要层: 可为每条记忆存储短摘要以减少令牌。在写入时进行增量摘要。
- 受控注入: 将记忆作为可附加的“上下文包”提供,客户端可选择性注入提示,而非一次性灌入所有内容。
记忆 MCP 的安全与治理
- 同意与审计轨迹: 记录记忆创建时间以及用户是否同意与模型共享。为 Claude Desktop 呈现清晰的 UI,便于查看与撤销记忆。
- 速率限制与验证: 防御提示注入或数据外泄,对类型进行验证,并禁止来自服务器的意外代码执行请求。
- 静态与传输加密: 为存储项使用强加密,并对所有 MCP 端点使用 TLS。若使用云后端存储,尽可能采用包封加密或客户自管密钥。
结论:如何在 Claude Desktop 中构建 MCP 服务器
这份指南是从零到在你的笔记本上跑通 Claude + 记忆服务器的精要配方:
- 测试一个工作流: 让 Claude “记住”一个简短事实并验证服务器已存储;随后在后续提示中让 Claude 回忆该事实。观察日志并调优检索排序。
- 安装先决条件: Node.js >= 18、Git、最新 Claude Desktop。
- 克隆参考服务器: fork
modelcontextprotocol/servers示例或 GitHub 上的社区记忆服务器。 - 安装并运行:
npm install→npm run dev(或遵循仓库 README)。确认清单端点(例如http://localhost:3000/manifest)返回 JSON。() - 在 Claude Desktop 中注册连接器: Settings → Developer / Connectors → Add connector → 指向
http://localhost:3000并批准范围。
将 Claude(或任意宿主)与 MCP 服务器集成,让你构建一次连接器即可在各 MCP 客户端间可用——Claude Desktop、IDE 或其他代理框架——显著降低维护成本并加速跨工具的功能对齐。
开发者可通过 CometAPI 访问截至本文发布日期的 claude AI 最新 API,如 Claude Sonnet 4.5 API 与 Claude Opus 4.1 API,最新版模型 会与官方网站保持同步更新。开始之前,请先登录 CometAPI 并获取 API key。CometAPI 提供远低于官方价格的方案,帮助你进行集成。
准备就绪?→ Sign up for CometAPI today!
