Token导航 LogoToken导航

MCP Server · 运维云端

MCP Stress Tested

一个用于验证Model Context Protocol(MCP)性能的测试工具,包含9个Python实验和一个真实的MCP stdio服务器,用于测量工具模式膨胀、循环乘数效应等关键性能指标。

stdio官方级别未说明来源级核验工具 0
PythonClaude云端部署

快速开始

作者 / 组织
Techryptic
提供方
Techryptic

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Stress Tested 属于运维云端类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

运维云端

传输方式

stdio

认证方式

API Key

部署方式

公开资料未说明

安装与配置

安装命令

pip install -r requirements.txt

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

我对MCP的批评者进行了压力测试

每个人都在热议Anthropic的模型上下文协议(MCP)。但同样的批评不断涌现:象征性的膨胀、延迟、除了挥手回应什么都没有的冷启动。 所以我自己制作了一个马具来测量它,当然也是为了学习。

此回购包含 9个Python实验+一个真正的MCP stdio服务器 验证对MCP的每一个主要批评。

______________________________________________________________________

关键结果

测试索赔状态关键发现
01工具架构膨胀✅ 已验证100工具= +18468个代币 (486×架空)
02循环乘数✅ 已验证3-tool工作流程= 4个完整的LLM通行证,代币增长71%
03结果污染✅ 已验证全原木废料 71%代币 vs过滤
04大海捞针⚠️ 无定论的100项目量表100%准确(声称:10-50%失败)
05工具模糊✅ 已验证相似名称: 40%准确率 与100%具有不同名称的情况相比
06缓存无效⚠️ 无定论的3.3%延迟差异(需要Anthropic API进行验证)
07工具搜索延迟✅ 已验证添加额外的转弯,但保存 10k+代币 当许多工具
08注射攻击✅ 抵抗模型固定在提供的工具上,但存在攻击面
09输出架构模糊✅ 已验证缺少模式会使代码生成变得脆弱
主控程序冷启动开销✅ 测量平均约368毫秒 (生成时间:2毫秒,初始化时间:360毫秒)
主控程序工作流编排✅ 有效的服务器端链接: 字节数减少52%, 3→1 电话

什么是真实的:

  • 工具模式膨胀巨大(100个工具每回合18k+令牌)
  • 循环乘数复合成本(用户发送1条消息→ 模型处理4+个请求)
  • 结果污染严重(返回原始数据浪费70%以上的令牌)
  • 冷启动时间约为350-370ms(适用于长会话,不适用于无服务器)
  • 工具命名很重要(名称不明确会使准确率降至40%)

什么是可修复的:

  • 工具搜索(仅加载相关工具,节省10k+代币)
  • 服务器端编排(链式工具,将往返次数减少50%以上)
  • 输出模式(使编程使用可靠)
  • 智能过滤(从大型数据集中删除70%以上的令牌)

什么是基础:

  • 工具模式的代币税(如果工具在提示中,您需要支付)
  • 循环乘数(多步=多调用(上下文就是这样工作的))
  • 冷启动开销(生成+握手需要时间)
  • 长寿命与无服务器(MCP在IDE/聊天中大放异彩,在边缘功能方面很尴尬)

📋 我测试了什么

第一阶段:Python实验(9个测试)

每个实验都验证了来自 YouTube视频批评MCP:

  1. 工具架构选项卡 -使用0、10、50、100工具测量令牌开销
  2. 循环乘数效应 -在多步骤工作流程中跟踪每回合代币增长
  3. 结果污染 -比较完整结果与过滤结果令牌的使用情况
  4. 草垛针故障 -从大数据集中提取测试模型精度
  5. 工具选择错误 -使用不同或模糊的工具名称测量精度
  6. 缓存失效 -比较静态与动态工具定义的延迟
  7. 工具搜索延迟 -从工具搜索步骤测量开销
  8. 注入漏洞 -尝试对抗性工具的重新定义
  9. 输出模式歧义 -比较有/没有模式的代码生成

第2阶段:真正的MCP服务器(2个基准)

