PluginBench
MCP Server
Maintained
MIT

io.github.coopergwrenn/postals-mcp MCP Server

io.github.coopergwrenn/postals-mcp

What is the io.github.coopergwrenn/postals-mcp MCP server?

Send physical handwritten postcards from any AI agent. Real pen & ink, USPS, $4.99/card.

How to install io.github.coopergwrenn/postals-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • POSTALS_API_KEY
    required
    secret

    Your Handwrytten API key (v1.0) or Postals API key (v1.1+).

  • POSTALS_SENDER_NAME

    Default sender full name for return address.

  • POSTALS_SENDER_ADDRESS

    Default sender street address.

  • POSTALS_SENDER_CITY

    Default sender city.

  • POSTALS_SENDER_STATE

    Default sender 2-letter US state code.

  • POSTALS_SENDER_ZIP

    Default sender 5-digit ZIP (or 5+4 format).

  • POSTALS_DEFAULT_CARD_IMAGE

    Default card front image URL (HTTPS, PNG or JPEG, landscape 7x5 preferred).

  • POSTALS_HANDWRITING_STYLE

    Default handwriting font. Default: Joyful Jennifer.

  • POSTALS_DAILY_LIMIT

    Max cards per day (safety net). Default: 50.

  • POSTALS_TEST_MODE

    Set to 'true' for test mode (validates inputs, no cards actually sent).

  • CLOUDFLARE_ACCOUNT_ID

    Optional. Enables AI message generation via Cloudflare Workers AI.

  • CLOUDFLARE_API_TOKEN
    secret

    Optional. Required together with CLOUDFLARE_ACCOUNT_ID for AI message generation.

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "postals-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postals-mcp"
      ],
      "env": {
        "POSTALS_API_KEY": "<YOUR_POSTALS_API_KEY>",
        "POSTALS_SENDER_NAME": "<YOUR_POSTALS_SENDER_NAME>",
        "POSTALS_SENDER_ADDRESS": "<YOUR_POSTALS_SENDER_ADDRESS>",
        "POSTALS_SENDER_CITY": "<YOUR_POSTALS_SENDER_CITY>",
        "POSTALS_SENDER_STATE": "<YOUR_POSTALS_SENDER_STATE>",
        "POSTALS_SENDER_ZIP": "<YOUR_POSTALS_SENDER_ZIP>",
        "POSTALS_DEFAULT_CARD_IMAGE": "<YOUR_POSTALS_DEFAULT_CARD_IMAGE>",
        "POSTALS_HANDWRITING_STYLE": "<YOUR_POSTALS_HANDWRITING_STYLE>",
        "POSTALS_DAILY_LIMIT": "<YOUR_POSTALS_DAILY_LIMIT>",
        "POSTALS_TEST_MODE": "<YOUR_POSTALS_TEST_MODE>",
        "CLOUDFLARE_ACCOUNT_ID": "<YOUR_CLOUDFLARE_ACCOUNT_ID>",
        "CLOUDFLARE_API_TOKEN": "<YOUR_CLOUDFLARE_API_TOKEN>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "postals-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postals-mcp"
      ],
      "env": {
        "POSTALS_API_KEY": "<YOUR_POSTALS_API_KEY>",
        "POSTALS_SENDER_NAME": "<YOUR_POSTALS_SENDER_NAME>",
        "POSTALS_SENDER_ADDRESS": "<YOUR_POSTALS_SENDER_ADDRESS>",
        "POSTALS_SENDER_CITY": "<YOUR_POSTALS_SENDER_CITY>",
        "POSTALS_SENDER_STATE": "<YOUR_POSTALS_SENDER_STATE>",
        "POSTALS_SENDER_ZIP": "<YOUR_POSTALS_SENDER_ZIP>",
        "POSTALS_DEFAULT_CARD_IMAGE": "<YOUR_POSTALS_DEFAULT_CARD_IMAGE>",
        "POSTALS_HANDWRITING_STYLE": "<YOUR_POSTALS_HANDWRITING_STYLE>",
        "POSTALS_DAILY_LIMIT": "<YOUR_POSTALS_DAILY_LIMIT>",
        "POSTALS_TEST_MODE": "<YOUR_POSTALS_TEST_MODE>",
        "CLOUDFLARE_ACCOUNT_ID": "<YOUR_CLOUDFLARE_ACCOUNT_ID>",
        "CLOUDFLARE_API_TOKEN": "<YOUR_CLOUDFLARE_API_TOKEN>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "postals-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postals-mcp"
      ],
      "env": {
        "POSTALS_API_KEY": "<YOUR_POSTALS_API_KEY>",
        "POSTALS_SENDER_NAME": "<YOUR_POSTALS_SENDER_NAME>",
        "POSTALS_SENDER_ADDRESS": "<YOUR_POSTALS_SENDER_ADDRESS>",
        "POSTALS_SENDER_CITY": "<YOUR_POSTALS_SENDER_CITY>",
        "POSTALS_SENDER_STATE": "<YOUR_POSTALS_SENDER_STATE>",
        "POSTALS_SENDER_ZIP": "<YOUR_POSTALS_SENDER_ZIP>",
        "POSTALS_DEFAULT_CARD_IMAGE": "<YOUR_POSTALS_DEFAULT_CARD_IMAGE>",
        "POSTALS_HANDWRITING_STYLE": "<YOUR_POSTALS_HANDWRITING_STYLE>",
        "POSTALS_DAILY_LIMIT": "<YOUR_POSTALS_DAILY_LIMIT>",
        "POSTALS_TEST_MODE": "<YOUR_POSTALS_TEST_MODE>",
        "CLOUDFLARE_ACCOUNT_ID": "<YOUR_CLOUDFLARE_ACCOUNT_ID>",
        "CLOUDFLARE_API_TOKEN": "<YOUR_CLOUDFLARE_API_TOKEN>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "postals-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "postals-mcp"
      ],
      "env": {
        "POSTALS_API_KEY": "<YOUR_POSTALS_API_KEY>",
        "POSTALS_SENDER_NAME": "<YOUR_POSTALS_SENDER_NAME>",
        "POSTALS_SENDER_ADDRESS": "<YOUR_POSTALS_SENDER_ADDRESS>",
        "POSTALS_SENDER_CITY": "<YOUR_POSTALS_SENDER_CITY>",
        "POSTALS_SENDER_STATE": "<YOUR_POSTALS_SENDER_STATE>",
        "POSTALS_SENDER_ZIP": "<YOUR_POSTALS_SENDER_ZIP>",
        "POSTALS_DEFAULT_CARD_IMAGE": "<YOUR_POSTALS_DEFAULT_CARD_IMAGE>",
        "POSTALS_HANDWRITING_STYLE": "<YOUR_POSTALS_HANDWRITING_STYLE>",
        "POSTALS_DAILY_LIMIT": "<YOUR_POSTALS_DAILY_LIMIT>",
        "POSTALS_TEST_MODE": "<YOUR_POSTALS_TEST_MODE>",
        "CLOUDFLARE_ACCOUNT_ID": "<YOUR_CLOUDFLARE_ACCOUNT_ID>",
        "CLOUDFLARE_API_TOKEN": "<YOUR_CLOUDFLARE_API_TOKEN>"
      }
    }
  }
}
Claude Code
claude mcp add postals-mcp --env POSTALS_API_KEY=<YOUR_POSTALS_API_KEY> --env POSTALS_SENDER_NAME=<YOUR_POSTALS_SENDER_NAME> --env POSTALS_SENDER_ADDRESS=<YOUR_POSTALS_SENDER_ADDRESS> --env POSTALS_SENDER_CITY=<YOUR_POSTALS_SENDER_CITY> --env POSTALS_SENDER_STATE=<YOUR_POSTALS_SENDER_STATE> --env POSTALS_SENDER_ZIP=<YOUR_POSTALS_SENDER_ZIP> --env POSTALS_DEFAULT_CARD_IMAGE=<YOUR_POSTALS_DEFAULT_CARD_IMAGE> --env POSTALS_HANDWRITING_STYLE=<YOUR_POSTALS_HANDWRITING_STYLE> --env POSTALS_DAILY_LIMIT=<YOUR_POSTALS_DAILY_LIMIT> --env POSTALS_TEST_MODE=<YOUR_POSTALS_TEST_MODE> --env CLOUDFLARE_ACCOUNT_ID=<YOUR_CLOUDFLARE_ACCOUNT_ID> --env CLOUDFLARE_API_TOKEN=<YOUR_CLOUDFLARE_API_TOKEN> -- npx -y postals-mcp

Related MCP servers

Give your AI agent stealth web scraping with Cloudflare bypass and CSS selection, powered by Scrapling.

67k
Python
BSD-3-Clause
View repository →

Give your AI coding agent full control of a live Chrome browser for automation, debugging, and performance analysis.

45k
TypeScript
Apache-2.0
View repository →

Let AI agents manage your Puter files, websites, and serverless workers over MCP.

43k
TypeScript
AGPL-3.0
View repository →

Browser automation for AI agents via MCP, powering ByteDance's Agent TARS hybrid GUI/DOM browser control.

37k
TypeScript
Apache-2.0
View repository →

Run arbitrary shell commands from an MCP-connected AI agent.

37k
TypeScript
Apache-2.0
View repository →

Filesystem access MCP server from ByteDance's UI-TARS/Agent TARS ecosystem.

37k
TypeScript
Apache-2.0
View repository →