logo

2026 开发者必知:MCP 协议终极指南

MCP 这两年之所以火,不是因为它多神秘,而是因为它刚好补上了 Agent 落地里最难受的一块短板:模型很会说,但默认碰不到你的真实系统。

没有统一协议时,接一个数据库、一个文件系统、一个内部 API,基本都要各写各的适配层。模型能不能理解、工具怎么描述、返回结果怎么组织,也常常各搞一套。MCP 的价值,就是把这层连接尽量标准化。

[PROMPT_LAB_BANNER]


🔌 什么是 MCP?

MCP 是由 Anthropic 提出的一套开放协议,旨在标准化 AI 模型 (Client)数据/工具源 (Server) 之间的交互。

Claude Code MCP 示例 示意图:在开发场景里,MCP 常被用来把模型连接到文档、代码库和外部工具。

核心架构

┌───────────────────┐        MCP 协议        ┌───────────────────┐
│     AI Client     │ <──────────────────> │    MCP Server     │
│ (Cursor/Claude/...)│       (JSON-RPC)     │ (Postgres/Notion/..)│
└─────────┬─────────┘                       └─────────┬─────────┘
          │                                           │
          ▼                                           ▼
   [ 理解用户意图 ]                            [ 访问真实数据 ]
   [ 发起工具调用 ]                            [ 执行本地操作 ]

为什么 MCP 会被这么多人采用

维度没有统一协议时用 MCP 之后
接入方式每个工具都得单独适配接入模型和工具的方式更一致
本地能力模型经常看不到真实环境更容易连接本地文件、数据库和服务
安全边界容易混乱更容易做权限和作用域控制
维护成本接一个工具写一套逻辑协议统一后更好维护

MCP 不会自动让 Agent 变聪明,但它会让“模型怎么碰到真实能力”这件事变得清晰很多。

如果换成更接地气的说法,MCP 解决的其实是这类问题:

  • AI 到底怎么安全地读本地文件
  • 怎么查数据库而不是只会“建议你去查数据库”
  • 怎么让 IDE、模型和工具之间少写一堆胶水代码

这也是为什么很多开发者第一次把 MCP 配通以后,会明显感觉 Agent 从“会聊天”变成了“真的能碰系统”。


常见 MCP Server 类型

与其背“十大必装”,不如先理解常见 server 的类型。通常会分成这几类:

  1. 文件系统类:让模型安全读取和修改指定目录。
  2. 代码与版本控制类:例如 GitHub、代码搜索、PR/Issue 操作。
  3. 知识库类:如 Notion、Confluence、内部文档。
  4. 数据库类:Postgres、MySQL、分析型存储。
  5. 搜索与浏览类:网页搜索、抓取、文档检索。
  6. 协作平台类:Slack、Discord、飞书等。

真正怎么选,取决于你的 Agent 要做什么事,而不是哪个列表最热。

如果你的内容目标是争取 Google 索引,这里也有一个写法上的经验:比起“十大推荐”这种容易过时的列表,按工具类型去解释,页面会更稳定,也更容易匹配不同搜索意图。


进阶:怎么开发一个自己的 MCP Server

做一个最小 MCP Server,并不复杂。下面这个例子只暴露一个简单工具,重点不是功能本身,而是看清它的结构:

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

// 1. 初始化 Server
const server = new Server({
  name: "my-custom-agent-tool",
  version: "1.0.0",
}, {
  capabilities: {
    tools: {} // 声明支持工具调用
  }
});

// 2. 注册工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: "get_current_time",
    description: "获取服务器当前的本地时间",
    inputSchema: { type: "object", properties: {} }
  }]
}));

// 3. 实现逻辑
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "get_current_time") {
    return {
      content: [{ type: "text", text: new Date().toLocaleString() }]
    };
  }
  throw new Error("Tool not found");
});

// 4. 启动(通过 stdio 传输)
const transport = new StdioServerTransport();
await server.connect(transport);

写自己的 MCP Server 时,真正要花心思的通常不是“能不能跑起来”,而是:

  • 工具描述是不是足够清楚
  • 输入 schema 能不能约束好参数
  • 返回结果是否便于模型理解
  • 权限范围是否收得住

很多新手第一版 server 最大的问题,不是代码本身,而是工具定义太随意。比如:

  • name 取得很模糊
  • description 只有一句很短的话
  • input schema 约束不严
  • 返回结构一会儿是文本,一会儿是对象

