outlook-mcp
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., "@outlook-mcp What's my schedule for tomorrow?"
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
Outlook/Office365 para agentes de IA — servidor MCP (stdio) + serviço FastAPI (:8445), sem App Registration no Azure AD.
Arquitetura
Claude Code / agente ──(MCP stdio)──► mcp_server ──HTTP──► outlook_service :8445
│
┌───────────────┴───────────────┐
▼ primário ▼ fallback
OWA REST API v2.0 Playwright/Chromium
(token da sessão, TTL 30min) (sessão web logada)Sem App Registration: o token Bearer é extraído da própria sessão web do Outlook (interceptação Playwright), com cache de 30 min e invalidação automática em 401.
11 ferramentas MCP: inbox, inbox compartilhado, enviar e-mail, agenda hoje/semana, detalhes de evento, criar/editar/cancelar evento, disponibilidade, freebusy.
Endpoints REST completos (
/calendario/*,/email/*): use direto por HTTP se preferir (bridges, cron, outros serviços).
⚠️ Sobre o método de login. Este projeto não usa OAuth/App Registration — ele automatiza o login web real do Outlook via Playwright (a senha é lida de uma variável de ambiente e digitada no formulário de login da Microsoft). É um atalho deliberado para evitar burocracia de Azure AD, mas foge do fluxo oficial suportado pela Microsoft: rode isso só com contas que você controla, entenda que a sessão pode quebrar se a Microsoft mudar o formulário de login ou exigir MFA adicional, e prefira uma App Registration + Graph API oficial se isso for rodar em produção para terceiros.
Related MCP server: msgraph-mcp
Instalação
pip install -e .
playwright install chromiumConfigure as variáveis de ambiente antes do primeiro login:
Variável | Uso |
| conta que faz login (obrigatório) |
| senha dessa conta (obrigatório, só usado no login inicial) |
| e-mail do calendário/caixa gerenciada por padrão (opcional) |
| e-mail incluído em CC automático nos envios (opcional) |
| domínios internos da sua organização, separados por vírgula — usado pra distinguir participante interno de externo no FreeBusy (opcional) |
Login (uma vez): inicie o serviço e faça o login web quando o Chromium abrir — a sessão persiste (cookies) e o serviço renova sozinho.
outlook-service # FastAPI em 127.0.0.1:8445Produção (macOS): use launchd/com.outlookmcp.service.plist via install.sh (inclui restart automático). Em Linux, rode outlook-service sob o supervisor de sua preferência (systemd, supervisord etc.) — não há unit pronta ainda.
Registrar o MCP em outro projeto (Claude Code)
.mcp.json do projeto (ou ~/.claude/.mcp.json para todas as sessões):
{
"mcpServers": {
"outlook": {
"command": "outlook-mcp"
}
}
}O MCP fala com
localhost:8445— o serviço precisa estar rodando (mesma máquina).
FreeBusy externo (opcional)
Calendários externos via iCal: copie config/ical_feeds.json.example para ical_feeds.json no diretório do pacote instalado e preencha. ⛔ ical_feeds.json contém tokens privados — está no .gitignore, nunca commite.
Notas de robustez
Token OWA: TTL 30 min + invalidação em 401. Um TTL curto força refresh constante do Chromium de vida longa, o que desgasta o driver com o tempo — 30 min reduz bastante essa frequência sem risco de token vencido (o token real vive ~60 min).
Recomenda-se um watchdog no
/health(o corpo indicastatus: degradedmesmo com HTTP 200) e uma reciclagem preventiva diária do serviço.
Status
O projeto ainda não tem testes automatizados nem CI. Use, reporte problemas, contribua.
Available Tools
11 toolsoutlook_agenda_hojeA
Retorna os eventos de hoje no calendário do Outlook.
Inputs: no named parameters.
outlook_agenda_semanaB
Retorna eventos dos próximos N dias no calendário.
Inputs: dias, usuario.
outlook_cancelar_eventoB
Cancela/exclui um evento do calendário. Chaves alinhadas ao backend FastAPI.
Inputs: titulo_parcial (required), data_busca, apenas_este.
outlook_criar_eventoC
Cria um novo evento no calendário do Outlook.
Inputs: titulo (required), hora_fim (required), data_inicio (required), hora_inicio (required), +3 more.
outlook_detalhes_eventoB
Lê o corpo completo de um evento (útil para obter PNR de voo, link Teams, notas).
Inputs: data (required), titulo (required).
outlook_disponibilidadeC
Consulta a agenda de um usuário gerenciado (ex: nome ou e-mail de outra pessoa).
Inputs: nome_usuario (required), dias.
outlook_editar_eventoB
Edita um evento existente no calendário (título, data, hora ou descrição). Chaves alinhadas ao backend FastAPI.
Inputs: titulo_parcial (required), nova_data, data_busca, novo_titulo, +3 more.
outlook_enviar_emailB
Envia um email via Outlook da conta autenticada.
Inputs: para (required), corpo (required), assunto (required), cc.
outlook_freebusyB
Consulta disponibilidade livre/ocupado de múltiplos participantes para encontrar horário comum.
Inputs: emails (required), data_fim (required), data_inicio (required).
outlook_inboxA
Lista emails do inbox do Outlook da conta autenticada. Retorna remetente, assunto, data e prévia do corpo.
Inputs: limite.
outlook_inbox_compartilhadoA
Lista emails de uma caixa compartilhada do Outlook (ex: agenda@dominio.com).
Inputs: caixa_email (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Most tools have clear distinct purposes: email vs calendar, list vs send vs create/edit/cancel. However, 'outlook_agenda_hoje' and 'outlook_agenda_semana' could overlap when N=1, and 'outlook_disponibilidade' vs 'outlook_freebusy' address similar availability scenarios for single vs multiple users, creating possible misselection.
All tools share the consistent 'outlook_' prefix and snake_case naming. However, the pattern mixes resource-noun names (outlook_inbox, outlook_agenda_hoje, outlook_disponibilidade) with action_verb names (outlook_enviar_email, outlook_criar_evento), and 'outlook_freebusy' is a single string rather than a compound. This is readable but not fully uniform.
With 11 tools, the set is well-scoped for an Outlook email and calendar server. Each tool covers a meaningful core operation without excessive redundancy or trivial additions, fitting comfortably in the ideal range.
Calendar coverage is solid (list, detail, create, edit, delete, availability). Email coverage is incomplete: inbox list returns only previews, and there is no tool to fetch/retrieve the full email body, nor delete or manage emails. This leaves a notable gap for a server intended to handle Outlook email.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
MCP server for e-mail testing: create disposable inboxes, wait for delivery, and extract e-mail content or links - all from your AI agent or test automation workflow. Get a free API key on https://app.zyntra.app/
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.3043 PyPI12MIT
- FlicenseBqualityCmaintenanceMCP server providing AI assistants with full access to Microsoft Outlook email and calendar via the Microsoft Graph API, featuring 26 tools for mail, calendar, contacts, and scheduling with delegated authentication.29-
- AlicenseNot gradedqualityDmaintenanceA Python-based MCP server for Microsoft 365 Outlook email operations using OAuth 2.0 Client Credentials Flow, enabling automated email management for autonomous agents.MIT
- FlicenseNot gradedqualityDmaintenanceOutlook Calendar MCP Server built using FastMCP and Microsoft Graph API. This MCP server allows AI agents to manage Outlook Calendar events through Microsoft Graph.-