Iris MCP server
Microsoft 365 mail MCP: reads mail, drafts into Outlook; sending is opt-in (IRIS_ENABLE_SEND).
0 stars57 downloads/wk
Reviews
Write oneNobody has reviewed Iris yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Iris tools (10, 4 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
iris_audit_tailShow the most recent send-audit entries recorded by the worker.
iris_auth_statusReport whether iris is signed in, as whom, and with what scopes.
iris_create_draftwrite actionCompose a message into a mail folder as an unsent draft. It is NOT sent — a human opens Outlook and presses Send.
iris_delete_draftwrite actionDelete a draft. Destructive, so confirm=true is required — set it only after the human has explicitly approved deleting this specific draft.
iris_list_draftsList recent messages sitting in a draft folder. folder selects which one by display name; omit it for the configured default (IRIS_DRAFT_FOLDER), or pass "" / "Drafts" for the normal Outlook Drafts folder.
iris_list_foldersList the mailbox's top-level mail folders (name, id, unread/total counts) so you can pick one to pass as the `folder` argument to iris_create_draft or iris_list_drafts.
iris_loginStart a device-code sign-in for the mailbox. Returns a URL and a code for the human to enter in a browser; then call iris_login_finish() to complete. Only needed once, or after the refresh token lapses.
iris_login_finishComplete a device-code sign-in started with iris_login(). Call after entering the code in the browser. Waits up to ~60s; if the code has not been entered yet, it says so and can simply be called again.
iris_send_draftwrite actionSend an existing draft. This tool exists only because IRIS_ENABLE_SEND=1; a default install cannot send at all. Requires confirm=true, set ONLY after explicit human approval of THIS message. Re-verifies the message is still an unsent draft and re-checks the recipient allowlist before sending.
iris_update_draftwrite actionRevise an existing draft in place. Only the fields you pass are changed.
Public scan report
scanner v0.1.10 · 2026-10-16 · same rubric, same numbers if you re-run it
- Code scan7 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 19 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Iris compares
Against every graded Email MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 90% of 916 Email servers
- Tools
- 10
- the typical Email server has 7
- Tools that change things
- 40%
- typical: 25%. Fewer write tools means less an agent can break
- Downloads a week
- 57
- more than 40% of 235 Email servers with a package
What its tools let an agent do: 6 read · 4 change
Release history: 2 versions in the registry since 2026-09-02, latest 2026-09-25, typically one every 23 days.
Install Iris in Claude Code, Cursor or VS Code
claude mcp add iris -- uvx iris-mcp
What the publisher says
From the Iris repository's README, as published. We do not edit it. Read it on GitHub
iris
A Microsoft 365 mail server for AI agents that does not send email — until you decide it should.
By default iris requests the delegated Graph scope Mail.ReadWrite and never Mail.Send. The access token it holds has no capability to transmit a message, so no prompt, no jailbreak and no bug in this code can make one go out. It writes drafts into a folder in your mailbox; you open Outlook and press Send.
Sending is an explicit opt-in (IRISENABLESEND=1) that requires granting the Mail.Send scope and re-consenting — and even then every send is human-confirmed and allowlist-checked. Leave it off (the default) and the no-send property is structural, as above. See Enabling send.
That is the whole design. Everything else is detail.
Why this shape
The usual worry about giving an agent your mailbox is that it will send something you did not sanction — to the wrong person, with the wrong tone, or because someone talked it into doing so. The common answer is a confirmation prompt, which is a guardrail: code that asks permission, and code can be bypassed.
iris removes the capability instead. Microsoft Graph will reject a send attempt made with this token, because the consent screen you approved never included that permission. The security boundary is Microsoft's, not this program's, and it holds even if this program is wrong.
The trade is real: a human is in the loop on every message, by construction. If you want autonomous sending, iris is the wrong tool.
Install
uvx iris-mcp # run without installing
pip install iris-mcpPython 3.10 or newer. macOS ships Python 3.9, which is too old — mcp requires 3.10+. Use uv (it comes with uvx and manages its own Python), or install a current Python with Homebrew (brew install python@3.12). The system python3 on macOS will not work.
Setup
You must register your own Entra application. There is no shared app registration and no hosted service — iris talks directly from your machine to your tenant. This is deliberate: a shared app would mean trusting someone else's client ID with access to your mail.
tenant is fine. No redirect URI needed.
- Entra admin centre → App registrations → New registration. Single
code sign-in needs this. No client secret is used anywhere.
- Authentication → Settings → enable Allow public client flows. Device
Mail.ReadWrite. For draft-only use (the default), add nothing else and leave Mail.Send off — that omission is what makes the no-send property structural. Add Mail.Send only if you intend to enable sending (see Enabling send).
- API permissions → Microsoft Graph → Delegated → add
is a secret.
- Copy the Application (client) ID and Directory (tenant) ID. Neither
Then add iris to your MCP client:
{
"mcpServers": {
"iris": {
"command": "uvx",
"args": ["iris-mcp"],
"env": {
"IRIS_CLIENT_ID": "<application (client) id>",
"IRIS_TENANT_ID": "<directory (tenant) id>"
}
}
}
}Sign in once: call irislogin, open the URL, enter the code, then call irislogin_finish. The token cache is written next to the server, mode 600.
Deploying to a whole team? See the Administrator Deployment Guide — authorizing iris across a Microsoft 365 tenant: admin consent, per-user assignment, and why it stays the delegated model rather than application permissions.
Clients
iris is a local stdio MCP server: your MCP client launches it as a child process on the same machine. It works with any client that supports local stdio servers — Claude Desktop, Cursor, and the Grok CLI (grok mcp add iris -- uvx iris-mcp) among them.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Iris: common questions
- Is Iris MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Iris safety report
- How do I install Iris?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Iris need an API key?
- No secret keys are declared. It reads 6 settings from the environment.
- Is Iris maintained?
- The last commit was 39 days ago (2026-09-27). The latest release is v0.3.0.
- What can I use instead of Iris?
- Servers from other publishers that do the same job: Outlook MCP server, Fluxmail MCP server and MCPEmails MCP server.
- How does Iris compare with other Email MCP servers?
- safety score 92/100 (higher than 90% of 916 Email servers); tools 10 (the typical Email server has 7); tools that change things 40% (typical: 25%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Iris
Same job from other publishers: the closest match first, then the best rated.
- Outlook MCPMicrosoft Outlook personal accounts: mail, rules, calendar, contacts, to-do, drafts (77 tools).not reviewedEstablishedA
- FluxmailRead, search, draft, send, and organize email through Gmail, Outlook, and IMAP/SMTP mailboxes.not reviewedGrowingB
- MCPEmailsNever-stored live email: read, send and triage Gmail, Outlook / Microsoft 365, or any IMAP mailbox.not reviewedGrowingA
- Agent EmailLocal email connectivity for AI agents — read, draft, send, and organize Outlook mail via MCPnot reviewedGrowingA
- Microsoft 365 MailMicrosoft 365 Outlook mail via Graph: read, search, send, reply, forward, draft, move, delete.not reviewedGrowingA