iris
iris
Почтовый сервер Microsoft 365 для ИИ-агентов, которые не могут отправлять электронную почту.
Не «не будут». Не могут. iris запрашивает делегированную область Graph Mail.ReadWrite и никогда — Mail.Send. Токен доступа, которым он владеет, не имеет возможности передавать сообщения, поэтому ни промпт, ни джейлбрейк, ни ошибка в этом коде не могут заставить его отправить сообщение. Он сохраняет черновики в папку в вашем почтовом ящике. Вы открываете 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 общается напрямую с вашего компьютера в ваш тенант. Это осознанно: общее приложение означало бы доверие чужому client ID с доступом к вашей почте.
Центр администрирования Entra → Регистрация приложений → Новая регистрация. Однотенантный вариант подходит. URI перенаправления не нужен.
Аутентификация → Настройки → включите Разрешить публичные потоки клиента. Вход по коду устройства требует этого. Никакой секрет клиента нигде не используется.
Разрешения API → Microsoft Graph → Делегированные → добавьте
Mail.ReadWrite. Больше ничего не добавляйте. Не добавляйтеMail.Send— если он присутствует, гарантия выше недействительна.Скопируйте Application (client) ID и Directory (tenant) 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, тема, тело или HTML, необязательный reply-to) |
| Список того, что ожидает в папке черновиков |
| Изменяет черновик на месте |
| Удаляет черновик; требует |
Куда попадают черновики
В выделенную папку верхнего уровня, AI Drafts по умолчанию (IRIS_DRAFT_FOLDER). Она создаётся при первом использовании. Установите переменную в пустую строку, чтобы использовать обычную папку «Черновики».
Это настоящие черновики, и Outlook отправляет их обычным образом — но потому, что они находятся в собственной папке, они не отображаются в представлении «Черновики». В этом смысл: почта, написанная агентом, лежит где-то, куда вам нужно зайти и посмотреть, а не смешана с вашими собственными незавершёнными сообщениями.
Один нюанс, о котором стоит знать: createReply в Graph всегда сначала помещает ответ в «Черновики», поэтому iris перемещает его после, а перемещение присваивает новый идентификатор сообщения.
Другие элементы управления
Список разрешённых получателей —
recipients.allow, по одному адресу или домену в строке. Отсутствует или пуст — значит, все получатели разрешены. УкажитеIRIS_ALLOWLISTв другом месте, если предпочитаете.Аварийный выключатель — создайте файл
DISABLEDрядом с сервером или установитеIRIS_DISABLED=1, и каждый инструмент откажется работать.Журнал аудита — каждый вызов добавляется в
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