MCP、Code 或 Commands?AI 工具集成的决策框架

发布: (2025年12月7日 GMT+8 13:16)
6 min read
原文: Dev.to

Source: Dev.to

决策框架

快速决策指南

情景推荐方法
重复任务(>20 次执行),大数据集,需要可预测的成本MCP Optimized
一次性探索,需求不断演进,原型开发Code‑Driven (Skills)
用户必须控制何时运行,需要确定性行为Slash Commands
具备安全要求的生产系统MCP Optimized(绝不使用 Skills)

决策流程图

Q1: 一次性任务 ( 100 行 AND 需要 20 AND 需求稳定?
    YES → MCP Optimized
    NO  → Code‑Driven (原型,然后迁移)

NEVER:
  - MCP Vanilla 用于生产(始终次优)
  - Skills 用于多用户或敏感系统

三种方法详解

MCP(模型上下文协议)

一种用于 AI 工具通信的结构化协议。模型使用 JSON 参数调用工具,服务器执行并返回结构化结果。

// MCP 工具调用 – 结构化、类型化、已验证
await call_tool('analyze_csv_file', {
  file_path: '/data/employees.csv',
  analysis_type: 'salary_by_department'
});

特性: 结构化 I/O、访问受控、由模型决定调用、可跨应用复用。
关键区别: vanilla MCP(直接传递数据)与 optimized MCP(传递文件引用)之间存在 5 倍的 token 差异。协议相同,经济性却大相径庭。

Code‑Driven(Skills 与代码生成)

模型编写并执行代码来完成任务。Claude Code 的 “skills” 功能让模型基于语义匹配调用能力。

# Claude 编写此代码,执行并迭代
import pandas as pd
df = pd.read_csv('/data/employees.csv')
result = df.groupby('department')['salary'].mean()
print(result)

特性: 最大灵活性、非结构化 I/O、运行间差异大、需要沙箱环境。

Slash Commands

纯字符串替换。你输入 /review @file.js,命令模板展开,结果注入到你的消息中。

Review the following file for security vulnerabilities,
performance issues, and code quality:

{file_content}

Focus on: authentication, input validation, error handling.

特性: 用户显式、确定性、单回合、零工具调用开销。

实测数据:数字说明

方法论

  • 工作负载: 加载 500 行 CSV,进行分组、汇总统计,并生成两张图表。
  • 模型: Claude Sonnet,默认设置。
  • 运行次数: 每种方法 3–4 次,记录请求/响应负载。
  • 成本计算: 基于当前 Claude Sonnet 定价。

Token 消耗

Token consumption per API request

方法平均 tokens/次相对基准原因
MCP Optimized60,420-55%文件路径参数;零数据重复
MCP Proxy(热缓存)81,415-39%共享上下文 + 热缓存
Code‑Skill(基准)133,006模型生成的 Python;无缓存
UTCP Code‑Mode204,011+53%额外的提示框架
MCP Vanilla309,053+133%每次调用中 JSON 序列化数据

大规模成本

方法单次执行月成本年成本
MCP Optimized$0.21$210$2,520
Code‑Skill$0.44$440$5,280
MCP Vanilla$0.99$990$11,880

结果: 对单一工作流而言,优化版与 vanilla MCP 每年相差 $9,360。

可扩展性

Cumulative token consumption

方法缩放系数10K 行预测
MCP Optimized1.5×~65K tokens
Code‑Skill1.1–1.6×~150–220K tokens
MCP Vanilla2.0–2.9×~500–800K tokens

MCP Optimized 展现 亚线性扩展,因为文件路径的 token 消耗与文件大小无关;而 MCP Vanilla 因 JSON 序列化大数据集而出现 超线性扩展

方差

方法变异系数一致性
MCP Optimized0.6%优秀
MCP Proxy(热缓存)0.5%优秀
Code‑Skill18.7%较差
MCP Vanilla21.2%较差

MCP Optimized 的运行结果紧密聚集(60,307 – 60,808 tokens)。Code‑Skill 在 108K 到 158K tokens 之间波动,导致容量规划困难。

延迟

Skills 和子代理使用工具调用,会增加一次额外的 LLM 调用:

用户消息 → 模型决定 → 工具调用 → 工具结果 → 最终响应

Slash commands 省去这一步;它们是简单的提示注入,直接得到响应。

关键经验

1. 架构胜于协议

同一协议下,MCP Optimized 与 MCP Vanilla 之间的 5 倍 token 差异完全来源于 架构:文件路径 vs. 数据数组。应优先考虑数据流设计,而非仅争论协议本身。

2. 文件路径模式

通过引用而非原始数据消除数据重复。

// 反模式:仅数据就要 10,000 tokens
await call_tool('analyze_data', {
  data: [/* 500 行序列化 */]
});

// 正确模式:同样操作约 50 tokens
await call_tool('analyze_csv_file', {
  file_path: '/data/employees.csv'
});

MCP 服务器在内部处理文件 I/O,数据永不进入模型的上下文窗口。

3. 用 Skills 原型,用 MCP 上线

Skills(代码生成)非常适合快速原型和发现所需工具。但它们执行任意代码,不适合对安全性和可预测性有要求的生产系统。

4. Slash Commands 被低估了

当需要确定性、用户可控的工作流时,Slash Commands 取胜。它们没有工具调用开销,不会出现模型意外,且无延迟惩罚。适用于用户明确触发的简单、可重复操作。

Back to Blog

相关文章

阅读更多 »

当现实瓦解时

2024年12月,Fei‑Fei Li 在满座的斯坦福礼堂里举起一张破旧的明信片——梵高的《星夜》,因年代久远而褪色并出现折痕。她把它……

你知道吗?(第3部分)

Google Cloud Shell 您可以将 Google Cloud Shell 用作编码环境!它提供了大量针对 JavaScript、.NET 等的工具。最棒的是,您可以安装……