Alpaca MCP服务器容器

一个容器化的Alpaca MCP服务器,用于通过HTTP传输提供金融API服务,适用于需要统一认证的下游服务。

  • by klysdale
  • Dockerfile
  • 本地部署
  • 更新于
在 GitHub 查看 klysdale/alpaca-mcp-server

使用说明

Alpaca MCP服务器(Docker)

官员的集装箱化部署 alpaca-mcp-server 配置用于基于HTTP的MCP传输,并将凭据烘焙到映像中。此存储库的目标是 单个Alpaca帐户为下游服务(如聊天机器人API)供电的场景 要求呼叫者在每个请求上提供API密钥。

特性

  • 基于Python的MCP服务器 alpaca-mcp-server serve --transport http 默认情况下
  • Docker镜像在端口上暴露服务器 7800 (可配置)JSON-RPC在 /mcp
  • 通过以下方式进行构建时凭证注入 ARG -> ENV,具有运行时验证
  • 示例 docker-compose.yml 展示如何与聊天机器人服务一起运行
  • 简单的TCP健康检查,确认MCP侦听器已启动

仓库的规划

.
|-- Dockerfile
|-- docker-compose.yml
|-- entrypoint.sh
`-- scripts/
    `-- healthcheck.py

需求

  • Docker 24+
  • Docker Compose v2(可选,用于多服务设置)

构建时配置

生成参数 默认值 描述
ALPACA_API_KEY changeme (必须覆盖) 图像中烘焙的Alpaca API键
ALPACA_SECRET_KEY changeme (必须重写) Alpaca API机密(别名: ALPACA_API_SECRET)
ALPACA_API_BASE_URL https://paper-api.alpaca.markets 羊驼端点的基本URL
HOST 0.0.0.0 绑定MCP服务器的地址
PORT 7800 MCP传输的侦听器端口
MCP_TRANSPORT http MCP传输(stdio, http,或 sse)

重要提示: 如果出现以下情况,入口点将拒绝启动 ALPACA_API_KEY 或 ALPACA_SECRET_KEY 残余 changeme 或者是空的。

使用烘焙凭证构建

docker build \
  --build-arg ALPACA_API_KEY="your-key" \
  --build-arg ALPACA_SECRET_KEY="your-secret" \
  --build-arg ALPACA_API_BASE_URL="https://paper-api.alpaca.markets" \
  -t alpaca-mcp-server:local .

通过构建参数提供的凭据被复制到映像内的环境变量中。 因为值存在于最终映像中,所以避免将生成的映像推送到公共注册表。

运行容器

docker run --rm \
  -p 7800:7800 \
  alpaca-mcp-server:local

运行时的环境覆盖是可选的,但受支持。例如,要更改暴露的 未重建的端口:

docker run --rm \
  -e PORT=9000 \
  -p 9000:9000 \
  alpaca-mcp-server:local

要切换传输(例如,切换到服务器发送的事件),请设置 MCP_TRANSPORT:

docker run --rm \
  -e MCP_TRANSPORT=sse \
  -p 7800:7800 \
  alpaca-mcp-server:local

Docker编写示例

包括 docker-compose.yml 使用您的凭据构建映像,并将服务器作为 管理服务。

  1. 创建一个 .env 旁边的文件 docker-compose.yml:

    ALPACA_API_KEY=your-key
    ALPACA_SECRET_KEY=your-secret
    # Optional overrides
    # ALPACA_API_BASE_URL=https://api.alpaca.markets
    # PORT=7800
    # MCP_TRANSPORT=http
    
  2. 构建并启动MCP服务器:

    docker compose up --build
    

    服务器正在监听 http://localhost:${PORT:-7800}/mcp 用于从主机连接的客户端。

健康与诊断

  • 镜像定义了一个Docker HEALTHCHECK 这将打开到配置端口的TCP连接。

  • 查看容器日志以确认启动:

    docker logs <container-name>
    

    日志行示例: Starting Alpaca MCP server on 0.0.0.0:7800 (transport=http)

  • 要手动验证主机的连接,请执行以下操作:

    curl -X POST http://localhost:7800/mcp \
      -H "Content-Type: application/json" \
      -H "Accept: application/json, text/event-stream" \
      -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"1.0","capabilities":{}}}'
    
    
  • 当使用Postman或curl进行测试时,请将两者都包括在内 Accept: application/json 和 Accept: text/event-stream 以满足流式HTTP要求。如果没有这些标题 服务器返回 Not Acceptable.

    
    

安全说明

  • 保持存储库中没有真正的API凭据。通过CLI标志传递秘密, .env 文件已排除 来自版本控制或安全秘密管理器。
  • 将任何构建的图像视为敏感材料。任何拥有该图像的人都可以提取内置密钥。
  • 日志故意遗漏凭证材料;避免添加可能泄露机密的冗长/调试日志。

更新依赖关系

更新 alpaca-mcp-server 在图像内部,使用从PyPI中提取的最新标签进行重建:

docker build --pull --no-cache -t alpaca-mcp-server:local .

许可证

本项目按原样提供。有关与以下内容相关的使用限制,请参阅Alpaca的服务条款 您的API证书。