Instantly

Gerencie campanhas de e-mail e leads usando a API v2 do Instantly.ai.

Documentação

Instantly MCP Server (Python)

Um servidor leve e robusto do Model Context Protocol (MCP) para a Instantly.ai V2 API, construído com FastMCP.

Recursos

  • 38 ferramentas em 6 categorias (contas, campanhas, leads, e-mails, análises, trabalhos em segundo plano)
  • Suporte a transporte duplo: HTTP (implantação remota) + stdio (local)
  • Carregamento preguiçoso: Reduza a janela de contexto carregando apenas categorias específicas de ferramentas
  • Suporte multi-tenant: Chaves de API por solicitação para implantações HTTP
  • Tratamento abrangente de erros: Mensagens de erro detalhadas e acionáveis
  • Limitação de taxa: Rastreamento automático a partir dos cabeçalhos de resposta da API
  • Tempos limite dinâmicos: Tempos limite estendidos para operações de busca e em massa

Início Rápido

Instalação

# Clone or navigate to the repository
cd instantly-mcp-python

# Install with pip
pip install -e .

# Or install dependencies directly
pip install fastmcp httpx pydantic python-dotenv

Configuração

Defina sua chave de API do Instantly:

export INSTANTLY_API_KEY="your-api-key-here"

Ou crie um arquivo .env:

INSTANTLY_API_KEY=your-api-key-here

Executando o Servidor

Modo HTTP (Recomendado para Implantação Remota)

# Using FastMCP CLI
fastmcp run src/instantly_mcp/server.py --transport http --port 8000

# Using Python directly
python -m instantly_mcp.server --transport http --port 8000

# Or with uvicorn for production
uvicorn instantly_mcp.server:mcp.app --host 0.0.0.0 --port 8000

Modo stdio (Desenvolvimento Local)

# Using FastMCP CLI
fastmcp run src/instantly_mcp/server.py

# Using Python directly
python -m instantly_mcp.server

Categorias de Ferramentas

Contas (6 ferramentas)

FerramentaDescrição
list_accountsListar contas de e-mail com filtragem
get_accountObter detalhes da conta e status de aquecimento
create_accountCriar conta com credenciais IMAP/SMTP
update_accountAtualizar configurações da conta
manage_account_statePausar, retomar, controle de aquecimento, testar vitals
delete_account⚠️ Excluir conta permanentemente

Campanhas (8 ferramentas)

FerramentaDescrição
create_campaignCriar campanha de e-mail (processo em duas etapas)
list_campaignsListar campanhas com paginação
get_campaignObter detalhes da campanha e sequências
update_campaignAtualizar configurações da campanha
activate_campaignIniciar envio da campanha
pause_campaignParar envio da campanha
delete_campaign⚠️ Excluir campanha permanentemente
search_campaigns_by_contactEncontrar campanhas em que um contato está inscrito

Leads (12 ferramentas)

FerramentaDescrição
list_leadsListar leads com filtragem
get_leadObter detalhes do lead
create_leadCriar lead individual
update_leadAtualizar lead (⚠️ custom_variables substitui tudo)
list_lead_listsListar listas de leads
create_lead_listCriar lista de leads
update_lead_listAtualizar lista de leads
get_verification_stats_for_lead_listObter estatísticas de verificação de e-mail
add_leads_to_campaign_or_list_bulkAdicionar em massa até 1.000 leads
delete_lead⚠️ Excluir lead permanentemente
delete_lead_list⚠️ Excluir lista de leads permanentemente
move_leads_to_campaign_or_listMover/copiar leads entre campanhas/listas

E-mails (6 ferramentas)

FerramentaDescrição
list_emailsListar e-mails com filtragem
get_emailObter detalhes do e-mail
reply_to_email🚨 Enviar resposta de e-mail real
count_unread_emailsContar e-mails não lidos na caixa de entrada
verify_emailVerificar entregabilidade do e-mail
mark_thread_as_readMarcar thread de e-mail como lida

Análises (3 ferramentas)

FerramentaDescrição
get_campaign_analyticsMétricas da campanha (aberturas, cliques, respostas)
get_daily_campaign_analyticsDesempenho dia a dia
get_warmup_analyticsMétricas de aquecimento da conta

Trabalhos em Segundo Plano (2 ferramentas)

FerramentaDescrição
list_background_jobsListar trabalhos em segundo plano assíncronos com paginação
get_background_jobObter detalhes de um trabalho em segundo plano específico

Carregamento Preguiçoso (Otimização da Janela de Contexto)

Reduza o uso da janela de contexto carregando apenas as categorias que você precisa:

# Load only accounts and campaigns (14 tools instead of 38)
export TOOL_CATEGORIES="accounts,campaigns"

# Load only leads and analytics
export TOOL_CATEGORIES="leads,analytics"

Categorias válidas: accounts, campaigns, leads, emails, analytics, background_jobs

Métodos de Autenticação

O servidor suporta vários métodos de autenticação para flexibilidade:

1. Autenticação Baseada em URL

Inclua sua chave de API diretamente no caminho da URL:

https://your-server.com/mcp/YOUR_API_KEY

2. Autenticação por Cabeçalho

URL: https://your-server.com/mcp
Header: Authorization: YOUR_API_KEY

