MCP Server E2E Testing Example について
MCP サーバーを Vitest で E2E テストしたい開発者向けの TypeScript サンプルリポジトリです。stdio 経由の子プロセステストと、MCP SDK を使うインメモリテストを紹介します。
主な機能
- 01stdio の JSON-RPC テスト
- 02MCP SDK のインメモリテスト
- 03Vitest によるテストスイート
- 04再利用可能なサーバーファクトリー例
活用シーン
- 01CLI と stdio 経由でサーバーをテスト
- 02子プロセスを起動せずにロジックをテスト
MCP 対応
TypeScript MCP サーバーをテストする2つの方法を示します。stdio 経由の JSON-RPC と、MCP SDK の Client および InMemoryTransport によるインメモリ RPC を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーの E2E テスト例
Vitest を使って TypeScript 製の MCP(Model Context Protocol)サーバーのエンドツーエンド(E2E)テストを行う 2 つのパターンを紹介する、最小構成のサンプルリポジトリです。
- 生のアプローチ:
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– すべてのテストを実行
📦 公開と利用
このリポジトリはサンプル/テンプレートとして提供されています。以下のように自由に利用できます。
src/server.tsのファクトリーを独自の MCP サーバー向けに調整するraw.spec.tsとsdk.spec.tsにテストケースを追加する- CI パイプラインに統合する
📄 ライセンス
MIT License のもとで公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。