Skip to main content
Glama

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 chromium

Configure as variáveis de ambiente antes do primeiro login:

Variável

Uso

OUTLOOK_MCP_EMAIL

conta que faz login (obrigatório)

OUTLOOK_MCP_PASSWORD

senha dessa conta (obrigatório, só usado no login inicial)

OUTLOOK_MCP_DEFAULT_MAILBOX

e-mail do calendário/caixa gerenciada por padrão (opcional)

OUTLOOK_MCP_DEFAULT_CC

e-mail incluído em CC automático nos envios (opcional)

OUTLOOK_MCP_ORG_DOMAINS

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:8445

Produçã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 indica status: degraded mesmo 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 tools
outlook_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

    B3.4/5.0

    Scored across 11 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness3/5

    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

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.
      30
      43 PyPI
      12
      MIT
    • F
      license
      B
      quality
      C
      maintenance
      MCP 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
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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