Nota: O prefixo do token Bearer é opcional

3. Cabeçalho Personalizado

URL: https://your-server.com/mcp
Header: x-instantly-api-key: YOUR_API_KEY

4. Variável de Ambiente

export INSTANTLY_API_KEY="your-api-key-here"

Configuração do Cliente MCP

Claude Desktop

Adicione ao ~/Library/Application Support/Claude/claude_desktop_config.json:

Modo stdio (Local)

{
  "mcpServers": {
    "instantly": {
      "command": "python",
      "args": ["-m", "instantly_mcp.server"],
      "env": {
        "INSTANTLY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Modo HTTP com Autenticação por URL (Recomendado)

{
  "mcpServers": {
    "instantly": {
      "url": "https://your-server.com/mcp/YOUR_API_KEY"
    }
  }
}

Modo HTTP com Autenticação por Cabeçalho

{
  "mcpServers": {
    "instantly": {
      "url": "https://your-server.com/mcp",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "your-api-key-here"
      }
    }
  }
}

Cursor IDE

Adicione ao ~/.cursor/mcp.json:

Com Autenticação por URL

{
  "mcpServers": {
    "instantly": {
      "url": "https://your-server.com/mcp/YOUR_API_KEY"
    }
  }
}

Com Autenticação por Cabeçalho

{
  "mcpServers": {
    "instantly": {
      "url": "https://your-server.com/mcp",
      "transport": "streamable-http",
      "headers": {
        "x-instantly-api-key": "your-api-key-here"
      }
    }
  }
}

Implantação na Plataforma de Aplicativos DigitalOcean

Especificação do Aplicativo

name: instantly-mcp
services:
  - name: instantly-mcp
    source:
      git:
        branch: main
        repo_clone_url: https://github.com/your-username/instantly-mcp-python.git
    build_command: pip install -e .
    run_command: python -m instantly_mcp.server --transport http --port 8080
    http_port: 8080
    instance_size_slug: basic-xxs
    instance_count: 1
    envs:
      - key: INSTANTLY_API_KEY
        scope: RUN_TIME
        type: SECRET
      - key: PORT
        scope: RUN_TIME
        value: "8080"

Dockerfile (Alternativa)

FROM python:3.11-slim

WORKDIR /app

COPY pyproject.toml .
COPY src/ src/

RUN pip install -e .

EXPOSE 8000

CMD ["python", "-m", "instantly_mcp.server", "--transport", "http", "--host", "0.0.0.0", "--port", "8000"]

Modo HTTP Multi-Tenant

Para implantações que atendem vários usuários, o servidor suporta chaves de API por solicitação:

# Start server without default API key
python -m instantly_mcp.server --transport http --port 8000

# Clients provide API key via header
curl -X POST http://localhost:8000/mcp \
  -H "x-instantly-api-key: user-specific-api-key" \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/list"}'

Tratamento de Erros

O servidor fornece mensagens de erro detalhadas e acionáveis:

{
  "error": {
    "code": "invalid_api_key",
    "message": "Instantly API key is required. Provide via:\n  - INSTANTLY_API_KEY environment variable\n  - api_key parameter\n  - x-instantly-api-key header (HTTP mode)"
  }
}

Limitação de Taxa

O servidor rastreia automaticamente os limites de taxa a partir dos cabeçalhos de resposta da API:

# Access via get_server_info tool
{
  "rate_limit": {
    "remaining": 95,
    "limit": 100,
    "reset_at": "2024-01-15T12:00:00"
  }
}

Estrutura do Projeto

instantly-mcp-python/
├── src/
│   └── instantly_mcp/
│       ├── __init__.py          # Package exports
│       ├── server.py            # FastMCP server (~180 lines)
│       ├── client.py            # API client (~200 lines)
│       ├── models/              # Pydantic models
│       │   ├── __init__.py
│       │   ├── common.py        # Pagination
│       │   ├── accounts.py      # Account models
│       │   ├── campaigns.py     # Campaign models
│       │   ├── leads.py         # Lead models
│       │   ├── emails.py        # Email models
│       │   └── analytics.py     # Analytics models
│       └── tools/               # Tool implementations
│           ├── __init__.py      # Lazy loading logic
│           ├── accounts.py      # 6 account tools
│           ├── campaigns.py     # 8 campaign tools
│           ├── leads.py         # 12 lead tools
│           ├── emails.py        # 6 email tools
│           ├── analytics.py     # 3 analytics tools
│           └── background_jobs.py # 2 background job tools
├── pyproject.toml               # Dependencies
├── env.example                  # Environment template
└── README.md                    # This file

Comparação com a Versão TypeScript

AspectoTypeScriptPython FastMCP
Linhas de Código~5.000+~1.500
Registro de FerramentasManipuladores manuaisDecorador @mcp.tool
Validação de EntradaEsquemas ZodPydantic (automático)
Mensagens de ErroManualAutomático do Pydantic
Servidor HTTPTransporte personalizadoIntegrado
Janela de ContextoEsquemas maioresMenor, mais limpo

Referência da API

Para documentação detalhada da API, consulte: Instantly V2 API Docs

Licença

Licença MIT

Contribuindo

Contribuições são bem-vindas! Por favor, abra uma issue ou PR.