构建了一个Node.js MCP stdio服务器来测试协议级行为:

  1. 创业基准 -测量冷启动时间、状态持久性、无服务器友好性
  2. 工作流基准测试 -测试编程工具调用(服务器端编排)

______________________________________________________________________

🚀 快速入门指南

先决条件

  • Python 3.9+
  • Node.js 18+
  • OpenRouter API密钥(或修改为直接使用Anthropic/OpenAI)

设置

# 1. Clone the repo
git clone https://github.com/yourusername/MCP-Test.git
cd MCP-Test

# 2. Install Python dependencies
pip install -r requirements.txt

# 3. Install Node.js dependencies (for MCP server)
cd mcp && npm install && cd ..

# 4. Configure API key
echo "OPENROUTER_API_KEY=your_key_here" > .env

运行Python实验

# Run individual test
python run_test.py 01    # Tool schema bloat
python run_test.py 02    # Loop multiplier
python run_test.py 03    # Result pollution

# Run all 9 tests (uses API credits: ~$0.25-0.45)
python run_test.py all

运行MCP服务器基准测试

cd mcp

# Test 1: Cold start + statefulness
npm run bench:startup

# Test 2: Workflow orchestration
npm run bench:workflow

# Run all benchmarks
npm run bench:all

结果保存到: mcp/results/*.json 和 mcp/results/summary.csv

______________________________________________________________________

📁 项目结构

MCP-Test/
├── experiments/                    # Python test suite
│   ├── common/
│   │   ├── openrouter_provider.py  # API calls with usage tracking
│   │   ├── agent_loop.py           # Tool-calling loop with metrics
│   │   ├── stub_tools.py           # Safe local tool implementations
│   │   └── token_count.py          # Token estimation utilities
│   └── cases/
│       ├── test_01_tool_schema_bloat.py
│       ├── test_02_loop_multiplier.py
│       ├── test_03_result_pollution.py
│       ├── test_04_needle_haystack.py
│       ├── test_05_tool_selection.py
│       ├── test_06_cache_invalidation.py
│       ├── test_07_tool_search_latency.py
│       ├── test_08_injection_simulation.py
│       └── test_09_output_schema.py
├── mcp/                            # Real MCP server (Node.js)
│   ├── server.ts                   # MCP stdio server
│   ├── bench/
│   │   ├── startup.ts              # Cold start benchmark
│   │   └── workflow.ts             # Orchestration benchmark
│   └── results/                    # Benchmark output
├── run_test.py                     # Test runner
├── requirements.txt                # Python dependencies
└── README.md                       # This file

📖 结果和理解

示例输出(测试01:工具模式块)

================================================================================
TEST 01: Tool Schema Bloat
================================================================================

============================================================
Running: No tools
============================================================
Tool schema size: 0 tokens (no tools)

RESULTS:
  Turns: 1
  Total tokens: 38
  Prompt tokens: 33
  Completion tokens: 5

============================================================
Running: Large (100 tools)
============================================================
Tool schema size: 17,501 tokens (~98,060 chars)

RESULTS:
  Turns: 1
  Total tokens: 18,506
  Prompt tokens: 18,447
  Completion tokens: 59

================================================================================
SUMMARY: Tool Schema Bloat Impact
================================================================================

Configuration             Tools      Tool Tokens     Total Tokens    Overhead
--------------------------------------------------------------------------------
No tools                  0          0               38              -
Large (100 tools)         100        17,501          18,506          +18,468 (48600%)

VERDICT:
  ✓ Tool definitions add 18,468 tokens (487.0x more)
  ✓ This overhead is repeated on EVERY turn in the loop
  ✓ CLAIM VALIDATED: Large tool schemas bloat context massively

寻找什么

代币指标:

  • 工具架构大小:仅通过工具定义添加的令牌
  • 代币总数:完成请求成本(提示+完成)
  • 开销:与基线相比,额外的令牌(无工具)
  • 每轮增长:多步骤工作流中上下文如何增长

延迟度量:

  • 冷启动时间:生成+初始化MCP服务器的时间
  • 每转延迟:每个推理过程的API响应时间
  • 总延迟:端到端工作流时间

准确性指标:

  • 选择精度:选择正确的工具(%)
  • 提取精度:提取的正确数据(%)
  • 故障率:错误的结果或错误(%)

成本估算

使用 anthropic/claude-3.5-sonnet 通过OpenRouter:

  • 测试01-03:每个约0.10-0.20美元
  • 测试04-09:每个约0.05-0.15美元
  • 全部9项测试:总计约0.25-0.45美元

MCP基准是本地的(没有API成本)。

______________________________________________________________________

🔍 详细调查结果

1.工具模式块是真实的

索赔:“对话开始前,58个工具=55k个令牌”

测试:使用0、10、50、100个工具测量令牌开销。

结果: ✅ 已验证

  • 0个工具:38个令牌
  • 100个工具:18506个令牌(工具定义:17501)
  • 开销:+18468个代币(486倍以上)
  • 每次转弯都重复 在多步骤对话中

为什么这很重要:如果你按代币支付,加载100个不相关的工具每回合需要花费约18000个代币。

______________________________________________________________________

2.循环乘数是残酷的

索赔:每次工具调用时都显示“整个历史与模型一起重新运行”

测试:在3工具工作流程中跟踪每轮代币增长。

结果: ✅ 已验证

  • 4次完整的模型推理过程 (1次初始+3次工具返回)
  • 总共3503个代币 (3134次提示,369次完成)
  • 总延迟17.83秒
  • 提示词元 增长71% 从第一回合开始→ 转4圈(579→988)

为什么? 每个回合包括:

  • 原始系统提示
  • 原始用户消息
  • 所有工具定义(重复)
  • 以前的助手消息
  • 以前的工具调用结果

为什么这很重要:用户发送1条消息。模型处理4个请求。代币成本复合。

______________________________________________________________________

3.中间结果污染环境

索赔:“即使不需要,10MB日志文件也会进入上下文”

测试:比较完整日志与过滤日志令牌的使用情况。

结果: ✅ 已验证

  • 返回完整日志: 23582个字符 (约3930个代币)→ 总计8097个代币
  • 预过滤(13条错误行): 490个字符 → 总计2324个代币
  • 储蓄: 71%

为什么这很重要:返回原始数据集是浪费的。服务器端过滤(或“程序化工具调用”)大大降低了令牌成本。

______________________________________________________________________

4.干草堆中的针“10-50%失败”

索赔:“最佳情况下10%的查找失败,最差情况下50%的查找失败”

测试:10次试验,从100名总用户中提取5名管理员用户。

结果: ⚠️ 非决定性的

  • 模型准确率:10/10完美匹配(100%)
  • 代码准确性:100%(确定性)

警告:在这个规模(100个项目)下,模型一次也没有失败。“10-50%失败”索赔可能适用于 *大得多* 数据集(1000个项目),但我没有在这里重现。

为什么这很重要:基于代码的过滤始终是100%可靠的。模型提取通常很好,但不能保证。

______________________________________________________________________

5.工具模糊会破坏准确性

索赔:“相似的名称会导致失败”

测试:将准确度与不同与模糊的工具名称进行比较。

结果: ✅ 已验证

  • 不同的名称 (1个工具):100%正确选择(5/5次试验)
  • 相似名称 (5个工具: notify_user, notification_send_user, notification_send_users): 40%正确 (2/5次试验)

为什么这很重要:当工具名称重叠时,模型会出现问题。明确的命名或明确的示例至关重要。

______________________________________________________________________

6.缓存无效影响

索赔:“开始时的任何更改都会破坏缓存”

测试:将延迟与静态和动态工具定义进行比较。

结果: ⚠️ 非决定性的

  • 静态工具:平均延迟5.91秒
  • 动态工具 (每次请求更改):平均延迟6.11s
  • 差异: 3.3%

警告:OpenRouter不会像Anthropic的API那样公开缓存遥测。这个测试需要Anthropic的 cache_control 头球是决定性的。

为什么这很重要Anthropic的快速缓存可以将成本降低90%,但对静态前缀的任何更改都会使缓存无效。动态工具加载完全中断了缓存。

______________________________________________________________________

7.工具搜索增加了延迟

索赔:“刀具搜索会增加额外的转弯开销”

测试:在有和没有工具搜索步骤的情况下测量延迟。

结果: ✅ 已验证(有权衡)

  • 直接执行:20.32秒,3494个代币
  • 使用工具搜索:16.94秒,2517个代币
  • 额外延迟:-3.38秒(更快!)
  • 代币节省:-977个代币

权衡:工具搜索增加了一个额外的回合,但是 保存令牌 当你有很多工具的时候。值得拥有100多种工具。

为什么这很重要Anthropic的工具搜索功能有助于解决臃肿问题,但增加了复杂性。

______________________________________________________________________

8.注射漏洞

索赔:“历史上的工具定义可能被劫持”

测试:试图重新定义对抗性工具和注入虚假工具。

结果: ✅ 模型抵制 (但存在攻击面)

  • 工具重新定义尝试:失败
  • 假工具注射:失败

为什么这很重要:模型在此测试中受到抵制,但攻击面存在(特别是如果工具定义被加载到消息历史记录中而不是系统提示中)。防御:对输入进行消毒+保持工具对服务器的控制。

______________________________________________________________________

9.输出模式歧义

索赔:“无返回格式标准”

测试:比较了有/没有输出模式的代码生成。

结果: ✅ 已验证

  • 没有模式:模型必须猜测输出格式→ 脆性代码生成
  • 使用模式:模型知道确切的格式→ 可靠解析

为什么这很重要:MCP工具定义通常缺少输出模式。这使得“编程工具调用”(模型编写代码解析输出)变得脆弱。解决方案:将输出模式添加到工具定义中(但很少有人这样做,因为它是可选的)。

______________________________________________________________________

10.MCP冷启动顶置

测试:真正的Node.js MCP stdio服务器启动基准测试。

结果: ✅ 测量

  • 产卵时间:~2ms(快速)
  • 初始化/握手:约360毫秒(慢速)
  • 总计: 平均约368毫秒 (5次跑步)

为什么这很重要:冷启动并不可怕,但足以排除“MCP无处不在,就像无服务器一样”。对于长期会话来说很好,对于一次性调用来说很尴尬。

______________________________________________________________________

11.工作流编排工作

测试:比较传统(3个单独的工具调用)与工作流(1个编排的调用)。

结果: ✅ 有效的

  • 传统:3次调用,496字节,2.31ms
  • 工作流程:1个调用,239字节,1.26ms
  • 储蓄:字节数减少52%,往返次数减少2次

为什么这很重要:服务器端编排(在返回模型之前链接工具)是一种有效的缓解措施,可以减少往返和令牌浪费。

______________________________________________________________________

🗣️ 社区在说什么

除了技术测试,以下是开发人员对MCP的评价:

来源关键引文/见解背景链接
@vyrotek(2026年1月24日)“几年前感觉就像一个死规范。”在MCP上下文中指JSON-RPC,指出它似乎已经过时,但正在重新出现。查看帖子
@aparnadhinak(2026年1月24日)“同意,并不是说MCP已经死了。评论我们看到的势头转变。”观察到MCP的转变,这意味着它正在减弱。查看帖子
@elvissun(2026年1月24日)“这些技能中没有MCP。你无法获得搜索量或反向链接配置文件,因此它实际上是无用的。”批评缺乏MCP集成的技能,使其在没有真正的API功能的情况下变得无用。查看帖子
@trungking(2026年1月24日)“但随着时间的推移,现在只使用了一些MCP,其他一切都死了,几乎没有人谈论它。”关于MCP的炒作逐渐消退,大多数实现都没有被使用和遗忘。查看帖子
@AlexWalz\_(2026年1月24日)“我的主要问题是,随着渐进式披露原则的实施,MCP是否已经死亡?”认为MCP会导致重复调用和代币浪费,这表明API等替代方案更好。查看帖子
@anders36415(2026年1月24日)“RAG已经过时了,我假设MCP将是下一个。”预测MCP在RAG衰落后会过时。查看帖子
@\_overment(2026年1月24日)“为什么模型上下文协议不起作用”客座文章从开发人员和用户的角度分析了MCP的挫折感。查看帖子
@chaseadams(2025年11月5日)“这篇Anthropic帖子证实了我在MCP上看到的情况:提前加载所有定义会快速燃烧代币。它还埋下了MCP造成上下文腐烂的隐患。”强调代币燃烧和上下文退化是主要缺陷。查看帖子
@alxfazio(2025年12月17日)“mcps是混蛋。为什么即使你不使用它们,它们也会被加载到上下文中?技能已经解决了这个问题……”批评不必要的上下文加载;称赞技能优越。查看帖子
@thdxr(2025年11月9日)“大多数mcp服务器都是垃圾,经常崩溃……这真的感觉像是我讨厌的那种产品……”列出了实际的抱怨:不稳定、臃肿、没有实质内容的炒作。查看帖子
@lsof(2026年1月22日)“模型上下文协议(MCP)-直接连接到企业系统的人工智能模型会给安全工具带来盲点。规模风险:一个受损的MCP服务器=数据/令牌/API暴露。”强调MCP实现中的安全风险和盲点。查看帖子
@thedaldirector(2026年1月24日)“我认为MCP无论如何都必须被淘汰,因为它是一种无效的上下文引入方式,同时消耗了太多的代币。”由于效率低下和安全风险,呼吁逐步淘汰MCP。查看帖子
@raythurnvoid(2026年1月24日)“嘿,我试过剧作家测试,我完全失败了,你认为今天可行吗?顺便说一句,剧作家远比光标浏览器、困惑浏览器、浏览器库和剧作家MCP好”这意味着剧作家MCP比剧作家等替代品差。查看帖子

这些真实世界的观察结果与该测试套件中的许多技术发现一致。

______________________________________________________________________

如果您正在采用MCP,请使用以下清单:

  • \[ \] 使用工具搜索 如果你有10个以上的工具。每回合18k代币加起来很快。
  • \[ \] 清楚地命名工具。 避免 send_email_user, send_user_email, email_send_user模型精度储罐。
  • \[ \] 添加输出模式 工具定义。有助于代码生成+调试。
  • \[ \] 过滤服务器端的大型数据集 在回到上下文之前。不要转储23kb日志。
  • \[ \] 编排多步骤工作流 如果可能的话,在服务器上。减少往返次数。
  • \[ \] 预计约350ms冷启动 对于Node.js服务器。适合聊天,不适合边缘功能。
  • \[ \] 使用提示缓存 (Anthropic的cache_control)将成本削减90%,但保持工具定义不变。

令牌膨胀和循环乘数是真实的。他们也是 *可预测的* 并且在许多情况下是可修复的。

🙏 贡献

想添加更多测试吗?线束已准备就绪:

  1. 在中添加新的测试文件 experiments/cases/
  2. 使用 AgentLoop 以及存根工具 experiments/common/
  3. 更新 run_test.py 包括新的测试

如果您发现错误或有想法,请打开问题或PR!

______________________________________________________________________

📄 许可证

MIT许可证-自由使用。

______________________________________________________________________

🔗 学分

基于对a的分析 YouTube视频 讨论MCP故障模式和Anthropic提出的解决方案。

使用Python、Node.js、OpenRouter和健康的怀疑论构建。 🧪

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

性能测试Python本地部署MCP验证工具模式分析Python实验Node.js服务器

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Stress Tested

MCP World · 本页

0stdio有1 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Stress Tested 怎么安装?

公开资料给出的安装命令是 pip install -r requirements.txt,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Stress Tested 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

MCP Stress Tested 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Stress Tested 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

MCP Stress Tested 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP