MCP Server Template について
MCP サーバーを構築する開発者向けの TypeScript テンプレートです。サンプルツール、サービス構成、テスト用ユーティリティを備え、MCP ツールの実装やローカルデバッグの土台になります。
主な機能
- 01TypeScript 型と MCP SDK の統合
- 02コンテナベースの依存性注入
- 03DataProcessor を使うサービス構成
- 04サンプルツールとテスト
- 05TestClient と MCP Inspector のサポート
活用シーン
- 01TypeScript MCP サーバープロジェクトの開始
- 02独自ツールの追加と登録
- 03ツール呼び出しのローカルテスト
- 04MCP リクエストとレスポンスの確認
MCP 対応
MCP SDK を統合し、サンプルツールとハンドラーを備えています。MCP クライアント向けにツール一覧や入力処理、プロトコル形式のレスポンスを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーテンプレート
TypeScript で Model Context Protocol(MCP)サーバーを作成するためのテンプレートです。このテンプレートは、適切なツール、型安全性、ベストプラクティスを備えた、MCP 互換サーバーを構築するための確かな基盤を提供します。
特長
- 🚀 TypeScript を全面的にサポート
- 🏗️ コンテナーベースの依存性注入
- 📦 DataProcessor インターフェースを備えたサービスベースのアーキテクチャ
- 🛠️ テスト付きのツール実装例
- 🧪 Vitest テストフレームワーク
- 📝 型定義
- 🔌 MCP SDK との統合
はじめに
開発
-
依存関係をインストールします:
npm install -
ホットリロードで開発サーバーを起動します:
npm run dev -
プロジェクトをビルドします:
npm run build -
テストを実行します:
npm test -
本番サーバーを起動します:
npm start
プロジェクト構成
src/
├── index.ts # Entry point
├── interfaces/ # Interface definitions
│ └── tool.ts # DataProcessor interface
└── tools/ # Tool implementations
└── example.ts # Example tool
ツールの作成
-
src/tools/example.tsの例に従って、ツールとハンドラーをエクスポートします:// In your-tool.ts export const YOUR_TOOLS = [ { name: "your-tool-name", description: "Your tool description", parameters: { // Your tool parameters schema }, }, ]; export const YOUR_HANDLERS = { "your-tool-name": async (request) => { // Your tool handler implementation return { toolResult: { content: [{ type: "text", text: "Result" }], }, }; }, }; -
src/index.tsのALL_TOOLSおよびALL_HANDLERS定数にツールを登録します:// In src/index.ts import { YOUR_TOOLS, YOUR_HANDLERS } from "./tools/your-tool.js"; // Combine all tools const ALL_TOOLS = [...EXAMPLE_TOOLS, ...YOUR_TOOLS]; const ALL_HANDLERS = { ...EXAMPLE_HANDLERS, ...YOUR_HANDLERS };
サーバーは次の処理を自動的に行います:
- 利用可能なツールの一覧にツールを追加します
- 入力を検証します
- ツールへのリクエストを処理します
- MCP プロトコルに従ってレスポンスをフォーマットします
テスト
このテンプレートには、ローカルテスト用の TestClient と、視覚的なデバッグ用の MCP Inspector が組み込まれています。
TestClient の使用
TestClient を使うと、ツールを簡単にテストできます:
import { TestClient } from "./utils/TestClient";
describe("YourTool", () => {
const client = new TestClient();
it("should process data correctly", async () => {
await client.assertToolCall(
"your-tool-name",
{ input: "test" },
(result) => {
expect(result.toolResult.content).toBeDefined();
}
);
});
});
MCP Inspector の使用
このテンプレートには、ツールを視覚的にデバッグするための MCP Inspector が組み込まれています:
-
Inspector を起動します:
npx @modelcontextprotocol/inspector node dist/index.js -
http://localhost:5173 で Inspector の UI を開きます
Inspector では次のことができます:
- ツールをテストするための視覚的なインターフェース
- リクエストとレスポンスのリアルタイム監視
- ツールのメタデータの確認
- 対話型テスト環境
Cursor を使ったローカルテスト
Cursor で MCP サーバーをローカルにテストするには:
-
パッケージをビルドしてリンクします:
npm run build npm run link -
バイナリが動作することを確認します:
npx example-mcp-tool -
Cursor にサーバーを追加します:
- Cursor の設定を開きます
- Features タブに移動します
- MCP Servers セクションまでスクロールします
- 「Add Server」をクリックします
- 「Command」タイプを選択します
- 名前を付けます(例:「Local Example Tool」)
- コマンドを入力します:
npx example-mcp-tool - 「Confirm」をクリックします
-
MCP Servers セクションでサーバーが実行中と表示されていることを確認し、Cursor でサーバーが正しく起動したことを確認します。
注:コードを変更した場合は、忘れずに再ビルドして再リンクしてください:
npm run build
npm run link
テストが終わったら、パッケージのリンクを解除できます:
npm run unlink
これにより、開発中に作成されたグローバルシンボリックリンクが削除されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。