mcpField
M
MCP-Compose

MCP-Compose

ローカル
github.com/phildougherty開発ツール5855 週間前に更新

MCP-Compose について

MCP-Compose は、Model Context Protocol サーバーを Docker コンテナーとして構成・実行するツールです。単一の YAML ファイルで管理でき、STDIO ベースのサーバーを HTTP 経由で公開するプロキシを含みます。複数の MCP サーバーをまとめて運用する開発者を想定しています。

主な機能

  1. 01Docker Compose 形式の YAML 構成
  2. 02STDIO から HTTP へのプロトコル変換プロキシ
  3. 03Docker と Podman への対応
  4. 04ダッシュボードと OpenAPI 仕様の生成

活用シーン

  1. 011 つの構成ファイルで複数の MCP サーバーを起動
  2. 02STDIO ベースの MCP サーバーへの HTTP アクセス
  3. 03MCP サーバーのクライアント設定の生成

MCP 対応

MCP-Compose は STDIO、HTTP、SSE 形式の MCP サーバーをプロキシの背後で動かし、tools/list や tools/call などの JSON-RPC 呼び出しを HTTP 経由でクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"compose": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ps"
]
}
}
}
起動コマンドdocker run -i --rm ps

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocips

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP-Compose

codecov Go Report Card License: AGPL v3 Release

Model Context Protocol サーバー向けの Docker Compose です。統一された設定、HTTP プロキシ、コンテナオーケストレーションを使用して、複数の MCP サーバーを実行できます。

MCP-Compose Demo

特長

  • 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 を参照してください。

リンク

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。