iris
隐居:不做总结等.
Final:
iris
面向 AI 代理、但不能发送邮件的 Microsoft 365 邮件服务器。
不是「不会」。是「不能」。iris 请求的是委托的 Graph 权限范围 Mail.ReadWrite,
从不请求 Mail.Send。它所持有的访问令牌没有发送消息的能力,因此无论什么提示词、
什么越狱手段,还是这个代码里的任何 bug,都无法让一封邮件发出去。它把草稿写进
你的邮箱中的一个文件夹。你打开 Outlook,然后按发送。
这就是全部设计。余下都是细节。
为什么用这种形态
不给代理邮箱最常担心的是,它会发出你未批准的东西——发错的人, 语气不对,或者由于有人引诱它这样做。常见的答复是确认提示,那是一种护栏: 征求许可的代码,而代码是可以绕过的。
iris 相反,直接移除能力。Microsoft Graph 会用这个令牌拒绝发送尝试, 因为你同意的授权页面从未包含这个权限。安全边界属于 Microsoft,而不属于 这个程序;即使这个程序有错,边界也仍然有效。
这种取舍是真实的:按设计,每一封邮件都有人参与。如果你想要自主发送, iris 不是什么合适的选择。
Related MCP server: mcp-outlook-mail
安装
uvx iris-mcp # run without installing
pip install iris-mcpPython 3.10+。
配置
**意必自行注册你自己的 Entra 应用。**没有共享的应用注册,也没有托管服务—— iris 从你的机器直接与你的租户通信。这是有意为之:共享应用意味着要信任别人的 客户端 ID 并有权限访问你的邮件。
Entra 管理中心 → 应用注册 → 客户端注册。 只需单租户即可。无需授予重定向 URI。
身份验证 → 设置 → 启用 允许公共客户端流。设备代码登录必须启用它。 在智能选框中选择。
API 权限 → Microsoft Graph → 委托 → 添加
Mail.ReadWrite。 什么都不要添加。绝对不要添加Mail.Send;如果它已存在,上述保证就无效。复制 应用程序(客户端)ID 和 目录(租户)ID。两者都不是秘密。
然后,把 iris 添加到你的 MCP 客户端:
{
"mcpServers": {
"iris": {
"command": "uvx",
"args": ["iris-mcp"],
"env": {
"IRIS_CLIENT_ID": "<application client id>",
"IRIS_TENANT_ID": "<directory tenant id>"
}
}
}
}一次登录:调用 iris_login,前往 URL, 输入代码,然后调用 iris_login_finish。
令牌缓存写在服务器同级代码块旁边,模式为 600。
工具
工具 | 作用 |
| 开始设备代码登录,返回一个 URL 和一个代码 |
| 完成登录;在输入代码时可反复调用是安全的 |
| 显示已登录用户、具备哪些范围,以及 Graph 是否匹配到达 |
| 创建草稿(to/cc/bcc、subject、body 或 HTML,可选 reply-to) |
| 列出草稿文件夹中等待的内容 |
| 就地修改草稿 |
| 删除草稿;需要 |
草稿存放位置
草稿会放入一个专门的顶级邮件文件夹,默认 AI Drafts
(由 IRIS_DRAFT_FOLDER 指定)。首次使用时创建该文件夹。如果将该变量设置为空字符串,
则改用普通的 Drafts 文件夹代替。
它们是真实草稿且 Outlook 会正常发送它们——但只因它们位于自己的文件夹, 不会出现在 Drafts 视图中。这正是关键:代理写的邮件放在你必须去找的地方, 而不是站点你未完成的中的草稿。
值得一提的一个细节:Graph 的 createReply 总是先进入 Drafts 中的回复,
所以 iris 之后会把它移动出来,而移动之后回复的新消息 id。
其他控制
收件人允许名单 continue reading
台账 —
recipients.allow,每行一个地址或域名。若没有或为空, 则允许所有收件人。如果愿意,可将其IRIS_ALLOWLIST到别处。传统开关 — 0 create a
DISABLEDhelp beside the server, or setIRIS_DISABLED=1, Then Every Tool Refuse.审计日志 — 每次调用都会把追加到
audit.log(IRIS_AUDIT_LOG)。
限制
不支持附件。不支持共享私有委派邮箱—仅支持 /me。不支持通过 parentFolderId 创建文件夹嵌套。
登录以公共客户端身份下的委派设备代码进行,因此影响范围就只有你的一个邮箱。
安全
关于不发送的保证及如何自行验证,以及同样重要——iris 存有 Mail.ReadWrite 时
能 接触哪些内容:见 SECURITY.md。
许可证
MIT — 见 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