MCP サーバーの作成
モデルコンテキストプロトコル(MCP)サーバーを動的に作成、実行、管理する動的MCPサーバー管理サービス。このサービス自体がMCPサーバーとして機能し、他のMCPサーバーを子プロセスとして起動・管理することで、柔軟なMCPエコシステムを実現します。
主な特徴
- MCP サーバーコードの動的な作成と実行
- TypeScript のみのサポート (JavaScript と Python のサポートは将来のリリースで予定されています)
- 子 MCP サーバーでのツール実行
- サーバーコードの更新と再起動
- 不要なサーバーの削除
インストール
注: このサービスを実行するには Docker が推奨されます
Docker のインストール (推奨)
# Build Docker image
docker build -t mcp-create .
# Run Docker container
docker run -it --rm mcp-create
手動インストール(TypeScriptのみ)
# Clone repository
git clone https://github.com/tesla0225/mcp-create.git
cd mcp-create
# Install dependencies
npm install
# Build
npm run build
# Run
npm start
Claude Desktopとの統合
Claude Desktop 構成ファイル ( claude_desktop_config.json
) に次のコードを追加します。
{
"mcpServers": {
"mcp-create": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp-create"]
}
}
}
利用可能なツール
ツール名 | 説明 | 入力パラメータ | 出力 |
---|
テンプレートからサーバーを作成する | テンプレートからMCPサーバーを作成する | 言語: 文字列 | { サーバー ID: 文字列、メッセージ: 文字列 } |
実行ツール | サーバー上でツールを実行する | サーバーID: stringtoolName: stringargs: オブジェクト | ツール実行結果 |
サーバーツールを取得する | サーバーツールのリストを取得する | サーバーID: 文字列 | { ツール: ツール定義[] } |
サーバーの削除 | サーバーを削除 | サーバーID: 文字列 | { 成功: ブール値、メッセージ: 文字列 } |
リストサーバー | 実行中のサーバーのリストを取得する | なし | { サーバー: 文字列[] } |
使用例
新しいサーバーの作成
{
"name": "create-server-from-template",
"arguments": {
"language": "typescript"
}
}
ツールの実行
{
"name": "execute-tool",
"arguments": {
"serverId": "ba7c9a4f-6ba8-4cad-8ec8-a41a08c19fac",
"toolName": "echo",
"args": {
"message": "Hello, dynamic MCP server!"
}
}
}
技術仕様
- Node.js 18以上
- TypeScript(必須)
- 依存関係:
- @modelcontextprotocol/sdk: MCP クライアント/サーバー実装
- child_process (Node.js 組み込み): 子プロセスの管理
- fs/promises(Node.js組み込み): ファイル操作
- uuid: 一意のサーバーIDの生成
セキュリティに関する考慮事項
- **コード実行の制限:**サービスが任意のコードを実行するため、サンドボックス化を検討してください
- **リソース制限:**メモリ、CPU 使用率、ファイル数などの制限を設定します。
- **プロセス監視:**ゾンビプロセスや暴走プロセスを監視し、強制終了する
- **パス検証:**ディレクトリトラバーサル攻撃を防ぐためにファイルパスを適切に検証します
ライセンス
マサチューセッツ工科大学