使用说明

项目简介

Schwab MCP Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在为大型语言模型 (LLM) 提供访问 Schwab (嘉信理财) API 的能力。通过此服务器,LLM 客户端可以安全、便捷地获取股票行情、账户信息、交易记录等金融数据,并执行交易操作(当前仓库提供的工具中不包含交易操作,但设计上具备扩展能力)。

主要功能点

  • 资源管理 (Resources): 虽然仓库描述中没有明确提及 "资源 (Resources)" 的概念,但其设计思路是围绕 Schwab 账户数据展开,账户信息、股票行情、交易记录等可以被视为需要管理和访问的资源。
  • 工具注册与执行 (Tools): 核心功能,已实现多个工具,包括:
    • 获取账户信息(账户列表、账户详情、持仓信息等)
    • 获取股票行情
    • 获取订单和交易记录
    • 获取市场数据(市场时间、市场动态)
  • Prompt 模板 (Prompts): 仓库本身不直接提供 Prompt 模板,但作为 MCP 服务器,它可以与支持 Prompt 模板的 MCP 客户端协同工作,为 LLM 应用提供丰富的上下文数据。
  • 标准化接口: 遵循 MCP 协议,通过 JSON-RPC 与客户端通信,提供标准化的数据访问和功能调用方式。
  • 安全认证: 支持 Schwab API 的 OAuth 2.0 认证流程,安全管理 API 密钥和访问令牌。

安装步骤

  1. 安装: 使用 'uv' 包管理器安装项目及其依赖,命令如下:
    uv add -e .
    如需进行开发,可以安装开发依赖:
    uv add -e .[dev]

服务器配置

MCP 客户端需要配置以下信息以连接到 Schwab MCP Server。配置信息为 JSON 格式,示例如下:

{
  "serverName": "schwab-mcp",
  "command": "schwab-mcp",
  "args": [
    "server",
    "--client-id", "<YOUR_SCHWAB_CLIENT_ID>",  // 你的 Schwab API Client ID,请替换为实际值
    "--client-secret", "<YOUR_SCHWAB_CLIENT_SECRET>", // 你的 Schwab API Client Secret,请替换为实际值
    "--callback-url", "https://127.0.0.1:8182" //  Schwab API 回调 URL,默认为 https://127.0.0.1:8182,通常无需修改
    // "--token-path", "/path/to/token.json"  // 可选:自定义 token 文件保存路径,默认为 ~/.local/share/schwab-mcp/token.yaml
  ]
}

参数说明:

  • 'serverName': 服务器名称,可以自定义。
  • 'command': 启动 Schwab MCP Server 的命令,固定为 'schwab-mcp'。
  • 'args': 传递给 'schwab-mcp server' 命令的参数列表:
    • '--client-id': Schwab API Client ID,必须配置,请替换为你在 Schwab 开发者平台申请的 Client ID。也可以通过环境变量 'SCHWAB_CLIENT_ID' 配置。
    • '--client-secret': Schwab API Client Secret,必须配置,请替换为你在 Schwab 开发者平台申请的 Client Secret。也可以通过环境变量 'SCHWAB_CLIENT_SECRET' 配置。
    • '--callback-url': Schwab API 回调 URL,默认为 'https://127.0.0.1:8182',通常无需修改。也可以通过环境变量 'SCHWAB_CALLBACK_URL' 配置。
    • '--token-path': 可选参数,用于指定 token 文件的保存路径。如果不指定,默认保存路径为 '~/.local/share/schwab-mcp/token.yaml'。

注意: 'client-id' 和 'client-secret' 是连接 Schwab API 的关键凭证,请务必妥善保管,不要直接将真实值硬编码在配置文件中,建议使用环境变量方式配置。

基本使用方法

  1. 认证 (Authentication): 首次运行服务器前,需要进行 Schwab API 认证并生成 token。在命令行执行以下命令:

    uv run schwab-mcp auth --client-id <YOUR_SCHWAB_CLIENT_ID> --client-secret <YOUR_SCHWAB_CLIENT_SECRET> --callback-url https://127.0.0.1:8182

    或者,如果已经设置了环境变量 'SCHWAB_CLIENT_ID', 'SCHWAB_CLIENT_SECRET', 和 'SCHWAB_CALLBACK_URL',则可以直接运行:

    uv run schwab-mcp auth

    该命令会打开浏览器,引导你完成 Schwab 账户的登录和授权。认证成功后,token 会被保存到本地文件(默认 '~/.local/share/schwab-mcp/token.yaml')。

  2. 运行服务器 (Run Server): 认证完成后,即可运行 Schwab MCP Server。在命令行执行以下命令:

    uv run schwab-mcp server --client-id <YOUR_SCHWAB_CLIENT_ID> --client-secret <YOUR_SCHWAB_CLIENT_SECRET> --callback-url https://127.0.0.1:8182

    或者,如果已经设置了环境变量,则可以直接运行:

    uv run schwab-mcp server

    服务器默认使用 stdio 作为传输协议,并等待 MCP 客户端的连接和请求。

  3. 使用 MCP 客户端: 配置好 MCP 客户端,并将其连接到运行中的 Schwab MCP Server。客户端可以通过 JSON-RPC 调用服务器提供的工具,例如 'list_tools' 获取可用工具列表,'call_tool' 调用特定工具并传递参数。

示例工具调用 (假设使用 MCP 客户端):

客户端可以发送 JSON-RPC 请求调用 'get_quotes' 工具,获取股票代码为 'AAPL,MSFT' 的行情数据:

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "name": "get_quotes",
    "arguments": {
      "symbols": "AAPL,MSFT"
    }
  },
  "id": 1
}

服务器会返回包含股票行情数据的 JSON-RPC 响应。

信息

分类

商业系统