MCP之PYTHON对接大模型遇到的坑

后面会分享个JAVA版本的

PYTHON环境准备

python的本地安装就跳过了,IDE用自己的使用的就可以了

安装UV

复制代码
pip install uv

设置您的环境

bash 复制代码
# 创建项目目录
uv init mcp-client
cd mcp-client
# 创建虚拟环境
uv venv
# 激活虚拟环境
# 在 Windows 上:
.venv\Scripts\activate
# 在 Unix 或 MacOS 上:
source .venv/bin/activate
# 安装所需的包
uv add mcp anthropic python-dotenv
# 删除样板文件
rm hello.py
# 创建我们的主文件
touch client.py

设置您的 API 密钥

需要到使用模型的官网找到对应的密钥。

创建一个 .env 文件来存储它:

ini 复制代码
创建 .env 文件
touch .env
将您的密钥添加到 .env 文件中:
OPENAI_API_KEY=API-KEY
BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
MODEL=qwq-32b

uv的一些命令

官方文档中给的流程图感觉不是太清晰,然后我找了一个流程图

这个流程图我再次发一下,因为对比上篇java版本的(MCP对接Spring AI Alibaba遇到的坑),python更能体会每步的流程(感觉java的封装的比较深吧

网上经常说的MCP非常消耗TOKEN(个人觉得根据上面流程图

  • 要识别调用的工具链,转换为合适的参数
  • 因为MCP是客户本地的服务,需要给本地服务传递调用指令,还需要的到MCP-SERVER的执行结果(一句话链路回合多了)。

网上demo遇到的常见问题

  • 出错的地方在调用本地MCP-SERVER的时候报错
  • 出错的地方在调用本地MCP-SERVER完成后把结果反馈给大模型的时候报错

最常见的报错1:

报错:ModuleNotFoundError: No module named 'mcp'

这问题的报错原因:因为工具加载的时候是通过命令的方式启动加载的。但是你参考的有些地方却写的是python(python环境没有安装mcp的包),改成uv就可以了等于切换了环境。

ini 复制代码
# 根据脚本类型选择执行命令
    command = "uv" if is_python else "node"
    server_params = StdioServerParameters(
        command=command,
        args=["run", server_script_path],
        env=None
    )

最常见的报错2:

报错:在大模型返回信息-》调用本地server-》本地信息在上传个大模型(报错)

css 复制代码
⚠️ 发生错误: Error code: 400 - {'error': {'code': 'invalid_parameter_error', 'param': None, 'message': '<400> InternalError.Algo.InvalidParameter: messages with role "tool" must be a response to a preceeding message with "tool_calls".', 'type': 'invalid_request_error'}, 'id': 'chatcmpl-5801dfcb-208a-913e-930c-b830159810af', 'request_id': '5801dfcb-208a-913e-930c-b830159810af'}

这问题的报错原因:role的问题,把工具调用后返回给大模型做处理的时候,role:tool改为role:funcion就可以了。

bash 复制代码
#原有的信息再拼接个工具调用内容返回给大模型的参数组装
messages.append({
                "role": "function",
                "content": result_content,
                "tool_call_id": tool['id'],
                #"tool_calls": tool_calls
            })
相关推荐
funfan05171 小时前
Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI编程大模型多维度对比分析报告
ai编程
草梅友仁1 小时前
草梅 Auth 1.1.0 发布与最新动态 | 2025 年第 30 周草梅周报
开源·github·ai编程
LinXunFeng2 小时前
AI - Gemini CLI 摆脱终端限制
openai·ai编程·gemini
程序员X小鹿3 小时前
腾讯还是太全面了,限时免费!超全CodeBuddy IDE保姆级教程!(附案例)
ai编程
yeshan7 小时前
使用 Claude Code 的自定义 Sub Agent 完善博文写作体验
ai编程·claude·掘金·日新计划
人生都在赌9 小时前
一个AI工作流如何让代码审查从手动到智能?实战拆解
ai编程·devops·cursor
北极的树9 小时前
大模型上下文工程之Prefix Caching技术详解
人工智能·ai编程
软件测试君9 小时前
【Rag实用分享】小白也能看懂的文档解析和分割教程
aigc·openai·ai编程
qiyue7710 小时前
AI编程专栏(七)-什么是上下文工程,与提示工程区别
人工智能·ai编程·cursor
wayne21410 小时前
不写一行代码,也能做出 App?一文看懂「Vibe Coding」
人工智能·ai编程