当前位置: 首页 > news >正文

FastMCP+python简单测试

FastMCP 是构建 MCP 服务器和客户端的标准框架。FastMCP 1.0 已被纳入官方 MCP Python SDK。当前 FastMCP 已更新至 2.0 版本,2.0 版本通过引入完整的客户端支持、服务器组合、OpenAPI/FastAPI 集成、远程服务器代理、内置测试工具等功能,显著扩展了 1.0 版本的基础服务器构建能力。

1.测试前准备

使用pip进行安装,安装命令如下:

pip install fastmcp

2.服务端代码 

接下来以编写一个计算加减乘除的服务端为例:

from fastmcp import FastMCPmcp = FastMCP(name="MyAssistantServer")@mcp.tool()
def add(a: float, b: float) -> float:"""加法运算参数:a: 第一个数字b: 第二个数字返回:两数之和"""return a + b@mcp.tool()
def subtract(a: float, b: float) -> float:"""减法运算参数:a: 第一个数字b: 第二个数字返回:两数之差 (a - b)"""return a - b@mcp.tool()
def multiply(a: float, b: float) -> float:"""乘法运算参数:a: 第一个数字b: 第二个数字返回:两数之积"""return a * b@mcp.tool()
def divide(a: float, b: float) -> float:"""除法运算参数:a: 被除数b: 除数返回:两数之商 (a / b)异常:ValueError: 当除数为零时"""if b == 0:raise ValueError("除数不能为零")return a / bif __name__ == "__main__":mcp.run(transport='sse', host="127.0.0.1", port=8001)

启动服务端效果图:

 

3.客户端代码

import asyncio
from typing import List, Dict, Any# 假设这是MCP客户端的接口定义
class ToolResult:def __init__(self, text: str):self.text = textclass Client:def __init__(self, base_url: str):self.base_url = base_urlasync def __aenter__(self):# 初始化客户端连接print(f"Connecting to {self.base_url}")return selfasync def __aexit__(self, exc_type, exc_val, exc_tb):# 清理资源print("Closing connection")async def list_tools(self) -> List[str]:# 列出可用工具的实现return ["add", "subtract", "multiply"]async def call_tool(self, tool_name: str, parameters: Dict[str, Any]) -> List[ToolResult]:# 调用工具的实现if tool_name == "add":result = parameters.get("a", 0) + parameters.get("b", 0)return [ToolResult(text=str(result))]return [ToolResult(text="Unknown tool")]async def main():# 测试 mcp 客户端的功能async with Client("http://127.0.0.1:8001/sse") as mcp_client:tools = await mcp_client.list_tools()print(f"Available tools: {tools}")result = await mcp_client.call_tool("add", {"a": 5, "b": 3})print(f"Result: {result[0].text}")# 运行异步主函数
if __name__ == "__main__":asyncio.run(main())

客户端运行效果图:

参考链接:FastMCP,构建 MCP 的 python 框架,比官方 SDK 更好用! 

http://www.lqws.cn/news/505423.html

相关文章:

  • 全面掌握 Nginx的功能和使用方法
  • Ingress-Nginx简介和配置样例
  • 最方便的应用构建——利用云原生快速搭建本地deepseek知识仓库
  • 程序猿成长之路之数据挖掘篇——聚类算法介绍
  • uniapp实现远程图片下载到手机相册功能
  • redis的安装及操作
  • 支持向量机(SVM):原理、实现与应用
  • Python核心库Pandas详解:数据处理与分析利器
  • 传输层协议TCP
  • 随机森林详解:原理、优势与应用实践
  • 【apache-maven3.9安装与配置】
  • C++ string类的操作
  • Python与Web3.py库交互实践
  • ref() 与 reactive()
  • Android中Navigation使用介绍
  • 跟着AI学习C#之项目实践Day5
  • 从0开始学习R语言--Day31--概率图模型
  • Blaster - Multiplayer P162-PXX
  • 系统性能优化-4 磁盘
  • 【Bluedroid】蓝牙启动之 bta_dm_enable 流程梳理 源码解析
  • 【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具
  • C# WinForm跨平台串口通讯实现
  • ffmpeg下载地址
  • 数组题解——移除元素​【LeetCode】
  • Windows驱动开发最新教程笔记2025(一)名词解释
  • Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
  • From Tranformer to Decoder ONLY
  • 云原生周刊:Argo CD v3.1 正式发布
  • PyEcharts教程(009):PyEcharts绘制水球图
  • 【HTTP】取消已发送的请求