news 2026/8/29 2:45:35

MCP和FastMCP的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MCP和FastMCP的使用

一、基础概念

1.mcp是什么

  • 模型上下文协议,实现LLM应用与外部数据源和工具之间的无缝集成

2.mcp消息交换协议

  • JSON-RPC 2.0
  • 好处:使用JSON作为数据格式,兼容各种编程语言、简单易用、轻量灵活

3.通信模式

(1)STDIO 模式

  1. STDIO是一种基于标准输入(stdin)和标准输出(stdout)的本地通信方式
  2. MCP客户端启动一个子进程(MCP Server),通过stdin和stdout交换JSON-RPC消息实现通信

(2)SSE 模式

        1.概念
  • SSE是一种基于HTTP协议的通信技术,允许Server主动实时向Client推送消息
        2.特点
  • 单向(仅Server →Client),严格的说,是一种HTTP Post(Client->Server) + HTTP SSE(Server->Client)的伪双工通信模式
  • 基于HTTP协议
  • 适合实时消息推送场景
        3.通信过程
  • 1.连接建立:Client首先请求建立SSE连接,Server“同意”后生成并推送唯一的Session ID
  • 2.请求发送:Client通过HTTP POST发送JSON-RPC2.0请求
  • 3.请求接收确认:Server接收请求后立即返回202(Accepted)状态码,表示已接受请求
  • 4.异步处理:Server应用框架会自动处理请求,根据请求中的参数,决定调用某个工具或资源
  • 5.结果推送:处理完成后,Server通过SSE通道推送JSON-RPC2.0响应,
  • 6.结果匹配:Client的SSE连接侦听接收到数据流后,会根据RequestID将接收到的响应与之前的请求匹配
  • 7.连接断开:在Client完成所有请求后,断开SSE连接,会话结束
        4.存在问题
  • 需要维护两个独立的连接端点
  • 有较高的连接可靠性要求。一旦SSE连接断开,Client无法自动恢复,需要重新建立新连接,导致上下文丢失
  • Server必须为每个Client维持一个高可用长连接,对可用性和伸缩性提出挑战
  • 强制所有Server向Client的消息都经由SSE单向推送,缺乏灵活性

(3)StreamableHTTP模式

        1.StreamableHTTP特性
  • 允许无状态的Server存在,不依赖长连接。有更好的部署灵活性与扩展能力
  • 对Server中间件的兼容性更好,只需要支持HTTP即可,无需做SSE处理
  • 允许根据自身需要开启SSE响应或长连接,保留了现有规范SSE模式的优势

二、FastMCP环境搭建

1.安装包

#安装包 pip install "mcp[cli]"

2.简单示例

# 导入这个包才能使用Inspector from mcp.server.fastmcp import FastMCP # 生产导入包 #from fastmcp import FastMCP mcp = FastMCP("Math") @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b @mcp.tool() def multiply(a: int, b: int) -> int: """Multiply two numbers""" return a * b if __name__ == "__main__": mcp.run(transport="stdio")

3.Inspector方式启动

mcp dev server.py(python文件名) 如果是http模式,需要先启动服务端

4.官方网址

FastMCP框架网址: https://gofastmcp.com/servers/tools#advanced-metadata-with-field

三、通信模式代码示例

1.stdio模式

(1)服务端代码

from fastmcp import FastMCP mcp = FastMCP("Math") @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b @mcp.tool() def multiply(a: int, b: int) -> int: """Multiply two numbers""" return a * b if __name__ == "__
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 8:30:18

智慧城市、能源等优质学术会议分享!

​ ↑↑↑ 了解更多详细会议信息、投稿优惠 请添加会议老师 2026年可持续发展与城市规划国际学术会议(SDUP 2026) 2026 International Conference on Sustainable Development and Urban Planning ​ ↑↑↑ 了解更多详细会议信息、投稿优惠 请添…

作者头像 李华
网站建设 2026/8/25 18:43:23

一张图看懂网络空间安全:从网络层到应用层的“防护圈”都有哪些?

什么是网络安全,网络空间安全有哪些安全? 本文章详细列举出网络空间安全的十六大种类 网络空间安全是一个覆盖 “物理层 - 网络层 - 应用层 - 数据层 - 业务层” 的全域防护体系,其安全种类可根据防护对象、技术场景和业务领域划分为 16 大…

作者头像 李华
网站建设 2026/8/25 6:59:05

如何从Target平台获取搜索列表数据的API接口

在现代Web开发中,API(应用程序接口)是实现平台数据交互的核心工具。本文将以Target平台为例,详细介绍如何通过其API接口获取搜索列表数据。Target平台提供了一个RESTful API,允许开发者查询关键词相关的搜索结果&#…

作者头像 李华
网站建设 2026/8/24 22:23:00

Apple生态自动化理想之选!亚马逊云科技Mac实例一键部署OpenClaw

企业或团队真正需要的,不是一个“会聊天的AI玩具”,而是一个能在云端持续工作、每个操作都留痕可查、无缝融入现有沟通工具的生产力助手。OpenClaw(原名Clawdbot、Moltbot)火了之后,大家发现:部署方式直接决…

作者头像 李华
网站建设 2026/8/21 17:51:39

AIGS范式革命:Java企业智能化转型的核心路径

在人工智能技术的演进中,从AIGC(人工智能生成内容)到AIGS(人工智能生成服务)的跨越,标志着AI从“辅助性内容工具”升级为“系统性服务重塑者”。对于长期以Java技术栈为核心架构的企业而言,传统…

作者头像 李华