Questrade MCP Server

Un servidor no oficial para integrarse con la API de Questrade, que proporciona acceso a cuentas de trading, datos de mercado e información de cartera.

Documentación

Questrade MCP Server

npm version Release

Un servidor no oficial del Model Context Protocol (MCP) para integrarse con la API de Questrade, que proporciona acceso a cuentas de trading, datos de mercado e información de cartera.

⚠️ Aviso: Esta es una integración no oficial creada por la comunidad y no está afiliada, respaldada ni soportada por Questrade Inc. Úsala bajo tu propio riesgo.

Características

  • 🔐 Autenticación: Gestión de tokens OAuth 2.0 con renovación automática
  • 📊 Datos de cuenta: Acceso a cuentas, posiciones, saldos e historial de órdenes
  • 📈 Datos de mercado: Cotizaciones en tiempo real, búsqueda de símbolos y velas históricas
  • 🛡️ Manejo de errores: Manejo integral de errores y registro
  • 🔧 TypeScript: Soporte completo de TypeScript con definiciones de tipos adecuadas

Instalación

Opción 1: Instalar desde npm (Recomendado)

npm install -g questrade-mcp-server

Opción 2: Clonar y compilar

  1. Clona este repositorio

  2. Instala las dependencias:

    npm install
    
  3. Copia la plantilla de entorno:

    cp .env.example .env
    
  4. Configura tus credenciales de la API de Questrade en .env:

    QUESTRADE_API_URL=https://api01.iq.questrade.com
    QUESTRADE_REFRESH_TOKEN=your_refresh_token_here
    # QUESTRADE_TOKEN_DIR=/path/to/custom/directory
    

Obtener credenciales de la API de Questrade

Para obtener información detallada sobre la autorización de la API de Questrade, consulta la documentación oficial de la API.

Paso 1: Generar token de API

  1. Inicia sesión en tu cuenta de Questrade o navega directamente a https://apphub.questrade.com/UI/UserApps.aspx

  2. En la esquina superior derecha, selecciona "API centre" en el menú desplegable bajo tu nombre de usuario

    Add Server

  3. Haz clic en "Activate API" y acepta el acuerdo de acceso a la API

  4. Haz clic en "Generate new token" para la autorización manual

    New Device

  5. Copia el refresh token proporcionado

    Generate Token

Paso 2: Configurar el entorno

  1. Copia tu refresh token a .env:

    QUESTRADE_REFRESH_TOKEN=your_refresh_token_here
    
  2. El servidor MCP automáticamente:

    • Usará tu refresh token para obtener un token de acceso
    • Descubrirá la URL correcta del servidor de la API
    • Gestionará la renovación del token cuando sea necesario
    • Guardará los nuevos tokens en ~/.questrade-mcp/tokens.json (o en el directorio temporal del sistema como alternativa)

Importante: Los refresh tokens son de un solo uso. El servidor intentará guardar los nuevos refresh tokens en ~/.questrade-mcp/tokens.json (configurable mediante la variable de entorno QUESTRADE_TOKEN_DIR), pero si un token caduca o es utilizado por otro proceso, tendrás que generar uno nuevo manualmente siguiendo los pasos anteriores.

Paso 3: Probar tu configuración

Verifica que tu token funciona correctamente:

npm run test-connection

Nota: Si recibes un error de "'tsx' is not recognized", el script de prueba compilará automáticamente el proyecto primero y usará Node.js en su lugar.

Uso

Desarrollo

npm run dev

Producción

npm run build
npm start

Añadir a Claude Desktop

  1. Encuentra tu archivo de configuración de Claude Desktop:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. Añade la configuración del servidor MCP:

    Configuración rápida (Recomendado)

    {
      "mcpServers": {
        "questrade": {
          "command": "npx",
          "args": ["questrade-mcp-server"],
          "env": {
            "QUESTRADE_REFRESH_TOKEN": "your_refresh_token_here"
          }
        }
      }
    }
    

    Compilación de desarrollo local

    {
      "mcpServers": {
        "questrade": {
          "command": "node",
          "args": ["/path/to/your/project/dist/index.js"],
          "env": {
            "QUESTRADE_REFRESH_TOKEN": "your_refresh_token_here"
          }
        }
      }
    }
    
  3. Si usas la compilación local, actualiza la ruta para que coincida con la ubicación real de tu proyecto

  4. Reinicia Claude Desktop

  5. Prueba la conexión pidiendo a Claude que muestre tus cuentas de Questrade

