2026年AI开发新标准!MCP协议:快速入门手册

内容分享2小时前发布
0 1 0
全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

MCP(模型上下文协议)是由 Anthropic 推出的开放标准化协议,核心解决 AI 应用于外部工具、数据源的无缝集成问题,通过统一的接口让 AI 应用可动态获取上下文、调用外部能力,被称为AI 界的 USB-C,实现工具 / 数据的 “即插即用”。本文基于 MCP 官方文档提炼核心概念、架构、交互流程,助你快速上手 MCP 开发与使用。让我们快速开始吧!

2026年AI开发新标准!MCP协议:快速入门手册

一、MCP 核心定位与价值

1. 核心定义

MCP 是专注于AI 应用与外部系统的上下文交换协议,仅定义交互标准,不限制 AI 应用对大模型(LLM)的使用和上下文管理方式,是连接 AI 应用与外部工具 / 数据的标准化桥梁。

2. 核心价值

  • 标准化集成:将 AI 应用与工具的集成复杂度从M×N(每个工具适配每个应用)简化为M+N(各自独立开发,遵循协议即可对接);
  • 本地 / 远程灵活支持:支持本地私有数据 / 工具调用(数据不离境,满足隐私合规)和远程服务对接,兼顾安全性与扩展性;
  • 动态适配:通过实时通知机制实现工具 / 资源的动态更新,AI 应用可实时感知外部能力变化;
  • 生态兼容:微软、阿里云、Anthropic 等厂商均支持 MCP,多语言 SDK 覆盖,可跨平台复用。

3. 适用场景

  • AI 应用调用本地文件系统、数据库、私有 API;
  • 智能 IDE(如 VS Code、Claude Code)对接代码分析、调试工具;
  • AI Agent(智能体)获取实时数据(如天气、业务报表)并执行操作;
  • 企业级 AI 应用对接内部 ERP、CRM 等业务系统。

二、MCP 核心架构

MCP 采用客户端 – 服务器(C/S)架构,分为三层核心要素:参与角色协议分层核心原语,所有交互基于JSON-RPC 2.0实现。

1. 三大参与角色

MCP 的交互由三个核心角色完成,角色间一对一 / 一对多关联,本地 / 远程部署均可。

表格

角色

核心职责

示例

MCP Host(主机)

协调管理多个 MCP 客户端,是发起请求的 AI 应用主体,聚合所有 MCP 服务器的上下文 / 能力

Claude Code、Claude Desktop、VS Code、GitHub Copilot

MCP Client(客户端)

与 MCP 服务器建立专属连接,转发 Host 的请求,接收并回传服务器的响应 / 上下文

AI 应用内的 MCP 客户端组件(由 SDK 封装)

MCP Server(服务器)

提供上下文数据、可执行工具、交互模板,响应客户端的请求

本地文件系统服务器、Sentry 远程服务器、天气 API 服务器

部署说明

  • 本地服务器:基于Stdio 传输,仅服务单个 MCP 客户端(如 Claude Desktop 启动的文件系统服务器);
  • 远程服务器:基于Streamable HTTP 传输,可服务多个 MCP 客户端(如 Sentry 官方 MCP 服务器)。

2. 两层协议架构

MCP 的协议分为数据层传输层,底层解耦,数据层定义交互规则,传输层定义通信方式,保证同一交互规则可跨传输方式复用。

(1)数据层(核心)

基于JSON-RPC 2.0实现,定义客户端与服务器的消息结构、语义、交互逻辑,是开发者最需要关注的层,包含四大能力:

  • 生命周期管理:连接初始化、能力协商、连接终止;
  • 服务器能力:提供工具、资源、提示词三大核心原语;
  • 客户端能力:支持服务器调用 LLM、向用户获取输入、日志上报;
  • 通用能力:实时通知、长任务进度跟踪。

(2)传输层

定义客户端与服务器的通信机制、认证方式,屏蔽底层通信细节,支持两种传输方式:

表格

传输方式

通信方式

特点

适用场景

Stdio

标准输入 / 输出流

无网络开销、性能最优,仅本地进程通信

本地 MCP 服务器(如文件系统、本地数据库)

Streamable HTTP

HTTP POST + 可选 Server-Sent Events(SSE)

支持远程通信,兼容标准 HTTP 认证(Bearer Token/API Key/OAuth)

远程 MCP 服务器(如公共 API、云端服务)

三、MCP 核心原语(Primitives)

原语是 MCP 定义的最小交互单元,规定了服务器和客户端可相互提供的能力,是 MCP 的核心设计,分为服务器原语客户端原语通用工具原语三类。

