MCP学习

MCP

定义

image
MCP,全称Model Context Protocal(模型上下文协议),MCP 为 AI 模型连接各种数据源和工具提供了标准化的接口。

Why MCP?

标准化MCP与外部数据源的交互方式,现存方式需要为不同数据源反复构建相同逻辑,采用MCP后可以只构建一次即可复用
image

---> 没有MCP的世界
image
image

---> 有MCP的世界
image
image
image

架构

image

  • MCP采用客户端服务器架构,客户端与服务器之间保持着一对一的连接关系
    • 主机
      • 希望通过MCP访问数据的LLM应用
    • MCP Servers
      • 轻量级程序通过协议暴露特定功能
    • MCP Clients
      • 主机应用中

MCP能提供什么?

image

  • 工具 Tools --- POST
    • 客户端可以调用的函数
  • 资源 Resources --- GET
    • 服务器暴露的只读数据/上下文
  • 提示词模板 Prompt Templates --- 预定义的模板

Tools的设计

image

  • 装饰器@mcp.tool()/mcp.add_tool()
    注:
  1. 函数名、参数、参数类型要写清,这是AI模型理解工具功能的途径
  2. 若函数本身比较复杂,无法用函数名称来描述功能,那么我们可以写一个docstring

Resources的设计

image

  • 装饰器装饰函数
  • mime_type说明返回类别
  • direct(静态)和templated(动态)两类

Prompts的设计

image

通信方式

image

传输方式

image

本地

  • Stdio 传输
    image
    • 使用标准输入/输出进行通信
    • 适用于本地进程

远程

image

  • 有状态连接 —— 通过 HTTP 的 SSE 传输
    image

    • 使用服务器发送事件进行服务器到客户端的消息传递
    • 使用 HTTP POST 进行客户端到服务器的消息传递
  • 无/有状态连接 --- 通过Streamable HTTP(可流式)
    image

  • 通过HTTP的GET POST实现

以Claude桌面端MCP为例

用户打开Claude Desktop

Claude读取配置文件 (claude_desktop_config.json)

发现配置的MCP服务器

自动启动所有配置的MCP服务器进程

建立stdin/stdout连接

完成初始化握手

用户可以开始使用

MCP服务发现的方式

  • 动态发现工具:在指定的MCP服务器上发现工具

https://modelcontextprotocol.io/docs/concepts/tools#tool-discovery-and-updates

  • 动态发现服务:定义客户端如何发现并连接远程MCP服务器,官方尚未完成的功能

https://modelcontextprotocol.io/development/roadmap

MCP的优点

  • 模型无关
  • 可复用
  • 简化连接系统、提供数据的过程

参考链接:
https://www.bilibili.com/video/BV1nyVDzaE1x/?spm_id_from=333.788.videopod.sections&vd_source=da04a3e481cb89d708a02f23b60e19a4
https://mcp-docs.cn/introduction
https://www.cnblogs.com/ghj1976/p/18769532/mcp-de-dong-tai-fa-xian
https://www.bilibili.com/video/BV1ULJPz4EBD?spm_id_from=333.788.videopod.episodes&vd_source=da04a3e481cb89d708a02f23b60e19a4&p=2

posted @ 2025-07-08 14:21  zheng019  阅读(60)  评论(0)    收藏  举报