MCP 入门(概念篇)

MCP 诞生背景

Model Context Protocol (MCP)

MCP 是 Claude(Anthropic) 主导发布的一个开放的、通用的、有共识的协议标准。

​ MCP 于 2024 年 11 月由 Anthropic 发布,旨在标准化 AI 模型与外部数据源(如数据库、API、文件系统)的连接。它的目标是让 AI 助理能够访问和利用上下文数据,提升响应质量。MCP正在统一不同模型和框架的“函数调用”功能,这催生了一个工具服务商生态系统,大幅降低了智能体与工具/数据的对接复杂度。随着更多框架、服务商和平台采用MCP,这一趋势将持续深化。

  • MCP 是一个标准协议,如同电子设备的 Type C 协议(可以充电也可以传输数据),使 AI 模型能够与不同的 API 和数据源无缝交互。
  • MCP 旨在替换碎片化的 Agent 代码集成,从而使 AI 系统更可靠,更有效。通过建立通用标准,服务商可以基于协议来推出它们自己服务的 AI 能力,从而支持开发者更快的构建更强大的 AI 应用。开发者也不需要重复造轮子,通过开源项目可以建立强大的 AI Agent 生态。
  • MCP 可以在不同的应用/服务之间保持上下文,从而增强整体自主执行任务的能力。

​ 可以理解为 MCP 是将不同任务进行分层处理,每一层都提供特定的能力、描述和限制。而 MCP Client 端根据不同的任务判断,选择是否需要调用某个能力,然后通过每层的输入和输出,构建一个可以处理复杂、多步对话和统一上下文的 Agent。

通用 AI Agent 落地的最好桥梁

  • AI Agent 是一个智能系统,它可以自主运行以实现特定目标。传统的 AI 聊天仅提供建议或者需要手动执行任务,AI Agent 则可以分析具体情况,做出决策,并自行采取行动。
  • AI Agent 可以利用 MCP 提供的功能描述来理解更多的上下文,并在各种平台/服务自动执行任务。

MCP 对于社区生态的好处主要是下面两点:

  • 开放标准给服务商,服务商可以针对 MCP 开放自己的 API 和部分能力。
  • 不需要重复造轮子,开发者可以用已有的开源 MCP 服务来增强自己的 Agent。

工作原理

image-20250430110449166
  • MCP 主机 :像 Claude Desktop、IDE 或 AI 工具这样的程序,需要通过 MCP 访问数据(例如 Claude Desktop、IDE 或 AI 工具)
  • MCP 客户端 :与服务器保持 1:1 连接的协议客户端
  • MCP 服务器 :轻量级程序,每个程序都通过标准化模型上下文协议公开特定功能
  • 本地数据源 :MCP 服务器可以安全访问的您的计算机文件、数据库和服务
  • 远程服务 :MCP 服务器可以通过互联网(例如通过 API)连接到的外部系统

MCP Client

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

  • MCP client 首先从 MCP server 获取可用的工具列表。
  • 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
  • LLM 决定是否需要使用工具以及使用哪些工具。
  • 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
  • 工具调用的结果会被发送回 LLM。
  • LLM 基于所有信息生成自然语言响应。
  • 最后将响应展示给用户。

Claude Desktop 和Cursor都支持了MCP Server接入能力,它们就是作为 MCP client来连接某个MCP Server感知和实现调用。

MCP Server

MCP server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:

  • 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
  • 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
  • 提示(Prompts):预先编写的模板,帮助用户完成特定任务。

​ MCP Server 就是为了实现 AI Agent 的自动化而存在的,它是一个中间层,告诉 AI Agent 目前存在哪些服务,哪些 API,哪些数据源,AI Agent 可以根据 Server 提供的信息来决定是否调用某个服务,然后通过 Function Calling 来执行函数。

通信机制

MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于[SSE](Server-Sent Events)的远程通信。

这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。

  • 本地通信**:**通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
  • 远程通信**:**利用 SSE 与 HTTP 结合,实
  • 现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。

使用 MCP (iterm-mcp 演示)

​ 本次演示我用的是 claude 客户端,使用的mcp-server是 iterm-mcp。

1.先将mcp server 工具加入客户端。 image-20250430114123912

2.输入 prompt在终端中画一个golang吉祥物土拨鼠 。允许会话使用mcp server image-20250430113633360

3.大模型会开始调用 mcp server 开始自动在终端中写程序绘制图。 image-20250430113940404

​ 可以看见大模型会自动在终端中执行命令,根据返回的结果试错,纠正。

MCP 官方资源

参考文章