1. 服务器核心原语(对外提供的能力)

服务器向客户端暴露三大核心原语,均支持*/list(发现)、*/get(获取)方法,工具还支持tools/call(执行)方法,实现动态发现和调用。

表格

原语

核心作用

示例

关键方法

Tools(工具)

可执行的函数,AI 应用调用后完成特定操作

文件读写、数据库查询、API 调用、计算器

tools/list/tools/call

Resources(资源)

提供上下文数据的数据源,为 AI 应用补充信息

文件内容、数据库表结构、API 响应结果

resources/list/resources/read

Prompts(提示词)

可复用的交互模板,规范 AI 与 LLM 的交互

系统提示词、少样本示例、工具调用模板

prompts/list/prompts/get

示例:一个数据库 MCP 服务器可暴露:

  • 工具:数据库查询 / 插入函数;
  • 资源:数据库表结构、字段说明;
  • 提示词:数据库查询的少样本示例。

2. 客户端核心原语(向服务器开放的能力)

客户端向服务器暴露能力,让服务器可借助 MCP Host 的能力实现更丰富的交互,无需自己集成 LLM 或用户交互模块:

  • Sampling(采样):服务器调用 Host 的 LLM 生成内容,通过sampling/complete实现,适用于模型无关的服务器开发;
  • Elicitation(启发):服务器向用户请求额外信息 / 确认操作,通过elicitation/request实现;
  • Logging(日志):服务器向客户端发送日志,用于调试和监控。

3. 通用工具原语(实验性)

Tasks(任务):为长时请求提供持久化执行封装,支持延迟结果获取、状态跟踪,适用于大计算量、批处理、多步骤操作(如数据批量分析、工作流自动化)。

四、MCP 核心交互流程

MCP 的客户端与服务器交互基于JSON-RPC 2.0,核心流程分为四步:初始化协商原语发现原语执行实时通知,所有步骤均为状态化交互,保证能力匹配和实时同步。

步骤 1:初始化协商(Lifecycle Management)

建立连接的第一步,核心完成协议版本兼容校验能力协商身份交换,确保客户端与服务器可正常交互。

(1)客户端发起初始化请求

json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "elicitation": {} }, // 客户端支持的能力
    "clientInfo": { "name": "example-client", "version": "1.0.0" }
  }
}

(2)服务器响应(能力协商)

服务器返回自身支持的原语和能力(如是否支持工具实时通知),若协议版本不兼容则终止连接。

(3)客户端发送就绪通知

连接建立成功后,客户端发送notifications/initialized通知,确认连接就绪。

核心作用:避免不兼容操作,为后续交互确定能力边界(如服务器是否支持工具、客户端是否支持用户输入)。

步骤 2:原语发现(Discovery)

客户端通过*/list方法发现服务器暴露的所有原语,是执行原语的前提,以工具发现为例:

(1)客户端发起工具发现请求

json

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

(2)服务器返回工具元数据

返回的工具数组包含唯一名称、人类可读标题、描述、入参 Schema,保证客户端可正确理解和调用工具:

json

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "tools": [
      {
        "name": "weather_current",
        "title": "实时天气查询",
        "description": "查询指定城市的实时天气",
        "inputSchema": {
          "type": "object",
          "properties": {
            "location": { "type": "string" },
            "units": { "type": "string", "default": "metric" }
          },
          "required": ["location"]
        }
      }
    ]
  }
}

AI 应用侧处理:聚合所有连接的 MCP 服务器的原语,形成统一的 “能力注册表”,供 LLM 调用。

步骤 3:原语执行(Execution)

客户端调用服务器的原语(以工具执行为例,资源 / 提示词为*/get方法),核心是tools/call,严格匹配发现阶段的工具名称和入参 Schema

(1)客户端发起工具执行请求

json

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "weather_current", // 与发现阶段的name完全一致
    "arguments": { "location": "San Francisco", "units": "imperial" }
  }
}

(2)服务器返回执行结果

结果为content数组,支持多格式(文本、图片、资源等),结构化返回供 AI 应用作为 LLM 的上下文:

json

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "San Francisco: 72°F, Sunny, Humidity 45%"
      }
    ]
  }
}

AI 应用侧处理:将执行结果回传给 LLM,LLM 基于结果继续生成响应或发起新的工具调用。

步骤 4:实时通知(Notifications)

服务器主动向客户端推送原语变化、状态更新,基于 JSON-RPC 2.0 的通知语义(无id,无需客户端响应),核心解决 “客户端无需轮询即可感知服务器能力变化” 的问题。

