尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

MCP - AI智能体调用 MCP Serverr - Streamable HTTP(七)

MCP - AI智能体调用 MCP Serverr - Streamable HTTP(七)
📅 发布时间:2026/6/18 18:23:05

前文展示的是 AI 智能体调用 stdio 的 MCP Server,这里展示调用 Streamable HTTP的 MCP Server。

一、在 test 目录中添加 agent_http.py 文件

并添加如下代码:

import asyncio
import os
from openai import OpenAI
from dotenv import load_dotenv
from contextlib import AsyncExitStack
import json
from fastmcp import Client# 加载 .env 文件
load_dotenv()# 使用 config 配置方式
config = {"mcpServers": {"server": {"url": "http://127.0.0.1:3002/mcp_atlas", # 服务器地址,需要根据 MCP Server 配置修改 "transport": "streamable-http"}}
}class MCPClient:def __init__(self):"""初始化 MCP 客户端"""self.exit_stack = AsyncExitStack()self.api_key = os.getenv("API_KEY")  # 读取 OpenAI API Keyself.base_url = os.getenv("BASE_URL")  # 读取 BASE URLself.model = os.getenv("MODEL")  # 读取 modelif not self.api_key:raise ValueError("未找到 API KEY. 请在 .env 文件中配置 API_KEY")self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)async def process_query(self, query: str) -> str:"""调用大模型处理用户查询并根据返回的 tools 列表调用对应工具"""messages = [{"role": "user", "content": query}]# 获取工具列表available_tools = [{"type": "function","function": {"name": tool.name,"description": tool.description,"input_schema": tool.inputSchema}} for tool in self.tools]print(f"debug info === MCP server 返回的工具列表 available_tools:{available_tools}")print(f"debug info === 拼接用户输入后的 messages:{messages}")# 请求 OpenAI 模型处理response = self.client.chat.completions.create(model=self.model,messages=messages,tools=available_tools)# 处理返回的内容content = response.choices[0]print(f"debug info === AI 返回的 content: {content}")if content.finish_reason == "tool_calls":# 执行工具调用tool_call = content.message.tool_calls[0]tool_name = tool_call.function.nametool_args = json.loads(tool_call.function.arguments)# 执行工具result = await self.session.call_tool(tool_name, tool_args)print(f"\n\n[Calling tool {tool_name} with args {tool_args}]\n\n")# 将模型返回的原始消息和工具执行的结果都添加到 messages 中messages.append(content.message.model_dump())messages.append({"role": "tool","content": result.content[0].text,"tool_call_id": tool_call.id,})# 将上面的结果再返回给大模型生产最终的结果response = self.client.chat.completions.create(model=self.model,messages=messages,)return response.choices[0].message.contentreturn content.message.contentasync def chat_loop(self):"""运行交互式聊天循环"""print("MCP 客户端已启动!输入 'exit' 退出")while True:try:query = input("问: ").strip()if query.lower() == 'exit':breakresponse = await self.process_query(query)print(f"AI回复: {response}")except Exception as e:print(f"发生错误: {str(e)}")async def clean(self):"""清理资源"""await self.exit_stack.aclose()async def connect_to_server(self, server_script_path: str):"""连接到 MCP 服务器"""self.session = await self.exit_stack.enter_async_context(Client(config))async def list_tools(self):"""列出所有工具"""# 列出 MCP 服务器上的工具response = await self.session.list_tools()self.tools = responseasync def main():# 启动并初始化 MCP 客户端client = MCPClient()try:# 连接到 MCP 服务器await client.connect_to_server('server.py')# 列出 MCP 服务器上的工具await client.list_tools()# 运行交互式聊天循环,处理用户对话await client.chat_loop()finally:# 清理资源await client.clean()if __name__ == "__main__":asyncio.run(main())

注意:同样要修改:

  1. tool/math_tools.py
  2. 添加 .env 文件

修改具体内容参见: MCP - AI智能体调用 MCP Serverr - Stdio(六)

二、效果展示

2.1 启动 server

运行如下命令启动 MCP Sever

python server.py  

2.2 启动 agent

运行如下命令启动 agent

 
python agent_http.py

运行后如下图:

 

源代码: https://pan.baidu.com/s/1DlzeeQuZ4dHhF3CfQKYQng?pwd=gbcr 提取码: gbcr

 

 

相关新闻

  • docker compose打包ruoyi项目
  • 淘工厂测试
  • 2025西安楼房地产口碑排行榜单

最新新闻

  • 终极IT运维实战指南:LinkedIn技能评估完整题库解析
  • Microsoft Intune脚本开发指南:自定义脚本模板与最佳实践
  • 彻底解决!ExplorerPatcher优化Windows 10开始菜单响应速度的6大方案
  • 哪种眼油去黑眼圈效果好?亮眼去黑双在线,5款宝藏眼油分享 - 全网最美
  • 全能文档处理方案:clawPDF实战指南,让你的文件转换更高效
  • 2026成都自助机服务商推荐 定制需求专属榜 - 热点速览

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号