MCP Stateful Example について
MCP Stateful Exampleは、セッション単位のツール呼び出しを試すための最小構成のサーバーとクライアントです。テスト用ツールとセッション維持を検証する統合テストを備え、ステートフルなMCP動作の学習や確認に使えます。
主な機能
- 01最小構成のステートフルMCPサーバー
- 02セッション対応のツール呼び出し
- 03`imagine`と`isLessThan`のテストツール
- 04セッション維持を検証するPython統合テスト
- 05`/health`監視エンドポイント
活用シーン
- 01MCPセッションが状態を保持する仕組みを学ぶ
- 02セッション単位のツール呼び出しをテスト
- 03開発中にサーバーの稼働状態を確認
MCP 対応
`POST /mcp`エンドポイントを備えたMCPサーバーを実装し、テストクライアントも含みます。テスト用ツールはセッション状態を保持します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Stateful Example
Model Context Protocol (MCP) を使用した、セッションベースのツール呼び出しワークフローを調査・検証するための、最小限で完全に MCP に準拠したサーバーとクライアントの構成です。
特徴
- ステートフル MCP サーバーのサンプル:セッション処理を実装した最小限の MCP サーバーです
- テスト用ツール:セッション状態をテストするための
imagineツールとisLessThanツールが含まれています - 統合テスト:サーバーの動作とセッションの永続性を検証する Python ベースのテストです
- ヘルスチェック:サーバーの状態を監視するための
/healthエンドポイントが組み込まれています
前提条件
- Node.js 18+
- Python 3.8+(統合テスト用)
- npm または yarn
はじめに
- リポジトリをクローンします
- Node.js の依存関係をインストールします:
npm install - 統合テスト用の Python の依存関係をインストールします:
pip install -r test/integration/requirements.txt - プロジェクトのルートに、以下の内容で
.env.testファイルを作成します:PORT=3088 - 開発サーバーを起動します:
npm run dev
テストの実行
ユニットテスト
npm test
統合テスト
# Run all integration tests
npm run itest
# Or run a specific test
cd test/integration
python test_initialize.py
プロジェクト構成
src/- ソースコードserver/- MCP サーバーの実装tools/- ツールの定義
client/- テスト用クライアントの実装
test/- テストファイルintegration/- Python ベースの統合テスト
scripts/- ビルドおよびユーティリティ用スクリプト
利用可能なツール
imagine
指定された下限と上限の間からランダムな数値を選び、セッションに保存します。
パラメーター:
lower:下限(この値を含みます)upper:上限(この値を含みます)
isLessThan
現在のセッションで以前に生成した数値より、指定した数値が小さいかどうかを確認します。
パラメーター:
number:生成した数値と比較する数値
API エンドポイント
GET /health
サーバーの状態を返すヘルスチェックエンドポイントです。
POST /mcp
MCP に準拠したリクエストを処理するための、メインの MCP プロトコルエンドポイントです。
環境変数
PORT:サーバーがリッスンするポート番号(デフォルト:3000)NODE_ENV:環境モード(例:'development'、'production')
ライセンス
ISC
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。