使用说明
羊驼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代理)
- 默认纸盘交易模式(测试安全)
- 带信号处理的优雅关机
- 健康检查和自动重试
- 铁路通过自动港口检测进行优化
快速开始
先决条件
- Docker(用于本地测试)
- 铁路账户(用于部署)
- API证书(把他们带到这儿来)
地方发展
- 克隆和设置
git clone <your-repo-url>
cd alpaca-mcp-server
cp .env.example .env
- 配置凭据
编辑 .env 并添加您的羊驼证书:
ALPACA_API_KEY=your_key
ALPACA_SECRET_KEY=your_secret
ALPACA_PAPER_TRADE=true
- 构建并运行
# 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
- 测试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
- 通过简单请求进行测试
# 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集成(推荐)
- 推送到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
- 在铁路上部署
- 首选 铁路
- 点击“新建项目”→ “从GitHub仓库部署”
- 选择您的存储库
- Railway将自动检测Dockerfile
- 配置环境变量
在铁路仪表板中,转到“变量”并添加:
ALPACA_API_KEY=your_key
ALPACA_SECRET_KEY=your_secret
ALPACA_PAPER_TRADE=true
BACKEND_PORT=8000
注: 铁路自动提供 $PORT -不要手动设置!
- 部署
铁路将自动建造和部署。检查“部署”选项卡以了解进度。
- 获取您的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集成
- 在n8n中安装MCP客户端工具
将MCP客户端工具添加到n8n工作流中。
- 配置SSE连接
SSE Endpoint: https://<your-app>.up.railway.app/sse
Transport: sse
- 示例n8n工作流
{
"nodes": [
{
"name": "MCP Client",
"type": "mcp-client",
"parameters": {
"endpoint": "https://<your-app>.up.railway.app/sse",
"method": "tools/list"
}
}
]
}
- 可用的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}'
安全考虑
- 从不提交凭据: 始终使用环境变量
- 使用纸张交易: 切换到直播前进行彻底测试
- 铁路秘密: 将敏感数据存储在Railway变量中,而不是代码中
- API密钥: 定期旋转按键,并在可能的情况下使用只读按键
- 网络访问: 如果公开,请考虑添加身份验证代理
资源
许可证
麻省理工学院
支持
- API羊驼问题:https://alpaca.markets/support
- 铁路问题:https://help.railway.app/
- MCP协议:https://github.com/modelcontextprotocol
贡献
欢迎投稿!请打开问题或PR。
由以下材料制成❤️ 适用于n8n和MCP社区