Schwab Model Context Protocol Server

by jkoelker
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • References GitHub repositories for dependencies including schwab-py and the MCP python-sdk.

  • Integrated with pytest for testing the server functionality and API interactions.

  • Built using Python and integrates with Python SDK for the Model Context Protocol.

Servidor de protocolo de contexto del modelo Schwab

Este es un servidor que implementa el Protocolo de Contexto de Modelo (MCP) para la API de Schwab usando schwab-py y el MCP python-sdk .

Características

  • Exponer la funcionalidad de la API de Schwab a través del Protocolo de Contexto de Modelo
  • Obtener información de la cuenta y posiciones
  • Recuperar cotizaciones de acciones e historial de precios
  • Obtenga información del mercado y de los impulsores
  • Obtener cadenas de opciones y datos de vencimiento
  • Acceder al historial de pedidos y transacciones
  • Modificar el estado de la cuenta con herramientas especiales (requiere el indicador --jesus-take-the-wheel )
  • Diseñado para integrarse con modelos de lenguaje grandes (LLM)

Instalación

# Install with all dependencies uv add -e . # Install development dependencies uv add -e .[dev]

Uso

Autenticación

El primer paso es autenticarse con la API de Schwab y generar un token:

# Authenticate and generate a token uv run schwab-mcp auth --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --callback-url YOUR_CALLBACK_URL

Puede configurar estas credenciales a través de variables de entorno para evitar escribirlas cada vez:

De forma predeterminada, el token se guarda en ~/.local/share/schwab-mcp/token.yaml (específico de la plataforma). Puede especificar una ruta diferente:

uv run schwab-mcp auth --token-path /path/to/token.yaml

Se admiten los formatos de token yaml y json y se inferirán a partir de la extensión del archivo.

Ejecución del servidor

Después de la autenticación, puede ejecutar el servidor:

# Run the server with default token path uv run schwab-mcp server --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --callback-url YOUR_CALLBACK_URL # Run with a custom token path uv run schwab-mcp server --token-path /path/to/token.json --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --callback-url YOUR_CALLBACK_URL # Run with account modification tools enabled uv run schwab-mcp server --jesus-take-the-wheel --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --callback-url YOUR_CALLBACK_URL

La antigüedad del token está validada: si es mayor a 5 días, se le solicitará que vuelva a autenticarse.

ADVERTENCIA : El uso del indicador --jesus-take-the-wheel habilita herramientas que pueden modificar el estado de su cuenta. Úselo con precaución, ya que esto permite que los LLM cancelen pedidos y potencialmente realicen otras acciones que alteren el estado de la cuenta.

Herramientas disponibles

El servidor expone las siguientes herramientas MCP:

Información sobre fechas y mercados

  1. get_datetime - Obtener la fecha y hora actual en formato ISO
  2. get_market_hours - Obtener el horario de mercado para un mercado específico
  3. get_movers - Obtener movedores para un índice específico
  4. get_instruments - Busca instrumentos con un símbolo específico

Información de la cuenta

  1. get_account_numbers - Obtener la asignación de los ID de cuenta a los hashes de cuenta
  2. get_accounts - Obtener información de todas las cuentas de Schwab vinculadas
  3. get_accounts_with_positions - Obtener cuentas con información de posición
  4. get_account - Obtener información de una cuenta específica
  5. get_account_with_positions - Obtener una cuenta específica con información de posición
  6. get_user_preferences : obtiene las preferencias del usuario para todas las cuentas, incluidos los apodos

Pedidos

  1. get_order - Obtener detalles de un pedido específico
  2. get_orders - Obtener pedidos para una cuenta específica

Citas

  1. get_quotes - Obtener comillas para símbolos específicos

Historial de precios

  1. get_advanced_price_history : obtenga el historial de precios avanzado de un símbolo específico
  2. get_price_history_every_minute - Obtener el historial de precios con frecuencia de minutos
  3. get_price_history_every_five_minutes - Obtener el historial de precios con una frecuencia de cinco minutos
  4. get_price_history_every_ten_minutes - Obtener el historial de precios con una frecuencia de diez minutos
  5. get_price_history_every_fifteen_minutes - Obtener el historial de precios con una frecuencia de quince minutos
  6. get_price_history_every_thirty_minutes - Obtener el historial de precios con una frecuencia de treinta minutos
  7. get_price_history_every_day - Obtener el historial de precios con frecuencia diaria
  8. get_price_history_every_week - Obtener el historial de precios con frecuencia semanal

Opciones

  1. get_option_chain - Obtener la cadena de opciones para un símbolo específico
  2. get_advanced_option_chain : obtiene la cadena de opciones avanzadas para un símbolo específico
  3. get_option_expiration_chain - Obtener información de vencimiento de la opción para un símbolo

Actas

  1. get_transactions - Obtener transacciones para una cuenta específica
  2. get_transaction - Obtener detalles de una transacción específica

Herramientas de modificación de cuenta (Requiere el indicador --jesus-take-the-wheel )

  1. cancel_order - Cancelar un pedido específico

Advertencia de seguridad

El indicador --jesus-take-the-wheel permite a los LLM realizar acciones que pueden modificar el estado de su cuenta, incluidas:

  • Cancelación de pedidos
  • Otras acciones que pueden tener implicaciones financieras (se agregarán más herramientas en futuras versiones)

Utilice esta bandera únicamente en entornos controlados y comprenda los riesgos que conlleva.

Desarrollo

# Type check uv run pyright # Format code uv run ruff format . # Lint uv run ruff check . # Run tests uv run pytest

Licencia

Este proyecto está disponible bajo la licencia MIT.

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor que implementa el Protocolo de Contexto de Modelo para la API de Schwab, lo que permite el acceso a información de cuentas, posiciones, cotizaciones de acciones e historial de pedidos/transacciones diseñado para la integración con modelos de lenguaje grandes.

  1. Features
    1. Installation
      1. Usage
        1. Authentication
        2. Running the Server
      2. Available Tools
        1. Date and Market Information
        2. Account Information
        3. Orders
        4. Quotes
        5. Price History
        6. Options
        7. Transactions
        8. Account Modification Tools (Requires --jesus-take-the-wheel flag)
      3. Security Warning
        1. Development
          1. License
            ID: 25m86mwq5q