Back to Directory/Communication

Postfleet

Give an AI agent its own email address: send, reply, read, and wait for mail.

CommunicationTypeScriptv0.1.4

Postfleet MCP

Give an AI agent its own email address. Postfleet is email infrastructure for agents — inbound is parsed, classified, extracted to your schema, and screened for prompt injection before your agent reads a word.

This repo holds the server source and its plugin manifests. It is a mirror — the code is developed in the Postfleet application repo and published to npm as @postfleet/mcp; open issues here, send patches here, and they land upstream. The server ships two ways:

Hosted (no install)https://api.postfleet.ai/api/mcp, streamable HTTP, Authorization: Bearer pf_...
Local (stdio)@postfleet/mcp via npx

Get a pf_ API key at postfleet.ai.

Tools

list_mailboxes, create_mailbox, list_domains, create_domain, verify_domain, send_email, reply_email, list_inbox, read_email, wait_for_email — plus the draft lifecycle (create_draft, list_drafts, get_draft, update_draft, send_draft, delete_draft) for flows where a human approves before mail goes out. A send that lands in that gate returns 202 pending_approval, which is not a failure.

Every tool is thin-over-REST — it calls the same /api/v1/ endpoints your key already reaches (OpenAPI), so auth, scoping, and quotas are enforced once.

Install

Cursor marketplace plugin

The manifests in this repo (mcp.json, .cursor-plugin/plugin.json) declare headers.Authorization = Bearer ${POSTFLEET_API_KEY} for the hosted server and the same variable for local npx @postfleet/mcp. Installing the plugin should prompt for that key and attach it as a real Bearer header — a raw URL add without the header will 401 on initialize until a key is supplied or the hosted connect card finishes OAuth.

Cursor (manual)

{
  "mcpServers": {
    "postfleet": {
      "url": "https://api.postfleet.ai/api/mcp",
      "headers": { "Authorization": "Bearer pf_your_key_here" }
    }
  }
}

Local stdio (npx -y @postfleet/mcp)

npx -y @postfleet/mcp

Any MCP client that speaks stdio can run that command with POSTFLEET_API_KEY set:

{
  "mcpServers": {
    "postfleet": {
      "command": "npx",
      "args": ["-y", "@postfleet/mcp"],
      "env": { "POSTFLEET_API_KEY": "pf_your_key_here" }
    }
  }
}

Claude Code

claude mcp add postfleet --env POSTFLEET_API_KEY=pf_your_key_here -- npx -y @postfleet/mcp

POSTFLEET_API_URL (default https://api.postfleet.ai) overrides the API origin for staging or self-hosted deployments.

Keys

Keys are scoped — bootstrap can only create mailboxes, api covers mail operations, mcp is the one to hand a client. Use a separate key per workload so you can revoke one without breaking the rest. Never commit a key; the manifests in this repo deliberately contain none.

Links

Build from source

npm install && npm run build   # tsup → dist/

MIT licensed.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @postfleet/mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "ai-postfleet-postfleet": {
      "command": "npx",
      "args": [
        "-y",
        "@postfleet/mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@postfleet/mcpnpm

Compatible MCP Clients

Postfleet works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More