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-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-server
🔒 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/DerechoVirtual/outlook-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server