Schwab模型上下文协议服务器
这 Schwab模型上下文协议(MCP)服务器 将您的Schwab账户连接到基于LLM的应用程序(如Claude Desktop或其他MCP客户端),允许他们在您的监督下检索市场数据、检查账户状态和(可选)下订单。
特性
- 市场数据:实时报价、价格历史、期权链和市场推动者。
- 账户管理:查看余额、头寸和交易。
- 交易:对股票和期权的全面支持,包括复杂策略(OCO、Bracket)。
- 安全第一:关键行动(如交易)被关在一个 审批工作流程不一致 默认情况下。
- LLM集成:专为Agent AI工作流程设计。
快速开始
先决条件
- Python 3.10或更高版本
- 紫外线 (推荐)或
pip - Schwab开发者应用密钥和秘密(来自 Schwab开发者门户)
安装
对于大多数用户,通过安装 uv tool 或 pip 最简单的:
# Using uv (recommended for isolation)
uv tool install git+https://github.com/jkoelker/schwab-mcp.git
# Using pip
pip install git+https://github.com/jkoelker/schwab-mcp.git认证
在运行服务器之前,您必须向Schwab进行身份验证以生成令牌文件。
# If installed via uv tool
schwab-mcp auth --client-id YOUR_KEY --client-secret YOUR_SECRET --callback-url https://127.0.0.1:8182
# If running from source
uv run schwab-mcp auth --client-id YOUR_KEY --client-secret YOUR_SECRET --callback-url https://127.0.0.1:8182这将打开一个浏览器窗口,让您登录Schwab。完成后,令牌将保存到 ~/.local/share/schwab-mcp/token.yaml.
运行服务器
启动MCP服务器,将工具暴露给MCP客户端。
# Basic Read-Only Mode (Safest)
schwab-mcp server --client-id YOUR_KEY --client-secret YOUR_SECRET
# With Trading Enabled (Requires Discord Approval)
schwab-mcp server \
--client-id YOUR_KEY \
--client-secret YOUR_SECRET \
--discord-token BOT_TOKEN \
--discord-channel-id CHANNEL_ID \
--discord-approver YOUR_USER_ID备注:对于交易功能,您必须设置Discord机器人进行审批。看 Discord设置指南.
配置
您可以使用CLI标志或环境变量配置服务器。
| 标志 | 环境变量 | 描述 |
|---|---|---|
--client-id | SCHWAB_CLIENT_ID | 必需.Schwab应用程序密钥。 |
--client-secret | SCHWAB_CLIENT_SECRET | 必需.Schwab应用程序秘密。 |
--callback-url | SCHWAB_CALLBACK_URL | 重定向URL(默认值: https://127.0.0.1:8182). |
--token-path | N/A | 保存/加载令牌的路径(默认: ~/.local/share/...). |
--jesus-take-the-wheel | 无 | 危险.绕过Discord对交易的批准。 |
--no-technical-tools | N/A | 禁用技术分析工具(SMA、RSI等)。 |
--json | N/A | 返回原始JSON而不是格式化文本(对某些代理有用)。 |
容器使用情况
Docker/Podman镜像可在以下网址获得 ghcr.io/jkoelker/schwab-mcp.
podman run --rm -it \
--env SCHWAB_CLIENT_ID=... \
--env SCHWAB_CLIENT_SECRET=... \
-v ~/.local/share/schwab-mcp:/schwab-mcp \
ghcr.io/jkoelker/schwab-mcp:latest server --token-path /schwab-mcp/token.yaml可用工具
服务器为LLM提供了一套丰富的工具。
📊 市场数据
| 工具 | 说明 |
|---|---|
get_quotes | 符号的实时报价。 |
get_market_hours | 市场开盘/收盘时间。 |
get_movers | 指数的最大赢家/输家。 |
get_option_chain | 标准选项链数据。 |
get_price_history_* | 历史蜡烛(分钟、日、周)。 |
💼 账户信息
| 工具 | 说明 |
|---|---|
get_accounts | 列出链接的帐户。 |
get_account_positions | 详细的头寸和余额。 |
get_transactions | 交易和转账历史。 |
get_orders | 未结订单和已完成订单的状态。 |
💸 交易(需要批准)
| 工具 | 说明 |
|---|---|
place_equity_order | 买入/卖出股票和ETF。 |
place_option_order | 买入/卖出期权合约。 |
place_bracket_order | 入场+止盈+止损。 |
cancel_order | 取消未结订单。 |
*(请参阅中的完整工具列表 src/schwab_mcp/tools/)*
发展
为该项目做出贡献:
# Clone and install dependencies
git clone https://github.com/jkoelker/schwab-mcp.git
cd schwab-mcp
uv sync
# Run tests
uv run pytest
# Format and Lint
uv run ruff format . && uv run ruff check .许可证
MIT许可证。
