AI学习之MCP(基础篇)

105 阅读6分钟

MCP(Model Context Protocol

官网地址:modelcontextprotocol.io/docs/gettin…

开源地址:github.com/modelcontex…

一、MCP 是什么?从何而来?

MCP(Model Context Protocol) 是一套用于 AI 模型与外部工具 / 服务之间互联互通 的统一通信标准协议,目标是让 AI 调用工具像 “插 USB” 一样简单通用。

1. MCP 的诞生背景

MCP 由 Anthropic(Claude 开发商) 的两位工程师设计提出:

  • Justin Spahr‑Summers
  • David Soria Parra

它在 2024 年正式开源,设计思路借鉴了编程界广为人知的 LSP(Language Server Protocol) ,希望用一套协议解决所有 AI 工具对接问题。

2. 为什么会出现 MCP?

MCP_history.jpg

如果所示,在没有 MCP 之前,AI 接入外部工具面临严重的 混乱、重复造轮子、工作量大 问题(感兴趣的可以去看一下function calling

  • 每个大模型(GPT / Claude / 文心一言 / 通义千问等)
  • 对接每个工具(文件、Slack、邮箱、数据库、业务接口等)

都需要单独写适配代码,协议不统一、格式不统一、调用方式不统一,导致:

  • 对接成本极高
  • 无法跨模型复用
  • 换模型就要重写
  • 工具生态难以扩展

MCP 的出现就是为了解决这个问题:一套标准,所有模型与工具即插即用。


二、MCP 做了什么?

  1. 统一 Function Calling 运行规范
  • 将大模型所在的运行环境定义为 MCP Client(客户端)
  • 将外部工具、插件、函数、外部服务所在的运行环境定义为 MCP Server(服务器)
  1. 统一客户端与服务器之间的交互规范
  • 统一了工具发现、函数注册、参数校验、调用发起、结果返回、异常处理等全流程协议
  • 屏蔽了不同大模型、不同工具平台之间的接口差异,实现一次开发、多端通用

以上设计的核心目的,是避免工具服务的重复开发:只要某一个工具按照 MCP 规范开发并部署,所有兼容 MCP 的客户端都可以直接调用,无需重复适配。典型场景包括:天气查询、网页爬取、本地 / 远程数据库查询、文件读写、代码执行、第三方 API 调用等。

为推动生态共建,Anthropic 面向开发者提供了一整套客户端与服务器开发 SDK

  • 开发者只需少量代码,即可快速搭建一个标准 MCP Server
  • 该服务可无缝接入任意兼容 MCP 协议的大模型客户端,用于构建智能体(Agent)
  • 大幅降低智能体接入外部工具的成本,更利于工具生态与智能体生态的快速发展

三、谁在使用和实现 MCP?

fQzxrIDqp.jpeg 如果所示MCP 涉及三类核心角色,均需遵循统一协议规范:

  1. MCP Host(AI / 智能体): 作为调度中枢,负责决策、发现并调用外部工具,是整个流程的核心大脑。
  2. MCP Server(工具 / 服务 / 软件): 按照 MCP 标准开放自身能力,提供可被调用的具体功能接口。
  3. MCP Client(通信客户端):承担 Host 与 Server 之间的协议通信、连接与传输工作,一般由框架层实现。

开发者则负责两端适配:

  • 将各类工具封装为标准 MCP Server
  • 为 AI/Agent 集成 MCP Host 调度能力
  • 基于 MCP Client 搭建连接、调度与中间层框架

总结:

  • AI = Host,工具 = Server,通信层 = Client
  • MCP协议作用MCP Client和MCP Server之间
  • MCP Client和MCP Server之间是一对一的关系
  • 一种MCP Server基本上只做一种类型的事情

我们可以理解为:工具提供能力,AI 使用能力,开发者用 MCP 把它们连起来。

MCP.jpg

再次强调注意:client和大模型之间怎么交流沟通,并没有统一约束。mcp协议只在client和server层,不要搞错了


四、MCP Server

MCP的技术本质是一套 JSON-RPC 风格 的轻量级通信协议

[
  {
    "name": "工具名(英文小写+下划线)",
    "description": "工具功能+使用场景+返回值(详细描述)", //ai识别你是干嘛的
    "inputSchema": {
      "type": "object",
      "properties": {
        "参数名1": {
          "type": "参数类型(如string)",
          "description": "参数要求、取值范围"
        },
        "参数名2": {
          "type": "参数类型",
          "description": "参数要求、取值范围"
        }
      },
      "required": ["必填参数1", "必填参数2"], // 无必填项可省略
      "additionalProperties": false // 必加,提升稳定性
    }
  }
]

无论多少个工具,三个字段是核心必写

  • name:工具名(英文,AI 用来调用)
  • description:工具用途(让 AI 理解功能)
  • inputSchema:参数结构(类型、必填、说明)

MCP Server和MCP Client之间常见两种通信方式:

  1. stdio:本地进程通信(默认)-都在本地使用这种方式
  2. HTTP、SSE:网络服务通信

三大核心概念为:Resources(资源)Tools(工具)Prompts(提示模板) ,共同构成 AI 模型与外部系统交互的基础能力。

  1. Resources(资源)
  • 定位:只读的上下文数据源
  • 作用:为模型提供静态 / 动态背景信息,让模型能够访问外部数据
  • 典型示例:
    • 读取本地文档、代码文件
    • 获取企业知识库、API 文档
    • 读取日历、日志、数据库结构信息
  1. Tools(工具)
  • 定位:可执行的操作能力
  • 作用:让模型具备执行动作、修改外部系统状态的能力
  • 典型示例:
    • 发送邮件、创建 / 修改日程
    • 增删改文件、执行代码
    • 调用接口、读写数据库、网络搜索
  1. Prompts(提示模板)
  • 定位:预设的指令与交互模板
  • 作用:标准化任务执行方式,指导模型如何使用资源与工具
  • 典型示例:
    • 会议总结、邮件起草模板
    • 代码评审、数据分析流程提示

三者核心对比

表格

维度Resources(资源)Tools(工具)Prompts(提示)
核心能力提供数据执行操作定义指令
读写属性只读可读可写无数据操作
控制权服务器 / 应用AI 模型用户 / 开发者
操作副作用
通俗类比眼睛(看)手脚(做)大脑(思考 / 指令)

一句话总结:MCP Server 通过 Resources 给模型提供数据,通过 Tools 赋予模型执行能力,通过 Prompts 规范交互逻辑,三者共同构建 AI 的上下文与行动体系。

推荐几个比较火的可以常看开源的MCP Server的地址

  1. mcp.so/
  2. github.com/punkpeye/aw…

好啦,今天的内容就总结到这里,文档中有出现问题的地方,希望大家能够指出来,谢谢~

下期我们在MCP Server实战再见~bye