Token导航 LogoToken导航TokenDH.com
Schwab MCP Docker logo
金融服务stdio官方级别未说明来源级核验

Schwab MCP Docker

MCP Server

一个支持MCP协议的Schwab交易API Docker封装,提供简易部署和管理功能。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
金融交易API封装DockerClaudePythonClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

metaif

提供方

metaif

最后核验

2026/5/17 20:20

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run --rm -it \

详细介绍

schwab mcp码头

](https://www.docker.com/) ![Python](https://www.python.org/) ![MCP](https://modelcontextprotocol.io/)

Schwab交易API的Docker包装器,支持MCP(模型上下文协议),提供Schwab交易服务的轻松部署和管理。

⚠️ 免责声明:本项目仅用于教育和学习目的。它不是作为投资建议。交易股票和期权涉及巨大的损失风险。您对任何交易决策及其后果负全部责任。在做出投资决策之前,始终进行自己的研究并咨询合格的财务顾问。

概述

该项目将Schwab交易MCP服务器打包在Docker容器中,通过适当的配置管理、令牌持久性和安全控制,可以轻松部署和运行Schwab API服务。它允许AI助手和应用程序通过标准化的MCP协议与Schwab交易账户进行交互。

特性

  • 🐳 基于Docker的部署 -使用Docker Compose轻松设置
  • 🔒 安全认证 -OAuth 2.0流与令牌持久性
  • 📊 全面的API访问 -账户详细信息、报价、价格历史、期权链和订单管理
  • 🛡️ 只读模式 -防止意外交易的安全功能
  • 🔄 令牌持久性 -自动令牌刷新和存储
  • 📁 体积映射 -身份验证令牌的持久数据存储
  • 🚀 MCP协议 -AI助手集成的标准化接口
  • 交互式身份验证 -内置身份验证设置工具

先决条件

  • Docker引擎(20.10.0或更高版本)
  • Docker Compose(1.29.0或更高版本)
  • 嘉信理财拥有API证书的开发人员账户

- 从获取凭据 Schwab开发者门户 - 您需要: APP_KEY, APP_SECRET和a CALLBACK_URL

Docker 镜像

预构建的多架构Docker镜像可从GitHub容器注册表获得:

docker pull ghcr.io/metaif/schwab-mcp-docker:latest

支持的架构:

  • linux/amd64 (x86_64)
  • linux/arm64 (aarch64/苹果硅)

可用标签:

  • latest -最新稳定版本
  • v1.x.x -特定版本标签
  • sha-xxxxxx -提交特定版本

快速开始

您有两个选项可以运行此服务:

选项A:使用预构建的Docker镜像(推荐用户使用)

1.下载配置文件

# Create a project directory
mkdir schwab-mcp && cd schwab-mcp

# Download docker-compose file for pre-built image and .env.example
curl -O https://raw.githubusercontent.com/metaif/schwab-mcp-docker/master/docker-compose.yaml
curl -O https://raw.githubusercontent.com/metaif/schwab-mcp-docker/master/.env.example

2.配置环境变量

创建 .env 文件基于 .env.example:

# Schwab API Credentials (Required)
SCHWAB_APP_KEY=your_app_key_here
SCHWAB_APP_SECRET=your_app_secret_here
SCHWAB_CALLBACK_URL=https://127.0.0.1

# Tokens file path (default is fine)
TOKENS_FILE=/app/data/tokens.json

# MCP Server Port
MCP_PORT=8000

# READONLY Mode (recommended for safety)
READONLY=true

3.拉取Docker镜像

docker pull ghcr.io/metaif/schwab-mcp-docker:latest

4.首次身份验证

在运行服务器之前,您需要完成OAuth身份验证流程:

# Create data directory for token storage
mkdir -p data

# Run the authentication setup
docker-compose run --rm schwab-mcp python setup_auth.py

这将:

  1. 打开浏览器窗口(或提供要粘贴的URL)
  2. 指导您完成Schwab的OAuth登录
  3. 将身份验证令牌保存到 data/tokens.json

5.启动MCP服务器

# Start the service
docker-compose up -d

# Verify the service is running
docker-compose ps

6.验证服务

# Check logs
docker-compose logs -f schwab-mcp

# Test the server is responding (from another terminal)
curl http://localhost:8000/mcp

选项B:从源代码构建(推荐给开发人员)

1.克隆存储库

git clone https://github.com/metaif/schwab-mcp-docker.git
cd schwab-mcp-docker

2.配置环境变量

创建 .env 项目根目录中的文件基于 .env.example:

# Schwab API Credentials (Required)
SCHWAB_APP_KEY=your_app_key_here
SCHWAB_APP_SECRET=your_app_secret_here
SCHWAB_CALLBACK_URL=https://127.0.0.1

# Tokens file path (default is fine)
TOKENS_FILE=/app/data/tokens.json

# MCP Server Port
MCP_PORT=8000

# READONLY Mode (recommended for safety)
READONLY=true

3.构建和启动

# Build the Docker image directly
docker build -t schwab-mcp-docker .

# Run the authentication setup
docker run --rm -it \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  schwab-mcp-docker python setup_auth.py

# Start the service
docker run -d \
  --name schwab-mcp-server \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  -p ${MCP_PORT:-8000}:8000 \
  --restart unless-stopped \
  schwab-mcp-docker

# Verify the service is running
docker ps | grep schwab-mcp-server

4.验证服务

# Check logs
docker logs -f schwab-mcp-server

# Test the server is responding
curl http://localhost:8000/mcp

配置

环境变量

变量必填默认描述
SCHWAB_APP_KEY-您的Schwab应用程序密钥来自开发人员门户
SCHWAB_APP_SECRET-您的Schwab申请机密
SCHWAB_CALLBACK_URL是的https://127.0.0.1OAuth回调URL(必须与您的应用配置匹配)
TOKENS_FILE没有/app/data/tokens.json存储身份验证令牌的路径
MCP_PORT没有8000暴露主机上MCP服务器的端口
READONLY没有false启用只读模式以阻止交易操作

只读模式

为了安全起见,您可以通过设置以只读模式运行服务器 READONLY=true 在你的 .env 文件。这将:

  • ✅ 允许:获取报价、账户详细信息、价格历史、期权链、列表订单
  • ❌ Block:下单、修改订单、取消订单
# In .env file
READONLY=true

在只读模式下,任何下单、修改或取消订单的尝试都将返回错误消息。

项目结构

对于运行预构建Docker镜像的用户,您只需要:

your-project/
├── docker-compose.yaml  # Downloaded via curl from repository
├── .env.example         # Downloaded via curl from repository  
├── .env                 # Your environment variables (create this)
└── data/                # Token storage (auto-created)
    └── tokens.json      # OAuth tokens (auto-created)

源代码结构(适用于贡献或从源代码构建的开发人员):

schwab-mcp-docker/
├── docker-compose.yaml  # Docker Compose for pre-built image (default)
├── Dockerfile          # Docker image definition for building from source
├── entrypoint.sh             # Container startup script
├── server.py                 # MCP server implementation
├── schwab_wrapper.py         # Schwab API wrapper
├── setup_auth.py             # Authentication setup tool
├── requirements.txt          # Python dependencies
└── .env.example              # Example environment variables

可用的MCP工具

服务器通过MCP协议公开以下工具:

市场数据工具

  • get_quote -获取某个符号的实时报价(例如AAPL、AMD)
  • get_price_history -通过可定制的周期和频率获取历史价格数据
  • get_option_chain -使用各种过滤器获取符号的选项链数据

帐户工具

  • get_count_details -获取账户余额和头寸
  • 列表_订单 -列出带有可选过滤器的订单(日期范围、状态)

交易工具(在只读模式下禁用)

  • 下单 -下达股票或期权订单(市场、限价、止损、STOP_LIMIT)
  • 修改订单 -修改现有订单
  • 取消订单 -取消待处理订单

用法

启动服务

如果使用预构建映像(docker compose.yaml):

docker-compose up -d

如果从源构建:

docker run -d \
  --name schwab-mcp-server \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  -p ${MCP_PORT:-8000}:8000 \
  --restart unless-stopped \
  schwab-mcp-docker

停止服务

# For pre-built image
docker-compose down

# For building from source
docker stop schwab-mcp-server
docker rm schwab-mcp-server

重新启动服务

# For pre-built image
docker-compose restart

# For building from source
docker restart schwab-mcp-server

查看日志

# For pre-built image:
docker-compose logs -f schwab-mcp

# For building from source:
docker logs -f schwab-mcp-server

# View recent logs
# Pre-built image:
docker-compose logs --tail=100 schwab-mcp
# Build from source:
docker logs --tail=100 schwab-mcp-server

重新验证

如果您的令牌过期或需要重新验证:

如果使用预构建图像:

# Stop the service
docker-compose down

# Remove old tokens
rm data/tokens.json

# Re-run authentication
docker-compose run --rm schwab-mcp python setup_auth.py

# Restart the service
docker-compose up -d

如果从源构建:

# Stop the service
docker stop schwab-mcp-server
docker rm schwab-mcp-server

# Remove old tokens
rm data/tokens.json

# Re-run authentication
docker run --rm -it \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  schwab-mcp-docker python setup_auth.py

# Restart the service
docker run -d \
  --name schwab-mcp-server \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  -p ${MCP_PORT:-8000}:8000 \
  --restart unless-stopped \
  schwab-mcp-docker

更新到较新版本

如果使用预构建图像:

# Stop the service
docker-compose down

# Pull the latest image
docker pull ghcr.io/metaif/schwab-mcp-docker:latest

# Restart with the new image
docker-compose up -d

如果从源构建:

# Stop the service
docker stop schwab-mcp-server
docker rm schwab-mcp-server

# Pull latest code
git pull

# Rebuild and restart
docker build -t schwab-mcp-docker .
docker run -d \
  --name schwab-mcp-server \
  -v $(pwd)/data:/app/data \
  --env-file .env \
  -p ${MCP_PORT:-8000}:8000 \
  --restart unless-stopped \
  schwab-mcp-docker

访问服务

MCP服务器使用可流式传输的HTTP在HTTP上运行:

  • 默认URL: http://localhost:8000/mcp
  • 协议:带有服务器发送事件(SSE)的HTTP MCP

配置您的MCP客户端(如Claude Desktop或其他AI助手)以连接到此端点。

MCP客户端配置示例

对于Claude Desktop,添加到您的 claude_desktop_config.json:

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

故障排除

身份验证问题

问题:身份验证失败或浏览器无法打开

解决方案:

  1. 验证您的 SCHWAB_APP_KEYSCHWAB_APP_SECRET 是正确的
  2. 确保您的 SCHWAB_CALLBACK_URL 与Schwab开发者门户中注册的内容相匹配
  3. 如果在远程服务器上运行,您可能需要手动复制身份验证URL

容器无法启动

解决方案:

  1. 检查是否设置了所需的环境变量:
   docker-compose config
  1. 验证 data/ 目录存在并且具有适当的权限:
   mkdir -p data
   chmod 755 data
  1. 检查日志以获取详细的错误消息:
   docker-compose logs schwab-mcp

端口已在使用中

如果端口8000已被占用,请更改 MCP_PORT.env:

MCP_PORT=8001

然后重新启动服务。

令牌到期

Schwab代币通常在一段时间后到期。如果遇到身份验证错误:

  1. 检查日志中与令牌相关的错误
  2. 如上所述重新运行身份验证设置
  3. 包装器应自动刷新令牌,但偶尔可能需要手动重新身份验证

只读模式不工作

确保环境变量设置正确:

docker-compose exec schwab-mcp env | grep READONLY

应该显示 READONLY=true。如果没有,请更新您的 .env 文件并重新启动。

安全考虑

  • ⚠️ 永不承诺 .env 文件 -它已经在里面了 .gitignore,保持这种状态
  • 🔐 默认情况下使用只读模式 -仅在活跃交易时禁用
  • 🔒 保护您的API证书 -商店 .env 安全,从不公开分享
  • 🌐 防火墙配置 -如果公开端口,请使用适当的身份验证和加密
  • 🔑 令牌安全 -The data/tokens.json 文件包含敏感的访问令牌,请相应地保护它
  • 📁 卷权限 -确保 data/ 目录具有适当的权限(不可读)

建筑

本项目使用:

  • Python 3.11 作为运行时环境
  • 施瓦布德夫 施瓦布API集成库
  • 快速MCP 用于MCP协议实现
  • 码头工人 用于容器化和易于部署
  • OAuth 2.0 用于安全身份验证

服务器以流式http模式运行,允许它同时为多个MCP客户端提供服务。

贡献

欢迎投稿!请随时提交拉取请求。

致谢

特别感谢:

许可证

本项目按MIT许可证提供。有关详细信息,请参阅LICENSE文件。

嘉信理财API及相关服务受 Schwab服务条款本包装是一个独立项目,不隶属于或认可嘉信理财股份有限公司。

链接

支持

关于以下问题:

______________________________________________________________________

由...制作❤️ 面向交易和人工智能社区

目录标签

目录标签

金融交易API封装DockerClaudePython本地部署Docker部署MCP协议OAuth认证

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP