返回市场
麦克拼配

麦克拼配

作者:phildougherty49 星标更新:2025-10-10

项目介绍

MCP-Compose

codecov Go Report Card License: AGPL v3 Release

用于Model Context Protocol服务器的Docker Compose。运行多个MCP服务器,具有统一配置、HTTP代理和容器编排功能。

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

# 添加到PATH
sudo cp build/mcp-compose /usr/local/bin/
# 或者
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

工作示例

基本 - 文件系统 + 内存

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]

包含网络搜索

添加Brave搜索(需要从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                 # 启动所有服务
mcp-compose up filesystem      # 启动特定服务
mcp-compose down               # 停止所有服务
mcp-compose down filesystem    # 停止特定服务
mcp-compose restart            # 重启所有服务
mcp-compose ps                 # 列出服务状态
mcp-compose logs filesystem    # 查看日志

系统服务

系统服务是基础设施组件(代理、仪表板、任务调度器、内存)。

mcp-compose system up          # 启动系统服务
mcp-compose system down        # 停止系统服务
mcp-compose system ps          # 列出系统服务
mcp-compose system status      # 健康概览
mcp-compose system logs proxy  # 查看系统日志

代理

mcp-compose proxy --port 9876              # 启动代理
mcp-compose proxy --api-key $(openssl rand -hex 32)  # 带身份验证

仪表板

mcp-compose dashboard          # 启动Web仪表板
# 访问http://localhost:3111

配置

mcp-compose init               # 交互式设置向导
mcp-compose validate           # 验证配置文件
mcp-compose create-config --type claude  # 生成客户端配置

配置参考

基本结构

version: '1'

# 可选:代理认证
proxy_auth:
  enabled: true
  api_key: "${MCP_API_KEY}"

servers:
  my-server:
    protocol: string           # stdio, http, sse
    command: string            # 可执行文件(例如npx, python, node)
    args: [string]             # 命令参数
    capabilities: [string]     # tools, resources, prompts, sampling
    env:                       # 环境变量
      KEY: value
    volumes:                   # 卷挂载
      - "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(服务器发送事件):

servers:
  my-server:
    protocol: sse
    http_port: 8080
    sse_path: /events

卷挂载

volumes:
  - "/host/path:/container/path:ro"   # 只读
  - "/host/path:/container/path:rw"   # 读写
  - "${HOME}/code:/workspace:ro"      # 环境变量

环境变量

在您的配置中:

env:
  API_KEY: "${MY_API_KEY}"

在您的shell中:

export MY_API_KEY="secret"
mcp-compose up

安全性

切勿将秘密提交到您的配置文件中。使用环境变量:

# 生成安全密钥
export MCP_API_KEY=$(openssl rand -hex 32)
export OAUTH_CLIENT_SECRET=$(openssl rand -hex 32)

在配置中引用:

proxy_auth:
  api_key: "${MCP_API_KEY}"

客户端集成

Claude桌面

生成配置:

mcp-compose create-config --type claude --output ./claude-config

将内容复制到Claude桌面设置中。

直接HTTP

# 列出工具
curl -X POST http://localhost:9876/filesystem \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# 调用工具
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  # 使用不同端口

容器无法启动:

mcp-compose logs my-server     # 检查日志
docker ps -a                   # 检查容器状态

身份验证错误:

echo $MCP_API_KEY              # 验证密钥是否已设置

要求

  • Docker 20.10+或Podman 3.0+
  • Linux、macOS或带有WSL2的Windows
  • Go 1.19+(用于从源代码构建)

架构

┌──────────────────────────────┐
│     MCP-Compose 代理        │
│  (HTTP API + 身份验证)      │
└──────────────┬───────────────┘
               │
        ┌──────┼──────┐
        │      │      │
    ┌───▼──┐ ┌─▼──┐ ┌▼───┐
    │ FS   │ │ Mem│ │搜索│
    │STDIO │ │HTTP│ │ SSE │
    └──────┘ └────┘ └──────┘

许可证

GNU Affero通用公共许可证v3.0 - 详见LICENSE

链接