这里推荐一个学习MCP网站:
中文:https://mcp-docs.cn/introduction
英文:https://modelcontextprotocol.io/introduction
本文内容还参考了《一文看懂什么是MCP》https://www.aibook.ren/archives/mcp-course
一、架构图
- MCP 主机: 如 Claude Desktop、IDE 或 AI 工具,希望通过 MCP 访问数据的程序
- MCP 客户端: 维护与服务器一对一连接的协议客户端
- MCP 服务器: 轻量级程序,通过标准的 Model Context Protocol 提供特定能力
- 本地数据源: MCP 服务器可安全访问的计算机文件、数据库和服务
- 远程服务: MCP 服务器可连接的互联网上的外部系统(如通过 APIs)
其中,“带 MCP 客户端的主机(Claude、IDE、工具)”通常就是我们使用的电脑,这台电脑上安装了MCP客户端。主机就是通过MCP客户端与MCP服务器进行连接。
二、MCP 客户端
充当 LLM 和 MCP 服务器 之间的桥梁,MCP 客户端 的工作流程如下:
- MCP 客户端首先从 MCP 服务器获取可用的工具列表。
- 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
- LLM 决定是否需要使用工具以及使用哪些工具。
- 如果需要使用工具,MCP 客户端会通过 MCP 服务器执行相应的工具调用。
- 工具调用的结果会被发送回 LLM。
- LLM 基于所有信息生成自然语言响应。
- 最后将响应展示给用户。
三、MCP 服务端
是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:
- 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
- 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
- 提示(Prompts):预先编写的模板,帮助用户完成特定任务。
这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。
四、MCP 协议
支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。
这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。
- 本地通信:通过 STDIO 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
- 远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。
五、其他
需要注意的是,通过 MCP 扩展的能力列表,保存在MCP服务器中,MCP 客户端仅仅是一个数据代理,实现与MCP服务器通讯的功能。
MCP 服务器可以运行在远程服务器上(通过SSE协议通讯),也可以是运行在 MCP 主机上的一个服务(通过STDIO或SSE通讯)。
发表回复