Day1 学习笔记:MCP 与多智能体调度基础
1. 核心概念
MCP(Model Context Protocol)
- 定义:一种统一协议,帮助大模型调用外部工具、API 和数据源。
- 作用:
- 提供 统一接口,不管是数据库还是 Web API,都能以相同方式被调用。
- 提供 安全隔离,模型不会直接访问系统,而是通过 MCP 代理。
- 提供 上下文管理,让模型能获取外部信息补充自己的知识。
👉 类比: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. 今天的学习目标 ✅
- 理解 MCP 和多智能体调度的关系。
- 完成环境搭建。
- 成功调用一次 LLM API。
Day2 学习笔记:MCP 入门
1. MCP 工具(Tool)的概念
- 定义:在 MCP 体系中,工具就是 LLM 可以调用的外部功能。
- 特点:
- 有清晰的接口(输入参数、返回结果)。
- 注册到 MCP 后,LLM 才能使用。
- 可以是本地函数 / 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. 今天的学习目标 ✅
- 理解 MCP 工具的概念和作用。
- 会写一个最小的 MCP 工具(
get_weather)。 - 能模拟 LLM 调用 MCP 工具并返回结果。
📘 Day3 学习笔记 — 基于大模型的 MCP 调度器
一、学习目标
- 理解大模型在多智能体调度系统中的作用;
- 掌握如何把 LLM 接入 MCP 框架,实现智能工具调用;
- 实践构建一个 LLM 驱动的 MCP 调度器 原型;
- 理解参数匹配、任务解析和多工具调用的逻辑。
二、理论总结
1️⃣ MCP 与调度器结合
- MCP 提供了一个安全、标准化的接口,用于 LLM 调用工具(如天气查询、计算、搜索)。
- 调度器的作用是判断任务类型、选择工具、传递参数,形成闭环:
用户任务 → LLM 调度器 → MCP 工具调用 → 结果返回 → LLM 决策下一步
2️⃣ 大模型调度原理
- 大模型(GPT)作为调度器,能够理解自然语言任务并推理出:
- 调用哪个工具;
- 工具参数如何构造;
- 是否需要多步调用多个工具。
- 相比硬编码规则,LLM 调度更灵活,可应对复杂和多步任务。
3️⃣ 常见问题与解决方法
- 参数名不匹配:模型输出参数名可能与函数定义不一致。
- 解决方案:
- 在 prompt 中明确每个工具的参数名;
- 在调用前做参数映射兼容。
- 解决方案:
- 多步任务:需要让 LLM 先规划,再依次调用工具(Chain-of-Thought)。
三、实验记录
1️⃣ MCP 工具列表
| 工具名 | 功能 | 参数 |
|---|---|---|
| get_weather | 查询指定城市天气 | city |
| calculate | 执行数学表达式 | expression |
| search_web | 简易网页搜索 | query |
2️⃣ LLM 调度器核心逻辑
- 用户输入任务 → 发送给 LLM;
- LLM 输出 JSON 格式,包含:
{"tool": "工具名", "args": {"参数名": "参数值"}}
- 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 工具调用稳定。