MCP与大模型与多智能体调度

Day1 学习笔记:MCP 与多智能体调度基础

1. 核心概念

MCP(Model Context Protocol)

  • 定义:一种统一协议,帮助大模型调用外部工具、API 和数据源。
  • 作用
    1. 提供 统一接口,不管是数据库还是 Web API,都能以相同方式被调用。
    2. 提供 安全隔离,模型不会直接访问系统,而是通过 MCP 代理。
    3. 提供 上下文管理,让模型能获取外部信息补充自己的知识。

👉 类比:MCP 就像 操作系统 API,让 LLM 能安全调用系统功能。


多智能体调度(Multi-Agent Scheduling)

  • 定义:在多智能体系统中,调度器负责决定 哪个 Agent 做什么任务、什么时候做
  • 智能体(Agent):有特定能力的角色(搜索、计算、翻译……)。
  • 调度器(Scheduler/Planner):通常是 LLM,负责任务分解、分配、协调。

👉 类比:调度器 = 项目经理,Agent = 团队成员。


MCP 与多智能体调度的关系

  • 多智能体调度:解决「谁来干活」。
  • MCP:解决「怎么调用这些 Agent/工具」。

📌 简单公式:
调度逻辑(LLM Planner) + MCP 通信协议 = 多智能体系统闭环

2. 环境搭建

建议用 Python + 虚拟环境(conda/venv),并安装常用依赖:

# 创建虚拟环境
conda create -n mcp-agents python=3.10 -y
conda activate mcp-agents

# 安装必要库
pip install openai langchain llama-index

如果使用开源模型(如 Qwen / MiniCPM-V):

pip install transformers accelerate

3. LLM 基础实验

以 OpenAI GPT 为例(换成其他 LLM 也可以):

import openai

client = openai.OpenAI(
        api_key="你的api",
        base_url="https://api.zhongzhuan.chat/v1"#这里我使用了第三方api
    )

response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "请用一句话解释什么是MCP(模型上下文)协议"
        ""}]
    )

print(response.choices[0].message.content)

✅ 预期输出:一句简洁解释,比如:

“MCP 是一种标准协议,让大模型能安全调用外部工具和数据源。”


4. 今天的学习目标 ✅

  1. 理解 MCP 和多智能体调度的关系。
  2. 完成环境搭建。
  3. 成功调用一次 LLM API。

Day2 学习笔记:MCP 入门

1. MCP 工具(Tool)的概念

  • 定义:在 MCP 体系中,工具就是 LLM 可以调用的外部功能。
  • 特点
    1. 有清晰的接口(输入参数、返回结果)。
    2. 注册到 MCP 后,LLM 才能使用。
    3. 可以是本地函数 / Web API / 数据库 / 另一个 Agent。

👉 类比:
MCP 工具 = 给 LLM 开放的安全 API。


2. MCP 工具的基本结构

通常需要包含以下信息:

  • 工具名(如 get_weather
  • 功能描述(告诉 LLM 工具能做什么)
  • 输入参数(告诉 LLM 需要哪些参数)
  • 调用逻辑(具体的 Python/代码实现)

3. 示例:天气查询工具

工具实现(mcp_tools.py

import json

def get_weather(city: str) -> str:
    # 模拟天气数据
    fake_weather = {
        "北京": "晴,25℃",
        "上海": "多云,28℃",
        "广州": "雷阵雨,30℃"
    }
    return fake_weather.get(city, "未找到该城市的天气信息")


# MCP 风格的工具注册
TOOLS = {
    "get_weather": {
        "description": "查询指定城市的天气",
        "parameters": {
            "city": "需要查询的城市名称"
        },
        "function": get_weather
    }
}

# 调用入口
def call_tool(tool_name, **kwargs):
    tool = TOOLS.get(tool_name)
    if not tool:
        return json.dumps({"error": "tool not found"})
    return tool["function"](**kwargs)

模拟 LLM 调用(main.py

from mcp_tools import call_tool

# 模拟 LLM 请求调用工具
request = {
    "tool": "get_weather",
    "args": {"city": "北京"}
}

# 调度 MCP 工具
result = call_tool(request["tool"], **request["args"])
print("MCP 返回结果:", result)

运行结果

python main.py

输出:

MCP 返回结果: 晴,25℃

4. 今天的学习目标 ✅

  1. 理解 MCP 工具的概念和作用。
  2. 会写一个最小的 MCP 工具(get_weather)。
  3. 能模拟 LLM 调用 MCP 工具并返回结果。

📘 Day3 学习笔记 — 基于大模型的 MCP 调度器

一、学习目标

  1. 理解大模型在多智能体调度系统中的作用;
  2. 掌握如何把 LLM 接入 MCP 框架,实现智能工具调用;
  3. 实践构建一个 LLM 驱动的 MCP 调度器 原型;
  4. 理解参数匹配、任务解析和多工具调用的逻辑。

二、理论总结

1️⃣ MCP 与调度器结合

  • MCP 提供了一个安全、标准化的接口,用于 LLM 调用工具(如天气查询、计算、搜索)。
  • 调度器的作用是判断任务类型、选择工具、传递参数,形成闭环:
用户任务 → LLM 调度器 → MCP 工具调用 → 结果返回 → LLM 决策下一步

2️⃣ 大模型调度原理

  • 大模型(GPT)作为调度器,能够理解自然语言任务并推理出:
    • 调用哪个工具;
    • 工具参数如何构造;
    • 是否需要多步调用多个工具。
  • 相比硬编码规则,LLM 调度更灵活,可应对复杂和多步任务。

3️⃣ 常见问题与解决方法

  • 参数名不匹配:模型输出参数名可能与函数定义不一致。
    • 解决方案:
      1. 在 prompt 中明确每个工具的参数名;
      2. 在调用前做参数映射兼容。
  • 多步任务:需要让 LLM 先规划,再依次调用工具(Chain-of-Thought)。

三、实验记录

1️⃣ MCP 工具列表

工具名功能参数
get_weather查询指定城市天气city
calculate执行数学表达式expression
search_web简易网页搜索query

2️⃣ LLM 调度器核心逻辑

  1. 用户输入任务 → 发送给 LLM;
  2. LLM 输出 JSON 格式,包含:
{"tool": "工具名", "args": {"参数名": "参数值"}}
  1. Python 程序解析 JSON → 调用对应 MCP 工具 → 返回结果。

3️⃣ 实验样例任务与输出

用户任务模型输出调用结果
北京的天气{"tool": "get_weather", "args": {"city": "北京"}}晴,25℃
2+3{"tool": "calculate", "args": {"expression": "2+3"}}计算结果是:5
MCP是什么{"tool": "search_web", "args": {"query": "MCP"}}MCP(Model Context Protocol)是一种让LLM安全使用外部工具的标准
北京天气乘3{"tool": "get_weather", "args": {"city": "北京"}}调用成功,避免了参数名错误(已做映射处理)

四、实践总结

  • 成功将大模型作为 MCP 调度器,实现 智能化工具调用
  • 学会了 Prompt设计 影响模型输出规范;
  • 理解了多工具调用、多步任务规划的必要性;
  • 掌握了 参数映射和容错机制,保证 MCP 工具调用稳定。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