Robinhood加密API服务器

提供Robinhood加密API的全面接口,包括身份验证、账户管理、市场数据获取和交易操作。

  • by rohitsingh-iitd
  • Python
  • 本地部署
  • 30 星标
  • 更新于
在 GitHub 查看 rohitsingh-iitd/robinhood-mcp-server

使用说明

Robinhood MCP服务器-用户指南

概述

Robinhood MCP服务器为Robinhood Crypto API提供了全面的接口。该服务器通过REST API和WebSocket接口处理身份验证、帐户管理、市场数据检索和交易操作。

目录

特性

  • 用于账户管理和交易操作的REST API
  • WebSocket支持实时市场数据和订单更新
  • 全面的错误处理和记录
  • 速率限制和安全最佳实践
  • 通过环境变量轻松配置

先决条件

  • Python 3.8或更高版本
  • pip(Python包管理器)
  • Robinhood API证书

安装

  1. 克隆存储库:

    git clone https://github.com/rohitsingh-iitd/robinhood-mcp-server
    cd robinhood-mcp-server
    
  2. 设置虚拟环境 (推荐):

    # Create a virtual environment
    python -m venv venv
    
    # Activate the virtual environment
    # On macOS/Linux:
    source venv/bin/activate
    # On Windows:
    # .\venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    

配置

  1. 创建一个 .env 文件 在项目根目录中包含以下内容:

    # Required
    ROBINHOOD_API_KEY=your_api_key_here
    ROBINHOOD_PRIVATE_KEY=your_base64_encoded_private_key_here
    
    # Optional (with defaults)
    HOST=0.0.0.0
    PORT=8000
    WEBSOCKET_PORT=8001
    DEBUG=False
    LOG_LEVEL=INFO
    LOG_FILE=robinhood_mcp_server.log
    RATE_LIMIT_ENABLED=True
    RATE_LIMIT_REQUESTS=100
    RATE_LIMIT_PERIOD=60
    
  2. 替换占位符值 使用您的实际Robinhood API证书。

运行服务器

使用以下命令启动服务器:

python -m src.main

这将开始:

  • 位于的REST API服务器 http://localhost:8000
  • WebSocket服务器位于 ws://localhost:8001

在生产中运行

对于生产用途,考虑使用生产级ASGI服务器,如Uvicorn和Gunicorn:

pip install gunicorn uvicorn[standard]
gunicorn src.main:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

运行服务器

使用以下命令启动服务器:

python -m src.main

这将启动REST API服务器(默认端口8000)和WebSocket服务器(默认端8001)。

REST API端点

认证

  • GET /auth/status -检查身份验证状态

账户

  • GET /account -获取帐户信息
  • GET /account/holdings -获取账户持有量(可选查询参数: asset_code)

市场数据

  • GET /market/best-price -获取最佳买卖价格(可选查询参数: symbol)
  • GET /market/estimated-price -获取数量的预估价格(必填查询参数: symbol, side, quantity)

交易

  • GET /trading/pairs -获取可用交易对(可选查询参数: symbol)
  • GET /trading/orders -获取订单历史记录(可选查询参数: status)
  • GET /trading/orders/{id} -获取订单详细信息
  • POST /trading/orders -下新订单
    • 必填字段: symbol, side, quantity
    • 可选字段: type, price, time_in_force, stop_price
  • DELETE /trading/orders/{id} -取消订单

Websocket API

WebSocket服务器提供市场数据和订单状态的实时更新。

连接

连接到WebSocket服务器:

ws://localhost:8001

市场数据订阅

订阅市场数据更新:

{
  "type": "market_data",
  "action": "subscribe",
  "symbols": ["BTC-USD", "ETH-USD"]
}

取消订阅市场数据更新:

{
  "type": "market_data",
  "action": "unsubscribe",
  "symbols": ["BTC-USD", "ETH-USD"]
}

订单更新订阅

订阅订单更新:

{
  "type": "orders",
  "action": "subscribe"
}

取消订阅订单更新:

{
  "type": "orders",
  "action": "unsubscribe"
}

乒乓球

发送ping以保持连接有效:

{
  "type": "ping"
}

服务器将响应:

{
  "type": "pong"
}

测试

运行验证测试以确保服务器正常工作:

python -m tests.test_server

配置选项

可以在中配置以下环境变量 .env 文件:

  • ROBINHOOD_API_KEY -您的Robinhood API密钥
  • ROBINHOOD_PRIVATE_KEY -您的base64编码私钥
  • HOST -服务器主机(默认值:0.0.0.0)
  • PORT -REST API服务器端口(默认值:8000)
  • DEBUG -启用调试模式(默认值:False)
  • LOG_LEVEL -日志记录级别(默认值:INFO)
  • LOG_FILE -日志文件路径(默认:robinhold_mcp_server.Log)
  • RATE_LIMIT_ENABLED -启用速率限制(默认值:True)
  • RATE_LIMIT_REQUESTS -每个时段的最大请求数(默认值:100)
  • RATE_LIMIT_PERIOD -速率限制期(秒)(默认值:60)

安全考虑

  • API密钥和机密存储在环境变量中,而不是存储在代码中
  • 所有敏感数据都得到了妥善处理
  • 对所有API端点实施输入验证
  • 实施利率限制以防止滥用
  • 正确处理错误,避免泄露敏感信息

故障排除

如果您遇到问题:

  1. 检查日志文件以获取详细的错误消息
  2. 验证您的API凭据是否正确
  3. 确保您有适当的网络连接
  4. 检查Robinhood API是否可用

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

免责声明

作者对使用本项目可能造成的任何损失或损害不承担责任。