iris
iris
Un servidor de correo de Microsoft 365 para agentes de IA que no pueden enviar correo.
No es que «no quiera»: es que «no puede». iris solicita el ámbito delegado Mail.ReadWrite de Graph y nunca Mail.Send. El token de acceso que posee no tiene ninguna capacidad de transmitir un mensaje, por lo que ningún prompt, ningún jailbreak ni ningún bug en este código puede hacer que uno salga. Escribe borradores en una carpeta de tu buzón. Abres Outlook y pulsas Enviar.
Ese es todo el diseño. Todo lo demás es detalle.
Por qué esta forma
La preocupación habitual a la hora de dar a un agente acceso a tu buzón es que envíe algo que no autorizaste — a la persona equivocada, con el tono equivocado, o porque alguien lo convenció para hacerlo. La respuesta habitual es un prompt de confirmación, que es una salvaguarda: código que pide permiso, y el código puede ser eludido.
iris, en cambio, elimina la capacidad. Microsoft Graph rechazará cualquier intento de envío realizado con este token, porque la pantalla de consentimiento que aprobaste nunca incluyó ese permiso. La frontera de seguridad es de Microsoft, no de este programa, y se cumple incluso si este programa se equivoca.
La contrapartida es real: hay un humano en el bucle en cada mensaje, por diseño. Si quieres envío autónomo, iris no es la herramienta adecuada.
Related MCP server: mcp-outlook-mail
Instalación
uvx iris-mcp # run without installing
pip install iris-mcpPython 3.10+.
Configuración
Debes registrar tu propia aplicación de Entra. No hay un registro de aplicación compartido ni un servicio alojado: iris se comunica directamente desde tu máquina hacia tu inquilino. Esto es deliberado: una aplicación compartida significaría confiar en un ID de cliente ajeno con acceso a tu correo.
Centro de administración de Entra → Registros de aplicaciones → Nuevo registro. Un único inquilino es suficiente. No se necesita URI de redirección.
Autenticación → Configuración → activa Permitir flujos de clientes públicos. El inicio de sesión con código de device necesita esto. No se usa ningún secreto de cliente en ningún lugar.
Permisos de API → Microsoft Graph → Delegado → añade
Mail.ReadWrite. No agregues nada más. No agreguesMail.Send— si está presente, la garantía anterior queda anulada.Copia el ID de aplicación (cliente) y el ID de directorio (inquilino). Ninguno de los dos es un secreto.
Después, añade iris a tu cliente MCP:
{
"mcpServers": {
"iris": {
"command": "uvx",
"args": ["iris-mcp"],
"env": {
"IRIS_CLIENT_ID": "<application client id>",
"IRIS_TENANT_ID": "<directory tenant id>"
}
}
}
}Inicia sesión una vez: llama a iris_login, abre la URL, introduce el código y luego llama a iris_login_finish. La caché de tokens se escribe al lado del servidor, con modo 600.
Herramientas
Herramienta | Función |
| Inicia el inicio de sesión con código de dispositivo; devuelve una URL y un código |
| Completa el inicio de sesión; es seguro llamarlo repetidamente mientras escribes el código |
| Indica quién ha iniciado sesión, qué scopes tiene y si Graph es accesible |
| Escribe un borrador (para/CC/CCO, asunto, cuerpo o HTML, reply-to opcional) |
| Lista lo que está esperando en la carpeta de borradores |
| Modifica un borrador in situ |
| Elimina un borrador; requiere |
Dónde van los borradores
En una carpeta de correo dedicada de nivel superior, por defecto AI Drafts (IRIS_DRAFT_FOLDER). Se crea la primera vez que se usa. Si prefieres la carpeta normal de Borradores, define la variable con una cadena vacía.
Son borradores reales y Outlook los envía con normalidad, pero como viven en su propia carpeta, no aparecen en la vista de Borradores. Ese es el objetivo: el correo escrito por un agente queda en un lugar donde tienes que ir a mirar, en lugar de mezclarse con tus propios mensajes a medio terminar.
Un detalle que conviene saber: la función createReply de Graph coloca primero una respuesta en Borradores, así que iris la mueve y un movimiento asigna un nuevo id al mensaje.
Otros controles
Lista de destinatarios permitidos —
recipients.allow, una dirección o dominio por línea. Si no existe el archivo o está vacío, todos los destinatarios están permitidos. Puedes apuntarIRIS_ALLOWLISTa otro lugar si lo prefieres.Interruptor de apagado — crea un archivo
DISABLEDal lado del servidor, o defineIRIS_DISABLED=1, y toda herramienta se niega a actuar.Registro de auditoría — cada llamada se agrega a
audit.log(IRIS_AUDIT_LOG).
Límites
Sin archivos adjuntos. Sin buzones compartidos ni delegados: solo /me. No se admite el anidamiento de carpetas mediante parentFolderId. El inicio de sesión es de código de dispositivo delegado como cliente público, por lo que el radio de explosión es exactamente un buzón: tuyo.
Seguridad
La garantía de no envío, cómo verificarla tú mismo y —igual de importante— qué puede alcanzar iris con Mail.ReadWrite: consulta SECURITY.md.
Licencia
MIT — consulta LICENSE.
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
- AlicenseCqualityDmaintenanceEnables AI agents to create Gmail drafts safely using the Gmail API, without sending emails.11MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with Microsoft 365 Outlook Mail, allowing email operations via natural language.10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Microsoft Outlook emails through the Microsoft Graph API, supporting operations like listing, reading, sending, and moving emails.MIT
- AlicenseAqualityAmaintenanceEnables AI agents to read and manage Microsoft 365/Outlook email and calendar, with destructive actions (send email, create event) requiring human approval.8MIT
Related MCP Connectors
Authenticated email gateway for AI agents — per-agent inboxes, HITL approval, SPF/DKIM verified.
Authenticated email gateway for AI agents — per-agent inboxes, HITL approval, SPF/DKIM verified.
Governed email for AI agents (Mailbuttons / mbag.ai): sandbox inboxes, policy gate, audit log.
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/SuperAngryMonkey/iris'
If you have feedback or need assistance with the MCP directory API, please join our Discord server