imap-mail-mcp
Conecta o Claude a uma ou várias contas de e-mail IMAP/SMTP (Zimbra, Exchange, Dovecot, Gmail/Outlook com senha de app) para ler, buscar, enviar e organizar mensagens.
Contas:
list_accountseaccount_infomostram contas configuradas, capacidades IMAP e pasta Enviados; toda ferramenta aceitaaccount=.Pastas:
list_folders(com contagem total/não lidos),create_folder,rename_folder,delete_folder.Busca:
search_emailspor remetente, destinatário, assunto, texto, unseen, flagged, datas, tamanho, limite ouraw_criteriaIMAP direto;search_all_accountsvarre todas as caixas de uma vez.Leitura:
read_email(cabeçalhos, corpo texto/HTML, anexos),get_raw_email(RFC822 completo).Anexos:
download_attachmentsalva um anexo ou todos em disco.Envio:
send_email(To/Cc/Bcc, HTML, anexos, Reply-To, cópia em Enviados),reply_email(com encadeamento, reply-all, citação),forward_email(com anexos originais).Organização:
set_flags(lido/estrela/respondido em lote),move_email(MOVE ou COPY+DELETE),delete_email(com EXPUNGE opcional).
Connects to cPanel-hosted email accounts over IMAP/SMTP, providing tools to search, read, send, move, and manage email messages and attachments.
Provides integration with Dovecot IMAP/SMTP mail servers, enabling email search, reading, sending, replying, forwarding, folder management, and flag operations.
Connects to Gmail via IMAP/SMTP with app passwords, allowing agents to search, read, send, reply, forward, and manage emails and attachments in a Gmail account.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@imap-mail-mcp Search for unread emails from my boss in the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
imap-mail-mcp
Servidor MCP que conecta o Claude (Desktop, Code ou qualquer cliente MCP) a uma ou várias contas de e-mail IMAP/SMTP — Zimbra, Exchange, Dovecot/Postfix, cPanel, hospedagens, Gmail/Outlook com senha de app.
Fala IMAP4rev1 e SMTP direto com o seu servidor; nada passa por terceiros.
Única dependência externa: SDK
mcp. Protocolo e MIME vêm da stdlib do Python.Várias contas ao mesmo tempo: toda ferramenta aceita
account=;search_all_accountsvarre todas as caixas de uma vez.Todas as operações por UID; pastas com acento em UTF-7; busca não-ASCII com
CHARSET UTF-8.
Instalação
Claude Desktop — um clique (.mcpb)
Baixe o imap-mail-mcp-X.Y.Z.mcpb em Releases, abra Claude Desktop → Configurações → Extensões e arraste o arquivo. O Claude pede host, usuário e senha num formulário (a senha vai para o keychain do sistema).
Claude Code / qualquer cliente MCP (PyPI)
claude mcp add imap-mail \
-e IMAP_HOST=mail.empresa.com.br -e SMTP_HOST=mail.empresa.com.br \
-e MAIL_USER=voce@empresa.com.br -e MAIL_PASS='***' \
-- uvx imap-mail-mcpOu no claude_desktop_config.json / .mcp.json:
{
"mcpServers": {
"imap-mail": {
"command": "uvx",
"args": ["imap-mail-mcp"],
"env": { "IMAP_HOST": "...", "SMTP_HOST": "...", "MAIL_USER": "...", "MAIL_PASS": "..." }
}
}
}A partir do código
git clone https://github.com/julioc-barros/imap-mail-mcp && cd imap-mail-mcp
uv sync && uv run imap-mail-mcp # ou: pip install -e . && imap-mail-mcpRelated MCP server: anymail-mcp
Configuração (variáveis de ambiente)
Variável | Padrão | Descrição |
| — | obrigatório |
|
| 993 SSL ou 143 STARTTLS |
|
|
|
| — | obrigatório |
|
| 587 / 465 / 25 |
|
|
|
| — | obrigatórios |
|
|
|
| auto | detecta |
| temp do usuário |
|
|
|
|
|
| limite do corpo em |
|
| apelido da conta principal |
| — | JSON inline com contas adicionais |
| — | caminho de um JSON com contas adicionais |
ATTACH_DIR aceita ~, $HOME, ${HOME}, %USERPROFILE% e %TEMP%. MAIL_FROM aceita Nome <x@y>, x@y ou só Nome (usa MAIL_USER como endereço).
Várias contas
A conta principal vem das variáveis acima. Contas extras vão em MAIL_ACCOUNTS (JSON) ou num arquivo apontado por MAIL_ACCOUNTS_FILE — veja accounts.example.json. Campos omitidos herdam da conta principal, então para várias caixas no mesmo servidor basta nome, usuário e senha:
{ "accounts": [
{ "name": "financeiro", "user": "financeiro@empresa.com.br", "password": "..." },
{ "name": "rh", "user": "rh@empresa.com.br", "password": "..." }
] }Campos por conta: name, user, password, from, imap_host, imap_port, imap_ssl, smtp_host, smtp_port, smtp_security, sent_folder, attach_dir, tls_verify.
No Claude Desktop (.mcpb) o campo "Arquivo de contas adicionais" recebe esse JSON. Guarde o arquivo em local protegido — ele contém senhas.
Uso: search_emails(account="financeiro", unseen=true), send_email(account="rh", ...). account aceita o apelido ou o e-mail; vazio = conta principal.
Ferramentas
Todas aceitam account="" (apelido ou e-mail; vazio = principal).
Tool | O que faz |
| Contas configuradas e qual é a padrão |
| Config ativa, capacidades IMAP, pasta Enviados detectada |
| Mesma busca em todas as contas, agrupada por conta |
| Lista pastas, opcionalmente com total/não lidos |
|
|
| Cabeçalhos + corpo (texto ou HTML) + lista de anexos |
| Fonte RFC822 completa |
| Salva um ou todos os anexos |
| To/Cc/Bcc, texto ou HTML, anexos, Reply-To; cópia em Enviados |
| Responde (ou a todos) com In-Reply-To/References; marca |
| Encaminha com anexos originais |
|
|
| MOVE, ou COPY+DELETE+EXPUNGE se o servidor não suportar |
|
|
| Pastas |
Desenvolvimento
uv sync --group dev
uv run pytest -q
npx -y @anthropic-ai/mcpb validate manifest.json
npx -y @anthropic-ai/mcpb pack . dist/imap-mail-mcp.mcpb # bundle localTeste de integração ponta a ponta pode ser feito contra o GreenMail standalone (-Dgreenmail.setup.test.all), portas 3143/3025.
Publicação
Substitua
julioc-barrosempyproject.toml,manifest.json,server.jsone neste README.No PyPI, crie o projeto
imap-mail-mcpe habilite Trusted Publishing apontando para este repositório / workflowrelease.yml.git tag v0.1.0 && git push --tags— o workflow publica no PyPI, gera o.mcpbe cria o Release.(Opcional) Registro MCP:
mcp-publisher login github && mcp-publisher publishusando oserver.json.
Notas de protocolo
Busca com termo acentuado: um termo por chamada (limitação do
imaplib, um literal por comando). Para mais, useraw_criteria.read_emailmarca como lido por padrão (mark_as_read=falseusaBODY.PEEK).Cópia em Enviados via IMAP
APPEND; se o SMTP já grava (Exchange), usesave_to_sent=false.Gmail / Microsoft 365 exigem senha de aplicativo; OAuth2 não está coberto.
Available Tools
17 toolsaccount_infoB
Mostra a configuração ativa de uma conta (sem senha), capacidades do servidor IMAP e a pasta de Enviados detectada.
Inputs: account.
create_folderC
Cria uma pasta. Use o delimitador do servidor para subpastas (ex.: 'INBOX/Clientes' ou 'INBOX.Clientes').
Inputs: name (required), account.
delete_emailA
Exclui e-mails (marca \Deleted e, se expunge=True, remove definitivamente da pasta). Para 'mover para a lixeira' prefira move_email para a pasta Trash/Lixeira.
Inputs: uids (required), folder (required), account, expunge.
delete_folderC
Remove uma pasta e todas as mensagens nela. Irreversível.
Inputs: name (required), account.
download_attachmentB
Salva anexos de um e-mail em disco. index=-1 salva todos; caso contrário salva só o anexo indicado (índice conforme read_email). dest_dir vazio usa a pasta de anexos da conta. Retorna os caminhos gravados.
Inputs: uid (required), folder (required), index, account, +1 more. Returns: result
forward_emailC
Encaminha um e-mail (corpo em texto + anexos originais) para novos destinatários.
Inputs: to (required), uid (required), folder (required), cc, +4 more.
get_raw_emailC
Retorna a fonte RFC822 completa da mensagem (cabeçalhos brutos + MIME). Útil para diagnóstico.
Inputs: uid (required), folder (required), account, max_chars. Returns: result
list_accountsA
Lista as contas de e-mail configuradas e qual é a padrão.
Inputs: no named parameters.
list_foldersA
Lista todas as pastas (mailboxes) de uma conta. Com with_counts=True inclui total e não lidos (mais lento). account: nome ou e-mail da conta; vazio = conta padrão.
Inputs: account, with_counts. Returns: result
move_emailB
Move e-mails para outra pasta da mesma conta (usa MOVE se o servidor suportar; senão COPY + delete + EXPUNGE).
Inputs: uids (required), folder (required), destination (required), account.
read_emailB
Lê um e-mail completo pelo UID: cabeçalhos, corpo (texto por padrão, ou HTML) e lista de anexos. account: nome ou e-mail da conta; vazio = conta padrão. Use download_attachment para salvar anexos. max_chars=0 usa o limite padrão (MAX_BODY_CHARS).
Inputs: uid (required), folder (required), account, max_chars, +2 more.
rename_folderD
Renomeia uma pasta.
Inputs: name (required), new_name (required), account.
reply_emailA
Responde um e-mail existente mantendo o encadeamento (In-Reply-To/References) e marca-o como respondido. account: nome ou e-mail da conta onde o e-mail está; vazio = conta padrão.
Inputs: uid (required), body (required), folder (required), html, +5 more.
search_all_accountsB
Executa a mesma busca em TODAS as contas configuradas (mesma pasta em cada uma) e devolve os resultados agrupados por conta. Útil para 'o que chegou de novo em todas as caixas'. Erros de uma conta não interrompem as demais.
Inputs: to, text, since, before, +6 more.
search_emailsA
Busca e-mails em uma pasta de uma conta. Retorna os mais recentes primeiro com UID, remetente, assunto, data e flags. account: nome ou e-mail da conta; vazio = conta padrão. Datas no formato YYYY-MM-DD. raw_criteria permite passar critério IMAP SEARCH direto (ex.: 'UNSEEN FROM "x"'), ignorando os demais filtros. Os filtros sender/to/subject/text são substring, case-insensitive.
Inputs: to, text, limit, since, +9 more.
send_emailA
Envia um e-mail via SMTP pela conta indicada (account vazio = conta padrão). Destinatários separados por vírgula ou ponto-e-vírgula. html=True trata body como HTML. attachments = lista de caminhos locais. Grava cópia na pasta Enviados via IMAP quando save_to_sent=True.
Inputs: to (required), body (required), subject (required), cc, +6 more.
set_flagsB
Marca/desmarca flags em um ou mais UIDs: seen (lido), flagged (estrela/importante), answered. Passe True para adicionar, False para remover, omita para não alterar.
Inputs: uids (required), folder (required), seen, account, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Each tool maps to a distinct IMAP action (list, search, read, send, flag, move, delete, folder CRUD). Minor overlaps exist between read_email/get_raw_email and search_emails/search_all_accounts, but descriptions clarify scope (formatted vs raw source; single account vs all accounts).
Mostly consistent verb_noun snake_case pattern: list_folders, search_emails, send_email, move_email, create_folder. The main exception is account_info (noun_noun), which breaks the pattern but does not make the naming chaotic.
17 tools is slightly above the typical 3–15 sweet spot, but each maps to a necessary email action (accounts, folders, search, read/send/reply/forward, attachments, flags, move, delete). No obvious filler tools, so the count is reasonable for a full IMAP client.
Covers core lifecycle: account listing/config, folder CRUD, message search/read/send/reply/forward, attachment download, flags, move, delete. Minor gaps exist (e.g., draft management), but agents can work around them and the core workflows are complete.
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Hosted email MCP for your own Gmail, Outlook.com, Microsoft 365, iCloud or IMAP inbox: read, search, draft, reply in thread, forward and file mail. It moves or flags up to 500 messages in one call, and a send leaves exactly one copy in Sent. A calendar is a separate connection, and connecting one adds diary and scheduling tools.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Search connected email, read and manage messages, draft and send, and manage rules for new mail.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables users to manage email accounts via IMAP/SMTP, including reading, searching, sending emails with attachments and calendar invites, all through natural language interactions with MCP-compatible clients.14MIT
- AlicenseNot gradedqualityDmaintenanceConnects any IMAP/SMTP mailbox to AI agents via MCP, enabling email read, search, send, reply, and management through natural language.13 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables searching, reading full conversations, and sending email across multiple IMAP/SMTP mailboxes from any MCP client, with multi-user support and per-user API tokens.MIT
- FlicenseBqualityBmaintenanceEnables external AI agents to read, send, and manage email over IMAP/SMTP via MCP, including inbox listing, search, drafts, scheduled/batch sending, and operations like reply, archive, and labels.303-