Mcp Server E2e Testing Example

Mcp Server E2e Testing Example

🚀 MCP 服务器 E2E 测试示例

本项目是一个最小化的演示仓库,展示了使用 Vitest 对 TypeScript MCP(模型上下文协议)服务器进行端到端(E2E)测试的两种模式:

  • 原始方法:通过 tsx 孵化 CLI 并通过 stdio 进行通信(JSON-RPC)。
  • SDK 方法:使用官方 MCP SDK 的 ClientInMemoryTransport 进行内存中 RPC。

仓库地址:https://github.com/mkusaka/mcp-server-e2e-testing-example

🚀 快速开始

先决条件

  • Node.js ≥ 16
  • pnpm 全局安装
  • Git

安装

# 克隆仓库
git clone https://github.com/mkusaka/mcp-server-e2e-testing-example.git
cd mcp-server-e2e-testing-example

# 安装依赖项
pnpm install

📦 仓库布局

.
├── LICENSE
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
│   ├── cli.ts         # CLI 入口点(tsx + stdio 运输)
│   └── server.ts      # createServer() 工厂(资源、提示、工具)
├── tests
│   └── e2e
│       ├── raw.spec.ts  # spawn-based E2E 测试
│       └── sdk.spec.ts  # SDK/InMemoryTransport-based E2E 测试
└── tsconfig.json

🧪 运行 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 - 运行所有测试

📚 详细文档

此仓库旨在作为示例/模板。请随意:

  • src/server.ts 工厂适配为自己的 MCP 服务器
  • 扩展 raw.spec.tssdk.spec.ts 以包含更多测试用例
  • 集成到 CI 管道中

📄 许可证

以 MIT License 发布。

  • 0 关注
  • 0 收藏,31 浏览
  • system 提出于 2025-10-03 02:12

相似服务问题

相关AI产品