pypi mailflat-mcpstdioMITupdated 16d ago
Official client libraries for MailFlat: email inboxes your code owns, with one-line OTP retrieval. Built for test suites (Selenium, pytest, Playwright) and AI agents.
What can you do with MailFlat?
MailFlat SDKs
Official client libraries for MailFlat: email inboxes your code owns, with one-line OTP retrieval. Built for test suites (Selenium, pytest, Playwright) and AI agents.
Addresses are permanent, so a suite does not need a fresh one per run. Only the messages expire, on a retention window you choose.
This repo holds only the open-source SDKs. The MailFlat service itself is closed-source.
Packages
| Package | For | Install |
|---|---|---|
mailflat |
Python | pip install mailflat |
@mailflat/sdk |
JavaScript / TypeScript | npm i @mailflat/sdk |
mailflat-mcp |
AI assistants (Claude, Cursor) — MCP | uvx mailflat-mcp |
@mailflat/ai-sdk |
Vercel AI SDK agents | npm i @mailflat/ai-sdk |
mailflat.langchain |
LangChain agents | pip install "mailflat[langchain]" |
mailflat-sdk (Java) |
Java / Selenium | via JitPack — see below |
Each client is a thin, typed wrapper over the same /api/v1 Agent API, so they behave identically.
Authenticate with your account key (mf_live_…) from the dashboard (Agents → API keys).
Java / Selenium (JitPack)
JitPack derives the
groupIdfrom the GitHub owner. This repo moved to the officialMailFlataccount in August 2026, so releases fromv0.4.4on publish ascom.github.MailFlat:mailflat-sdks. Earlier versions still resolve under the old coordinatecom.github.onderyentar21:mailflat-sdks; the old repo stays up for them. The client is moving to Maven Central (net.mailflat) next, which ends the owner coupling.
<repositories>
<repository><id>jitpack.io</id><url>https://jitpack.io</url></repository>
</repositories>
<dependency>
<groupId>com.github.MailFlat</groupId>
<artifactId>mailflat-sdks</artifactId>
<version>v0.4.5</version>
</dependency>
MailFlat mf = new MailFlat("mf_live_…");
Inbox inbox = mf.create("signup");
driver.findElement(By.id("email")).sendKeys(inbox.address());
String otp = inbox.waitForOtp(30); // polls until the code arrives
driver.findElement(By.id("code")).sendKeys(otp);
Quick examples
Python
from mailflat import MailFlat
mf = MailFlat(api_key="mf_live_…")
inbox = mf.create(label="signup")
otp = inbox.wait_for_otp(timeout=30)
JavaScript / TypeScript
import { MailFlat } from "@mailflat/sdk";
const mf = new MailFlat({ apiKey: process.env.MAILFLAT_API_KEY });
const inbox = await mf.create({ label: "signup" });
const otp = await inbox.waitForOtp({ timeout: 30000 });
License
MIT. The full text is in LICENSE at the repository root; each package directory carries an identical copy.
Install
Add MailFlat to your client. Pick the one you use.
claude mcp add mailflat-mcp -- uvx mailflat-mcpcodex mcp add mailflat-mcp -- uvx mailflat-mcpamp mcp add mailflat-mcp -- uvx mailflat-mcp{
"mcpServers": {
"mailflat-mcp": {
"command": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"mailflat-mcp": {
"command": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"mailflat-mcp","command":"uvx","args":["mailflat-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"mailflat-mcp": {
"command": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"mailflat-mcp": {
"command": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"mailflat-mcp": {
"command": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"mailflat-mcp": {
"type": "local",
"command": "uvx",
"args": [
"mailflat-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"mailflat-mcp": {
"command": {
"path": "uvx",
"args": [
"mailflat-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
uvx mailflat-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation22/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 8 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.9.2Latest | Aug 27, 2026 |