关于 MCP Test Servers
MCP Test Servers 是一组用于测试 MCP 实现的测试服务集合,通过 npx 即可运行。它面向开发者和 MCP 客户端维护者,用于复现协议行为、Schema 问题与认证流程缺陷。
主要功能
- 01覆盖工具参数类型、资源与提示词的测试服务
- 02用于复现 OAuth 发现与会话管理问题的服务
- 03包含 everything 综合测试服务与测试计划
- 04支持 MCP Apps 与 elicitation 的示例
适用场景
- 01验证 MCP 客户端对工具 Schema 的兼容性
- 02复现 Cursor 相关的 OAuth 或整数校验问题
- 03按测试计划逐项检查 MCP 功能实现
MCP 相关
该项目本身是一组 MCP 服务,每个服务向 MCP 客户端暴露不同的工具、资源、提示词或故障场景用于测试。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 测试服务
一组实现了模型上下文协议(MCP)的测试服务。
🚀 快速安装库
访问我们的 GitHub Pages 展示库,即可获取可直接在 Cursor 中使用的一键安装按钮!
手动安装
npx -y @msfeldstein/mcp-test-servers <server>
开发
开发时请直接使用 cli.js
{
"mcpServers": {
"test-server": {
"command": "/Users/feldstein/Source/mcp-test-servers/src/cli.js",
"args": [
"ping"
],
"env": {}
}
}
}
可用服务
all-types:演示 MCP 支持的各种工具参数类型bad-param:参数名称故意设置错误的服务big-response:返回大型响应的服务broken-tool:工具故意损坏的服务broken-schema:顶层使用 oneOf/allOf/anyOf 的无效 JSON schema 服务broken-schema-fastmcp:顶层使用 oneOf/allOf/anyOf 的真实损坏 schema 的 FastMCP 服务crash-on-startup:启动时崩溃的服务combined:包含工具和资源的服务duplicate-names:资源名称重复的服务elicitation:演示 MCP 信息征询功能的服务——通过结构化表单请求用户信息(姓名、年龄、联系方式、偏好)enum-param:工具包含枚举字符串参数integer-anyof-bug:复现 Cursor 的 anyOf schema 整数验证错误——参数使用{"anyOf": [{"type": "integer"}, {"type": "null"}]}时,验证会报错 'got number'env-check:检查 SHOULD_RUN 环境变量是否正确传入env-echo:回显环境变量gpt5-breaker:使用复杂参数验证的 SQL 查询执行工具服务graphing:MCP Apps 服务,提供show-graphing-ui;UI 使用 Chart.js 渲染内嵌图表headers:安全返回 HTTP 标头信息的 FastMCP 服务instructions:包含 instructions 的服务,以及一个在值为 42 时返回成功的 makeRequest 工具image:工具返回一张索尼克的图片long-description:通过环境变量配置并公开超长描述long-running:20 秒任务中每隔 2 秒发送进度通知的服务many-resources:包含多个资源的服务many-tools:包含 100 个工具的服务,每个工具都返回 'ack'math:提供基本数学函数工具(add、subtract、multiply、divide、power、sqrt、factorial)的服务missing-type:工具参数 schema 缺少必需的 'type' 字段的服务missing-type-fastmcp:工具 schema 中确实缺少 'type' 字段的 FastMCP 服务named:可通过 MCP_SERVER_NAME 环境变量配置名称的服务notion-gemini-repro:包含复杂嵌套 schema、会导致某些模型出错的服务(Notion API 复现案例)——内联 schemanotion-gemini-repro-raw:包含复杂嵌套 schema、会导致某些模型出错的服务(Notion API 复现案例)——原始 schema 对象number-param:包含数字参数的工具oauth-repro:复现 OAuth 2.0 流程问题,提供正确的发现端点——在端口 3001 上运行资源服务,在端口 3002 上运行认证服务oauth-debug:提供全面日志记录和端点跟踪的 OAuth 调试服务——在端口 3003 上运行资源服务,在端口 3004 上运行认证服务oauth-callback-test:模拟 Cursor 1.4.x 端点发现错误的 OAuth 回调测试服务——在端口 3005 上运行oauth-edge-case:可配置边缘情况以触发发现错误的 OAuth 服务——资源服务运行于端口 3006,认证服务运行于端口 3007oauth-bug-trigger:专门用于复现 Cursor 1.4.x OAuth 发现错误的服务——资源服务运行于端口 3008,认证服务运行于端口 3009optional-param:工具包含可选参数pattern-param:工具包含使用模式匹配的参数ping:返回 'pong' 的简单服务prompts:包含两个提示词的服务——一个静态问候语,以及一个带有角色名称和地点参数的动态故事生成器raw-broken:具有真实损坏 schema 的原始 JSON-RPC MCP 服务(不进行框架验证)resource:资源服务实现resource-lister:发布 5 个资源并提供列出资源的工具的服务roots-echo:演示 MCP roots 功能,通过回显客户端提供的 roots 实现session-inactivity:可流式传输的 HTTP 服务,空闲 30 秒后使会话过期,以测试会话管理session-management:实现 MCP 会话管理行为的 HTTP 服务——分配会话 ID、要求请求中包含会话 ID,并对已终止的会话返回 404sse-timeout:建立 SSE 连接后 30 秒超时,以测试客户端重新连接的可流式传输 HTTP 服务stderr:向 stderr 写入日志的服务structured-output:使用简单回显工具演示 structuredContent 响应ui:MCP Apps 服务,提供show-ui;渲染出的 UI 按钮会调用get-time工具,并在页面内显示当前时间dual-content:演示同一响应中 structuredContent 与 content 的不同输出everything:全面测试所有 MCP 功能的服务——带/不带参数的工具、资源、提示词、信息征询、动态工具、roots 回显和环境变量
🚀 快速开始:自动化测试
如需立即进行全面测试,请使用内置的 AI Agent 测试提示词:
- 启动 everything 服务:
npx @msfeldstein/mcp-test-servers everything - 在 Cursor 中使用斜杠命令:
/test-everything - AI 将自动执行全部 20 个测试步骤,并提供完整的验证报告
Everything 服务测试计划
everything 服务旨在全面测试所有 MCP 功能。以下是各项功能的测试方法:
工具测试
0. 设置
{
"mcpServers": {
"everything": {
"command": "npx @msfeldstein/mcp-test-servers everything",
"env": {
"MY_ENV_VAR": "My Special Token"
}
}
}
}
1. 带参数的工具
工具: echo_with_params
测试: 使用各种参数组合调用:
- message: "Hello World", repeat_count: 3, uppercase: true
- message: "Test", repeat_count: 1, uppercase: false
- message: "MCP" (using defaults)
预期结果: 应按指定的重复次数和大小写转换方式回显消息。
2. 不带参数的工具
工具: simple_ping
测试: 不带任何参数调用
预期结果: 应返回 "pong"
3. 返回混合内容的工具
工具: get_mixed_resources
测试: 调用该工具
预期结果: 应在同一响应中同时返回文本内容和一张小型测试图片
4. 信息收集测试
工具: test_all_elicitations
测试: 调用该工具并回答所有提示:
- 字符串输入(姓名)
- 布尔值输入(编程偏好)
- 数字输入(工作年限,0-50)
- 枚举输入(选择编程语言) 预期结果: 应收集所有输入并显示摘要
5. 动态工具管理
工具: toggle_dynamic_tool
测试:
- 调用
toggle_dynamic_tool以启用动态工具 - 确认
dynamic_feature工具变为可用 - 使用可选的 action 参数调用
dynamic_feature - 再次调用
toggle_dynamic_tool以禁用该工具 - 确认
dynamic_feature工具不再可用 预期结果: 工具的可用状态应动态变化
6. MCP Roots 回显
工具: echo_mcp_roots
测试: 调用该工具
预期结果: 应返回客户端提供的 MCP roots 的 JSON 表示
7. 环境变量回显
工具: echo_env_var
测试: 提示词:"Call the echo_env_var MCP tool"
预期结果: 应返回 "MY_ENV_VAR = My Special Token"
8. 长时间运行进度工具
工具: long_running_progress
测试: 使用可选的 task_name 参数调用
预期结果: 应运行 20 秒,每 2 秒更新一次进度,并显示:
- 从 0 到 10 的进度(总步数)
- 每个步骤的描述性消息
- 最终完成消息
- 客户端应收到进度通知
资源测试
9. 文本资源
资源: everything://docs.txt
测试: 请求该资源
预期结果: 应返回关于该服务的完整文档
10. 图片资源
资源: everything://test-image.png
测试: 请求该资源
预期结果: 应返回一张 PNG 格式的小型测试图片
提示词测试
11. 不带参数的提示词
提示词: simple-greeting
测试: 输入 /sim 和 /simple-greeting 时应显示建议。提交该提示词。
预期结果: 应返回一条关于 Everything Server 的友好问候消息
12. 带参数的提示词
提示词: personalized-message
测试: 提交 /personalized-message:
- name:"Alice"
- topic:"AI Development" 预期结果: 应返回一条个性化消息,其中提及 Alice 和 AI Development
13. AI Agent 测试提示词
提示词: test-everything
测试: 在 Cursor 中使用此提示词和斜杠命令:/test-everything
预期结果: 应返回全面的分步测试说明,指导 AI Agent 系统地测试所有 MCP 功能
用法: 非常适合自动化测试——AI 将自动执行全部 20 个测试步骤,并提供完整的验证报告
完整测试序列
- 设置: 在环境中设置
MY_ENV_VAR="My Special Token" - 基础工具: 测试
simple_ping和 `echo_with_params`` - 混合内容: 测试
get_mixed_resources - 信息征询: 完整运行
test_all_elicitations - 动态工具: 开启/关闭动态工具并测试其可用性
- 系统信息: 测试
echo_mcp_roots和echo_env_var - 长时间运行: 测试
long_running_progress并接收进度通知 - 资源: 获取文本和图像资源
- 提示词: 测试带参数和不带参数的提示词
此全面测试可确保所有 MCP 协议功能正常运行。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。