Alpaca MCP服务器与SSE代理

一个生产就绪的Alpaca MCP服务器部署方案,包含服务器发送事件(SSE)代理,优化了Railway和n8n集成。

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

使用说明

羊驼MCP服务器+SSE铁路代理

生产就绪部署 羊驼MCP服务器 使用服务器发送事件(SSE)代理,针对Railway和n8n集成进行了优化。

建筑

┌─────────────────────────────────────────────┐
│             Railway Container               │
│                                             │
│  ┌────────────────┐      ┌──────────────┐  │
│  │ alpaca-mcp     │      │  mcp-proxy   │  │
│  │ (HTTP backend) │◄─────┤  (SSE)       │  │
│  │ :8000          │      │  :$PORT      │  │
│  └────────────────┘      └──────────────┘  │
│                                  ▲          │
└──────────────────────────────────│──────────┘
                                   │
                         HTTPS (Railway Domain)
                                   │
                      ┌────────────┴─────────────┐
                      │                          │
                  ┌───▼────┐               ┌─────▼─────┐
                  │  n8n   │               │  Claude   │
                  │  MCP   │               │  Desktop  │
                  └────────┘               └───────────┘

特性

  • 具有自动流程管理的单容器部署
  • HTTP后端(羊驼mcp服务器)+SSE前端(mcp代理)
  • 默认纸盘交易模式(测试安全)
  • 带信号处理的优雅关机
  • 健康检查和自动重试
  • 铁路通过自动港口检测进行优化

快速开始

先决条件

地方发展

  1. 克隆和设置
git clone <your-repo-url>
cd alpaca-mcp-server
cp .env.example .env
  1. 配置凭据

编辑 .env 并添加您的羊驼证书:

ALPACA_API_KEY=your_key
ALPACA_SECRET_KEY=your_secret
ALPACA_PAPER_TRADE=true
  1. 构建并运行
# Build the Docker image
docker build -t alpaca-mcp-railway .

# Run the container
docker run --rm \
  --env-file .env \
  -p 8080:8080 \
  alpaca-mcp-railway
  1. 测试SSE端点
# Open SSE stream (should keep connection open)
curl -N http://localhost:8080/sse

# You should see SSE headers and connection established
# Press Ctrl+C to stop
  1. 通过简单请求进行测试
# Example: List available tools via SSE
curl -N http://localhost:8080/sse \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

铁路部署

方法一:GitHub集成(推荐)

  1. 推送到GitHub
git init
git add .
git commit -m "Initial commit: Alpaca MCP + SSE proxy"
git remote add origin <your-github-repo>
git push -u origin main
  1. 在铁路上部署
  • 首选 铁路
  • 点击“新建项目”→ “从GitHub仓库部署”
  • 选择您的存储库
  • Railway将自动检测Dockerfile
  1. 配置环境变量

在铁路仪表板中,转到“变量”并添加:

ALPACA_API_KEY=your_key
ALPACA_SECRET_KEY=your_secret
ALPACA_PAPER_TRADE=true
BACKEND_PORT=8000

注: 铁路自动提供 $PORT -不要手动设置!

  1. 部署

铁路将自动建造和部署。检查“部署”选项卡以了解进度。

  1. 获取您的URL
  • 转到“设置”→ “网络”→ “生成域”
  • 您的SSE端点将是: https://<your-app>.up.railway.app/sse

方法2:铁路CLI

# Install Railway CLI
npm install -g @railway/cli

# Login
railway login

# Create new project
railway init

# Add environment variables
railway variables set ALPACA_API_KEY=your_key
railway variables set ALPACA_SECRET_KEY=your_secret
railway variables set ALPACA_PAPER_TRADE=true
railway variables set BACKEND_PORT=8000

# Deploy
railway up

配置

环境变量

变量 必填 默认 描述
ALPACA_API_KEY 是 - 您的Alpaca API密钥
ALPACA_SECRET_KEY 是 - 您的羊驼密钥
ALPACA_PAPER_TRADE 没有 true 启用纸质交易(测试模式)
BACKEND_PORT 没有 8000 羊驼mcp服务器的内部端口
PORT 没有 8080 mcp代理的外部端口(Railway设置此端口)
TRADE_API_URL 否 - 覆盖交易API URL
DATA_API_URL 否 - 覆盖数据API URL

