MCP-postale.io
Enables managing postale.io email hosting through the official API, covering domains, DNS/DKIM, mailboxes, aliases, branding, Sieve filters, quotas, and logs, with safety confirmations for destructive operations.
README
MCP-postale.io
MCP server for the postale.io email hosting API.
Manage your postale.io account from any MCP-compatible AI agent — Claude Code, Claude Desktop, OpenAI Codex, Cursor, Windsurf and more. Full coverage of the official API: domains, DNS/DKIM records, white-label branding, mailboxes, Sieve filters, quotas, aliases, and email/authentication logs.
Documentación en español: README.es.md · AI agent install guide: llms-install.md · Full tool reference: docs/TOOLS.md
Features
- 31 tools covering all 39 endpoints of the postale.io API v1
- Domains — list, create (MX or TXT verification), update limits/catch-all/forwarding, delete
- DNS — suggested MX, SPF, DKIM, DMARC, verification TXT, autoconfig/autodiscover records, with the currently-found values so you can verify your DNS setup
- DKIM — inspect, generate, install (bring your own keys) and remove key pairs
- Branding — white-label webmail/admin: logos, favicon, support URL, colors, custom CSS
- Mailboxes — full CRUD, Sieve filter scripts, storage quotas, admin roles
- Aliases — full CRUD with multiple redirect targets
- Logs — daily email logs with raw SMTP/LMTP transcripts, and authentication logs for security auditing
- Safety — destructive operations (deleting domains, mailboxes, aliases, DKIM keys) require an explicit
confirm: trueargument, so an agent can never delete data by accident
Requirements
- Node.js ≥ 18
- A postale.io account on a plan with API access
- Your API key: postale.io admin panel → Account → API
Installation
Quick install (recommended)
The package is published on npm as postale-mcp — no clone or build needed:
claude mcp add postale \
--env POSTALE_API_KEY=your_api_key_here \
-- npx -y postale-mcp
For other clients, use npx as the command with args ["-y", "postale-mcp"] in the JSON/TOML examples below. (Running straight from GitHub also works: npx -y github:fmendezy/MCP-postale.io.)
From source
Get the code and build it:
git clone https://github.com/fmendezy/MCP-postale.io.git
cd MCP-postale.io
npm install # also builds via the prepare script
The server binary is dist/index.js. All clients below use the same two things: the command node /absolute/path/to/MCP-postale.io/dist/index.js and the environment variable POSTALE_API_KEY.
Claude Code
claude mcp add postale \
--env POSTALE_API_KEY=your_api_key_here \
-- node /absolute/path/to/MCP-postale.io/dist/index.js
Then run /mcp inside Claude Code to verify the connection. Add --scope user to make it available in every project.
Claude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"postale": {
"command": "node",
"args": ["/absolute/path/to/MCP-postale.io/dist/index.js"],
"env": { "POSTALE_API_KEY": "your_api_key_here" }
}
}
}
OpenAI Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.postale]
command = "node"
args = ["/absolute/path/to/MCP-postale.io/dist/index.js"]
[mcp_servers.postale.env]
POSTALE_API_KEY = "your_api_key_here"
Cursor / Windsurf / other MCP clients
Any client that supports stdio MCP servers works with the same JSON shape as Claude Desktop above (Cursor: .cursor/mcp.json; Windsurf: ~/.codeium/windsurf/mcp_config.json).
Configuration
| Environment variable | Required | Default | Description |
|---|---|---|---|
POSTALE_API_KEY |
yes | — | Your postale.io API key (used as the HTTP Basic username, per the official API) |
POSTALE_BASE_URL |
no | https://postale.io |
API base URL override |
POSTALE_TIMEOUT |
no | 30000 |
Request timeout in milliseconds |
Available tools
| Group | Tools |
|---|---|
| Domains | list_domains, get_domain, create_domain, update_domain, delete_domain |
| DNS & DKIM | get_domain_dns_record (mx/spf/dkim/dmarc/verification/autoconfig/autodiscover), get_domain_dkim, generate_domain_dkim, set_domain_dkim, delete_domain_dkim |
| Branding | get_domain_brand, update_domain_brand |
| Stats | get_domain_stats, get_mailbox_stats (emails in/out, last 30 days) |
| Mailboxes | list_mailboxes, get_mailbox, create_mailbox, update_mailbox, delete_mailbox, get_mailbox_sieve, update_mailbox_sieve, get_mailbox_quota, update_mailbox_quota |
| Aliases | list_aliases, get_alias, create_alias, update_alias, delete_alias |
| Logs | list_email_logs, get_email_log_protocol, list_auth_logs |
See docs/TOOLS.md for every parameter and example prompts.
List endpoints are paginated (max 25 items per page) and accept an optional search query — the same rules as the underlying API.
Example prompts
Once connected, ask your agent things like:
- "List all my postale.io domains and tell me which ones have no DKIM keys."
- "Create the mailbox soporte@example.com with a strong random password."
- "Check whether the SPF and DMARC records of example.com match what postale.io suggests."
- "Show me yesterday's failed delivery attempts for example.com and the SMTP transcript of the first one."
- "Add a Sieve rule to ventas@example.com that files messages from @cliente.com into the folder Clientes." (the agent should fetch the current script first, then submit the merged script)
- "Who logged into IMAP on 2026-08-01 from an IP outside Chile?"
Security notes
- The API key grants full control over the account: treat it like a root password. Prefer per-client config files with restrictive permissions over shell profiles.
- Destructive tools require
confirm: true; agents will ask you before deleting anything if you instruct them to confirm destructive actions (recommended). - The server talks only to
https://postale.io(or yourPOSTALE_BASE_URL) and never stores or logs your key.
Development
npm install
npm run build # compile TypeScript to dist/
npm test # smoke test: MCP handshake, tool list, validation, error handling
npm run dev # tsc --watch
The project is intentionally small: src/client.ts (HTTP client with Basic auth and error mapping), src/tools.ts (tool definitions with zod schemas), src/index.ts (stdio entry point).
Issues and PRs are welcome.
License
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。