MailBridge MCP
Enables MCP-compatible AI assistants to securely search multiple mailboxes, reconstruct email threads, and inspect attachments through read-only tools without altering mailbox state.
README
MailBridge MCP
Security-first, read-only email intelligence for MCP-compatible AI assistants.
MailBridge demonstrates how an AI assistant can search multiple mailboxes, reconstruct threads, inspect attachments, and preserve mailbox state. The public distribution runs entirely on synthetic data, so it is safe to explore without credentials or access to a real inbox.
This repository is a controlled public reference distribution by Gexiro Global Enterprises Ltd. It is not a mirror of any private deployment and contains no production configuration, infrastructure, mailbox data, or credentials.
Why MailBridge
- Eleven deliberately read-only MCP tools.
- Standard
searchandfetchcontracts for knowledge-source compatibility. - Explicit output schemas for every structured tool result.
- MCP Apps widget with a versioned
ui://resource. - Standards-first
ui/initializeandui/notifications/initializedhandshake. - Multi-mailbox and all-folder search behavior.
- Thread reconstruction using
Message-ID,In-Reply-To, andReferences. - Bounded attachment retrieval with SHA-256 checksums.
- Explicit warning that email and attachment content is untrusted.
- Fail-closed public binding: loopback-only unless an operator explicitly opts in.
- Zero SMTP, send, move, delete, flag, append, copy, or expunge operations.
Tool surface
| Tool | Purpose |
|---|---|
list_mailboxes |
Discover synthetic mailboxes and safe metadata. |
mailbox_health |
Report redacted TLS/auth/folder/read-only health. |
list_folders |
Enumerate selectable folders and counters. |
list_recent_messages |
Return bounded recent message metadata. |
search_messages |
Structured multi-mailbox, all-folder search. |
fetch_message |
Fetch one bounded message without changing unread state. |
fetch_thread |
Reconstruct a thread from message identifiers. |
list_attachments |
Return attachment metadata only. |
fetch_attachment |
Return bounded synthetic bytes, base64, and SHA-256. |
search |
Standard read-only knowledge search. |
fetch |
Standard read-only knowledge document fetch. |
Every descriptor sets readOnlyHint: true, destructiveHint: false,
idempotentHint: true, and openWorldHint: false.
Quick start
Requirements: Node.js 24 or newer.
npm ci
npm run check
npm run dev
The server starts on loopback by default:
Health: http://127.0.0.1:3100/health
Widget: http://127.0.0.1:3100/widget
MCP: http://127.0.0.1:3100/mcp
To connect from an MCP client, use the streamable HTTP endpoint /mcp. For
ChatGPT developer testing, expose the loopback service through a reviewed HTTPS
tunnel and refresh the app after tool or resource metadata changes.
Docker
The container remains synthetic-only and runs as the unprivileged node user.
docker build -t mailbridge-mcp .
docker run --rm -p 127.0.0.1:3100:3100 \
-e MAILBRIDGE_HOST=0.0.0.0 \
-e MAILBRIDGE_ALLOW_PUBLIC_DEMO=I_UNDERSTAND_SYNTHETIC_ONLY \
mailbridge-mcp
Architecture
flowchart LR
Host[ChatGPT or MCP host] -->|Streamable HTTP| MCP[MailBridge MCP server]
MCP --> Tools[Read-only tool contracts]
MCP --> Widget[MCP Apps dashboard]
Tools --> Demo[Synthetic mailbox provider]
Demo --> Guard[Untrusted-content and size guards]
The provider boundary is intentionally small. This public edition ships only the synthetic provider; production adapters, operator identities, credential storage, and deployment topology are outside this repository.
Security properties
- No credential input exists in any MCP tool schema.
- No real mailbox connection is implemented in this public distribution.
- Message fetches do not mutate synthetic unread state.
- Attachment bytes are bounded and labeled as untrusted.
- The HTTP runtime refuses non-loopback binding unless the explicit synthetic demo acknowledgement is set.
- CI runs compilation, tests, repository secret scanning, dependency audit, dependency review, CodeQL, a real container smoke test, and SBOM validation.
- The container gate fails closed on detected High or Critical CVEs and strips package managers from the runtime image after dependency installation.
- Tagged releases contain SHA-256 checksums, a CycloneDX SBOM, and GitHub artifact provenance attestations.
See SECURITY.md, THREAT_MODEL.md, PRIVACY.md, and ARCHITECTURE.md.
OpenAI Apps SDK alignment
The implementation follows the current MCP Apps-first guidance:
- the UI resource uses
text/html;profile=mcp-app; - tools remain useful without the widget;
list_mailboxespoints to a versioned_meta.ui.resourceUri;- the widget consumes
ui/notifications/tool-resultand useswindow.openai.toolOutputonly as a compatibility path; - CSP metadata declares no external connect or resource domains.
Official references:
Release integrity
Each tagged release is built from locked dependencies in GitHub Actions. Verify
the downloaded archive and SBOM with the included SHA256SUMS, then verify the
GitHub artifact attestation against this repository before use.
Project policies
License
Apache License 2.0. Copyright © 2026 Gexiro Global Enterprises Ltd.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
