使用说明
未平仓股票MCP
MCP(模型上下文协议)服务器,通过多个经纪商API提供对股票市场数据和交易功能的访问。
特性
🚀 当前状态:v0.6.5-多经纪商支持(Robinhood+Schwab)
- ✅ MCP工具 罗宾汉+施瓦布(见 工具参考 电流细分)
- ✅ 多代理架构 -支持Robinhood和Charles Schwab
- ✅ 完整的交易功能 -股票、期权、订单管理
- ✅ 实时交易已验证 -Robinhood股票和期权交易已通过真实订单测试
- ✅ 生产就绪 -HTTP传输、Docker支持、全面测试
- ✅ Schwab集成完成 -OAuth身份验证,准备进行测试的工具(请参阅 工具参考)
- 🔧 账户详细信息已固定 -真实财务数据而非N/A值
安装
pip install open-stocks-mcp
发展:
git clone https://github.com/Open-Agent-Tools/open-stocks-mcp.git
cd open-stocks-mcp
uv sync # installs all deps including dev group
快速开始
1.设置凭据
创建一个 .env 文件:
对于Robinhood:
ROBINHOOD_USERNAME=your_email@example.com
ROBINHOOD_PASSWORD=your_password
对于Schwab(可选):
SCHWAB_API_KEY=your_api_key
SCHWAB_APP_SECRET=your_app_secret
SCHWAB_CALLBACK_URL=https://127.0.0.1:8182/
SCHWAB_TOKEN_PATH=~/.tokens/schwab_token.json
# Enable both brokers
ENABLED_BROKERS=robinhood,schwab
注: 嘉信理财需要一个开发者帐户和API的批准(几天)。看 Schwab设置指南 有关完整的设置说明。
2.启动服务器
HTTP传输(推荐)
open-stocks-mcp-server --transport http --port 3001
STDIO传输
open-stocks-mcp-server --transport stdio
3.测试服务器
# Health check (HTTP transport)
curl http://localhost:3001/health
# Prometheus metrics (no auth required)
curl http://localhost:3001/metrics
# Interactive testing
uv run mcp dev src/open_stocks_mcp/server/app.py
这个 /metrics 端点公开:
open_stocks_mcp_tool_calls_total(按工具计数)open_stocks_mcp_tool_avg_calls_per_minute(按工具测量;滚动窗口内的平均值)open_stocks_mcp_tool_latency_ms(按工具和分位数计量:0.50,0.95,0.99)
分布式跟踪设置(OpenTetry、Jaeger、Tempo):
MCP工具执行超时
每个MCP tools/call 调用受可配置截止日期的限制。超越的工具
deadline返回一个结构化的JSON错误,而不是无限期地阻塞服务器。
- YAML密钥:
timeout.tool_execution_timeout_seconds(默认值:30) - 环境覆盖:
OPEN_STOCKS_MCP_TOOL_EXECUTION_TIMEOUT_SECONDS(例如。,60)
当工具超时时,其响应体为:
{
"status": "error",
"error_type": "ToolExecutionTimeout",
"failure_class": "timeout",
"tool": "<tool_name>",
"timeout_seconds": 30,
"error": "Tool '...' exceeded the 30s execution limit"
}
MCP结果为 isError: true;HTTP /mcp 返回状态200(不是500),因此
客户端可以检查结构化错误。代理级别请求超时(Robinhood 16秒,
Schwab 30秒)仍然独立有效,并计入该截止日期。
操作断路器默认值
默认情况下启用代理呼叫保护,并在MCP中报告状态 health_check,
主控程序 rate_limit_status,HTTP /health,以及HTTP /status.
OPEN_STOCKS_MCP_CIRCUIT_BREAKER_ENABLED(默认值:true)OPEN_STOCKS_MCP_CIRCUIT_BREAKER_FAILURE_THRESHOLD(默认值:5)OPEN_STOCKS_MCP_CIRCUIT_BREAKER_COOLDOWN_SECONDS(默认值:60)
状态含义:
closed:请求流正常。open:经纪人呼叫会很快失败,直到冷却期满。half_open:允许一次探测呼叫;成功重置为closed,故障返回open.
Docker部署
生产Docker设置:
cd examples/open-stocks-mcp-docker
docker-compose up -d
特征:
- 持久会话存储
- 自动原木轮换
- 健康监测
- 安全标头和CORS
Kubernetes/编排部署: 看 示例/kubernetes/README.md Kustomize清单涵盖HTTP传输、非根安全上下文、PVC支持的令牌/日志持久性和健康探测。
MCP客户端集成
Claude 桌面版
添加到MCP设置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"open-stocks": {
"command": "open-stocks-mcp-server",
"args": ["--transport", "stdio"]
}
}
}
HTTP传输集成
{
"mcpServers": {
"open-stocks": {
"command": "python",
"args": ["-m", "mcp_http_client", "http://localhost:3001/mcp"]
}
}
}
可用工具
参考文档和可运行示例:
- API文档和笔记本指南,包括生成 工具参考
🏦 多经纪商支持
罗宾汉工具:
- 保留了所有现有的Robinhood功能
- 对现有API无重大更改
Schwab工具:
- 账户和投资组合-账号、余额、头寸、日内交易
- 市场数据-报价、价格历史、工具搜索、市场时间、变动因素
- 交易-市场/限价买入/卖出、订单管理、交易
- 期权-连锁、到期、头寸、买入/卖出、点差、取消
- 流媒体-实时账户活动、期权报价和二级快照
- 股息/收入-股息、按符号划分的股息、利息支付、股票贷款支付
所有Schwab工具都使用 schwab_ 前缀(例如。, schwab_get_portfolio, schwab_buy_stock_market).
Robinhood工具分类
账户和投资组合
- 账户信息和详细信息
- 投资组合头寸和持股
- 日内交易指标和历史
- 股票和期权订单历史
市场数据
- 实时股票报价和基本面
- 市场推动者和表现最佳者
- 行业分析和市场趋势
- 历史价格数据
期权交易
- 期权链和市场数据
- 职位汇总与分析
- 历史期权数据
- 选项工具搜索
监视列表和配置文件✅ 观察名单管理测试
- 观察名单管理 -所有5个工具均正常工作(添加/删除AMC测试的符号)
- 用户配置文件和设置
- 投资偏好
- 帐户功能
市场调研
- 收益数据和分析
- 股票评级和新闻
- 股息信息
- 公司行为和分裂
分析和监控
- 组合分析
- 性能指标
- 服务器健康监控
- 利息和贷款支付
通知
- 帐户通知
- 追加保证金和利息
- 订阅管理
- 推荐跟踪
先进仪器
- 多符号仪器查找
- 增强的搜索功能
- 二级市场数据(需要黄金)
- 直接仪器访问
交易能力
库存订单(✅ 现场测试):
- ✅ 市价单-用XOM和AMC测试买入/卖出
- ✅ 限价订单-用XOM(106美元)和AMC(3美元)测试买入/卖出
- ✅ 止损单-AMC测试卖出(25股,2.50美元)
- 个人和批量订单取消
- ❌ 已弃用:尾随止损单、零碎股票(不常见用例)
期权订单(✅ 现场测试):
- ✅ 期权限价单(买入/卖出)- 修复了API错误
- ✅ 期权发现和合约搜索
- ✅ 信用和借记价差策略- 修复了API错误,准备进行测试
- 实时验证:F$9卖出订单成功下达
订单管理:
- 取消单个或所有订单(股票和期权)
- 查看空缺职位
- 订单状态跟踪
认证
服务器处理Robinhood的身份验证要求:
- 应用推送审批:自动处理基于应用程序的设备审批(通过Robinhood移动应用程序审批)。
- 短信/电子邮件MFA代码:设置
ROBINHOOD_MFA_CODE在登录之前尝试完成基于代码的验证(时间敏感,通常为5-10分钟)。 - 会话保持:缓存和加密身份验证,以减少重新验证。
发展
测试
uv run pytest # All tests (works after uv sync)
uv run pytest -m "journey_account" # Fast account tests (~1.8s)
uv run pytest -m "journey_market_data" # Market data tests (~3.8s)
uv run pytest -m "not slow and not exception_test" # Recommended for development
uv run pytest -m rate_limited # Opt-in live API tests that may hit broker rate limits
RUN_RATE_LIMITED=1 uv run pytest # Include rate-limited tests in a full run
uv run pytest -m performance tests/performance -v # Mocked, CI-safe benchmarks
RUN_PERFORMANCE=1 uv run pytest # Include performance tests in a full run
# See CLAUDE.md for complete journey testing guide
代码质量
ruff check . --fix # Lint and fix
ruff format . # Format code
mypy . # Type check
YAML配置
未平仓股票MCP可以从以下位置加载配置 open-stocks-mcp.yaml 或 config.yaml 在当前工作目录中。
您还可以使用以下命令设置显式路径 OPEN_STOCKS_CONFIG=/path/to/config.yaml 或 OPEN_STOCKS_CONFIG_FILE=/path/to/config.yaml (OPEN_STOCKS_MCP_CONFIG 仍然支持向后兼容性)。
环境变量总是胜过YAML值,包括:
MCP_SERVER_NAME,LOG_LEVELRATE_LIMIT_CALLS_PER_MINUTE,RATE_LIMIT_CALLS_PER_HOUR,RATE_LIMIT_BURST_SIZECACHE_TTL_MARKET_SECONDS,CACHE_TTL_ACCOUNT_SECONDS,CACHE_MAX_SIZEENABLE_CACHEOPEN_STOCKS_MCP_BATCH_SIZE,OPEN_STOCKS_MCP_QUEUE_MAX_WAIT
功能标志支持安全默认值以及每个环境的覆盖:
environment: production
feature_flags:
brokers.robinhood:
default: true
brokers.schwab:
default: false
environments:
production: true
未知功能标志解析为禁用(false).
看 config.yaml.example 对于支持的架构。
谷歌ADK评估
# Set environment variables
export GOOGLE_API_KEY="your-google-api-key"
export ROBINHOOD_USERNAME="email@example.com"
export ROBINHOOD_PASSWORD="password"
# Start Docker server
cd examples/open-stocks-mcp-docker && docker-compose up -d
# Run evaluation
MCP_HTTP_URL="http://localhost:3001/mcp" adk eval examples/google_adk_agent tests/evals/0_list_available_tools_test.json --config_file_path tests/evals/test_config.json
项目范围
在v0.7.0版本中完成:
- ✅ 多代理架构 -支持多个代理的抽象代理层
- ✅ Schwab整合 -跨账户、市场数据、交易、期权、流媒体和股息/收入的工具(请参见 工具参考)
- ✅ OAuth身份验证 -Schwab OAuth 2.0流程,带有自动令牌刷新功能
- ✅ 优雅降级 -即使代理身份验证失败,服务器也会启动
- ✅ 向后兼容性 -所有Robinhood工具不变,无重大变化
在v0.6.4中完成:
- ✅ 增强选项工具 新
open_option_positions_with_details()通过看涨/看跌类型丰富头寸 - ✅ 股票交易API修复 -市场、限价和止损买入/卖出功能现在工作正常
- ✅ 实时股票交易验证 -XOM和AMC订单成功下达(市价、限价、止损)
- ✅ 工具弃用 -删除了4个不常见的交易功能(buy_stock_stop_loss、尾随止损、零碎股票)
- ✅ 期权交易API修复 -
buy_option_limit,sell_option_limit,传播策略现在正在发挥作用 - ✅ 实时选项验证 -9斐济元看跌期权成功交易
- ✅ 选项发现 -
find_options功能正常工作 - ✅ 期权价差固定 -已更正的借贷利差函数(API签名、数据结构、符号提取)
- ✅ 观察名单管理完成 -所有5个用于实时测试的观察名单工具
- ✅ 监视列表API修复程序 -修复了响应格式更改和参数绑定问题
- ✅ 所有交易功能就绪 -第7阶段完成,为第8阶段做好准备
下一个优先事项(Schwab测试):
- ⏳ 施瓦布旅行测试(被API证书阻止)
- ⏳ Schwab实时交易验证
- ⏳ 多代理集成测试
- ⏳ Schwab特定文件
超出范围:
- 加密货币交易工具
- 银行/ACH转账
- 帐户修改
- 存款/取款功能
贡献
- 贡献.md --开发设置、工作流程和代码指南
- 贡献/README.md --本地调试和编辑器配置
许可证
Apache许可证2.0-请参阅 许可证 文件以获取详细信息。
安全
重要安全注意事项:
- 实时交易功能 -真正的订单是用实际的钱下的
- 从不将凭据提交到版本控制
- 使用适当的文件权限
.env文件 - 交易验证完成 -股票和期权交易都经过测试
- 在生产执行之前,始终验证交易
- 期权交易说明:出售期权(如看跌期权)可能导致转让和股票所有权
有关安全问题,请参阅我们的 安全策略.
免责声明: 此软件用于教育和开发目的。股票和期权交易涉及重大风险。在执行任何金融交易之前,始终验证交易并了解风险。