MCP-Compose について
MCP-Compose は、Model Context Protocol サーバーを Docker コンテナーとして構成・実行するツールです。単一の YAML ファイルで管理でき、STDIO ベースのサーバーを HTTP 経由で公開するプロキシを含みます。複数の MCP サーバーをまとめて運用する開発者を想定しています。
主な機能
- 01Docker Compose 形式の YAML 構成
- 02STDIO から HTTP へのプロトコル変換プロキシ
- 03Docker と Podman への対応
- 04ダッシュボードと OpenAPI 仕様の生成
活用シーン
- 011 つの構成ファイルで複数の MCP サーバーを起動
- 02STDIO ベースの MCP サーバーへの HTTP アクセス
- 03MCP サーバーのクライアント設定の生成
MCP 対応
MCP-Compose は STDIO、HTTP、SSE 形式の MCP サーバーをプロキシの背後で動かし、tools/list や tools/call などの JSON-RPC 呼び出しを HTTP 経由でクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Compose
Model Context Protocol サーバー向けの Docker Compose です。統一された設定、HTTP プロキシ、コンテナオーケストレーションを使用して、複数の MCP サーバーを実行できます。

特長
- Docker Compose スタイルの YAML 設定
- 自動プロトコル変換(STDIO → HTTP)に対応した HTTP プロキシ
- Docker と Podman をネイティブサポート
- セッション管理と接続プーリング
- ダッシュボードとモニタリングを内蔵
- OpenAPI 仕様の生成
インストール
git clone https://github.com/phildougherty/mcp-compose.git
cd mcp-compose
make build
# Add to PATH
sudo cp build/mcp-compose /usr/local/bin/
# OR
export PATH="$PWD/build:$PATH"
クイックスタート
対話型セットアップ
mcp-compose init
プロンプトに従って設定を作成します。
手動セットアップ
mcp-compose.yaml を作成します。
version: '1'
servers:
filesystem:
protocol: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-filesystem"
- "/tmp"
capabilities: [resources, tools]
サーバーを起動します。
mcp-compose up
HTTP プロキシを起動します。
mcp-compose proxy --port 9876
動作を確認します。
curl http://localhost:9876/api/servers
動作する設定例
基本:Filesystem + Memory
version: '1'
servers:
filesystem:
protocol: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-filesystem"
- "${HOME}"
capabilities: [resources, tools]
volumes:
- "${HOME}:${HOME}:ro"
memory:
protocol: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-memory"
capabilities: [resources, tools]
Web 検索を使用する場合
Brave Search を追加します(https://brave.com/search/api/ から API キーを取得する必要があります)。
brave-search:
protocol: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-brave-search"
capabilities: [tools]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"
export BRAVE_API_KEY="your-api-key"
mcp-compose up
その他の設定例については、examples/ を参照してください。
コマンド
サービス管理
mcp-compose up # Start all services
mcp-compose up filesystem # Start specific service
mcp-compose down # Stop all services
mcp-compose down filesystem # Stop specific service
mcp-compose restart # Restart all services
mcp-compose ps # List service status
mcp-compose logs filesystem # View logs
システムサービス
システムサービスは、プロキシ、ダッシュボード、タスクスケジューラー、メモリなどのインフラストラクチャコンポーネントです。
mcp-compose system up # Start system services
mcp-compose system down # Stop system services
mcp-compose system ps # List system services
mcp-compose system status # Health overview
mcp-compose system logs proxy # View system logs
プロキシ
mcp-compose proxy --port 9876 # Start proxy
mcp-compose proxy --api-key $(openssl rand -hex 32) # With authentication
ダッシュボード
mcp-compose dashboard # Start web dashboard
# Access at http://localhost:3111
設定
mcp-compose init # Interactive setup wizard
mcp-compose validate # Validate config file
mcp-compose create-config --type claude # Generate client config
設定リファレンス
基本構造
version: '1'
# Optional: proxy authentication
proxy_auth:
enabled: true
api_key: "${MCP_API_KEY}"
servers:
my-server:
protocol: string # stdio, http, sse
command: string # Executable (e.g., npx, python, node)
args: [string] # Command arguments
capabilities: [string] # tools, resources, prompts, sampling
env: # Environment variables
KEY: value
volumes: # Volume mounts
- "host:container:mode"
プロトコルの種類
STDIO(NPM パッケージで最も一般的):
servers:
my-server:
protocol: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
HTTP:
servers:
my-server:
protocol: http
http_port: 8080
SSE(Server-Sent Events):
servers:
my-server:
protocol: sse
http_port: 8080
sse_path: /events
ボリュームマウント
volumes:
- "/host/path:/container/path:ro" # Read-only
- "/host/path:/container/path:rw" # Read-write
- "${HOME}/code:/workspace:ro" # Environment variables
環境変数
設定ファイル内:
env:
API_KEY: "${MY_API_KEY}"
シェル内:
export MY_API_KEY="secret"
mcp-compose up
セキュリティ
設定ファイルにシークレットをコミットしないでください。環境変数を使用します。
# Generate secure keys
export MCP_API_KEY=$(openssl rand -hex 32)
export OAUTH_CLIENT_SECRET=$(openssl rand -hex 32)
設定ファイルでの参照:
proxy_auth:
api_key: "${MCP_API_KEY}"
クライアント連携
Claude Desktop
設定を生成します。
mcp-compose create-config --type claude --output ./claude-config
内容を Claude Desktop の設定にコピーします。
HTTP への直接接続
# List tools
curl -X POST http://localhost:9876/filesystem \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Call tool
curl -X POST http://localhost:9876/filesystem \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/call",
"params":{
"name":"read_file",
"arguments":{"path":"/tmp/test.txt"}
}
}'
トラブルシューティング
サービスの状態を確認する
mcp-compose ps
mcp-compose system status
ログを表示する
mcp-compose logs filesystem
mcp-compose system logs proxy
設定を検証する
mcp-compose validate
よくある問題
ポートがすでに使用されています:
lsof -i :9876
mcp-compose proxy --port 9877 # Use different port
コンテナが起動しません:
mcp-compose logs my-server # Check logs
docker ps -a # Check container status
認証エラー:
echo $MCP_API_KEY # Verify key is set
要件
- Docker 20.10+ または Podman 3.0+
- Linux、macOS、または WSL2 を搭載した Windows
- Go 1.19+(ソースからビルドする場合)
アーキテクチャ
┌──────────────────────────────┐
│ MCP-Compose Proxy │
│ (HTTP API + Authentication) │
└──────────────┬───────────────┘
│
┌──────┼──────┐
│ │ │
┌───▼──┐ ┌─▼──┐ ┌▼───┐
│ FS │ │ Mem│ │Search│
│STDIO │ │HTTP│ │ SSE │
└──────┘ └────┘ └──────┘
ライセンス
GNU Affero General Public License v3.0 — LICENSE を参照してください。
リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。