CCXT MCP Server

Interaja com mais de 100 APIs de exchanges de criptomoedas usando a biblioteca CCXT.

Documentação

Servidor MCP CCXT

npm version npm downloads GitHub stars License: MIT

Versão em coreano (Korean version)

O Servidor MCP CCXT é um servidor que permite que modelos de IA interajam com APIs de exchanges de criptomoedas por meio do Model Context Protocol (MCP). Este servidor utiliza a biblioteca CCXT para fornecer acesso a mais de 100 exchanges de criptomoedas e suas funcionalidades de negociação.

🚀 Início Rápido

# Install the package globally
npm install -g @lazydino/ccxt-mcp

# Run with default settings
ccxt-mcp

# or run without installation
npx @lazydino/ccxt-mcp

Instalação e Uso

Instalação Global

# Install the package globally
npm install -g @lazydino/ccxt-mcp

Executando com npx

Você pode executá-lo diretamente sem instalação:

# Using default settings
npx @lazydino/ccxt-mcp

# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/config.json

Ver ajuda:

npx @lazydino/ccxt-mcp --help

Configuração

Registrando o Servidor MCP no Claude Desktop

  1. Abra as Configurações do Claude Desktop:

    • Vá até o menu Configurações no aplicativo Claude Desktop
    • Encontre a seção "Servidores MCP"
  2. Adicione um Novo Servidor MCP:

    • Clique no botão "Adicionar Servidor"
    • Nome do servidor: ccxt-mcp
    • Comando: npx @lazydino/ccxt-mcp
    • Argumentos adicionais (opcional): --config /path/to/config.json
  3. Salve e Teste o Servidor:

    • Salve as configurações
    • Teste a conexão com o botão "Testar Conexão"

Métodos de Configuração - Duas Opções

Opção 1: Incluir Informações da Conta Diretamente nas Configurações do Claude Desktop (Método Básico)

Este método inclui as informações da conta CCXT diretamente no arquivo de configurações do Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "ccxt-mcp": {
      "command": "npx",
      "args": ["-y", "@lazydino/ccxt-mcp"],
      "mcpBearerToken": "YOUR_MCP_TOKEN",
      "accounts": [
        {
          "name": "bybit_main",
          "exchangeId": "bybit",
          "apiKey": "YOUR_API_KEY",
          "secret": "YOUR_SECRET_KEY",
          "defaultType": "spot"
        },
        {
          "name": "bybit_futures",
          "exchangeId": "bybit",
          "apiKey": "YOUR_API_KEY",
          "secret": "YOUR_SECRET_KEY",
          "defaultType": "swap"
        }
      ]
    }
  }
}

Usando este método, você não precisa de um arquivo de configuração separado. Todas as configurações são integradas ao arquivo de configuração do Claude Desktop.

Opção 2: Usando um Arquivo de Configuração Separado (Método Avançado)

Para separar as informações da conta em um arquivo de configuração separado, configure da seguinte forma:

  1. Crie um Arquivo de Configuração Separado (ex.: ccxt-config.json):
{
  "mcpBearerToken": "YOUR_MCP_TOKEN",
  "accounts": [
    {
      "name": "bybit_main",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY",
      "defaultType": "spot"
    },
    {
      "name": "bybit_futures",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY",
      "defaultType": "swap"
    }
  ]
}

Importante: O arquivo de configuração deve conter um array accounts no nível raiz, conforme mostrado acima.

Importante: Se você executar o servidor no modo HTTP+SSE (--sse), defina mcpBearerToken no mesmo arquivo de configuração. Os clientes devem enviar Authorization: Bearer <mcpBearerToken> nas requisições.

  1. Especifique o Caminho do Arquivo de Configuração nas Configurações do Claude Desktop:
{
  "mcpServers": {
    "ccxt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@lazydino/ccxt-mcp",
        "--config",
        "/path/to/ccxt-config.json"
      ]
    }
  }
}

