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-mcpShow me my unread emails from today"
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 · MCP de Outlook / Microsoft 365 para Claude
Servidor MCP (Model Context Protocol) que da a un agente (Claude Desktop, Claude Code, Cowork…) control completo sobre el correo de una cuenta de Outlook.com, Hotmail, Live o Microsoft 365 / Office 365: leer, buscar, ver conversaciones, descargar adjuntos, crear carpetas y borradores, mover, archivar, enviar, responder y reenviar.
Usa la API oficial Microsoft Graph con OAuth2 — no IMAP, porque Microsoft desactivó la autenticación básica tanto en Exchange Online como en Outlook.com.
🔒 Sin credenciales en el repositorio. Todo se configura por variables de entorno. La sesión se crea con
python authorize.pyy se guarda entoken.json, que está en.gitignore. Aquí no hay ningún secreto.
🧰 Herramientas (18)
Lectura (siempre disponibles)
Tool | Qué hace |
| Estado de la cuenta: usuario, candados y carpetas con nº de mensajes/no leídos |
| Todas las carpetas y subcarpetas, con su id |
| Lista los mensajes más recientes de una carpeta (paginado, no marca leído) |
| Busca por remitente, destinatario, asunto, texto, fechas, no leídos, con adjuntos |
| Busca con la sintaxis KQL de Outlook ( |
| Lee un mensaje completo (cabeceras, cuerpo en texto, adjuntos) |
| Muestra el hilo entero al que pertenece un mensaje |
| Descarga un adjunto (base64 o a disco) |
Escritura reversible (siempre disponibles)
Tool | Qué hace |
| Marca leído / no leído |
| Marca para seguimiento (bandera) / quita la marca |
| Crea una carpeta (o subcarpeta) |
| Guarda un borrador en Borradores (no envía) |
Mover / archivar / eliminados — requieren OUTLOOK_ALLOW_MODIFY=1
Tool | Qué hace |
| Mueve un mensaje a otra carpeta |
| Mueve el mensaje a la carpeta Archivo (reversible) |
| Envía a Elementos eliminados (nunca borra permanente; recuperable) |
Envío — requieren OUTLOOK_ALLOW_SEND=1
Tool | Qué hace |
| Envía un correo nuevo (con adjuntos opcionales) |
| Responde al remitente o a todos (mantiene el hilo) |
| Reenvía un mensaje con sus adjuntos |
Related MCP server: outlook-mcp
🔒 Seguridad
Candados por variable de entorno, apagados por defecto: enviar (
OUTLOOK_ALLOW_SEND) y mover/archivar/eliminar (OUTLOOK_ALLOW_MODIFY). Con ellos apagados, esas tools devuelven un error claro y no hacen nada.Leer nunca marca como leído (Graph no altera
isReadal leer un mensaje).No existe borrado permanente: no hay ninguna tool que haga
DELETEen Graph; «eliminar» mueve a Elementos eliminados, recuperable.El token (
token.json) y el.envestán en.gitignorey no se suben.
⚙️ Instalación
1) Requisitos
Python 3.9+
pip install -r requirements.txt(solo el SDKmcp; el resto es librería estándar)
2) Iniciar sesión (una vez, 1 minuto) — sin registrar nada en Azure
python authorize.py # muestra un código -> microsoft.com/deviceloginPor defecto usa el cliente público de Microsoft «Microsoft Graph Command Line Tools», así que
no hay que registrar ninguna aplicación: abres el enlace, pegas el código, inicias sesión con
tu cuenta de Outlook/Microsoft 365 y ya está. authorize.py guarda token.json y a partir de ahí
el servidor refresca el token solo.
https://entra.microsoft.com → Aplicaciones → Registros de aplicaciones → Nuevo registro.
Nombre:
outlook-mcp. Tipos de cuenta: «Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft» (o solo personales, según tu caso).Copia el Id. de aplicación (cliente) →
OUTLOOK_CLIENT_ID.Autenticación → Configuración avanzada → «Permitir flujos de cliente público» = Sí.
(Opcional) Permisos de API → Microsoft Graph → Delegados:
Mail.ReadWrite,Mail.Send,User.Read,offline_access.
3) Configuración
cp .env.example .env # candados y, si quieres, tu propia app o ruta del token4a) Registrar en Claude Desktop
En claude_desktop_config.json:
{
"mcpServers": {
"outlook": {
"command": "python",
"args": ["C:/ruta/a/outlook-mcp/server.py"],
"env": {
"PYTHONUTF8": "1",
"OUTLOOK_TENANT": "common",
"OUTLOOK_TOKEN_PATH": "C:/ruta/a/outlook-mcp/token.json",
"OUTLOOK_ALLOW_SEND": "0",
"OUTLOOK_ALLOW_MODIFY": "0"
}
}
}
}Reinicia Claude Desktop después de editarlo.
4b) Instalar en Cowork / Claude Code por URL (como plugin)
Este repo incluye .claude-plugin/marketplace.json:
Directorio → Plugins → Añadir marketplace → pega la URL de este repositorio → Sincronizar.
Instala el plugin
outlook.Configura las variables de entorno en el cliente y ejecuta
python authorize.pyuna vez.
🧪 Validación
python test_offline.py # sin credenciales: no necesita cuenta ni red
python test_gate.py # contra la cuenta real (solo lectura)test_offline.pycomprueba, con la red simulada, que cada tool construye la llamada correcta a Graph: que ninguna haceDELETE, que «eliminar» y «archivar» son movimientos de carpeta, el mapeo de nombres de carpeta (papelera→deleteditems…), la construcción de KQL, los destinatarios, el HTML→texto y los adjuntos.test_gate.pydescubre todas las tools por el protocolo MCP, prueba las de lectura contra la cuenta real, comprueba que los candados bloquean envío y eliminación, y hace el handshake por stdio. No envía nada a terceros ni borra ningún correo.
💡 Ejemplos de uso
«¿Qué me ha llegado hoy sin leer?» →
outlook_listar/outlook_buscar«Busca los correos del cliente X con adjunto desde junio» →
outlook_buscar_kql("from:X hasAttachment:true received>=2026-06-01")«Enséñame el hilo completo de esta reclamación» →
outlook_conversacion«Guárdame el PDF del último correo» →
outlook_descargar_adjunto«Prepárame un borrador de respuesta» →
outlook_guardar_borrador
❓ Problemas frecuentes
Síntoma | Causa / solución |
| Ejecuta |
| Falta «Permitir flujos de cliente público» = Sí en Autenticación |
| El registro no admite cuentas personales: cámbialo a multiinquilino + personales, o usa |
| Falta el permiso |
Token caducado tras meses sin uso | Vuelve a ejecutar |
Genérico y sin datos personales en el código. Configúralo con tu propia cuenta.
This server cannot be deployed
Maintenance
Related MCP Connectors
A MCP server for Outlook email that lets you search, read, and draft emails and replies.
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Related MCP Servers
- FlicenseAqualityDmaintenanceA lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.61-
- AlicenseBqualityAmaintenanceMCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.62189 PyPI34MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for sending and managing Microsoft Outlook email via the Microsoft Graph API, including drafts, replies, contacts, and directory search.170 npmMIT
- FlicenseAqualityCmaintenanceAn MCP server that enables reading and managing Microsoft 365 / Outlook emails through Microsoft Graph API, allowing users to list, search, send, draft, and authenticate using device code flow.17-