这些东西在 demo 里还能凑合,一进真实 Agent 链路就会开始出问题,因为模型根本不知道什么时候该调、调完该怎么理解。


常见问题与解决方案

问题常见原因处理思路
客户端连不上路径、启动命令或环境变量不对先在终端单独跑通 server
模型不调用工具description 太弱,触发条件不清楚把工具用途和适用场景写具体
权限错误目录或系统权限受限缩小目录范围并检查授权
超时server 逻辑太重或依赖太慢让 server 薄一点,重逻辑下沉

还有一个常见问题是“接上了,但不好用”。这类情况通常不是 MCP 协议本身有问题,而是:

  • 工具暴露得太多,模型不知道选哪个
  • 作用域太大,风险太高
  • 工具说明太虚,触发条件不明确

所以真实项目里,server 数量和工具数量都不是越多越好,关键是能不能让模型用得准。


小结

MCP 最值得学的地方,不是一个新名词,而是一种统一接入外部能力的思路。

  1. 它让模型更容易接触真实系统。
  2. 它把工具接入做得更标准化。
  3. 它让权限、作用域和返回结构更容易管理。

如果你现在还在观望 MCP 到底值不值得学,我的判断是:只要你要做有真实工具链的 Agent,它几乎迟早会进入你的视野。区别只是你什么时候开始认真把这层连接做规范。


下一步建议:尝试在你的 IDE(如 Cursor 或 Claude Desktop)中手动添加一个 GitHub MCP Server,尝试让它帮你总结最近的一个 Issue。

AI Agent 开发实战手册
AI Engineer

AI Agent 开发实战手册

从 0 到 1 掌握 AI Agent 开发:涵盖自主计划、工具调用、MCP 协议与多智能体编排实战。

AI Agent 开发实战手册MCP 协议终极指南

2026 开发者必知:MCP 协议终极指南

MCP 这两年之所以火,不是因为它多神秘,而是因为它刚好补上了 Agent 落地里最难受的一块短板:模型很会说,但默认碰不到你的真实系统。

没有统一协议时,接一个数据库、一个文件系统、一个内部 API,基本都要各写各的适配层。模型能不能理解、工具怎么描述、返回结果怎么组织,也常常各搞一套。MCP 的价值,就是把这层连接尽量标准化。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#🔌 什么是 MCP?

MCP 是由 Anthropic 提出的一套开放协议,旨在标准化 AI 模型 (Client)数据/工具源 (Server) 之间的交互。

Claude Code MCP 示例
Claude Code MCP 示例
示意图:在开发场景里,MCP 常被用来把模型连接到文档、代码库和外部工具。

#核心架构

text
┌───────────────────┐ MCP 协议 ┌───────────────────┐ │ AI Client │ <──────────────────> │ MCP Server │ │ (Cursor/Claude/...)│ (JSON-RPC) │ (Postgres/Notion/..)│ └─────────┬─────────┘ └─────────┬─────────┘ │ │ ▼ ▼ [ 理解用户意图 ] [ 访问真实数据 ] [ 发起工具调用 ] [ 执行本地操作 ]

#为什么 MCP 会被这么多人采用

维度没有统一协议时用 MCP 之后
接入方式每个工具都得单独适配接入模型和工具的方式更一致
本地能力模型经常看不到真实环境更容易连接本地文件、数据库和服务
安全边界容易混乱更容易做权限和作用域控制
维护成本接一个工具写一套逻辑协议统一后更好维护

MCP 不会自动让 Agent 变聪明,但它会让“模型怎么碰到真实能力”这件事变得清晰很多。

如果换成更接地气的说法,MCP 解决的其实是这类问题:

  • AI 到底怎么安全地读本地文件
  • 怎么查数据库而不是只会“建议你去查数据库”
  • 怎么让 IDE、模型和工具之间少写一堆胶水代码

这也是为什么很多开发者第一次把 MCP 配通以后,会明显感觉 Agent 从“会聊天”变成了“真的能碰系统”。


#常见 MCP Server 类型