Nota: Ao usar um arquivo de configuração separado com a opção --config, o servidor procurará o array accounts diretamente na raiz do arquivo JSON, não no caminho mcpServers.ccxt-mcp.accounts.

  1. Executando com Arquivo de Configuração Externo pela Linha de Comando:
# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/ccxt-config.json

Você pode encontrar um exemplo de arquivo de configuração em config/ccxt-config.example.json no repositório.

Razões para Usar um Arquivo de Configuração Separado:

  • Evita problemas de referência recursiva
  • Separa informações sensíveis como chaves de API
  • Facilita a configuração em múltiplos ambientes (desenvolvimento, teste, produção)
  • Melhor controle de versão do arquivo de configuração

Principais Funcionalidades

  • Recuperação de Informações de Mercado:

    • Listar exchanges
    • Visualizar informações de mercado por exchange
    • Obter informações de preço para símbolos específicos
    • Visualizar informações do livro de ordens para símbolos específicos
    • Pesquisar dados históricos de OHLCV
  • Funções de Negociação:

    • Criar ordens de mercado/limite
    • Cancelar ordens e verificar status
    • Visualizar saldos da conta
    • Verificar histórico de negociações
  • Análise de Negociação:

    • Análise de desempenho diária/semanal/mensal
    • Cálculo de taxa de acerto (últimos 7 dias, 30 dias, todo o período)
    • Proporção média de lucro/perda (múltiplo R)
    • Análise de séries máximas consecutivas de perda/lucro
    • Acompanhamento de variação de ativos
    • Métricas abrangentes de desempenho
    • Reconhecimento de padrões de negociação
    • Cálculos de retorno por período
  • Gerenciamento de Posições:

    • Negociação com proporção de capital (ex.: entrar com 5% do capital da conta)
    • Configuração de alavancagem no mercado futuro (1-100x)
    • Dimensionamento dinâmico de posições (baseado em volatilidade)
    • Implementação de estratégia de compra/venda dividida
  • Gerenciamento de Risco:

    • Configuração de stop loss baseado em indicadores técnicos (ex.: ponto mais baixo entre 10 candles no gráfico de 5 minutos)
    • Stop loss/take profit baseado em volatilidade (múltiplos de ATR)
    • Limite máximo de perda permitida (diária/semanal)
    • Configuração dinâmica de take profit (lucro progressivo)

Como Funciona

User <--> AI Model(Claude/GPT) <--> MCP Protocol <--> CCXT MCP Server <--> Cryptocurrency Exchange API
  1. Usuário: Solicitações como "Me diga o preço do Bitcoin" ou "Compre Ethereum na minha conta da Binance"
  2. Modelo de IA: Entende as solicitações do usuário e determina quais ferramentas/recursos MCP usar
  3. Protocolo MCP: Comunicação padronizada entre a IA e o servidor MCP CCXT
  4. Servidor MCP CCXT: Comunica-se com as APIs de exchanges de criptomoedas usando a biblioteca CCXT
  5. API da Exchange: Fornece dados reais e executa ordens de negociação

Usando com Modelos de IA

Quando registrado no Claude Desktop, você pode fazer os seguintes tipos de solicitações aos modelos de IA:

Cuidados e Prompts Recomendados

Ao usar modelos de IA, considere os seguintes cuidados e use o prompt abaixo para uma negociação eficaz:

Your goal is to execute trades using the ccxt tools as much as possible
Cautions:
- Accurately identify whether it's a futures market or spot market before proceeding with trades
- If there's no instruction about percentage of capital or amount to use, always calculate and execute trades using the entire available capital

Notas:

  • Modelos de IA às vezes confundem negociação futura com negociação à vista.
  • Sem orientação clara sobre o tamanho do capital de negociação, a IA pode ficar confusa.
  • Usar o prompt acima ajuda a comunicar claramente suas intenções de negociação.

Exemplos Básicos de Consulta

Check and compare the current Bitcoin price on binance and coinbase.

Exemplos Avançados de Consulta de Negociação

Gerenciamento de Posições

