Questrade MCP Server

Um servidor não oficial para integração com a API Questrade, fornecendo acesso a contas de negociação, dados de mercado e informações de portfólio.

Documentação

Questrade MCP Server

npm version Release

Um servidor não oficial do Model Context Protocol (MCP) para integração com a API da Questrade, fornecendo acesso a contas de negociação, dados de mercado e informações de portfólio.

⚠️ Aviso: Esta é uma integração não oficial, construída pela comunidade, e não é afiliada, endossada ou suportada pela Questrade Inc. Use por sua conta e risco.

Recursos

  • 🔐 Autenticação: Gerenciamento de tokens OAuth 2.0 com renovação automática
  • 📊 Dados de Conta: Acesse contas, posições, saldos e histórico de pedidos
  • 📈 Dados de Mercado: Cotações em tempo real, busca de símbolos e candles históricos
  • 🛡️ Tratamento de Erros: Tratamento abrangente de erros e registro de logs
  • 🔧 TypeScript: Suporte completo a TypeScript com definições de tipos adequadas

Instalação

Opção 1: Instalar via npm (Recomendado)

npm install -g questrade-mcp-server

Opção 2: Clonar e Compilar

  1. Clone este repositório

  2. Instale as dependências:

    npm install
    
  3. Copie o modelo de ambiente:

    cp .env.example .env
    
  4. Configure suas credenciais da API Questrade em .env:

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

Obtendo Credenciais da API Questrade

Para informações detalhadas sobre a autorização da API da Questrade, consulte a documentação oficial da API.

Passo 1: Gerar Token de API

  1. Faça login na sua conta Questrade ou navegue diretamente para https://apphub.questrade.com/UI/UserApps.aspx

  2. No canto superior direito, selecione "API centre" no menu suspenso sob seu nome de login

    Add Server

  3. Clique em "Activate API" e concorde com o acordo de acesso à API

  4. Clique em "Generate new token" para autorização manual

    New Device

  5. Copie o refresh token fornecido

    Generate Token

Passo 2: Configurar o Ambiente

  1. Copie seu refresh token para .env:

    QUESTRADE_REFRESH_TOKEN=your_refresh_token_here
    
  2. O servidor MCP automaticamente irá:

    • Usar seu refresh token para obter um access token
    • Descobrir a URL correta do servidor da API
    • Gerenciar a renovação do token quando necessário
    • Persistir novos tokens em ~/.questrade-mcp/tokens.json (ou no diretório temporário do sistema como alternativa)

Importante: Refresh tokens são de uso único. O servidor tentará persistir novos refresh tokens em ~/.questrade-mcp/tokens.json (configurável via variável de ambiente QUESTRADE_TOKEN_DIR), mas se um token expirar ou for usado por outro processo, você precisará gerar um novo manualmente seguindo os passos acima.

Passo 3: Testar sua Configuração

Verifique se seu token funciona corretamente:

npm run test-connection

Nota: Se você receber um erro "'tsx' is not recognized", o script de teste compilará automaticamente o projeto primeiro e usará Node.js em vez disso.

Uso

Desenvolvimento

npm run dev

Produção

npm run build
npm start

Adicionando ao Claude Desktop

  1. Encontre seu arquivo de configuração do 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. Adicione a configuração do servidor MCP:

    Configuração rápida (Recomendado)

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

    Build de desenvolvimento local

    {
      "mcpServers": {
        "questrade": {
          "command": "node",
          "args": ["/path/to/your/project/dist/index.js"],
          "env": {
            "QUESTRADE_REFRESH_TOKEN": "your_refresh_token_here"
          }
        }
      }
    }
    
  3. Se estiver usando o build local, atualize o caminho para corresponder à localização real do seu projeto

  4. Reinicie o Claude Desktop

  5. Teste a conexão pedindo ao Claude para mostrar suas contas Questrade

Para instruções detalhadas de configuração, consulte claude-desktop-config.md.

Ferramentas Disponíveis

Gerenciamento de Contas

  • get_accounts - Obter todas as contas Questrade
  • get_positions - Obter posições de uma conta específica
  • get_balances - Obter saldos de uma conta específica
  • get_orders - Obter histórico de pedidos de uma conta

Dados de Mercado

  • search_symbols - Buscar símbolos por prefixo
  • get_symbol - Obter informações detalhadas do símbolo
  • get_quotes - Obter cotações em tempo real para símbolos
  • get_candles - Obter dados históricos de preços

Autenticação

  • refresh_token - Renovar o access token da API

Prompts Integrados

O servidor MCP inclui prompts úteis para tarefas comuns de análise de negociação:

Resumo do Portfólio

Prompt: portfolio_summary

  • Obtenha uma análise abrangente do portfólio com saldos de conta, posições e desempenho
  • Opcional: Especifique accountNumber (usa a primeira conta se não for fornecido)

Análise de Ações

Prompt: stock_analysis

  • Analise uma ação específica com cotações atuais, informações do símbolo e desempenho recente
  • Obrigatório: symbol (ex.: "AAPL", "TSLA", "MSFT")

Oportunidades de Negociação

Prompt: trading_opportunities

  • Identifique possíveis oportunidades de negociação com base nas posições atuais e dados de mercado
  • Opcional: accountNumber (usa a primeira conta se não for fornecido)
  • Opcional: riskLevel ("conservative", "moderate" ou "aggressive")

Exemplo de Uso

Basta pedir ao Claude:

  • "Use o prompt portfolio_summary para analisar minha conta de negociação"
  • "Analise a ação AAPL usando o prompt stock_analysis"
  • "Mostre-me oportunidades de negociação com nível de risco conservador"

Exemplos de Ferramentas

Obter Contas

{
  "name": "get_accounts"
}

Obter Posições

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

Buscar Símbolos

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

Obter Cotações

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

Configuração

O servidor usa variáveis de ambiente para configuração:

  • QUESTRADE_API_URL: URL base para a API Questrade (padrão: https://api01.iq.questrade.com)
  • QUESTRADE_REFRESH_TOKEN: Seu refresh token da API
  • QUESTRADE_TOKEN_DIR: Diretório personalizado para armazenamento de tokens (padrão: ~/.questrade-mcp)

Tratamento de Erros

O servidor inclui tratamento abrangente de erros para:

  • Tokens inválidos ou expirados (renovação automática)
  • Parâmetros obrigatórios ausentes
  • Limites de taxa da API e erros de rede
  • Números de conta ou IDs de símbolo inválidos

Notas de Segurança

  • Nunca envie seu arquivo .env para o controle de versão
  • Access tokens expiram após 7 dias
  • Refresh tokens são usados automaticamente para obter novos access tokens
  • Esta é uma ferramenta não oficial - certifique-se de cumprir os termos de serviço da API da Questrade
  • Sempre verifique as decisões de negociação de forma independente antes de executar negociações

Desenvolvimento

Estrutura do Projeto

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

Compilação

npm run build

Limpeza

npm run clean

Licença

MIT