MCP协议介绍和应用细节简明教程

109 阅读4分钟

MCP协议介绍和应用细节简明教程

MCP协议介绍和应用细节简明教程

在 AI 逐步渗透到各类应用的今天,我们需要一种 通用的通信协议 ,让 AI 能够 轻松对接各种业务接口 ,以提供更加智能化的功能。 MCP(Model Communication Protocol) 就是这样一种协议,它定义了一套标准化的 C/S(Client/Server)交互机制 ,可以让 AI 通过 Function Calling 机制 ,调用 MCP 提供的各种功能,比如 获取天气、查询时间、控制物联网设备等 。 本文将详细介绍 MCP 协议的概念、如何调用 MCP 服务,以及 Function Calling 调用 MCP 服务的流程细节,以 OpenAI 举例 。 ## 1. 什么是 MCP?

1.1 MCP 的来历和用途

‌MCP(Model Communication Protocol,模型通信协议) 是一种通用的 AI 接口协议 ,由 Anthropic 推出,用于标准化 AI 和业务服务的交互方式,解决社区中工具实现风格不统一、难以跨模型共享的问题 在 AI 应用开发中,模型本身并不具备执行外部操作的能力,比如: * 查询 天气 数据

  • 获取 当前时间
  • 访问 数据库
  • 控制 物联网设备 为了解决这个问题,MCP 提供了一种 统一的 API 交互协议 ,让 AI 可以像调用函数一样,与各种业务接口交互, 提高通用性、可扩展性和跨平台能力 。 ### 1.2 MCP 的优势 ✅ 标准化 JSON 交互 :请求和返回数据采用 JSON 格式 ,保证兼容性。 ✅ 兼容 Function Calling :可以无缝配合 Function Call 机制,让 AI 具备调用外部 API 的能力。 ✅ 解耦 AI 和业务逻辑 :AI 不需要硬编码 API 逻辑,只需要根据 Function Call 选择合适的 MCP 方法,提升开发效率。 ## 2. 如何调用 MCP? 我们首先要获取 MCP 服务提供的函数列表,然后将其转换成对应模型的 Function Call ,在 Function Calling 机制 下,AI 不会直接调用 MCP API ,而是 解析用户意图,决定调用哪个 MCP 函数 ,然后 由开发者解析 AI 返回的 function call 相关请求,获取需要调用的函数名和参数 ,进而手动调用 MCP 服务对应功能。如下: 步骤 角色 动作 1️⃣ 用户 发送问题 "请告诉我北京的天气" 2️⃣ AI模型 解析问题,选择 function call { "name": "get_weather", "arguments": { "city": "北京" } } 3️⃣ 代码 解析 response,提取 function name & 参数 4️⃣ 代码 调用 MCP API get_weather("北京") 5️⃣ MCP 服务器 返回天气数据 { "weather": "Sunny", "temperature": "22°C" } 6️⃣ 代码 把 MCP 结果作为 function 角色消息,传回 OpenAI 7️⃣ AI模型 生成自然语言回答 "北京今天是晴天,气温 22°C" ### 2.1 MCP 的请求与响应格式 🔹 客户端请求(AI → MCP 服务器) ``` { "request_id": "123456", "function": "get_weather", "parameters": { "city": "北京" } }
 🔹 服务器返回(MCP → AI) ```
{
  "request_id": "123456",
  "status": "success",
  "result": {
    "city": "北京",
    "weather": "Sunny",
    "temperature": "22°C"
  }
}

3. Function Call 技术细节

3.1 解析用户意图,选择正确的函数

模型通过 Function Calling 机制,可以分析用户的输入,并自动选择最合适的函数。例如: 用户输入 : ``` "请告诉我北京的天气和当前时间"

 AI 解析 function call ```
{
  "function_calls": [
    {
      "name": "get_current_time",
      "arguments": {}
    },
    {
      "name": "get_weather",
      "arguments": {
        "city": "北京"
      }
    }
  ]
}

AI 识别到用户的问题涉及两个 API: * get_current_time (获取当前时间)

  • get_weather (获取天气信息) AI 主要依赖 description 来确定 function 的作用,而 name 只是辅助信息! ### 3.2 解析 AI 返回的 function call,并执行 MCP 逻辑 AI 只会返回 调用建议 ,不会自动执行函数。我们需要解析 function call ,并手动调用 MCP 服务器。 ``` import openai import requests import uuid import json

openai.api_key = "your-openai-api-key"

MCP协议介绍和应用细节简明教程

functions = [ { "name": "get_current_time", "description": "获取当前时间", "parameters": {} }, { "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "city": { "type": "string", "description": "查询天气的城市名称" } } } ]

MCP协议介绍和应用细节简明教程

user_input = "请告诉我北京的天气"

MCP协议介绍和应用细节简明教程

response = openai.ChatCompletion.create( model="gpt-4-turbo", messages=[{"role": "user", "content": user_input}], functions=functions )

MCP协议介绍和应用细节简明教程

if response["choices"][0]["finish_reason"] == "function_call": function_call = response["choices"][0]["message"]["function_call"] function_name = function_call["name"] parameters = json.loads(function_call.get("arguments", "{}"))

print(f"AI 选择调用: {function_name}, 参数: {parameters}")

# 2️⃣ 调用 MCP 服务器
def call_mcp_server(function_name, parameters={}):
    url = "http://127.0.0.1:5000/mcp"
    request_id = str(uuid.uuid4())
    payload = {
        "request_id": request_id,
        "function": function_name,
        "parameters": parameters
    }
    response = requests.post(url, json=payload)
    return response.json()

# 执行 MCP 逻辑
mcp_response = call_mcp_server(function_name, parameters)
print("MCP 服务器返回:", mcp_response)

# 3️⃣ 让 AI 进行最终总结
if "result" in mcp_response:
    ai_response = openai.ChatCompletion.create(
        model="gpt-4-turbo",
        messages=[
            {"role": "user", "content": user_input},
            {"role": "assistant", "content": None, "function_call": function_call},  
            {"role": "function", "name": function_name, "content": json.dumps(mcp_response["result"])}
        ]
    )
    print("最终 AI 回复:", ai_response["choices"][0]["message"]["content"])
 ### 3.3 让 AI 总结最终结果并回复
 调用 MCP 服务器后,返回的结果需要 重新传递给 OpenAI,让 AI 生成自然语言回复 : ```
{"role": "function", "name": "get_weather", "content": "MCP返回的天气数据"}

AI 看到这个数据后,就能生成最终的回答: ``` "北京今天是晴天,气温 22°C,适合外出游玩!"

 ## 4. 未来展望
 ✅ 标准化 API 调用 (适用于 AI + 业务集成) ✅ 智能客服、自动化办公、物联网控制 ✅ 提升 AI 可操作性,使 AI 具备真正的执行能力! MCP 让 AI 迈向更强大的执行能力,而 Function Calling 让 AI 能理解并合理调用 API, 这才是 AI 迈向真正智能化的关键!

> 原文链接: https://www.cnblogs.com/magicdmer/p/18787748