与其背“十大必装”,不如先理解常见 server 的类型。通常会分成这几类:

  1. 文件系统类:让模型安全读取和修改指定目录。
  2. 代码与版本控制类:例如 GitHub、代码搜索、PR/Issue 操作。
  3. 知识库类:如 Notion、Confluence、内部文档。
  4. 数据库类:Postgres、MySQL、分析型存储。
  5. 搜索与浏览类:网页搜索、抓取、文档检索。
  6. 协作平台类:Slack、Discord、飞书等。

真正怎么选,取决于你的 Agent 要做什么事,而不是哪个列表最热。

如果你的内容目标是争取 Google 索引,这里也有一个写法上的经验:比起“十大推荐”这种容易过时的列表,按工具类型去解释,页面会更稳定,也更容易匹配不同搜索意图。


#进阶:怎么开发一个自己的 MCP Server

做一个最小 MCP Server,并不复杂。下面这个例子只暴露一个简单工具,重点不是功能本身,而是看清它的结构:

typescript
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; // 1. 初始化 Server const server = new Server({ name: "my-custom-agent-tool", version: "1.0.0", }, { capabilities: { tools: {} // 声明支持工具调用 } }); // 2. 注册工具 server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [{ name: "get_current_time", description: "获取服务器当前的本地时间", inputSchema: { type: "object", properties: {} } }] })); // 3. 实现逻辑 server.setRequestHandler(CallToolRequestSchema, async (request) => { if (request.params.name === "get_current_time") { return { content: [{ type: "text", text: new Date().toLocaleString() }] }; } throw new Error("Tool not found"); }); // 4. 启动(通过 stdio 传输) const transport = new StdioServerTransport(); await server.connect(transport);

写自己的 MCP Server 时,真正要花心思的通常不是“能不能跑起来”,而是:

  • 工具描述是不是足够清楚
  • 输入 schema 能不能约束好参数
  • 返回结果是否便于模型理解
  • 权限范围是否收得住

很多新手第一版 server 最大的问题,不是代码本身,而是工具定义太随意。比如:

  • name 取得很模糊
  • description 只有一句很短的话
  • input schema 约束不严
  • 返回结构一会儿是文本,一会儿是对象

这些东西在 demo 里还能凑合,一进真实 Agent 链路就会开始出问题,因为模型根本不知道什么时候该调、调完该怎么理解。


#常见问题与解决方案

问题常见原因处理思路
客户端连不上路径、启动命令或环境变量不对先在终端单独跑通 server
模型不调用工具description 太弱,触发条件不清楚把工具用途和适用场景写具体
权限错误目录或系统权限受限缩小目录范围并检查授权
超时server 逻辑太重或依赖太慢让 server 薄一点,重逻辑下沉

还有一个常见问题是“接上了,但不好用”。这类情况通常不是 MCP 协议本身有问题,而是:

  • 工具暴露得太多,模型不知道选哪个
  • 作用域太大,风险太高
  • 工具说明太虚,触发条件不明确

所以真实项目里,server 数量和工具数量都不是越多越好,关键是能不能让模型用得准。


#小结

MCP 最值得学的地方,不是一个新名词,而是一种统一接入外部能力的思路。

  1. 它让模型更容易接触真实系统。
  2. 它把工具接入做得更标准化。
  3. 它让权限、作用域和返回结构更容易管理。

如果你现在还在观望 MCP 到底值不值得学,我的判断是:只要你要做有真实工具链的 Agent,它几乎迟早会进入你的视野。区别只是你什么时候开始认真把这层连接做规范。


下一步建议:尝试在你的 IDE(如 Cursor 或 Claude Desktop)中手动添加一个 GitHub MCP Server,尝试让它帮你总结最近的一个 Issue。

常见问题

开发 AI Agent 需要掌握哪些编程语言?
首选 Python 或 TypeScript。Python 是 AI 生态的基石,而 TypeScript 在开发 MCP Server 和网页端交互时效率极高。借助 Cursor 等 AI 原生编辑器,编程门槛已大幅降低。
MCP 协议目前支持哪些模型?
MCP 是开放协议,目前对 Claude 3.5 系列支持最完美。通过 MCP Proxy,GPT-4o 和 Gemini 也可以间接访问 MCP Server 数据源。
AI Agent 会导致程序员失业吗?
不会,但会改变程序员的工作内容。未来的开发者将从“写代码”转向“管理 Agent 团队”,重点在于系统架构设计、复杂逻辑校验和 Agent 的提示词优化。