MCP Server Template ( について
MCP Server Template(`create-mcp-server`)は、MCPサーバーを開発する人向けにTypeScriptプロジェクトのひな形を作成します。プロジェクトのファイルとメタデータを初期化し、ツール、サービス、設定、型を整理した構成を用意します。
主な機能
- 01npxによるプロジェクト作成
- 02プロジェクト情報の対話入力
- 03テンプレートファイルと設定のコピー
- 04プロジェクトメタデータの更新
- 05ツールとサービスの構成整理
活用シーン
- 01新しいMCPサーバープロジェクトの開始
- 02ツールとサービスのモジュール設定
- 03開発中のサーバーのビルドと実行
MCP 対応
ツール定義と登録を含む、MCPサーバー構築用のひな形を提供します。生成されたプロジェクトには開発用コマンドと、本番向けのビルド・起動コマンドがあります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーテンプレート(create-mcp-server)
このテンプレートを使うと、推奨されるプラクティスに基づいて、新しい Model Context Protocol(MCP)サーバープロジェクトをすばやく作成できます。
使用方法(新しいサーバーの作成)
my-new-mcp-server という名前の新しい MCP サーバープロジェクトを作成するには、npx を使って次のコマンドを実行します。
npx create-mcp-server my-new-mcp-server
(注:このパッケージを npm に公開していない場合は、まずこのテンプレートディレクトリで npm link を実行してから、create-mcp-server my-new-mcp-server を使う必要がある場合があります。)
これにより、次の処理が行われます。
my-new-mcp-serverという名前の新しいディレクトリを作成します。- プロジェクトの詳細(名前、説明)を入力するよう求められます。
- テンプレートファイル(
src、docs、設定ファイルなど)を新しいディレクトリにコピーします。 - プロジェクトの詳細に合わせて
package.jsonを更新します。
初期化後は、ターミナルに表示される手順に従ってください。
cd my-new-mcp-server
npm install
# Review configuration in src/config/ConfigurationManager.ts
# Add your tools in src/tools/
# Add your services in src/services/
npm run dev # Start the development server
このテンプレートの開発(上級者向け)
このセクションでは、mcp-server-template 自体 の構造と開発プロセスについて説明します。このテンプレートを使って独自のサーバーを作成するだけの場合、通常はこのセクションを読む必要はありません。
プロジェクト構成
- /src:すべてのソースコードが含まれます。
- /config:設定管理(ConfigurationManager)。
- /services:中核となるビジネスロジックのクラス。
- /tools:MCP ツールの定義とアダプター(*Tool.ts、*Params.ts)。
- /types:TypeScript のインターフェースと Zod スキーマ。
- /utils:共有ユーティリティ関数(ログ記録、エラー処理など)。
- initialize.ts:サーバーインスタンスの作成とツールの登録。
- server.ts:アプリケーションのメインエントリーポイント。
- /dist:コンパイル済み JavaScript の出力先(pm run build によって生成)。
- package.json:プロジェクトのメタデータと依存関係。
- sconfig.json:TypeScript コンパイラーのオプション。
- .eslintrc.json:ESLint の設定。
- .prettierrc.json:Prettier の設定。
- .gitignore:Git の除外ルール。
はじめに
- 依存関係をインストールする:
ash npm install - Husky を設定する(必要な場合、初回のみ):
ash npx husky install - 開発モードで実行する:(自動再読み込みに s-node と
odemon を使用します)
ash npm run dev - 本番用にビルドする:
ash npm run build - 本番ビルドを実行する:
ash npm start
新しいツール(yourTool)の追加
- 型を定義する: インターフェース(例:YourServiceConfig、YourServiceData)を含む
src/types/yourServiceTypes.tsを作成します。src/types/index.tsからエクスポートします。 - サービスを実装する: 中核となるロジッククラスを含む
src/services/YourService.tsを作成します。src/services/index.tsからエクスポートします。 - ツールのパラメーターを定義する:
TOOL_NAME、TOOL_DESCRIPTION、TOOL_PARAMS(詳細な.describe()呼び出しを使った Zod スキーマ)を含むsrc/tools/yourToolParams.tsを作成します。 - ツールの登録処理を実装する:
src/tools/yourTool.tsを作成します。サービスとパラメーターをインポートします。サービスをインスタンス化し、入力を検証してサービスを呼び出し、出力を整形し、エラーを処理(McpError にマッピング)する非同期ハンドラーを指定してserver.tool()を呼び出す関数を作成します。 - ツールを登録する:
src/tools/index.tsから登録関数をインポートし、 egisterTools 関数内で呼び出します。 - 設定を追加する: 必要に応じて
src/config/ConfigurationManager.tsを更新し、新しいサービスの設定型、デフォルト値、ゲッター、更新関数を追加します。 - ユーティリティを追加する: 必要に応じて
src/utils/にヘルパー関数を追加し、エクスポートします。 - テストを作成する:
src/services/にサービスロジックの単体テストを追加し、必要に応じてsrc/tools/にツールアダプターの統合テストを追加します。
リントとフォーマット
- リント: pm run lint
- フォーマット: pm run format
コミット時に、Husky と lint-staged によってコードのリントとフォーマットが自動的に実行されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。