关于 MCP Server E2E Testing Example
面向开发者的 TypeScript 示例仓库,演示如何用 Vitest 对 MCP 服务进行端到端测试,涵盖子进程 stdio 测试和 MCP SDK 内存测试。
主要功能
- 01原始 stdio JSON-RPC 测试
- 02MCP SDK 内存测试
- 03基于 Vitest 的测试套件
- 04可复用的服务工厂示例
适用场景
- 01通过 CLI 和 stdio 测试服务
- 02不启动子进程测试服务逻辑
MCP 相关
演示两种测试 TypeScript MCP 服务的方式:通过 stdio 发送 JSON-RPC,以及使用 MCP SDK 的 Client 和 InMemoryTransport 进行内存 RPC。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务 E2E 测试示例
这是一个最小示例仓库,展示了如何使用 Vitest 对 TypeScript MCP(Model Context Protocol)服务进行端到端(E2E)测试的两种模式:
- 原始方式:使用
tsx启动 CLI,并通过stdio(JSON-RPC)通信。 - SDK 方式:使用官方 MCP SDK 的
Client和InMemoryTransport进行内存 RPC。
仓库:https://github.com/mkusaka/mcp-server-e2e-testing-example
📁 仓库结构
.
├── LICENSE
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
│ ├── cli.ts # CLI entrypoint (tsx + stdio transport)
│ └── server.ts # createServer() factory (resources, prompts, tools)
├── tests
│ └── e2e
│ ├── raw.spec.ts # spawn‑based E2E tests
│ └── sdk.spec.ts # SDK/InMemoryTransport‑based E2E tests
└── tsconfig.json
🚀 开始使用
前置条件
- Node.js ≥ 16
- 全局安装 pnpm
- Git
安装
# Clone the repo
git clone https://github.com/mkusaka/mcp-server-e2e-testing-example.git
cd mcp-server-e2e-testing-example
# Install dependencies
pnpm install
🧪 运行 E2E 测试
1. 原始方式(spawn + stdio)测试
此测试套件通过 npx tsx 启动 CLI(src/cli.ts),并通过 stdin/stdout 发送 JSON-RPC。
pnpm vitest run tests/e2e/raw.spec.ts
2. SDK(内存)测试
此测试套件使用 MCP SDK 的 Client + InMemoryTransport,无需启动子进程即可调用相同的服务逻辑。
pnpm vitest run tests/e2e/sdk.spec.ts
🛠️ 脚本
如有需要,可将以下内容添加到 package.json:
{
"scripts": {
"test:raw": "vitest run tests/e2e/raw.spec.ts",
"test:sdk": "vitest run tests/e2e/sdk.spec.ts",
"test": "vitest run"
}
}
pnpm run test:raw– 仅运行原始方式/stdio 测试pnpm run test:sdk– 仅运行内存 SDK 测试pnpm run test– 运行所有测试
📦 发布与使用
此仓库旨在作为示例/模板。你可以:
- 根据自己的 MCP 服务调整
src/server.ts工厂函数 - 在
raw.spec.ts和sdk.spec.ts中添加更多测试用例 - 集成到 CI 流水线中
📄 许可证
基于 MIT License 发布。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。