当前位置: 首页 > 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 更好用! 

相关文章:

  • 亳州企业网站建设网络营销包括
  • 海外购物网站排名做网络推广怎么收费
  • 展示类网站模板新网站如何让百度收录
  • 牛搬家网企业网站排名30条新闻摘抄
  • 保山企业网站建设网络营销比较好的企业
  • 木藕设计网站大全郑州关键词排名顾问
  • Jenkins+Jmeter+Ant接口持续集成
  • 信创建设,如何统一管理异构服务器的认证、密码、权限管理等?
  • 配置自己的NTP 服务器做时间同步
  • 从零学习linux(2)——管理
  • 缺少 XML 验证与资源注入修复
  • Revisiting Image Deblurring with an Efficient ConvNet论文阅读
  • Joblib库多进程/线程使用(一):使用generator参数实现边响应边使用
  • leetcode61.旋转链表
  • 物流业最后的“人工堡垒”即将失守?机器人正式接管卡车装卸工作
  • java数据类型详解篇
  • 【机器学习深度学习】机器学习核心概念图谱:样本、目标函数、损失函数、特征及训练
  • 【源码】Reactive 源码
  • 【CS创世SD NAND征文】基于全志V3S与CS创世SD NAND的物联网智能路灯网关数据存储方案
  • 闲庭信步使用SV搭建图像测试平台:第九课——初步使用类
  • 开疆智能CCLinkIE转ModbusTCP网关连接施耐德TCP从站配置案例
  • NEO4j的安装部署
  • P0/P1级重大故障根因分析:技术挑战与无指责复盘文化
  • From Tranformer to Decoder ONLY
  • SPSS再次使用
  • Linux零基础快速入门到精通