使用说明
MCP Zero:人工智能代理的主动工具发现
使用真实的MCP服务器独立演示语义工具发现的MCP Zero算法
作者 豪尔赫·科蒂略
团队: Spark结构平台
日期: 2025年12月
🎯 什么是MCP Zero?
简单来说:
MCP Zero是一个 算法 (不是工具),帮助人工智能代理从数千个选项中找到合适的工具,比如谷歌搜索人工智能工具。
类比
- 无MCP零点:为AI提供1000页的电话簿→ “找到正确的号码”
- 使用MCP Zero:AI描述了它需要什么→ 立即获取精确的工具
🤔 是什么与不是什么
✅ MCP零点为:
- 算法/概念 来自学术研究(如“二分查找”)
- 一种语义工具发现方法 使用嵌入
- 两阶段分层搜索 (服务器→ 工具)
- 可扩展到10000多种工具 没有性能问题
❌ MCP零点不是:
- ❌ PyPI中的可安装库(
pip install mcp-zero不存在) - ❌ 一个现成的VS Code扩展(尚未)
- ❌ 官方MCP SDK的一部分
- ❌ MCP协议的替代品——它增强了它
- ❌ 目前已集成到GitHub Copilot (截至2025年12月)
📁 存储库结构
核心实施
mcp_zero_core.py-核心算法(2级分层路由)mcp_client.py-MCP协议客户端和VS代码设置解析器mcp_server_connector.py-真正的MCP服务器连接(stdio/SSE)demo_mcp_zero.py-互动演示
文档
README.md-此文件
🚀 快速开始
1.安装依赖项
pip install -r requirements.txt
2.运行演示
# Run with real MCP servers (default - connects to your configured servers)
python demo_mcp_zero.py
# Or run with mock data (fast, no server connections)
python demo_mcp_zero.py --mock
演示将:
- 从VS代码配置加载MCP服务器
- 为所有工具描述创建嵌入
- 让您键入查询以查看语义匹配的实际情况
- 显示两级分层搜索(服务器→ 工具)
🤖 为什么选择“MCP Zero”?理解价值
名称解释
MCP零点 = 零上下文开销的模型上下文协议
“零”强调:
- ✅ 零上下文块:将零不必要的工具加载到LLM中
- ✅ 零样本发现:在没有LLM的情况下查找工具,查看所有内容
- ✅ 接近零延迟:亚秒级搜索与慢速LLM处理
💎 MCP Zero解决的问题
没有MCP零点(传统方法):
User: "analyze Spark job performance"
1. Load ALL MCP tools → 100,000+ tokens
2. Send massive context to GPT-4 → $3.00 per query
3. Takes 30+ seconds to process
4. May hit token limits (fails with 1000+ tools)
5. LLM gets confused by too many options
使用MCP Zero:
User: "analyze Spark job performance"
1. Semantic search → finds spark_runtime_investigator (0.6s)
2. Load only top 5 relevant tools → 500 tokens
3. Send tiny context to GPT-4 → $0.015 per query
4. Fast response (< 2 seconds total)
5. LLM focuses on perfect match
📊 实际影响
| 度量 | 传统 | MCP零 | 改进 |
|---|---|---|---|
| 令牌/查询 | 100,000+ | ~500 | 减少99.5% |
| 成本/查询 | $3.00 | $0.015 | 便宜200倍 |
| 延迟 | 30+秒 | <2秒 | 快15倍 |
| Max工具 | ~100 | 10,000+ | 100倍比例 |
🛠️ MCP Zero的工作原理
先决条件:关键概念
🔢 嵌入:“意义坐标”
嵌入将文本转换为捕捉语义含义的数字:
"Spark performance" → [0.72, -0.15, 0.89, ... 384 numbers]
"analyze jobs" → [0.68, -0.12, 0.91, ... 384 numbers]
"pizza delivery" → [-0.23, 0.67, -0.45, ... 384 numbers]
相似的含义=相似的数字。这使计算机能够对概念进行数学比较。
📐 余弦相似度:测量语义距离
衡量两个嵌入向量的“平行”程度:
Query: "analyze Spark job performance"
Tool 1: "Analyze Spark job metrics" → 0.872 (very similar!)
Tool 2: "Query database by email" → 0.215 (somewhat related)
Tool 3: "Send email notification" → 0.044 (not related)
- 得分接近 1.0 =非常相似
- 得分接近 0.0 =无关
- 得分接近 -1.0 =相反
💾 嵌入缓存:性能关键
钥匙:嵌入计算 一旦启动,不是按查询。
# At Startup (One-Time):
for tool in all_tools:
tool.embedding = model.encode(tool.description)
# Cache to disk
# At Query Time (Fast):
query_embedding = model.encode(user_query)
similarities = cosine_similarity(query_embedding, cached_tool_embeddings)
为什么这很重要:
- 工具描述不变→ 嵌入是静态的
- 仅在运行时计算查询嵌入
- 重复查询速度快得多
📝 工具描述质量:精度至关重要
MCP Zero的准确性取决于清晰的工具描述。
| ❌ 糟糕(模糊) | ✅ 良好(清晰) |
|---|---|
| “处理数据” | “使用T-SQL查询Azure SQL数据库” |
| “处理请求” | “调查Spark作业性能瓶颈” |
| “运行分析” | “执行Kusto KQL查询进行日志分析” |
影响:
Query: "analyze Spark performance"
Bad description: "analyzer" → 0.12 similarity (poor match)
Good description: "Spark job performance analyzer" → 0.85 (excellent!)
算法
第一阶段:服务器级别匹配
- 用户查询: “我需要分析Spark作业绩效”
- 转换为嵌入:将查询转换为384个数字
- 比较:计算所有服务器描述的余弦相似度
- 过滤器:返回前5个最相关的服务器
第二阶段:工具级别匹配
- 狭义搜索:只看排名前5的服务器中的工具(不是全部10000个!)
- 比较:计算顶级服务器中每个工具的相似性
- 提高分数:乘以服务器相关性:
final = similarity × (0.7 + 0.3 × server_score) - 返回最佳:得分最高的单个工具
结果
输入:“分析慢速Spark作业”
输出: spark_runtime_investigator (相似性:0.872)
代币:500(与传统的100000相比)
🎮 GitHub副本集成状态
⚠️ 重要提示:MCP Zero尚未出现在GitHub Copilot中
现状(2025年12月):
- ✅ GitHub Copilot通过以下方式支持MCP协议
@mcp命令 - ❌ 副驾驶不使用MCP Zero优化
- ❌ Copilot仍然加载所有工具(传统方法)
👀 演示问题:如何查看副驾驶加载所有工具
您可以直观地看到Copilot当前如何在没有MCP Zero优化的情况下加载所有工具:
步骤1:检查您的MCP服务器
@mcp list servers
这显示了您配置的所有MCP服务器(例如,scout docker、kusto MCP、describer等)
第二步:让副驾驶列出所有工具
@mcp list all available tools
Copilot将加载并显示来自所有服务器的所有工具。观察响应——对于多个服务器,这可能是上下文中的数百个工具。
步骤3:查看查询问题
@mcp I need to analyze Spark job performance issues from the last 7 days
发生了什么(没有MCP Zero):
- Copilot将来自所有服务器的所有工具加载到其上下文中
- 有5台服务器和大约80多种工具,这是8000多种代币
- LLM必须扫描所有内容以找到相关工具
- 反应较慢,成本较高,潜在混乱
视觉比较:
| 方法 | 加载内容 | 令牌 | 时间 |
|---|---|---|---|
| 当前副驾驶 | 来自5台服务器的全部81个工具 | ~8100 | 3-5秒 |
| 使用MCP Zero | 只有5个相关的Spark工具 | ~500 | <1秒 |
| 储蓄 | 工具减少94% | 减少94% | 速度提高3-5倍 |
试试这个演示流程:
- 跑
@mcp list all available tools→ 查看大量列表 - 跑
python demo_mcp_zero.py→ 输入相同的查询(默认使用真实服务器) - 比较:Copilot显示111个工具,MCP Zero仅显示前5个匹配项
这种视觉比较展示了为什么MCP Zero的语义过滤在规模上是有价值的。
此存储库演示了什么
这是一个 独立实现 展示了如果集成,MCP Zero可以做什么:
- ✅ 连接到您的真实MCP服务器
- ✅ 语义搜索从81多种工具中找到合适的工具
- ✅ 两级分层匹配(服务器→ 工具)
- ✅ 显示出94%的代币减少潜力
它不做什么:
- ❌ 不修改GitHub Copilot的行为
- ❌ 不将工具注入Copilot的上下文中
- ❌ 不会取代Copilot的原生MCP支持
📚 参考文献
研究
- 纸张: MCP Zero:主动工具发现
- 作者冯兴宇等。
- 研究代码: https://github.com/xfey/MCP-Zero
协议
- MCP规范: https://modelcontextprotocol.io/
📄 许可证
MIT许可证
🙏 致谢
- 冯兴宇等研究论文。
- Anthropic的MCP协议
- 这是一个独立的实现,演示了该算法