Open a long position on BTC/USDT futures market in my Bybit account (bybit_futures) with 5% of capital using 10x leverage.
Enter based on moving average crossover strategy and set stop loss at the lowest point among the 12 most recent 5-minute candles.

Análise de Desempenho

Analyze my Binance account (bybit_main) trading records for the last 7 days and show me the win rate, average profit, and maximum consecutive losses.

Análises Detalhadas de Negociação

Analyze my trading performance on the bybit_futures account for BTC/USDT over the last 30 days. Calculate win rate, profit factor, and identify any patterns in my winning trades.
Show me the monthly returns for my bybit_main account over the past 90 days and identify my best and worst trading months.
Analyze my consecutive wins and losses on my bybit_futures account and tell me if I have any psychological patterns affecting my trading after losses.

Desenvolvimento

Compilando a partir do Código Fonte

# Clone repository
git clone https://github.com/lazy-dinosaur/ccxt-mcp.git

# Navigate to project directory
cd ccxt-mcp

# Install dependencies
npm install

# Build
npm run build

Docker

Compilar e Executar com Docker Compose

  1. Crie um arquivo de configuração:
cp config/ccxt-config.example.json config/ccxt-config.json

Em seguida, preencha suas chaves de API reais em config/ccxt-config.json. Também defina mcpBearerToken no mesmo arquivo de configuração. 2. Compile a imagem:

docker compose build
  1. Inicie o servidor MCP em segundo plano (modo SSE em localhost:2298):
docker compose up -d
  1. Verifique o endpoint de saúde local:
curl -H "Authorization: Bearer YOUR_MCP_TOKEN" http://127.0.0.1:2298/healthz

Esta configuração do Compose executa o MCP sobre HTTP+SSE (/sse + /messages) em localhost:2298 para proxy reverso.

Configuração Remota do Cliente MCP

Se o seu cliente MCP for executado em outro host, use um proxy reverso Nginx nesta máquina.

  1. Copie ccxt-mcp.nginx para o local de configuração do seu Nginx e atualize os caminhos dos certificados:
sudo cp ccxt-mcp.nginx /etc/nginx/conf.d/ccxt-mcp.conf
  1. Edite /etc/nginx/conf.d/ccxt-mcp.conf e defina:
  • ssl_certificate
  • ssl_certificate_key
  • Encaminhamento do cabeçalho de autorização (já incluído neste arquivo)
  1. Recarregue o Nginx:
sudo nginx -t && sudo systemctl reload nginx
  1. No seu cliente MCP, configure a URL do servidor MCP para o seu endpoint TLS:
  • URL SSE: https://YOUR_HOSTNAME_OR_IP:42299/sse
  • URL de Mensagens: https://YOUR_HOSTNAME_OR_IP:42299/messages
  • Cabeçalho: Authorization: Bearer YOUR_MCP_TOKEN

Você pode gerar um token forte com:

openssl rand -hex 32

Exemplo de configuração:

{
  "mcpBearerToken": "YOUR_MCP_TOKEN",
  "accounts": [
    {
      "name": "bybit_main",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY"
    }
  ]
}

Nota sobre a porta:

  • 42298 é HTTP (somente redirecionamento)
  • 42299 é HTTPS
  • 2298 vem de CCXT em um teclado de telefone

Se o seu cliente MCP aceitar servidores MCP baseados em comando em vez de configuração por URL, configure ccxt-mcp com:

  • Comando: docker
  • Argumentos:
[
  "run",
  "--rm",
  "-i",
  "-p",
  "127.0.0.1:2298:2298",
  "-v",
  "/absolute/path/to/ccxt-mcp/config/ccxt-config.json:/config/ccxt-config.json:ro",
  "ccxt-mcp:local",
  "--sse",
  "--host",
  "0.0.0.0",
  "--port",
  "2298",
  "--config",
  "/config/ccxt-config.json"
]

Compile a imagem primeiro com docker compose build.

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

📄 Licença

Distribuído sob a Licença MIT. Consulte o arquivo LICENSE para mais informações.

❤️ Suporte

Se você achar este projeto útil, considere dar uma ⭐️ no GitHub!