Python之MCPClient实现

简介: 本示例展示FastMCP客户端集成:通过RSA加密认证连接MCP服务,获取工具列表;再将MCP工具动态转为OpenAI格式,供大模型调用。含完整异步初始化、鉴权、工具发现与流式函数调用实现。(239字)

客户端

import asyncio

from fastmcp import Client

from utils.ConfigManager import config
from utils.LoggerManager import logger
from utils.RSAHelper import pack_rsa_decrypted

# 用户认证信息
user_id = config.get("MCP").get("UID")
user_secret_key = config.get("MCP").get("SECRET_KEY")
# MCP server 信息
mcp_server_url = config.get("MCP").get("SERVER_URL")

# 创建MCP客户端
def get_client():
    # 公钥加密密钥
    decrypted = pack_rsa_decrypted(user_id, user_secret_key)
    mcpConfig = {
        "mcpServers": {
            "server_name": {
                # Remote HTTP/SSE server
                "transport": "http",  # or "sse"
                "url": mcp_server_url,
                "headers": {"Authorization": f"Bearer {decrypted}"},
            }
        }
    }
    client = Client(mcpConfig)
    return client

# 获取MCP服务工具列表
async def list_tools():
    tools = None
    try:
        client = get_client()
        async with client:
            # Basic server interaction
            await client.ping()
            # List available operations
            tools = await client.list_tools()
    except Exception as e:
        logger.error(f"list_tools error: {e}")
    logger.info(f"list_tools: {tools}")
    return tools


if __name__ == "__main__":
    tools = asyncio.run(list_tools())
    print(tools)

大语言模型配置

# 获取MCP服务工具列表
mcp_tools = asyncio.run(list_tools())

# 构建工具描述给OpenAI
def build_tool_descriptions(tools):
    """将MCP工具转换为OpenAI工具调用格式"""
    openai_tools = []
    for tool in tools:
        openai_tools.append({
            "type": "function",
            "function": {
                "name": tool.name,
                "description": tool.description,
                "parameters": tool.inputSchema  # MCP工具的参数模式
            }
        })
    return openai_tools
openai_tools = build_tool_descriptions(mcp_tools)

# 大语言模型配置
response = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "system", "content": "你是中国移动智慧助手"},
        {"role": "user", "content": "雷军为啥最近都是负面新闻。"},
    ],
    stream=True,
    tools=openai_tools,
    tool_choice="auto",
)
tool_calls_full = []
for chunk in response:
    choice = chunk.choices[0]
    tool_calls = choice.delta.tool_calls
    if tool_calls:
        tool_calls_full.append(tool_calls)
    content1 = choice.delta.content
    print(content1)
print("-----------------")
print(tool_calls_full)
相关文章
|
2天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
9天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
3865 21
|
5天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
2463 8
|
4天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
2083 4
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
21天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
18991 60
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
2天前
|
SQL 人工智能 弹性计算
阿里云发布 Agentic NDR,威胁检测与响应进入智能体时代
欢迎前往阿里云云防火墙控制台体验!
1170 2

热门文章

最新文章