mcp-therapy について
mcp-testing-kit は、MCP サーバーをテストする TypeScript ライブラリです。ダミーのトランスポートでサーバーインスタンスに直接接続し、HTTP/SSE に依存せず動作を検証できます。
主な機能
- 01Vitest、Jest などのテストフレームワークに対応
- 02MCP サーバーインスタンスへ直接接続
- 03ツール、リソース、プロンプトの呼び出し
- 04通知、エラー、進捗の監視
- 05生の JSON-RPC リクエスト送信
活用シーン
- 01サーバーに登録されたツールやリソースの確認
- 02ツール呼び出しとプロンプト結果の検証
- 03通知、エラー、進捗メッセージのテスト
MCP 対応
MCP サーバーのインスタンスに接続し、ツール、リソース、プロンプトを呼び出してテストできます。通知、エラー、進捗を受け取るコールバックも備えています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-testing-kit

MCP サーバーをテストするために必要なテストライブラリです。
概要
mcp-testing-kit は、Model Context Protocol (MCP) サーバーをテストするためのユーティリティを提供します。MCP サーバーのインスタンスに接続し、リクエストを送信し、通知を受信して、テスト内でサーバーの動作を検証できます。
特長
- あらゆるテストフレームワーク(vitest、jest など)で動作します
- 軽量で、MCP サーバーのテストに必要十分なユーティリティを提供します。
- TypeScript
インストール
$ npm i -D mcp-testing-kit
使用例
example/basic/src/index.ts で MCP サーバーを次のように定義しているとします。
// mcp-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const server = new McpServer({ name: 'simple-mcp-server', version: '1.0.0' });
server.tool(
'add',
'Add two numbers MCP style',
{
a: z.number().describe('first number'),
b: z.number().describe('second number')
},
async ({ name }) => ({
messages: [
{ role: 'user', content: { type: 'text', text: String(a + b) } }
]
})
);
export default server;
mcp-testing-kit を使用して、次のようにテストを記述できます。
// mcp-server.test.js
import server from "../src/index.js";
// Use your favorite testing framework.
import { describe, it, expect, afterEach } from "vitest";
import { connect, close } from "../../../index.js";
describe("Basic MCP server", () => {
afterEach(async () => {
await close(server);
});
it("Should return correct sum when `sum` is called", async () => {
// Connect to the server and create a mock client.
const client = await connect(server);
const result = await client.callTool("greeting-template", { a: 10, b: 2 });
expect(result.content[0].text).toEqual("12");
});
});
仕組み
- HTTP/SSE に依存せず、MCP サーバーに直接接続するためのダミーのトランスポート層を作成します。
- サーバー上でツール/リソース/プロンプトを直接呼び出すための抽象化を提供します。
API
connect(server: Server)
MCP サーバーのインスタンスに接続し、次のメソッドを備えたクライアントを返します。
| メソッド | シグネチャ | 説明 |
|---|---|---|
listTools | (): Promise<ListToolsResult> | サーバーに登録されているすべてのツールを一覧表示します。 |
callTool | (tool: string, params?: any): Promise<any> | オプションのパラメーターを指定して、名前でツールを呼び出します。 |
listResources | (): Promise<ListResourcesResult> | サーバーに登録されているすべてのリソースを一覧表示します。 |
listPrompts | (): Promise<ListPromptsResult> | サーバーに登録されているすべてのプロンプトを一覧表示します。 |
getPrompt | (prompt: string, params?: any): Promise<any> | オプションのパラメーターを指定して、名前でプロンプトを取得します。 |
onNotification | (cb: (message: JSONRPCMessage) => void): void | サーバーからの通知を受け取るコールバックを登録します。 |
onError | (cb: (message: JSONRPCMessage) => void): void | サーバーからのエラーメッセージを受け取るコールバックを登録します。 |
onProgress | (cb: (message: JSONRPCMessage) => void): void | 進捗通知を受け取るコールバックを登録します。 |
sendToServer | (message: Request): Promise<any> | 生の JSON-RPC リクエストをサーバーに送信します。 |
close(server: Server)
MCP サーバーのインスタンスを閉じます。
その他の使用例
機能を備えた MCP サーバーと対応するテストの全例については、example/basic を参照してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。