(1)服务器发送工具变化通知

当服务器的工具新增 / 修改 / 删除时,推送
notifications/tools/list_changed:

json

{
  "jsonrpc": "2.0",
  "method": "notifications/tools/list_changed"
}

(2)客户端响应

客户端收到通知后,主动调用tools/list重新获取工具列表,更新本地 “能力注册表”,并同步给 LLM。

通知的核心特点

  • 能力驱动:仅服务器在初始化阶段声明支持listChanged时,才会发送通知;
  • 事件驱动:基于服务器内部状态变化触发,无需客户端请求;
  • 全原语支持:除工具外,资源、提示词均支持类似的通知机制。

五、MCP 开发基础

1. 开发资源体系

MCP 官方提供完整的开发资源,开发者无需从零实现协议,直接基于 SDK 开发即可:

  • MCP Specification:协议规范,定义客户端 / 服务器的实现要求;
  • MCP SDKs:多语言 SDK(Python、C#、Java/Spring AI 等),封装协议细节,提供开箱即用的 API;
  • MCP Development Tools:开发工具(如 MCP Inspector),用于调试、监控 MCP 交互;
  • Reference Server Implementations:服务器参考实现,快速搭建自定义 MCP 服务器。

2. 快速上手(以主流 SDK 为例)

(1)C# SDK(.NET)

bash

运行

# 安装MCP C# SDK(预发布版)
dotnet add package ModelContextProtocol --prerelease

基于Microsoft.Extensions.AI集成,快速实现 MCP 客户端 / 服务器,对接 Azure、GitHub Copilot 等生态。

(2)Java SDK(Spring AI)

Maven 依赖配置(Spring Boot 3.x + Spring AI 1.0.0-M7+):

xml

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
</dependency>

通过注解快速实现 MCP 工具(如@Tool注解标记工具方法),无缝集成 Spring 生态。

3. 开发关键原则

  • 原语命名唯一性:工具 / 资源 / 提示词的name在服务器命名空间内唯一,提议采用业务_功能格式(如calculator_arithmetic);
  • 入参 Schema 标准化:严格定义 JSON Schema,包含必选 / 可选参数、默认值,保证客户端类型校验;
  • 传输方式适配:本地服务用 Stdio(高性能),远程服务用 HTTP(支持认证、跨网络);
  • 通知能力显式声明:服务器需在初始化阶段声明支持的通知类型(如”tools”: {“listChanged”: true}),否则无法发送通知。

六、MCP 与 AI 应用的集成逻辑

AI 应用(MCP Host)集成 MCP 的核心逻辑为多服务器连接管理+能力聚合+LLM 工具调用联动,伪代码抽象如下:

python

运行

# 1. 初始化所有MCP服务器连接
for server_config in app.mcp_servers:
    session = await create_mcp_session(server_config) # 基于SDK创建会话
    init_response = await session.initialize()
    app.register_mcp_session(session, init_response.capabilities)

# 2. 发现所有服务器的原语并聚合
all_tools = []
all_resources = []
for session in app.mcp_sessions:
    all_tools.extend(await session.list_tools())
    all_resources.extend(await session.list_resources())
app.llm.register_capabilities(all_tools, all_resources) # 同步给LLM

# 3. 处理LLM的工具调用请求
async def handle_llm_tool_call(tool_name, arguments):
    session = app.find_session_by_tool(tool_name) # 找到对应服务器
    result = await session.call_tool(tool_name, arguments)
    app.llm.add_context(result.content) # 结果作为LLM上下文
    return await app.llm.generate_response()

# 4. 处理服务器的实时通知
async def handle_notification(session, notification_type):
    if notification_type == "tools/list_changed":
        updated_tools = await session.list_tools()
        app.llm.update_capabilities(updated_tools) # 更新LLM能力

七、核心总结

  1. MCP 的核心是标准化 AI 应用与外部系统的上下文交换,实现工具 / 数据的 “即插即用”,降低集成成本;
  2. 架构上分为Host/Client/Server三大角色、数据层 / 传输层两层协议,基于JSON-RPC 2.0实现交互;
  3. 核心能力通过原语定义,服务器暴露工具 / 资源 / 提示词,客户端暴露LLM 调用 / 用户输入 / 日志
  4. 交互流程为初始化→发现→执行→通知,状态化交互保证能力匹配和实时同步;
  5. 开发基于多语言 SDK,无需关注协议细节,重点实现业务侧的原语(工具 / 资源 / 提示词)。
© 版权声明

相关文章

1 条评论

none
暂无评论...