
rubit-mcp-mail
io.github.bgalmes由 GitHub 账号 bgalmes 发布v1.0.0更新于 Oct 25, 2026
Read-only MCP server for your mail — provider-agnostic IMAP that never marks a message as read.
概览
只读 IMAP 邮件服务器,让助手列出账户、文件夹和邮件,搜索邮件、读取正文并保存附件,且不会把邮件标记为已读。
- 可以做什么
- 列出已配置账户及其认证状态,并按归一化角色(收件箱、已发送、草稿、垃圾邮件、废纸篓、归档)列出文件夹及未读数
- 按最新优先分页浏览某个文件夹,并在服务器端按文本、发件人、主题、日期范围或未读状态搜索
- 读取邮件的完整头部、正文文本和附件元数据
- 将单个附件保存到配置的下载目录
- 适用场景
- 适合让助手通过普通 IMAP 整理、搜索或总结已有邮箱(Gmail、Outlook.com、Fastmail、iCloud、Yahoo 或自建服务器),同时确保它无法发送、移动、删除或标记邮件。
- 运行要求
- 以本地 Python 包(Python 3.11+)运行,或使用 Windows 与 Linux 的打包安装程序;macOS 需从源码安装。需要一个配置了主机和邮箱地址的 IMAP 账户,Gmail 与 iCloud 需应用专用密码,Outlook.com 需 Azure 应用注册(client_id)。凭据存于系统钥匙串,失败时回退到文件。需要访问邮件服务器的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 rubit-mcp-mail,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
rubit-mcp-mail
[CI] [Latest release] [PyPI] [Python] [License: MIT]
A read-only MCP server for reading your mail. Provider-agnostic: it speaks IMAP, so it works with Outlook.com, Gmail, Fastmail, iCloud, or a self-hosted server — the provider is a line of config, not a code change.
Read-only by construction. Folders are opened with EXAMINE, never SELECT,
and bodies are fetched with BODY.PEEK, so reading a message does not even mark
it as read. There are no send, move, delete, or flag code paths, and a test
asserts none are ever added.
📖 Full documentation: https://bgalmes.github.io/rubit-mcp-mail/
Quick install
Download the installer for your system from the latest release and run it:
Nothing needs to be installed beforehand: Python and every dependency are inside that one file. A window asks for your provider and email address, signs you in, and registers the mail server with Claude Desktop and Claude Code if it finds them — restart Claude Desktop afterwards and your mail is there. It also leaves you a rubit-mcp-mail Settings shortcut for everything you want to change later. No terminal, at any point.
There is no macOS installer; on a Mac, install from source (below).
A note on antivirus warnings. Windows Defender or Avast may flag this .exe.
This is a known false positive common to unsigned PyInstaller-built applications,
not anything this project's code does — see
the install guide
for what to do about it. Every published SHA-256 is listed on
the changelog.
Tools
Folders are addressed by role — inbox, sent, drafts, junk, trash,
archive — so you never need to know that Outlook calls it Junk Email while
Gmail calls it [Gmail]/Spam. Raw folder names work too.
Full arguments and return shapes: Tools reference.
Install with pip
If you already have Python 3.11+ and would rather not run an installer:
Install from source
Then configure an account, rubit-mcp-mail auth <account>, and
rubit-mcp-mail doctor. The Windows variant and the full walkthrough are in
Install from source.
Setting up a mailbox
Microsoft has retired basic auth for Outlook.com, so Outlook needs a free Azure app registration — seven steps, done once, written out in Setting up Outlook. Everything else takes an app password:
Known hosts: Gmail imap.gmail.com, Fastmail imap.fastmail.com,
iCloud imap.mail.me.com, Yahoo imap.mail.yahoo.com. Gmail and iCloud require
an app-specific password, not your login password.
Can't register your own Azure app?
If your Microsoft account genuinely can't register one, you can use the public
client ID that other open-source mail tools already share for this purpose —
Thunderbird's, 9e5f94bc-e8a4-4e73-b8be-63364c29d753. Paste it in as
client_id. The consent screen will say "Thunderbird", and because the ID is
outside our control Microsoft could rotate it. Details and caveats:
Can't register your own app?.
Permissions
Any account-scoped tool can be forbidden for a given account with
disabled_tools in config.toml, or by unticking a box on the settings
window's Permissions tab. A blocked call returns a plain Error: ... string to
the model rather than failing silently. See
Permissions.
Registering with Claude
Claude Desktop needs a JSON entry instead, and on Linux it needs the session environment passed explicitly or the keyring is unreachable — Register with Claude has both, and Troubleshooting has the logs.
Agent skill
skills/rubit-mail/SKILL.md tells an agent when
to reach for the mail tools and how to chain them, and reminds it that the
server is read-only and that mail content is untrusted. For Claude Code, copy it
into your user (or a project's .claude/) skills directory:
Any other agent that reads SKILL.md files works the same way. See
Agent skill.
Development
Those are the same checks CI runs. Commit messages follow Conventional Commits and drive automatic versioning — see CONTRIBUTING.md and AGENTS.md. Building the installers and adding a provider are covered in Contributing.
The website
website/ holds the documentation site (Nuxt), deployed to GitHub Pages by
.github/workflows/deploy-website.yml. It is the source of truth for the docs;
this README is deliberately the short version.
[!IMPORTANT] Website commits must not use
feat:orfix:.python-semantic-releaseparses the commit type, not the scope, sofeat(site): …would bump the Python package and cut an installer release. Usedocs(site):,chore(site):orci(site):.
Layout
Releasing
Every merge to main prepares a release PR carrying only the pyproject.toml
and CHANGELOG.md diff; a maintainer merges it by hand, which publishes the
prerelease and builds the installers; promote-release.yml is dispatched
manually to drop the -rc.N suffix. The human merge is load-bearing — GitHub
raises no events for anything GITHUB_TOKEN does. Full flow:
CONTRIBUTING.md
and How releases work.
Notes and limits
IMAP search is substring-based, bodies are truncated at 20,000 characters, only text parts are downloaded, and Microsoft is actively tightening third-party mail access. The details are in Notes and limits.
来源:README.md,提交 55bbf68
工具
0版本历史
1- v1.0.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分