mcpField
M
mcp-therapy

mcp-therapy

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

mcp-therapy について

mcp-testing-kit は、MCP サーバーをテストする TypeScript ライブラリです。ダミーのトランスポートでサーバーインスタンスに直接接続し、HTTP/SSE に依存せず動作を検証できます。

主な機能

  1. 01Vitest、Jest などのテストフレームワークに対応
  2. 02MCP サーバーインスタンスへ直接接続
  3. 03ツール、リソース、プロンプトの呼び出し
  4. 04通知、エラー、進捗の監視
  5. 05生の JSON-RPC リクエスト送信

活用シーン

  1. 01サーバーに登録されたツールやリソースの確認
  2. 02ツール呼び出しとプロンプト結果の検証
  3. 03通知、エラー、進捗メッセージのテスト

MCP 対応

MCP サーバーのインスタンスに接続し、ツール、リソース、プロンプトを呼び出してテストできます。通知、エラー、進捗を受け取るコールバックも備えています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-testing-kit
Coverage Status NPM Version

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

コメント

MCP は初めてですか?

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

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