Fastmail MCP Server

Um servidor de código aberto que dá aos assistentes de IA acesso completo a e-mails, calendários e contatos do Fastmail via JMAP.

Documentação

Fastmail MCP Server

Um servidor Model Context Protocol (MCP) para Fastmail. Permite que qualquer assistente de IA compatível com MCP leia, pesquise, envie e gerencie e-mails, calendários e contatos em uma conta Fastmail por meio do protocolo JMAP.

Pré-requisitos

  • Node.js 18 ou posterior
  • Uma conta Fastmail (plano Standard ou Professional)
  • Um token de API Fastmail com acesso JMAP

Configuração

1. Gerar um token de API Fastmail

  1. Faça login no Fastmail
  2. Vá para Configurações → Privacidade e Segurança → Gerenciar tokens de API
  3. Clique em Novo token de API
  4. Conceda acesso a E-mail, Calendários e Contatos (leitura e escrita)
  5. Copie o token gerado

2. Instalação

npm install @jordonh19/fastmail-mcp-server

Ou execute diretamente:

npx @jordonh19/fastmail-mcp-server

3. Configuração

Este servidor MCP funciona com qualquer assistente de IA que suporte o Model Context Protocol. Abaixo estão exemplos para clientes MCP populares.

Claude Desktop

Adicione à sua configuração do Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "fastmail": {
      "command": "npx",
      "args": ["@jordonh19/fastmail-mcp-server"],
      "env": {
        "FASTMAIL_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Claude Code CLI

export FASTMAIL_API_TOKEN="your-api-token-here"
claude mcp add fastmail -- npx @jordonh19/fastmail-mcp-server

Cursor

Adicione à sua configuração MCP do Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "fastmail": {
      "command": "npx",
      "args": ["@jordonh19/fastmail-mcp-server"],
      "env": {
        "FASTMAIL_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Windsurf

Adicione à sua configuração MCP do Windsurf (~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "fastmail": {
      "command": "npx",
      "args": ["@jordonh19/fastmail-mcp-server"],
      "env": {
        "FASTMAIL_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

VS Code

Adicione à sua configuração MCP do VS Code (.vscode/mcp.json):

{
  "servers": {
    "fastmail": {
      "command": "npx",
      "args": ["@jordonh19/fastmail-mcp-server"],
      "env": {
        "FASTMAIL_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Outros clientes MCP

Para qualquer cliente compatível com MCP, execute o servidor com a variável de ambiente FASTMAIL_API_TOKEN definida:

FASTMAIL_API_TOKEN="your-api-token-here" npx @jordonh19/fastmail-mcp-server

O servidor se comunica via stdio por padrão, seguindo o protocolo de transporte MCP padrão. Para executar via HTTP, use a flag --transport:

FASTMAIL_API_TOKEN="your-api-token-here" npx @jordonh19/fastmail-mcp-server --transport http --port 3000

Ferramentas

E-mail

  • search_emails: Pesquisar e-mails por caixa de correio, texto, remetente, intervalo de datas, anexos e mais.
  • get_email: Obter o conteúdo completo do e-mail por ID.
  • get_email_headers: Obter cabeçalhos selecionados do e-mail sem retornar o corpo completo da mensagem.
  • get_thread: Obter todos os e-mails de uma conversa em thread.
  • get_unread_emails: Recuperar rapidamente e-mails não lidos, opcionalmente filtrados por caixa de correio.
  • get_latest_emails: Obter os e-mails mais recentes de todas ou de uma caixa de correio específica.
  • get_mailbox_emails: Listar e-mails em uma caixa de correio específica com paginação.
  • get_email_attachments: Listar anexos de um e-mail sem retornar o corpo completo da mensagem.
  • send_email: Redigir e enviar um novo e-mail.
  • reply_email: Responder ou responder a todos em um e-mail.
  • forward_email: Encaminhar um e-mail para novos destinatários.
  • create_draft: Salvar um e-mail como rascunho sem enviar.
  • send_draft: Enviar um rascunho de e-mail salvo anteriormente.
  • move_email: Mover um e-mail para uma caixa de correio diferente.
  • add_labels: Adicionar rótulos de caixa de correio a um e-mail preservando as atribuições de caixa existentes.
  • remove_labels: Remover rótulos de caixa de correio de um e-mail preservando outras atribuições de caixa.
  • update_email_flags: Marcar e-mails como lidos/não lidos ou sinalizados/não sinalizados.
  • delete_email: Mover para a Lixeira ou excluir permanentemente.
  • bulk_email_action: Executar ações em vários e-mails de uma vez.
  • bulk_add_labels: Adicionar rótulos de caixa de correio a vários e-mails de uma vez.
  • bulk_remove_labels: Remover rótulos de caixa de correio de vários e-mails de uma vez.
  • archive_email: Mover um ou mais e-mails para a caixa de correio Arquivo.
  • mark_mailbox_read: Marcar todos os e-mails de uma caixa de correio como lidos.
  • get_mailbox_stats: Obter contagens compactas de não lidos, e-mails e threads por caixa de correio.
  • get_account_summary: Obter uma visão geral compacta da conta com totais de e-mails únicos e principais caixas de correio.
  • download_attachment: Baixar um anexo de e-mail por ID de blob.
  • one_click_unsubscribe: Enviar uma solicitação de cancelamento de assinatura com um clique para um e-mail.

Caixa de correio

  • list_mailboxes: Listar todas as caixas de correio ou pastas com funções e contagens de e-mails.
  • create_mailbox: Criar uma nova caixa de correio ou pasta.
  • rename_mailbox: Renomear uma caixa de correio ou pasta existente.
  • delete_mailbox: Excluir uma caixa de correio ou pasta, opcionalmente com exclusão forçada.

Calendário

  • list_calendars: Listar todos os calendários com nomes, cores e visibilidade.
  • get_calendar_events: Pesquisar ou listar eventos de calendário por intervalo de datas, calendário ou título.
  • get_calendar_event: Obter detalhes completos de um evento de calendário específico.
  • create_calendar_event: Criar um novo evento de calendário com local, participantes e alertas.
  • update_calendar_event: Atualizar um evento de calendário existente.
  • delete_calendar_event: Excluir um evento de calendário.

Contatos

  • list_address_books: Listar todos os catálogos de endereços ou grupos de contatos.
  • search_contacts: Pesquisar contatos por nome, e-mail ou outros critérios.
  • get_contact: Obter detalhes completos de um contato específico.
  • create_contact: Criar um novo contato com e-mail, telefone, organização e mais.
  • update_contact: Atualizar as informações de um contato existente.
  • delete_contact: Excluir um contato.

Identidade

  • get_identities: Listar identidades de remetente disponíveis.

Diagnóstico

  • check_function_availability: Verificar quais grupos de recursos do Fastmail e capacidades do cliente MCP estão disponíveis, com orientações de configuração para acesso ausente.

Modos de transporte

O servidor suporta dois modos de transporte:

stdio (padrão)

Transporte padrão de entrada/saída. Usado pela maioria dos clientes MCP (Claude Desktop, Cursor, VS Code, etc.):

FASTMAIL_API_TOKEN="your-token" npx @jordonh19/fastmail-mcp-server

HTTP (Streamable HTTP)

Executa como um servidor HTTP para acesso remoto ou cenários com vários clientes:

FASTMAIL_API_TOKEN="your-token" npx @jordonh19/fastmail-mcp-server --transport http --port 3000

O transporte HTTP expõe um único endpoint /mcp que suporta o protocolo MCP Streamable HTTP.

Painel Web UI

Ao executar em modo HTTP, um painel web integrado está disponível na raiz do servidor. Ele oferece:

  • Log de chamadas de ferramentas em tempo real — veja cada invocação de ferramenta MCP em tempo real via SSE
  • Rastreamento de conexões — monitore conexões ativas de clientes MCP
  • Tempo de atividade do servidor — status de saúde em uma olhada

Na inicialização, o servidor imprime um token de acesso único no console. Abra http://localhost:<port>/ em um navegador e insira o token para fazer login. O token está vinculado a um cookie HttpOnly, portanto nunca aparece em URLs.

Extensão Claude Desktop (DXT)

Uma extensão .dxt pré-empacotada pode ser criada para instalação com um clique no Claude Desktop:

npm run build:dxt

Isso gera fastmail-mcp-server-v<version>.dxt na raiz do projeto. Clique duas vezes no arquivo (ou arraste-o para o Claude Desktop) para instalar. O Claude solicitará seu token de API Fastmail no primeiro uso.

Configuração

O servidor pode ser configurado por meio de variáveis de ambiente ou de um arquivo de configuração JSON.

Variáveis de ambiente

  • FASTMAIL_API_TOKEN: Obrigatório. Token de API Fastmail com acesso JMAP.

Arquivo de configuração

Crie um arquivo .fastmail-mcp.json na raiz do seu projeto ou no diretório inicial:

{
  "transport": "stdio",
  "port": 3000
}

O servidor procura arquivos de configuração nesta ordem:

  1. ./.fastmail-mcp.json (diretório atual)
  2. ~/.fastmail-mcp.json (diretório inicial)

Variáveis de ambiente e flags de CLI sempre têm precedência sobre os valores do arquivo de configuração.

Desenvolvimento

Consulte CONTRIBUTING.md para diretrizes detalhadas de desenvolvimento.

git clone https://github.com/Jordonh18/fastmail-mcp-server.git
cd fastmail-mcp-server
npm install
npm run build
npm test

Scripts

ComandoDescrição
npm run buildCompilação TypeScript
npm run build:dxtBuild + empacotamento como extensão .dxt do Claude Desktop
npm run devBuild em modo de observação
npm testExecutar testes (Vitest)
npm run test:coverageTestes com cobertura v8
npm run typecheckVerificação de tipos sem emitir

Execute localmente:

FASTMAIL_API_TOKEN="your-token" node dist/index.js

Licença

MIT