关于MCP的一些坑
实战解析MCP-使用本地的Qwen-2.5模型-AI协议的未来?_qwen mcp-CSDN博客
使用 mcp-agent 框架和百炼通义千问大模型构建基于 MCP 协议的网页总结智能代理 (agent) - ShanSan
MCP圣经:从入门到精通,从精通到放弃,理论 + 实践吃透 大火的 MCP 协议-CSDN博客
MCP 实战:调用DeepSeek实现MCP客户端和服务端快速搭建_人工智能_Maslow503-DeepSeek技术社区
MCP是Anthropic公司发布的,该公司发布了claude。所以官方给的例子基本都是基于claude Desktop为例的,或者基于Anthropic库,需要claude的KEY。虽然MCP支持几乎所有的大模型,但是claude的API和openai的API格式不一样!response的字段存在一些细微差别,github上有一些库在做兼容性的适配。所以直接拿官方的例子去兼容openai,需要改动!参考了上面一些文章,这里直接给出改动以后的代码。
server.py
1 | # server.py |
稍微复杂一点的
1 | from typing import Any |
client.py
- 注意需要要使用await self.client.chat.completions.create,一定得搭配AsyncOpenAI
- openai格式的response里面,Message里面的content和tool_calls一般只会有一个,choices一般也只有一个,所以一般都是response.choices[0].message,除非你调用的时候指定了参数n
下面给出两个响应的格式
- 询问你是谁
1 | response = ChatCompletion( |
- 询问两个数相加
1 | response = ChatCompletion( |
1 | import asyncio |
实际使用中,server一般直接拿已有的,client可能需要我们自己去开发或者适配