Python-Agent调用多个Server-FastAPI版本

Python-Agent调用多个Server-FastAPI版本

Agent调用多个McpServer进行工具调用


1-核心知识点

  • fastAPI的快速使用
  • agent调用多个server

2-思路整理

  • 1)先把每个子服务搭建起来
  • 2)再暴露一个Agent

3-参考网址


4-动手操作

1-项目提示词

复制代码
帮我使用Python开发4个MCPServer和MCPClient代码,要求Agent中直接使用3个MCPServer,并编写Prompt,要求根据用户的输入可以自动的调用对应的McpServer来进行接口调用

要求4个MCPServer中,要求【城市天气服务、城市酒店服务、城市旅游服务】使用模拟数据进行接口模拟;【每日经典语录推荐】使用真实的外部API接口

第1个服务:城市天气服务
- 接口1:查询支持的城市列表
- 接口2:查询指定城市的当天天气情况
- 接口3:查询指定城市的未来一周天气情况

第2个服务:城市酒店服务
- 接口1:查询支持的城市列表
- 接口2:查询指定城市的酒店房间列表
- 接口3:预定指定城市的酒店房间

第3个服务:城市旅游服务
- 接口1:查询支持的城市列表
- 接口2:查询指定城市的旅游地址推荐

第4个服务:每日经典语录推荐
- 接口:GET请求https://v1.hitokoto.cn/?encode=json 获取返回的hitokoto字段

3-项目介绍

  • mcpserver_weather.py(城市天气服务,端口8001)
  • mcpserver_hotel.py(城市酒店服务,端口8002)
  • mcpserver_tour.py(城市旅游服务,端口8003)
  • mcpserver_quote.py(每日经典语录服务,端口8004,转发外部API)
  • mcp_agent.py(MCPClient/Agent,端口9000,智能分发请求)

  • requirements.txt:包含 fastapi、uvicorn、httpx 依赖。
  • mcpserver_weather.py:实现城市天气服务,支持查询城市列表、今日天气、一周天气(模拟数据)。
  • mcpserver_hotel.py:实现城市酒店服务,支持查询城市列表、酒店房间列表、预定酒店(模拟数据)。
  • mcpserver_tour.py:实现城市旅游服务,支持查询城市列表、旅游推荐(模拟数据)。
  • mcpserver_quote.py:实现每日经典语录服务,转发真实API返回语录。
  • mcp_agent.py:实现MCP智能Agent,支持自然语言输入,自动调用对应服务接口并返回结果。

2-项目运行

复制代码
pip install -r requirements.txt

source .venv/Scripts/activate
uvicorn mcpserver_weather:app --host 0.0.0.0 --port 8001

source .venv/Scripts/activate
uvicorn mcpserver_hotel:app --host 0.0.0.0 --port 8002

source .venv/Scripts/activate
uvicorn mcpserver_tour:app --host 0.0.0.0 --port 8003

source .venv/Scripts/activate
uvicorn mcpserver_quote:app --host 0.0.0.0 --port 8004

source .venv/Scripts/activate
uvicorn mcp_agent:app --host 0.0.0.0 --port 9000

4-测试用例

  • 查询支持的城市有哪些?

  • 查询北京的天气

  • 预定上海的酒店房间

  • 推荐广州的旅游景点

  • 给我一句每日经典语录

    • 127.0.0.1:9090/agent POST请求
      {"user_input":"查询支持的城市有哪些?"}

5-心得总结

1-VSCode配置Python开发环境

参考网址:VSCode配置Python开发环境:https://blog.csdn.net/cloud323/article/details/144103355

  • 1)安装python相关的拆件
  • 2)使用 python: 激活插件选择器

相关推荐
王者鳜錸几秒前
PYTHON让繁琐的工作自动化-PYTHON基础
python·microsoft·自动化
key_Go5 分钟前
7.Ansible自动化之-实施任务控制
python·ansible·numpy
阿珊和她的猫3 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
fouryears_234176 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
我好喜欢你~6 小时前
C#---StopWatch类
开发语言·c#
lifallen7 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研7 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi8 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.8248 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员8 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机