金融市场API服务器

一个基于FastMCP构建的E*TRADE市场API的模型上下文协议服务器,提供实时报价、产品查询、期权链和到期日期等功能。

  • by jjmerri
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jjmerri/etrade-mcp

使用说明

E*TRADE MCP服务器

用于E*TRADE的市场API的模型上下文协议(MCP)服务器,使用FastMCP构建。

特性

此MCP服务器提供对E*TRADE市场API端点的访问:

  • 引用:获取股票、期权和共同基金的实时和延迟报价
  • 产品查询:按代码或公司名称搜索证券
  • 期权链:获得带有罢工和到期的期权链
  • 期权到期日期:获取选项的可用到期日期

安装

  1. 克隆此存储库
  2. 安装依赖项:
pip install -e .
  1. 复制 .env.example 到 .env 并添加您的E*TRADE API证书:
cp .env.example .env
  1. 编辑 .env 并添加您的凭据:
ETRADE_CONSUMER_KEY=your_consumer_key_here
ETRADE_CONSUMER_SECRET=your_consumer_secret_here
ETRADE_ENVIRONMENT=sandbox  # or 'production'

获取E*TRADE API证书

  1. 首选 E*TRADE开发者门户
  2. 使用您的E*TRADE帐户注册或登录
  3. 在以下地址请求沙盒消费者密钥 https://us.etrade.com/etx/ris/apikey
  4. 获取您的消费者密钥和消费者秘密
  5. 从沙盒环境开始进行测试

认证

一次性设置(推荐)

运行身份验证脚本以获取并保存您的访问令牌:

python authenticate.py

这将:

  1. 提示您访问E*TRADE授权URL
  2. 要求您输入验证码
  3. 将访问令牌保存到您的 .env 文件

MCP服务器将自动使用这些保存的令牌。

备注:访问令牌将在美国东部时间午夜到期,因此您需要每天重新进行身份验证。

替代方案:手动身份验证

您还可以通过MCP工具进行身份验证:

  1. 呼叫 etrade_get_auth_url() 获取授权URL
  2. 访问浏览器中的URL并授权应用程序
  3. 复制验证码
  4. 呼叫 etrade_authenticate(verifier="YOUR_CODE") 带有验证码

用法

运行服务器

服务器作为HTTP服务器在端口8000上运行,MCP端点位于 /mcp:

etrade-mcp

或者用Python:

python -m etrade_mcp.server

服务器将在以下时间启动 http://localhost:8000 MCP端点位于 http://localhost:8000/mcp.

连接到服务器

配置您的MCP客户端以连接到HTTP端点:

{
  "mcpServers": {
    "etrade": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

可用工具

etrade_get_auth_url()

获取OAuth授权URL。这是身份验证的第一步。

退货:在浏览器中访问的授权URL

etrade_authenticate(verifier: str)

使用E*TRADE的验证码完成身份验证。

参数:

  • verifier:来自E*TRADE的验证码

退货:成功消息

etrade_get_quote(symbols: str, require_earnings_date: bool = False, skip_mini_options_check: bool = False)

获取一个或多个交易品种的股票报价。

参数:

  • symbols:逗号分隔的符号列表(例如,“AAPL、MSFT、GOOGL”)
  • require_earnings_date:包括下一个收益日期
  • skip_mini_options_check:跳过迷你选项检查

退货:报价数据,包括价格、数量、买卖等。

etrade_lookup_product(search: str, company: str = None, type: str = None)

按符号或公司名称查找产品。

参数:

  • search:要搜索的符号或部分符号
  • company:公司名称(可选)
  • type:安全类型-EQ、MF、OPTN(可选)

退货:匹配产品列表

etrade_get_option_chains(symbol: str, ...)

获取具有各种过滤器的符号的选项链。

参数:

  • symbol:基础符号
  • expiry_year, expiry_month, expiry_day:过期日期筛选器
  • strike_price_near:筛选器接近此价格
  • no_of_strikes:返回的罢工次数
  • include_weekly:包括每周选项
  • option_category:标准、全部、迷你
  • chain_type:CALL,PUT,CALLPUT
  • 还有更多。..

退货:期权链数据

etrade_get_option_expire_dates(symbol: str, expiry_type: str = None)

获取可用选项的到期日期。

参数:

  • symbol:基础符号
  • expiry_type:每周、每月、每季度、全部

退货:到期日期列表

MCP客户端使用示例

# Get authorization URL
auth_url = etrade_get_auth_url()
# Visit the URL, authorize, get verifier code

# Authenticate
etrade_authenticate(verifier="12345")

# Get a quote
quote = etrade_get_quote(symbols="AAPL")

# Look up a product
results = etrade_lookup_product(search="Apple")

# Get option chains
chains = etrade_get_option_chains(
    symbol="AAPL",
    chain_type="CALL",
    price_type="ATNM"
)

# Get expiration dates
dates = etrade_get_option_expire_dates(symbol="AAPL")

API 文档

有关API的详细文档,请参阅:

环境变量

  • ETRADE_CONSUMER_KEY:您的E*TRADE消费者密钥(必填)
  • ETRADE_CONSUMER_SECRET:您的E*TRADE消费者机密(必填)
  • ETRADE_ENVIRONMENT: sandbox 或 production (默认:沙盒)
  • ETRADE_SANDBOX_BASE_URL:沙盒API URL(默认值:https://apisb.etrade.com)
  • ETRADE_PROD_BASE_URL:生产API URL(默认值:https://api.etrade.com)

安全说明

  • 永远不要承诺你的 .env 文件或公开您的API凭据
  • 从沙盒环境开始进行测试
  • OAuth令牌过期;您需要定期重新进行身份验证
  • 生产环境需要额外的E*TRADE账户审批

参考

此服务器基于E*TRADE的示例Python客户端,该客户端包含在 EtradePythonClient 目录以供参考。

许可证

麻省理工学院