跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

MCP 协议详解:与 Function Call 的区别及 Python 实战

MCP 协议作为大模型上下文标准,统一了模型与外部工具的交互方式。相比传统 Function Call 需针对各模型 SDK 定制代码,MCP 提供了通用接口。通过 Python SDK 演示了基础用法,解析了工具调用流程、参数传递及上下文维护机制,帮助开发者快速理解并集成 MCP 能力。

无尘发布于 2026/2/28更新于 2026/8/2250 浏览
MCP 协议详解:与 Function Call 的区别及 Python 实战

MCP 协议简介

2025 年,Anthropic 提出了 MCP(Model Context Protocol),即大模型上下文协议。它的核心目标是统一 AI 大模型与外部工具之间的交互方式。这就好比 USB-C 接口统一了物理连接标准,MCP 旨在解决大模型接入不同工具时的碎片化问题。

MCP 采用 C/S 架构,支持客户端调用远程服务,也支持本地启动服务端(stdio 模式)。只需在配置文件中注册 MCP 服务端,即可让大模型直接调用各类工具,大幅提升了 Agent 开发的便捷性。

Function Call 回顾

在 MCP 普及之前,开发 AI Agent 调用外部工具通常需要针对不同模型的 SDK 编写特定逻辑,最典型的就是 OpenAI 的 Function Call。这种方式虽然有效,但缺乏统一标准,迁移成本高。

Function Call 示例

以 OpenAI Chat Completions 接口为例,我们可以通过 tools 参数传入外部工具定义。工具描述包含名称、功能说明及参数结构。tool_choice 设为 auto 时,模型会自动判断是否调用工具;设为 none 则禁止调用。

import openai
import json

def main():
    client = openai.OpenAI(
        api_key="your_api_key_here",
        base_url="https://api.siliconflow.cn/v1"
    )
    
    tools = [{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名"}
                },
                "required": ["city"]
            }
        }
    }]

    res = client.chat.completions.create(
        model="Qwen/Qwen2.5-32B-Instruct",
        messages=[
            {"role": "system", "content": "你是一个天气查询助手"},
            {"role": "user", "content": "帮我查询上海的天气"}
        ],
        tools=tools,
        tool_choice="auto"
    )

    print("content:", res.choices[0].message.content)
    print("tools:", res.choices[0].message.tool_calls)

运行后,如果模型决定调用工具,content 字段通常为空,而 tool_calls 会返回具体的函数名和参数。例如:

{
  "role": "assistant",
  "content": "",
  "tool_calls": [
    {
      "id": "call_abc123",
      "type": "function",
      "function": {
        "name": "get_weather",
        "arguments": "{\"city\": \"上海\"}"
      }
    }
  ]
}
处理工具响应

拿到模型生成的参数后,我们需要执行实际函数,并将结果回传给模型进行二次处理。这一步需要维护对话上下文,将工具调用的结果以 tool 角色插入消息列表。

# 模拟执行工具并获取结果
tool_result = "上海当前天气晴朗,气温 25 度"

# 构建新的消息列表,追加工具响应
messages.append(res.choices[0].message.to_dict())
messages.append({
    "role": "tool",
    "content": tool_result,
    "tool_call_id": res.choices[0].message.tool_calls[0].id
})

# 再次请求模型生成最终回答
final_res = client.chat.completions.create(
    model="Qwen/Qwen2.5-32B-Instruct",
    messages=messages,
    tools=tools,
    tool_choice="auto"
)
print(final_res.choices[0].message.content)

这样,整个'提问 - 选工具 - 执行 - 回答'的闭环就完成了。MCP 的优势在于它试图将这一套流程标准化,减少重复造轮子的成本。

目录

  1. MCP 协议简介
  2. Function Call 回顾
  3. Function Call 示例
  4. 处理工具响应
  5. 模拟执行工具并获取结果
  6. 构建新的消息列表,追加工具响应
  7. 再次请求模型生成最终回答
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AI 产品经理必备技术能力与学习路径指南
  • DooTask V1.4.42 发布:AI 智能生成工作报告与功能优化
  • MySQL 表约束核心指南:从基础到外键实战
  • RAG 架构工程实践:分块策略、混合检索与重排序
  • MySQL MVCC 原理:并发控制与隔离级别深度解析
  • AI 小白转型产品经理的七步实战指南
  • 12 个大模型推理框架详解
  • DCU BW1000 环境下 llama.cpp 推理 Qwen3-Coder 模型问题排查
  • 基于 Zynq FPGA 的雷龙 SD NAND 测试
  • 递归、搜索与回溯算法:深入理解记忆化搜索
  • SkyWalking 全链路监控实战:Spring Cloud、Dubbo、RocketMQ 集成指南
  • Java 全栈开发知识体系思维导图整理
  • LangChain v1.0 中间件机制:AI Agent 上下文控制指南
  • DeepSeek-R1 发布 72 小时:AI 行业主要反响与影响
  • SQL 注入全流程详解:多数据库、GetShell 及防护绕过
  • Java 面试核心考点与实战解析
  • 数据结构:归并排序与分治思想详解
  • Mac mini M4 部署 OpenClaw + Ollama 本地大模型接入飞书机器人
  • Ubuntu 22.04 LTS 系统下载指南及国内镜像加速
  • LLaMA 系列模型论文核心要点解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online