MCP 模型上下文协议入门详解

MCP(Model Context Protocol)是 Anthropic 提出的开放标准,为 AI 应用连接外部工具和数据提供统一接口。本文讲清 MCP 的架构、工作原理与上手方式。

最佳实践
模型能力比较与评估插画

直接回答:MCP(Model Context Protocol,模型上下文协议)是 Anthropic 于 2024 年 11 月发布的开放标准,定义了 AI 应用与外部数据源、工具之间的统一连接方式。 可以把 MCP 理解为"AI 应用的 USB-C 接口":工具方按标准实现一次 Server,兼容该协议版本与能力的 AI 应用可以复用连接方式,认证和功能仍需适配,不再需要 N×M 的定制集成。

为什么需要 MCP

大模型本身不会查日历、发邮件、读数据库——这些能力靠外部工具。在 MCP 之前,每接一个工具都要写一套定制对接代码:

  • 10 个 AI 应用 × 20 个工具 = 200 套集成,维护成本爆炸
  • 各家接口标准不一(函数调用格式、认证方式、返回结构全不同)
  • 工具能力对模型不透明,模型不知道"什么时候该用什么工具"

MCP 用一套协议统一了"发现能力、调用工具、读取数据"这三件事。

架构:三个角色

┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│    Host     │◄────►│   Client    │◄────►│   Server    │
│ (Claude/IDE)│      │ (协议客户端) │      │ (工具/数据源) │
└─────────────┘      └─────────────┘      └─────────────┘
  • Host:用户直接交互的 AI 应用(Claude Desktop、Cursor 等)
  • Client:Host 内嵌的协议客户端,与每个 Server 保持一对一连接
  • Server:轻量进程,对外暴露三类能力——Tools(可执行的操作)、Resources(可读取的数据)、Prompts(预置的提示词模板)

工作方式

以"让 AI 查询数据库"为例:

  1. Host 启动时连接 MCP Server,询问"你有什么能力"
  2. Server 返回工具清单(名称、描述、参数 JSON Schema)
  3. 用户提问后,模型决定调用 query_database 工具并生成参数
  4. Client 把调用发给 Server 执行,结果返回给模型
  5. 模型基于结果生成最终回答

以排查服务错误为例,观测云 OWL MCP Server把日志、指标、事件和 APM 等能力作为工具提供给兼容的 AI 客户端。Agent 可先查错误事件,再读取对应时间窗的数据;访问范围跟随 API Key,更新监控器或其他写入操作应由调用方设置确认或审批。这里的 MCP 负责连接工具,不负责自动授予权限。

现行标准传输为 stdio(本地子进程)和 Streamable HTTP(远程服务)。旧版 HTTP+SSE 已被后者取代;Streamable HTTP 仍可用 SSE 流式返回。远程端点需认证和 Origin 校验,本地服务优先绑定回环地址。

动手:一个最小 MCP Server

官方提供 Python/TypeScript SDK,十几行即可起服务:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP('demo')

@mcp.tool()
def add(a: int, b: int) -> int:
    """两数相加"""
    return a + b

@mcp.resource('config://version')
def version() -> str:
    return 'v1.0.0'

if __name__ == '__main__':
    mcp.run()

示例依赖官方 Python SDK(pip install mcp)。在支持本地 MCP 的 Host 中配置虚拟环境 Python 的绝对路径和此脚本路径,再确认工具可见;stdio 的标准输出只用于协议消息,调试日志写到标准错误。

局限性要知道

  • 生态仍早期:Server 质量参差,远程认证与权限模型还在完善
  • 安全边界要自己把关:Server 能执行真实操作,提示注入可能诱导模型误调用——敏感操作务必加人工确认
  • 上下文膨胀:挂太多 Server 时,工具描述会吃掉大量上下文窗口

常见问题(FAQ)

Q:MCP 和 Function Calling 是什么关系?
A:Function Calling 是模型层能力(模型按约定格式输出调用意图);MCP 是应用层协议(标准化工具的发现、描述与执行)。Host 可用模型的 Function Calling 决定工具调用,但 MCP 协议自身不依赖特定模型或 Function Calling,两者是互补的不同层级。

Q:现有 REST API 能直接变成 MCP Server 吗?
A:需要包一层适配:写一个 MCP Server,把 REST 调用封装成 Tools 暴露出来。社区已有把 OpenAPI 规范自动转 MCP 的工具,接入成本不高。

Q:MCP 只适合 Claude 吗?
A:不是。MCP 是开放协议,OpenAI、Google 及众多 IDE、框架都已支持。选 MCP 的意义恰恰在于不被单一模型厂商锁定。

参考资料

资料核对日期:2026 年 9 月 29 日。本文基于公开文档整理,代码片段和评估方案未作独立运行或性能验证;厂商测试结果已注明来源。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台