使用说明
E*TRADE MCP服务器
E*TRADE API的模型上下文协议(MCP)服务器,使Claude等LLM能够检索股票和期权市场数据。
特性
- OAuth 1.0身份验证 -安全、持久的令牌存储,具有自动生命周期管理功能
- 股票报价 -具有可选收益日期的实时和延迟股票报价
- 批量报价 -在单个请求中检索多达25个股票报价
- 期权链 -包含罢工、到期、希腊和买卖的完整期权链数据
- 期权报价 -特定期权合约的详细报价
- 自动检索 -用于处理API速率限制和令牌激活的内置重试逻辑
- MCP集成 -与Claude Desktop和其他MCP客户端无缝集成
先决条件
安装
1.安装uv(如果尚未安装)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
2.克隆和设置项目
cd etrade-mcp
# Create virtual environment
uv venv
# Activate virtual environment
# On Windows:
.venv\Scripts\activate
# On macOS/Linux:
source .venv/bin/activate
# Install dependencies
uv pip install -e .
3.配置环境
创建一个 .env 项目根目录中的文件:
# Copy example file
cp .env.example .env
# Edit .env with your credentials
.env文件:
ETRADE_CONSUMER_KEY=your_consumer_key_here
ETRADE_CONSUMER_SECRET=your_consumer_secret_here
ETRADE_ENVIRONMENT=sandbox # Use 'production' for live trading
重要提示:
- 从开始
sandbox测试环境 - 切换到
production只有在彻底测试之后 - 制作需要实时的E*TRADE经纪账户
OAuth设置
OAuth身份验证是通过MCP服务器自动处理的。当您第一次与Claude一起使用服务器时,系统会提示您授权:
- 克劳德会打电话给
setup_oauth工具(最初不需要验证码) - 您的浏览器将打开E*TRADE授权页面
- 授权后,E*TRADE将显示一个5个字符的验证码
- 将代码提供给Claude,Claude将致电
setup_oauth再次使用代码 - 令牌在本地加密保存并自动续订
或者,您可以运行独立的OAuth设置:
python -m server.auth.setup
运行测试
# Install dev dependencies
uv pip install -e ".[dev]"
# Run all tests
pytest
# Run with coverage
pytest --cov=server tests/
# Run specific test file
pytest tests/test_token_store.py -v
Claude桌面配置
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"etrade": {
"command": "python",
"args": [
"-m",
"server.main"
],
"cwd": "/absolute/path/to/etrade-mcp",
"env": {
"ETRADE_CONSUMER_KEY": "your_consumer_key",
"ETRADE_CONSUMER_SECRET": "your_consumer_secret",
"ETRADE_ENVIRONMENT": "sandbox"
}
}
}
}
替换 /absolute/path/to/etrade-mcp 使用您的实际项目路径并添加您的凭据。
与Claude一起使用
配置后,Claude可以通过自然语言访问E*TRADE数据:
股票报价:
- “苹果股票的当前价格是多少?”
- “获取AAPL、MSFT和GOOGL的报价以及收益日期”
- “显示TSLA的价格和数量”
选项数据:
- “给我看看2025年1月到期的特斯拉期权链”
- “对于AAPL要求180美元罢工,希腊人有什么看法?”
- “获得接近450美元的SPY周期权的买卖价差”
- “显示下个月到期的NVDA看跌期权”
可用工具
认证
setup_oauth -OAuth 1.0身份验证流程
- 第一步:不打电话
verification_code获取授权URL - 第二步:致电
verification_code(来自E*TRADE的5个字符)完成身份验证 - 代币会自动存储和管理
股票报价
get_stock_quote -获取单一股票的报价
- 输入:
symbol(例如,“AAPL”),可选include_earnings(默认值:false) - 回报:价格、交易量、买卖、变动,以及可选的下一个收益日期
get_batch_quotes -获取多只股票的报价
- 输入:
symbols(阵列,最多25个),可选include_earnings(默认值:false) - 返回:所有请求符号的引号
选项数据
get_option_chains -获取期权链数据
- 输入:
symbol,可选过滤器:expiry_year,expiry_month,expiry_day-按过期日期筛选chain_type-“CALL”、“PUT”或“CALLPUT”(默认)strike_price_near-在特定价格附近进行罢工no_of_strikes-限制返回的罢工次数include_weekly-包括每周选项(默认值:false)skip_adjusted-跳过调整后的选项(默认值:true)option_category-“标准”(默认)、“全部”或“迷你”price_type-“ATNM”(违约)或“全部”
- 回报:可用罢工、到期、买卖、希腊、未平仓合约、交易量
get_option_quote -获取特定期权报价
- 输入:
option_symbols(OSI格式符号数组,最多25个) - 回报:详细的期权报价数据,包括希腊语和理论值
项目结构
etrade-mcp/
├── server/
│ ├── auth/
│ │ ├── oauth_manager.py # OAuth session & token lifecycle
│ │ ├── token_store.py # Encrypted token storage
│ │ └── setup.py # Standalone OAuth setup
│ ├── tools/
│ │ ├── oauth_tools.py # MCP OAuth tool
│ │ ├── stock_quotes.py # Stock quote tools
│ │ └── options_quotes.py # Options chain & quote tools
│ ├── utils/
│ │ └── retry.py # Automatic retry logic
│ ├── config.py # Configuration management
│ └── main.py # MCP server entry point
├── tests/
│ ├── test_token_store.py # Token storage tests
│ └── test_auth.py # OAuth manager tests
├── .env.example # Example environment config
├── pyproject.toml # Project metadata & dependencies
└── README.md
开发状态
✅ v0.1.0-完成所有核心功能
基础
- [x] 使用现代工具(uv、pyproject.toml)进行项目设置
- [x] 基于环境的配置管理
- [x] 具有生命周期管理的加密令牌存储
- [x] OAuth 1.0身份验证流程
- [x] 身份验证组件的单元测试
股市数据
- [x] 具有收益支持的单一股票报价工具
- [x] 批量报价(最多25个符号)
- [x] 实时和延迟报价处理
选项数据
- [x] 具有全面过滤功能的选项链
- [x] 按OSI符号列出的期权报价
- [x] 希腊人、理论价值观和开放利益
- [x] 支持标准、每周和迷你选项
MCP集成
- [x] 通过MCP工具的两步OAuth流程
- [x] API速率限制的自动重试逻辑
- [x] 令牌激活延迟处理
- [x] 与Claude Desktop完全集成
质量与可靠性
- [x] 全面的错误处理
- [x] 调试文件和stderr的日志记录
- [x] 自动令牌续订
- [x] E*TRADE实时账户生产就绪
安全说明
- 永不承诺
.env文件 -包含敏感凭据 - 令牌已加密 -存储在
.etrade_tokens.enc - 先使用沙盒 -生产前彻底测试
- 密钥的环境变量 -设置
ETRADE_TOKEN_KEY生产中
故障排除
OAuth安装失败
- 验证消费者密钥和密钥是否正确
- 检查您是否使用了正确的环境(沙盒/生产环境)
- 确保您的E*TRADE帐户具有API访问权限
“未找到令牌”错误
- 跑
python -m server.auth.setup鉴定 - 检查
.etrade_tokens.enc文件存在 - 验证
ETRADE_TOKEN_KEY是一致的
导入错误
- 确保虚拟环境已激活
- 跑
uv pip install -e .安装依赖项
最近的改进
令牌生命周期管理(最新)
- 到期时自动续订令牌
- 妥善处理令牌激活延迟
- 重新启动时持续会话状态
增强的选项支持
- 完全符合E*TRADE API规范
- 支持每周和迷你选项
- 按到期和执行价格灵活过滤
- 完整的希腊和理论定价数据
可靠性增强
- API速率限制的自动重试逻辑
- 令牌激活的指数回退
- 全面的错误处理和记录
- 使用实时E*TRADE帐户进行生产测试
资源
许可证
麻省理工学院
贡献
欢迎投稿!拜托:
- 遵循测试驱动开发
- 为新功能添加测试
- 更新文档
- 首先使用沙盒环境进行测试