Para instrucciones de configuración detalladas, consulta claude-desktop-config.md.

Herramientas disponibles

Gestión de cuentas

  • get_accounts - Obtener todas las cuentas de Questrade
  • get_positions - Obtener posiciones de una cuenta específica
  • get_balances - Obtener saldos de una cuenta específica
  • get_orders - Obtener historial de órdenes de una cuenta

Datos de mercado

  • search_symbols - Buscar símbolos por prefijo
  • get_symbol - Obtener información detallada de un símbolo
  • get_quotes - Obtener cotizaciones en tiempo real de símbolos
  • get_candles - Obtener datos históricos de precios

Autenticación

  • refresh_token - Renovar el token de acceso a la API

Prompts integrados

El servidor MCP incluye prompts útiles para tareas comunes de análisis de trading:

Resumen de cartera

Prompt: portfolio_summary

  • Obtén un análisis completo de la cartera con saldos de cuentas, posiciones y rendimiento
  • Opcional: Especifica accountNumber (usa la primera cuenta si no se proporciona)

Análisis de acciones

Prompt: stock_analysis

  • Analiza una acción específica con cotizaciones actuales, información del símbolo y rendimiento reciente
  • Requerido: symbol (p. ej., "AAPL", "TSLA", "MSFT")

Oportunidades de trading

Prompt: trading_opportunities

  • Identifica posibles oportunidades de trading basadas en posiciones actuales y datos de mercado
  • Opcional: accountNumber (usa la primera cuenta si no se proporciona)
  • Opcional: riskLevel ("conservative", "moderate" o "aggressive")

Ejemplo de uso

Simplemente pide a Claude:

  • "Usa el prompt portfolio_summary para analizar mi cuenta de trading"
  • "Analiza la acción AAPL usando el prompt stock_analysis"
  • "Muéstrame oportunidades de trading con nivel de riesgo conservador"

Ejemplos de herramientas

Obtener cuentas

{
  "name": "get_accounts"
}

Obtener posiciones

{
  "name": "get_positions",
  "arguments": {
    "accountNumber": "12345678"
  }
}

Buscar símbolos

{
  "name": "search_symbols",
  "arguments": {
    "prefix": "AAPL",
    "offset": 0
  }
}

Obtener cotizaciones

{
  "name": "get_quotes",
  "arguments": {
    "symbolIds": [8049, 9291]
  }
}

Configuración

El servidor utiliza variables de entorno para la configuración:

  • QUESTRADE_API_URL: URL base de la API de Questrade (predeterminado: https://api01.iq.questrade.com)
  • QUESTRADE_REFRESH_TOKEN: Tu refresh token de la API
  • QUESTRADE_TOKEN_DIR: Directorio personalizado para el almacenamiento de tokens (predeterminado: ~/.questrade-mcp)

Manejo de errores

El servidor incluye manejo integral de errores para:

  • Tokens inválidos o caducados (renovación automática)
  • Parámetros requeridos faltantes
  • Límites de tasa de la API y errores de red
  • Números de cuenta o IDs de símbolo inválidos

Notas de seguridad

  • Nunca subas tu archivo .env al control de versiones
  • Los tokens de acceso caducan después de 7 días
  • Los refresh tokens se usan automáticamente para obtener nuevos tokens de acceso
  • Esta es una herramienta no oficial: asegúrate de cumplir con los términos de servicio de la API de Questrade
  • Verifica siempre las decisiones de trading de forma independiente antes de ejecutar operaciones

Desarrollo

Estructura del proyecto

src/
├── index.ts          # Main MCP server implementation
├── questrade-client.ts # Questrade API client
└── types.ts          # TypeScript type definitions

Compilación

npm run build

Limpieza

npm run clean

Licencia

MIT