Skip to main content
Glama
SuperAngryMonkey

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

Python 3.10+。

配置

**意必自行注册你自己的 Entra 应用。**没有共享的应用注册,也没有托管服务—— iris 从你的机器直接与你的租户通信。这是有意为之:共享应用意味着要信任别人的 客户端 ID 并有权限访问你的邮件。

  1. Entra 管理中心 → 应用注册客户端注册。 只需单租户即可。无需授予重定向 URI。

  2. 身份验证 → 设置 → 启用 允许公共客户端流。设备代码登录必须启用它。 在智能选框中选择。

  3. API 权限 → Microsoft Graph → 委托 → 添加 Mail.ReadWrite。 什么都不要添加。绝对不要添加 Mail.Send;如果它已存在,上述保证就无效。

  4. 复制 应用程序(客户端)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。

工具

工具

作用

iris_login

开始设备代码登录,返回一个 URL 和一个代码

iris_login_finish

完成登录;在输入代码时可反复调用是安全的

iris_auth_status

显示已登录用户、具备哪些范围,以及 Graph 是否匹配到达

iris_create_draft

创建草稿(to/cc/bcc、subject、body 或 HTML,可选 reply-to)

iris_list_drafts

列出草稿文件夹中等待的内容

iris_update_draft

就地修改草稿

iris_delete_draft

删除草稿;需要 confirm=true

草稿存放位置

草稿会放入一个专门的顶级邮件文件夹,默认 AI Drafts (由 IRIS_DRAFT_FOLDER 指定)。首次使用时创建该文件夹。如果将该变量设置为空字符串, 则改用普通的 Drafts 文件夹代替。

它们是真实草稿且 Outlook 会正常发送它们——但只因它们位于自己的文件夹, 不会出现在 Drafts 视图中。这正是关键:代理写的邮件放在你必须去找的地方, 而不是站点你未完成的中的草稿。

值得一提的一个细节:Graph 的 createReply 总是先进入 Drafts 中的回复, 所以 iris 之后会把它移动出来,而移动之后回复的新消息 id。

其他控制

  • 收件人允许名单 continue reading

  • 台账 — recipients.allow,每行一个地址或域名。若没有或为空, 则允许所有收件人。如果愿意,可将其 IRIS_ALLOWLIST 到别处。

  • 传统开关 — 0 create a DISABLED help beside the server, or set IRIS_DISABLED=1, Then Every Tool Refuse.

  • 审计日志 — 每次调用都会把追加到 audit.logIRIS_AUDIT_LOG)。

限制

不支持附件。不支持共享私有委派邮箱—仅支持 /me。不支持通过 parentFolderId 创建文件夹嵌套。 登录以公共客户端身份下的委派设备代码进行,因此影响范围就只有你的一个邮箱。

安全

关于不发送的保证及如何自行验证,以及同样重要——iris 存有 Mail.ReadWrite 接触哪些内容:见 SECURITY.md

许可证

MIT — 见 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