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.
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 protects the public /mcp endpoint when you deploy remotely.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.
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. GET /health can stay public; /mcp should stay behind a bearer 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.