纸上交易vs现场交易

纸品交易(建议测试):

ALPACA_PAPER_TRADE=true

实时交易(真钱):

ALPACA_PAPER_TRADE=false

重要提示: 始终先用纸笔交易进行测试!

与n8n集成

  1. 在n8n中安装MCP客户端工具

将MCP客户端工具添加到n8n工作流中。

  1. 配置SSE连接
SSE Endpoint: https://<your-app>.up.railway.app/sse
Transport: sse
  1. 示例n8n工作流
{
  "nodes": [
    {
      "name": "MCP Client",
      "type": "mcp-client",
      "parameters": {
        "endpoint": "https://<your-app>.up.railway.app/sse",
        "method": "tools/list"
      }
    }
  ]
}
  1. 可用的MCP工具

Alpaca MCP服务器提供以下工具:

  • 市场数据查询
  • 账户信息
  • 订单下达和管理
  • 位置跟踪
  • 历史数据分析

看 羊驼MCP文件 查看完整的工具列表。

监控与调试

查看铁路日志

# Via Railway CLI
railway logs

# Or in Railway dashboard: "Deployments" → Select deployment → "View Logs"

常见日志消息

成功启动:

[INFO] Starting alpaca-mcp-server on http://0.0.0.0:8000
[INFO] Backend started with PID 42
[INFO] Waiting for backend to be ready...
[SUCCESS] Backend is ready!
[INFO] Starting mcp-proxy on 0.0.0.0:8080
[SUCCESS] mcp-proxy started with PID 43
================================================================
  Services are running!
  - Backend: http://127.0.0.1:8000
  - Frontend SSE: http://0.0.0.0:8080/sse
================================================================

健康检查

# Check if service is running
curl -I https://<your-app>.up.railway.app/sse

# Should return:
# HTTP/2 200
# content-type: text/event-stream

故障排除

问题:“后端启动失败”

  • 检查是否正确设置了ALACA_API_KEY和ALACA_SECRET_KEY
  • 在以下位置验证凭据https://alpaca.markets/
  • 检查铁路日志以获取详细的错误消息

问题:“后端未能准备就绪”

  • 后端启动时间可能超过60秒
  • 检查铁路资源限制(CPU/内存)
  • 在日志中查找Python错误

问题:n8n的“连接被拒绝”

  • 验证铁路域是否已生成且可访问
  • 检查是否正在使用铁路端口(非硬编码)
  • 首先使用curl测试SSE端点

问题:“凭据无效”

  • 确保您使用正确的密钥进行纸质/实时交易
  • 纸质钥匙以开头 PK,活动密钥以开头 AK
  • 验证ALPACA_PAPER_TRADE是否与您的密钥类型匹配

发展

项目结构

.
├── Dockerfile              # Multi-stage container build
├── package.json            # Node.js dependencies (mcp-proxy)
├── scripts/
│   └── start.sh           # Process manager script
├── .env.example           # Environment template
├── .gitignore            # Git ignore rules
└── README.md             # This file

没有Docker的本地开发

# Install Node dependencies
npm install

# Install alpaca-mcp-server
pipx install alpaca-mcp-server

# Set environment variables
export ALPACA_API_KEY=your_key
export ALPACA_SECRET_KEY=your_secret
export ALPACA_PAPER_TRADE=true
export BACKEND_PORT=8000
export PORT=8080

# Run start script
bash scripts/start.sh

运行测试

# Test backend directly
curl http://localhost:8000/

# Test SSE proxy
curl -N http://localhost:8080/sse

# Test MCP tools/list
curl -N http://localhost:8080/sse \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

安全考虑

  1. 从不提交凭据: 始终使用环境变量
  2. 使用纸张交易: 切换到直播前进行彻底测试
  3. 铁路秘密: 将敏感数据存储在Railway变量中,而不是代码中
  4. API密钥: 定期旋转按键,并在可能的情况下使用只读按键
  5. 网络访问: 如果公开,请考虑添加身份验证代理

资源

许可证

麻省理工学院

支持

  • API羊驼问题:https://alpaca.markets/support
  • 铁路问题:https://help.railway.app/
  • MCP协议:https://github.com/modelcontextprotocol

贡献

欢迎投稿!请打开问题或PR。


由以下材料制成❤️ 适用于n8n和MCP社区