IMAP MCP Server
by JoaoVitorp33
README.md
# IMAP MCP Server
Servidor MCP (Model Context Protocol) que expõe suas contas de e-mail via IMAP como ferramentas — para usar no ChatGPT (Developer Mode / Connectors) ou no Claude. Funciona com qualquer provedor IMAP padrão: no seu caso, os dois e-mails profissionais (um acessado hoje pelo Nextcloud Mail, outro pelo Roundcube). O Gmail pessoal fica de fora, já que você o conecta por outro plugin no ChatGPT.
Nextcloud Mail e Roundcube são só "vitrines" web — por trás deles sempre existe uma caixa IMAP de verdade, hospedada em algum servidor de e-mail. Este servidor conecta direto nessa caixa, sem depender do Nextcloud/Roundcube estarem abertos.
## O que ele expõe
- `imap_list_accounts` — lista as contas configuradas
- `imap_list_folders` — lista as pastas de uma conta (Inbox, Enviados, Spam...)
- `imap_list_messages` — lista as mensagens mais recentes de uma pasta
- `imap_search_messages` — busca por texto (assunto/remetente/corpo) numa conta
- `imap_search_all_accounts` — busca o mesmo texto nas DUAS contas de uma vez
- `imap_get_message` — lê o conteúdo completo de uma mensagem
- `imap_mark_seen` — marca como lida/não lida (reversível; o servidor não apaga nada)
## Passo 1 — Descobrir o servidor IMAP de cada conta
Você vai precisar, para CADA uma das 2 contas: endereço do servidor IMAP (host), porta, e se usa SSL/TLS. O login é o mesmo e-mail e senha que você já usa no Nextcloud Mail / Roundcube.
**Conta acessada pelo Nextcloud Mail:**
1. Abra o app Mail do Nextcloud → ícone de engrenagem (⚙) → clique na conta → "Configurações da conta" / "Editar conta".
2. Ele mostra os campos IMAP: servidor, porta e tipo de criptografia (normalmente SSL/TLS, porta 993).
**Conta acessada pelo Roundcube:**
1. O Roundcube geralmente não mostra essas configurações direto na interface (quem define é o provedor de hospedagem).
2. Caminhos mais rápidos: veja o painel de controle da hospedagem (cPanel, Plesk, etc.) na seção de contas de e-mail — costuma ter uma página "Configurar cliente de e-mail" com host/porta prontos. Ou pergunte ao suporte/TI responsável pelo domínio.
3. Palpite comum (nem sempre certo): `mail.seudominio.com.br`, porta `993`, SSL/TLS.
Se quiser, me diga os domínios dos dois e-mails (sem me mandar a senha) que te ajudo a sugerir os hosts mais prováveis a testar.
## Passo 2 — Testar as credenciais antes de colocar no servidor (opcional, recomendado)
Com Node instalado localmente, num terminal:
```bash
node -e "
const {ImapFlow} = require('imapflow');
const c = new ImapFlow({host:'SEU_HOST', port:993, secure:true, auth:{user:'seu@email.com', pass:'sua-senha'}, logger:false});
c.connect().then(() => { console.log('OK, conectou!'); return c.logout(); }).catch(e => console.error('ERRO:', e.message));
"
```
(rode `npm install imapflow` numa pasta qualquer antes, se der erro de módulo não encontrado)
## Passo 3 — Subir o código para o GitHub
```bash
cd imap-mcp
git init
git add -A
git config user.email "seu-email@exemplo.com"
git config user.name "Seu Nome"
git commit -m "IMAP MCP server"
git branch -M main
git remote add origin https://github.com/SEU-USUARIO/imap-mcp.git
git push -u origin main
```
(crie o repositório vazio antes em https://github.com/new, nome `imap-mcp`)
## Passo 4 — Deploy no Render (grátis)
1. https://dashboard.render.com → **New +** → **Web Service** → conecte o repositório `imap-mcp`.
2. Confirme:
- Build Command: `npm install && npm run build`
- Start Command: `npm start`
- Plan: Free
3. Em **Environment Variables**, adicione:
- `IMAP_ACCOUNTS` → um JSON com as duas contas, tudo em uma linha só, por exemplo:
```json
[{"id":"trabalho1","label":"Trabalho (Nextcloud)","host":"mail.dominio1.com","port":993,"secure":true,"user":"voce@dominio1.com","pass":"SUA_SENHA_1"},{"id":"trabalho2","label":"Trabalho (Roundcube)","host":"mail.dominio2.com","port":993,"secure":true,"user":"voce@dominio2.com","pass":"SUA_SENHA_2"}]
```
- `MCP_SHARED_SECRET` → invente uma senha longa e aleatória (essencial aqui — sem isso, qualquer um com a URL leria seus e-mails)
4. Clique em **Deploy**. Anote a URL pública gerada, ex: `https://imap-mcp-xxxx.onrender.com`
O endpoint MCP fica em `https://imap-mcp-xxxx.onrender.com/mcp`.
> Nota: no plano free o serviço "dorme" após inatividade e demora ~30-50s pra acordar na primeira chamada seguinte.
## Passo 5 — Conectar no ChatGPT
1. ChatGPT → Settings → Connectors → Advanced → Developer mode (ou Create custom connector, dependendo do plano).
2. Nome: "E-mails (IMAP)".
3. URL: `https://imap-mcp-xxxx.onrender.com/mcp`
4. Autenticação: API Key / Bearer Token, colando o mesmo valor de `MCP_SHARED_SECRET`.
5. Teste pedindo: "busca em todos os meus e-mails por [assunto]" — isso aciona `imap_search_all_accounts`.
## Segurança
- Este servidor guarda as senhas das suas caixas de e-mail como variáveis de ambiente no Render — nunca no código.
- `MCP_SHARED_SECRET` é obrigatório na prática: e-mail é dado sensível.
- O servidor só lê e marca como lida/não lida — não apaga, não move e não envia e-mails. Se quiser essas funções depois, dá pra adicionar.
- Se alguma senha vazar ou precisar trocar, é só gerar uma nova no provedor de e-mail e atualizar a env var `IMAP_ACCOUNTS` no Render (o serviço reinicia sozinho).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues