Search / io.github.yarenty/emperor-mail
emperor-mail
L0· runs locallyEmail over IMAP and SMTP: search and read messages and attachments; draft and send when switched on
v0.1.3 · active · repository · website · descriptor JSON · versions
Search / io.github.yarenty/emperor-mail
L0· runs locallyEmail over IMAP and SMTP: search and read messages and attachments; draft and send when switched on
v0.1.3 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"emperor-mail": {
"command": "cargo",
"args": [
"emperor-mail",
"serve",
"--stdio",
"--writable",
"--allow-send",
"--send-allow",
"--from-allow"
],
"env": {
"MAIL_USER": "${MAIL_USER}",
"MAIL_PASSWORD": "${MAIL_PASSWORD}",
"MAIL_OAUTH_TOKEN": "${MAIL_OAUTH_TOKEN}",
"IMAP_HOST": "${IMAP_HOST}",
"MAIL_WRITABLE": "false",
"MAIL_ALLOW_SEND": "false"
}
}
}
}claude mcp add emperor-mail -e "MAIL_USER=${MAIL_USER}" -e "MAIL_PASSWORD=${MAIL_PASSWORD}" -e "MAIL_OAUTH_TOKEN=${MAIL_OAUTH_TOKEN}" -e "IMAP_HOST=${IMAP_HOST}" -e "MAIL_WRITABLE=false" -e "MAIL_ALLOW_SEND=false" -- cargo emperor-mail serve --stdio --writable --allow-send --send-allow --from-allow[mcp_servers.emperor-mail]
command = "cargo"
args = ["emperor-mail", "serve", "--stdio", "--writable", "--allow-send", "--send-allow", "--from-allow"]
env = { "MAIL_USER" = "${MAIL_USER}", "MAIL_PASSWORD" = "${MAIL_PASSWORD}", "MAIL_OAUTH_TOKEN" = "${MAIL_OAUTH_TOKEN}", "IMAP_HOST" = "${IMAP_HOST}", "MAIL_WRITABLE" = "false", "MAIL_ALLOW_SEND" = "false" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"emperor-mail": {
"type": "local",
"command": [
"cargo",
"emperor-mail",
"serve",
"--stdio",
"--writable",
"--allow-send",
"--send-allow",
"--from-allow"
],
"enabled": true,
"environment": {
"MAIL_USER": "{env:MAIL_USER}",
"MAIL_PASSWORD": "{env:MAIL_PASSWORD}",
"MAIL_OAUTH_TOKEN": "{env:MAIL_OAUTH_TOKEN}",
"IMAP_HOST": "{env:IMAP_HOST}",
"MAIL_WRITABLE": "false",
"MAIL_ALLOW_SEND": "false"
}
}
}
}{
"mcpServers": {
"emperor-mail": {
"command": "cargo",
"args": [
"emperor-mail",
"serve",
"--stdio",
"--writable",
"--allow-send",
"--send-allow",
"--from-allow"
],
"env": {
"MAIL_USER": "${MAIL_USER}",
"MAIL_PASSWORD": "${MAIL_PASSWORD}",
"MAIL_OAUTH_TOKEN": "${MAIL_OAUTH_TOKEN}",
"IMAP_HOST": "${IMAP_HOST}",
"MAIL_WRITABLE": "false",
"MAIL_ALLOW_SEND": "false"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=emperor-mail&config=eyJjb21tYW5kIjoiY2FyZ28iLCJhcmdzIjpbImVtcGVyb3ItbWFpbCIsInNlcnZlIiwiLS1zdGRpbyIsIi0td3JpdGFibGUiLCItLWFsbG93LXNlbmQiLCItLXNlbmQtYWxsb3ciLCItLWZyb20tYWxsb3ciXSwiZW52Ijp7Ik1BSUxfVVNFUiI6IiR7TUFJTF9VU0VSfSIsIk1BSUxfUEFTU1dPUkQiOiIke01BSUxfUEFTU1dPUkR9IiwiTUFJTF9PQVVUSF9UT0tFTiI6IiR7TUFJTF9PQVVUSF9UT0tFTn0iLCJJTUFQX0hPU1QiOiIke0lNQVBfSE9TVH0iLCJNQUlMX1dSSVRBQkxFIjoiZmFsc2UiLCJNQUlMX0FMTE9XX1NFTkQiOiJmYWxzZSJ9fQ%3D%3D"
}{
"servers": {
"emperor-mail": {
"type": "stdio",
"command": "cargo",
"args": [
"emperor-mail",
"serve",
"--stdio",
"--writable",
"--allow-send",
"--send-allow",
"--from-allow"
],
"env": {
"MAIL_USER": "${MAIL_USER}",
"MAIL_PASSWORD": "${MAIL_PASSWORD}",
"MAIL_OAUTH_TOKEN": "${MAIL_OAUTH_TOKEN}",
"IMAP_HOST": "${IMAP_HOST}",
"MAIL_WRITABLE": "false",
"MAIL_ALLOW_SEND": "false"
}
}
}
}{
"mcpServers": {
"emperor-mail": {
"command": "cargo",
"args": [
"emperor-mail",
"serve",
"--stdio",
"--writable",
"--allow-send",
"--send-allow",
"--from-allow"
],
"env": {
"MAIL_USER": "${MAIL_USER}",
"MAIL_PASSWORD": "${MAIL_PASSWORD}",
"MAIL_OAUTH_TOKEN": "${MAIL_OAUTH_TOKEN}",
"IMAP_HOST": "${IMAP_HOST}",
"MAIL_WRITABLE": "false",
"MAIL_ALLOW_SEND": "false"
}
}
}
}extensions:
"emperor-mail":
enabled: true
name: "emperor-mail"
type: stdio
cmd: "cargo"
args:
- "emperor-mail"
- "serve"
- "--stdio"
- "--writable"
- "--allow-send"
- "--send-allow"
- "--from-allow"
envs:
"MAIL_USER": "${MAIL_USER}"
"MAIL_PASSWORD": "${MAIL_PASSWORD}"
"MAIL_OAUTH_TOKEN": "${MAIL_OAUTH_TOKEN}"
"IMAP_HOST": "${IMAP_HOST}"
"MAIL_WRITABLE": "false"
"MAIL_ALLOW_SEND": "false"
timeout: 300
Placeholders to fill from your own secret store: ${MAIL_PASSWORD}, ${MAIL_OAUTH_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website ~liveness-unmeasured +updated-5d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
emperor-mail | cargo | 0.1.3 | – | MAIL_PASSWORD, MAIL_OAUTH_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.yarenty/emperor-mail",
"title": "emperor-mail",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.1.3",
"packages": [
{
"version": "0.1.3",
"transport": {
"type": "stdio"
},
"identifier": "emperor-mail",
"registryType": "cargo",
"packageArguments": [
{
"type": "positional",
"value": "serve",
"valueHint": "serve",
"isRequired": true,
"description": "Run the MCP server"
},
{
"type": "positional",
"value": "--stdio",
"valueHint": "--stdio",
"isRequired": true,
"description": "Speak MCP over stdin/stdout with one mailbox from the environment"
},
{
"type": "positional",
"value": "--writable",
"valueHint": "--writable",
"description": "Offer the draft tool (same as MAIL_WRITABLE=true); without it the server is read-only"
},
{
"type": "positional",
"value": "--allow-send",
"valueHint": "--allow-send",
"description": "Offer the send tool, and draft with it (same as MAIL_ALLOW_SEND=true); without it send is not offered"
},
{
"name": "--send-allow",
"type": "named",
"isRepeated": true,
"description": "Recipients send may write to: an address ([email protected]) or a domain (@example.org); repeatable or comma-separated (same as MAIL_SEND_ALLOW)",
"placeholder": "@example.org"
},
{
"name": "--from-allow",
"type": "named",
"isRepeated": true,
"description": "From addresses send and draft may use: an address or a domain (@example.org); repeatable or comma-separated (same as MAIL_FROM_ALLOW). Unset: any",
"placeholder": "@example.org"
}
],
"environmentVariables": [
{
"name": "MAIL_USER",
"isRequired": true,
"description": "Login name for IMAP and SMTP",
"placeholder": "[email protected]"
},
{
"name": "MAIL_PASSWORD",
"isSecret": true,
"description": "Password or app password (set this or MAIL_OAUTH_TOKEN)"
},
{
"name": "MAIL_OAUTH_TOKEN",
"isSecret": true,
"description": "OAuth 2.0 access token for XOAUTH2, instead of a password (Gmail, Microsoft 365)"
},
{
"name": "MAIL_FROM",
"description": "From address when the login name is not an address (default: the login name)"
},
{
"name": "IMAP_HOST",
"isRequired": true,
"description": "IMAP server host name",
"placeholder": "imap.example.com"
},
{
"name": "IMAP_PORT",
"format": "number",
"description": "IMAP port (default 993, or 143 with starttls)"
},
{
"name": "IMAP_SECURITY",
"choices": [
"tls",
"starttls",
"plain"
],
"description": "IMAP connection security; plain only for a loopback host (default tls, starttls on port 143)"
},
{
"name": "SMTP_HOST",
"description": "SMTP server host name, needed only for send",
"placeholder": "smtp.example.com"
},
{
"name": "SMTP_PORT",
"format": "number",
"description": "SMTP port (default 465, or 587 with starttls)"
},
{
"name": "SMTP_SECURITY",
"choices": [
"tls",
"starttls",
"plain"
],
"description": "SMTP connection security; plain only for a loopback host (default tls, starttls on ports 587 and 25)"
},
{
"name": "MAIL_WRITABLE",
"format": "boolean",
"default": "false",
"description": "true offers the draft tool; unset, empty, false, 0, no or off keep the server read-only"
},
{
"name": "MAIL_ALLOW_SEND",
"format": "boolean",
"default": "false",
"description": "true offers the send tool and draft; unset, empty, false, 0, no or off keep send out of the tool list"
},
{
"name": "MAIL_SEND_ALLOW",
"description": "Comma-separated recipients send may write to: addresses ([email protected]) or domains (@example.org). With sending on and none set, every recipient is refused",
"placeholder": "@example.org"
},
{
"name": "MAIL_FROM_ALLOW",
"description": "Comma-separated From addresses send and draft may use: addresses or domains (@example.org). Unset: any",
"placeholder": "@example.org"
}
]
}
],
"repository": {
"url": "https://github.com/yarenty/emperor-mail",
"source": "github"
},
"websiteUrl": "https://github.com/yarenty/emperor-mail",
"description": "Email over IMAP and SMTP: search and read messages and attachments; draft and send when switched on"
}