mcpField
M
MCP Server E2E Testing Example

MCP Server E2E Testing Example

ローカル
github.com/mkusaka開発ツール018 週間前に更新

MCP Server E2E Testing Example について

MCP サーバーを Vitest で E2E テストしたい開発者向けの TypeScript サンプルリポジトリです。stdio 経由の子プロセステストと、MCP SDK を使うインメモリテストを紹介します。

主な機能

  1. 01stdio の JSON-RPC テスト
  2. 02MCP SDK のインメモリテスト
  3. 03Vitest によるテストスイート
  4. 04再利用可能なサーバーファクトリー例

活用シーン

  1. 01CLI と stdio 経由でサーバーをテスト
  2. 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 のもとで公開されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。