Forwardemail Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Forwardemail Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Archived. On 2026-03-05, Forward Email published its official MCP server as@forwardemail/mcp-server(first release v1.0.0; npm). From that date, this project (arsols-labs/forwardemail-mcp) is superseded. It is being archived and will no longer receive feature or dependency updates. Prefer the official Forward Email MCP: docs and forwardemail.net/mcp. The rest of this file is kept for historical reference. See also ARCHIVED.md.
forwardemail-mcp is an MCP server for Forward Email workflows. It exposes mail, calendar, and contacts tools over local stdio for development and Streamable HTTP for remote clients such as Notion Custom Agents.
The default configuration targets the public Forward Email service. If you run a self-hosted setup, override the service URLs in your environment.
Versioning:
v0.1.2.Auth model:
FE_ALIAS_USER + FE_ALIAS_PASS + DAV URLs power mailbox, calendar, and contacts tools.FE_API_KEY is used for API-key-only actions such as sending mail.MCP_AUTH_TOKEN is required for both Node.js and Cloudflare Worker HTTP entrypoints and protects /mcp with bearer authentication. GET /health remains public.git checkout v0.1.220.18.1 or newer. The repo pins 20.18.1 in .nvmrc and requires at least that version in package.json.nvm usenpm installcp .env.example .envnpm run build{
"mcpServers": {
"forwardemail": {
"command": "node",
"args": ["/absolute/path/to/forwardemail-mcp/dist/index.js"],
"env": {
"MCP_TRANSPORT": "stdio",
"LOG_LEVEL": "info",
"FE_API_URL": "https://api.forwardemail.net",
"FE_API_KEY": "replace-with-api-key",
"FE_CALDAV_URL": "https://caldav.forwardemail.net",
"FE_CARDDAV_URL": "https://carddav.forwardemail.net",
"FE_ALIAS_USER": "[email protected]",
"FE_ALIAS_PASS": "replace-with-alias-password"
}
}
}
}MCP_TRANSPORT=stdio is the default, so npm run dev also works for local iteration.
For the Node.js Streamable HTTP entrypoint, set MCP_TRANSPORT=http and a non-empty MCP_AUTH_TOKEN. The process refuses to start if the token is missing or blank. MCP clients must send Authorization: Bearer <MCP_AUTH_TOKEN> to /mcp; GET /health does not require authentication.
The runtime also supports resolving secrets directly from 1Password via the 1Password SDK.
AUTH_MODE=1password-sdk.OP_SERVICE_ACCOUNT_TOKEN.op://vault/item/field or op://vault/item/section/field references.Example:
AUTH_MODE=1password-sdk
OP_SERVICE_ACCOUNT_TOKEN=ops_xxx
FE_API_URL=op://vault/forwardemail/api-url
FE_API_KEY=op://vault/forwardemail/api-key
FE_CALDAV_URL=op://vault/forwardemail/caldav-url
FE_CARDDAV_URL=op://vault/forwardemail/carddav-url
FE_ALIAS_USER=op://vault/forwardemail/alias-user
FE_ALIAS_PASS=op://vault/forwardemail/alias-passIf AUTH_MODE=env, the server reads the plain environment variables instead.
20.18.1 or newer before packaging or deploying the worker.nvm usenpm run buildwrangler secret put FE_API_URL
wrangler secret put FE_API_KEY
wrangler secret put FE_CALDAV_URL
wrangler secret put FE_CARDDAV_URL
wrangler secret put FE_ALIAS_USER
wrangler secret put FE_ALIAS_PASS
wrangler secret put MCP_AUTH_TOKENnpm run cf:deploy:drynpm run cf:deploy/mcp. As with the Node.js HTTP entrypoint, GET /health is public and /mcp requires Authorization: Bearer <MCP_AUTH_TOKEN>.As of March 8, 2026, Notion documents custom MCP connections for Custom Agents on Business and Enterprise plans only, with workspace-admin enablement for custom MCP servers.
Settings -> Notion AI -> AI connectors.Settings -> Tools & Access.Add connection -> Custom MCP server./mcp.Authorization: Bearer <MCP_AUTH_TOKEN>Always ask unless you explicitly want automatic writes.Each Custom Agent needs its own MCP connection.
401 Unauthorized: the bearer token sent by the client does not match MCP_AUTH_TOKEN.404 Not found: use the /mcp path for MCP traffic, not the worker root URL.FE_ALIAS_USER, FE_ALIAS_PASS, FE_CALDAV_URL, and FE_CARDDAV_URL.email_list_inbox and email_search intentionally clamp results and return metadata-only summaries.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.