outlook-mcp
Click on "Install 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., "@outlook-mcpsearch my emails for meeting notes and show the latest one"
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.
outlook-mcp
Servidor MCP local que conecta o Claude Desktop à sua caixa de e-mail do Outlook (via Microsoft Graph API), para listar, buscar e organizar e-mails direto pela conversa com o Claude.
Estrutura do projeto
MCP Outlook/
├── server.py # entrypoint stdio (Claude Desktop local)
├── server_http.py # entrypoint HTTP (rede local: Termux, Docker)
├── outlook_mcp/ # código do servidor
│ ├── __init__.py
│ ├── auth.py # login MSAL (device code) + cache de token
│ ├── server.py # definição do MCP e das 16 ferramentas
│ └── http_app.py # app Starlette + middleware de auth Bearer
├── docker/
│ └── Dockerfile
├── docs/
│ ├── entra-id.md # registrar o app no Azure AD (passo 1)
│ └── rede-local.md # rodar via Termux/Android/Docker na Wi-Fi
├── requirements.txt
├── .env.example # modelo das variáveis de ambiente
└── token_cache.bin # gerado no 1º login — NUNCA versionarOs dois entrypoints da raiz são atalhos finos: python server.py e
python server_http.py funcionam como antes.
Related MCP server: Outlook MCP Server
1. Registrar um app no Entra ID (Azure AD)
O Graph API exige um app registrado, mesmo para uso 100% pessoal e gratuito.
Passo a passo completo em docs/entra-id.md.
No fim você terá o OUTLOOK_MCP_CLIENT_ID.
2. Instalar dependências
cd outlook-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt3. Configurar variáveis de ambiente
export OUTLOOK_MCP_CLIENT_ID="cole-o-client-id-aqui"
# "consumers" = contas pessoais @outlook/@hotmail (padrão, não precisa mudar)
export OUTLOOK_MCP_TENANT_ID="consumers"No Windows (PowerShell): $env:OUTLOOK_MCP_CLIENT_ID = "...".
Há um modelo com todas as variáveis em .env.example — copie para .env
(já ignorado pelo git) e preencha, ou use como referência.
Para não repetir isso toda vez, você pode salvar essas variáveis direto no
JSON de configuração do Claude Desktop (passo 5).
4. Primeira execução (autorizar a conta)
python server.pyNa primeira vez, o terminal vai mostrar algo como:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin
and enter the code ABCD-1234 to authenticate.Abra o link, cole o código, faça login com sua conta Outlook normal.
O token fica salvo em token_cache.bin (local, não sobe pro git) e é renovado
automaticamente nas próximas execuções.
5. Conectar ao Claude Desktop
Edite o arquivo de configuração do Claude Desktop:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Adicione:
{
"mcpServers": {
"outlook-organizer": {
"command": "C:\\caminho\\completo\\outlook-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\caminho\\completo\\outlook-mcp\\server.py"],
"env": {
"OUTLOOK_MCP_CLIENT_ID": "cole-o-client-id-aqui",
"OUTLOOK_MCP_TENANT_ID": "consumers"
}
}
}
}Reinicie o Claude Desktop. As ferramentas devem aparecer disponíveis na conversa.
Ferramentas disponíveis
Ferramenta | O que faz |
| Lista as pastas de e-mail |
| Lista e-mails de uma pasta (com |
| Mapa da caixa agrupado por remetente, com contagens |
| Busca por termo em toda a caixa |
| Retorna o corpo completo de um e-mail |
| Move um e-mail para outra pasta (aceita nome de exibição, bem-conhecido ou id) |
| Move vários e-mails de uma vez (lotes de 20 via |
| Avalia várias regras de remetente/assunto numa só varredura |
| Aplica as regras avaliadas em |
| Move tudo de um remetente, com |
| Marca vários como lido/não lido em lote |
| Lista as regras de caixa de entrada |
| Cria regra que move e-mails para uma pasta |
| Remove uma regra pelo id |
| Marca como lido/não lido |
| Sinaliza um e-mail para acompanhamento |
Rodando na rede local (Termux / Android / Docker)
Dá pra rodar o servidor 24/7 num celular Android antigo via Termux, fechado à sua Wi-Fi, e conectar o Claude Desktop de outra máquina. Guia completo — incluindo Docker, token de auth e proteção contra DNS rebinding — em docs/rede-local.md.
Trabalhando com volume alto
Para caixas com centenas de e-mails, a ordem que gasta menos contexto:
sender_statsprimeiro — devolve o mapa da caixa (quem manda, quanto, quantos não lidos, até 3 assuntos de exemplo) em poucos KB. Uma listagem equivalente custaria ~7x mais. Um remetente pode misturar tipos de e-mail (fatura e cupom do mesmo endereço) — os 3 exemplos ajudam a notar isso.Para classificar vários remetentes de uma vez,
preview_plan— avalia uma lista de regras numa única varredura (cada mensagem cai na primeira regra que casar) e devolvenao_classificadoscom o que sobrou sem destino. Uma varredura por regra sairia bem mais caro para N regras.move_by_sendercomdry_run=True(o padrão) — confira a contagem antes de executar. Os IDs são filtrados no servidor e nunca trafegam. Usesubject_contains/subject_not_containspara separar remetentes mistos.Para executar um plano de várias regras de uma vez,
apply_plan— mesma lista derulesdopreview_plan, uma varredura,dry_run=Truepor padrão. Evita reexecutarmove_by_senderregra por regra revarrendo a mesma janela, e evita que a caixa mude entre a primeira e a última regra.Só então
list_recent_emailscomfields=["id","de","assunto"]eskippara o que sobrou. Cortar obodyPreviewreduz a resposta em ~75%.
target_folder sempre aceita nome de exibição (ex: 'Financeiro/Recibos'),
nome bem-conhecido ('archive', 'inbox', 'deleteditems') ou id de pasta —
em move_email, move_emails_batch, move_by_sender e apply_plan. Todos
resolvem o nome para o id real antes de chamar o Graph.
Caixas grandes: sender_stats e move_by_sender varrem no máximo max_scan
mensagens por chamada (padrão 400). Ao bater o teto, a resposta traz
atingiu_limite/atingiu_limite_varredura e proximo_skip — repita a
chamada com skip=proximo_skip para continuar de onde parou, em vez de subir
max_scan numa única chamada.
move_emails_batch e mark_as_read_batch agrupam em lotes de 20 numa única
requisição. Atenção: o move troca o ID do e-mail — use os id_novo que
voltam em detalhes_movidos para qualquer passo seguinte. O PATCH do
mark_as_read_batch preserva os ids.
Regras de caixa de entrada (opcional)
As ferramentas list_rules / create_rule / delete_rule exigem o escopo
MailboxSettings.ReadWrite, separado de Mail.*. Esse escopo dá acesso a
todas as configurações da caixa (respostas automáticas, fuso horário etc.),
por isso vem desligado por padrão. Para habilitar:
No Entra ID → seu app → Permissões de APIs → Microsoft Graph → Permissões delegadas → adicione
MailboxSettings.ReadWriteDefina
OUTLOOK_MCP_ENABLE_RULES=1(no ambiente ou noenvdoclaude_desktop_config.json)Apague
token_cache.bine refaça o login para consentir o novo escopo
Sem isso, as três ferramentas devolvem um erro explicando o que falta — o restante do servidor funciona normalmente.
Por decisão de projeto, create_rule não expõe as ações forwardTo,
redirectTo nem permanentDelete do Graph: regra de encaminhamento automático
é o vetor clássico de vazamento de e-mail, e exclusão permanente destrói
mensagem sem passar pela lixeira.
Segurança
token_cache.bincontém tokens de acesso à sua conta — não compartilhe nem suba para repositórios públicos.O app só tem os escopos que você concedeu (Mail.Read/ReadWrite/Send) — não tem acesso a outros dados do Microsoft 365.
O
.gitignoredo projeto já cobretoken_cache.bin,.enve.venv/. Confira comgit statusantes do primeiro commit.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Claude with Microsoft Outlook through the Graph API, providing comprehensive email, calendar, folder management, and rules creation capabilities.19
- AlicenseNot gradedqualityCmaintenanceConnects Claude to Microsoft Outlook through the Microsoft Graph API, enabling email management (list, search, read, send) and calendar operations (list, create, accept, decline, delete events) via OAuth 2.0 authentication.1MIT
- FlicenseNot gradedqualityDmaintenanceProvides Claude Desktop and Claude Code with access to Microsoft 365 email and calendar services via the Microsoft Graph API. It enables users to manage emails, search folders, schedule calendar events, and check availability through natural language commands.
- AlicenseNot gradedqualityBmaintenanceConnects Claude with Microsoft 365 services such as Email, Calendar, Teams, OneDrive, and more through the Microsoft Graph API.4616MIT
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jlfig13/outlook-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server