Skip to main content
Glama
SuperAngryMonkey

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-mcp

Python 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.

  1. Centro de administración de Entra → Registros de aplicacionesNuevo registro. Un único inquilino es suficiente. No se necesita URI de redirección.

  2. AutenticaciónConfiguració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.

  3. Permisos de API → Microsoft Graph → Delegado → añade Mail.ReadWrite. No agregues nada más. No agregues Mail.Send — si está presente, la garantía anterior queda anulada.

  4. 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

iris_login

Inicia el inicio de sesión con código de dispositivo; devuelve una URL y un código

iris_login_finish

Completa el inicio de sesión; es seguro llamarlo repetidamente mientras escribes el código

iris_auth_status

Indica quién ha iniciado sesión, qué scopes tiene y si Graph es accesible

iris_create_draft

Escribe un borrador (para/CC/CCO, asunto, cuerpo o HTML, reply-to opcional)

iris_list_drafts

Lista lo que está esperando en la carpeta de borradores

iris_update_draft

Modifica un borrador in situ

iris_delete_draft

Elimina un borrador; requiere confirm=true

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 permitidosrecipients.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 apuntar IRIS_ALLOWLIST a otro lugar si lo prefieres.

  • Interruptor de apagado — crea un archivo DISABLED al lado del servidor, o define IRIS_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.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with Microsoft 365 Outlook Mail, allowing email operations via natural language.
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to manage Microsoft Outlook emails through the Microsoft Graph API, supporting operations like listing, reading, sending, and moving emails.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to read and manage Microsoft 365/Outlook email and calendar, with destructive actions (send email, create event) requiring human approval.
    8
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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