MCP(Model Context Protocol)从入门到工程实践:工具发现、选择与学习全解析

目录


一、MCP 基本概念

1.1 MCP 是什么

MCP(Model Context Protocol)是一种用于标准化大模型调用外部工具和管理上下文的协议

一句话理解:

MCP = 让大模型能够“规范地使用工具”的系统级协议

1.2 为什么需要 MCP

在没有 MCP 的情况下,Agent 存在以下问题:

  • 工具写死在 Prompt 中 ❌
  • 工具接入方式不统一 ❌
  • 无法动态扩展 ❌
  • 上下文混乱 ❌

MCP 解决的是:

1
LLM 如何优雅地使用外部能力

二、MCP 核心机制

2.1 工具注入与上下文构建

MCP 会在推理前将工具描述注入模型上下文:

1
2
3
Available Tools:
- search: 搜索信息
- calculator: 数学计算

👉 本质:

让模型“看到工具”,从而可以选择工具

但要注意:

❗ MCP 不只是“注入工具”,而是完整工具调用体系

2.2 动态发现能力

MCP 的关键能力是动态发现工具

1
Agent → MCP Server → 获取工具列表

而不是:

1
tools = [search, calculator]  ← 写死

👉 类比微服务:

概念 MCP
服务注册 Tool Registry
服务发现 list_tools
RPC 调用 tool call

三、MCP 架构设计

3.1 MCP Host 与 MCP Server

MCP Host

运行 Agent 的一方(调用方)

职责:

  • 管理推理流程
  • 发现工具
  • 构造上下文
  • 调用工具
  • 处理结果

👉 本质:调度中心 / 大脑

MCP Server

提供工具能力的一方(服务方)

职责:

  • 注册工具
  • 提供工具列表
  • 执行工具调用

👉 本质:能力提供者

3.2 工作流程

1
2
3
4
5
6
7
8
1. Host 启动
2. 获取工具列表
3. 注入上下文
4. LLM 决策调用工具
5. Host 调用 Server
6. Server 执行工具
7. 返回结果
8. 继续推理

👉 核心总结:

Host 负责“想”,Server 负责“做”

MCP 工作流程


四、工具过多问题与 Top-K 策略

4.1 为什么需要工具筛选

当工具数量达到:

1
100+ / 1000+

如果全部注入:

  • token 爆炸 📈
  • 选择错误率上升 ❌
  • 推理变慢 ❌

4.2 工具筛选方法

4.2.1 向量检索(主流)

1
query → embedding → 检索工具 → Top-K

4.2.2 LLM 打分

1
让模型判断最相关工具

4.2.3 规则/分类器

1
关键词匹配或分类模型

4.3 工业级实现方案

1
2
3
4
5
6
7
规则过滤

向量召回(Top 20)

LLM rerank(Top 5)

注入上下文

👉 本质:

Tool Selection = Tool RAG


五、Tool Learning:让 Agent 学会使用工具

5.1 Tool Learning 本质

Tool Learning 不是模型自动变强,而是:

1
让系统更好地选择和使用工具

5.2 主流实现方案

5.2.1 Prompt Learning

  • 写描述 + 示例

5.2.2 Tool RAG(核心)

  • 工具向量化
  • 按需检索

5.2.3 Usage Memory

  • 记录历史成功调用

5.2.4 Self-Reflection

  • 错误时自我修正

5.2.5 Fine-Tuning

  • 训练模型学习工具选择

5.3 工程闭环

1
工具调用 → 记录 → 检索 → 优化 → 再调用

👉 实现:

越用越聪明 📈


六、千级工具 Agent 系统设计

6.1 总体架构

1
2
3
4
5
6
7
8
9
10
11
用户请求

Tool Retriever

Tool Reranker

Top-K 工具

LLM Agent

Tool Executor

6.2 核心模块

6.2.1 Tool Registry

  • 存储工具信息
  • embedding
  • 分类

6.2.2 Tool Retriever

  • 向量检索(Top-N)

6.2.3 Tool Reranker

  • 精排(Top-K)

6.2.4 Tool Executor

  • 执行调用

6.3 关键优化点

6.3.1 分层检索

1
domain → tool → Top-K

6.3.2 缓存

1
相似 query → 复用结果

6.3.3 失败重试

  • retry
  • fallback
  • self-reflection

6.3.4 动态加载(MCP)

  • 工具可随时新增 / 删除

七、总结

本文核心可以归纳为三点:

  1. MCP 是工具调用的“协议层”
  • 不是简单 prompt 技术
  • 是系统架构升级
  1. 工具选择是核心问题
  • 必须做 Top-K 筛选
  • 本质是检索问题
  1. Tool Learning 是未来方向
  • 检索 + 记忆 + 反馈
  • 构建持续优化闭环

最终一句话总结

MCP 让 Agent 从“写死工具”进化为“动态使用工具”,本质上是将工具调用从 Prompt 工程提升为系统工程。