All notes

MCP · October 4, 2026

Set up domains and mail from a prompt

The Pigeon MCP server lets Cursor and Claude Code call the API. A full-access key can add and verify domains. A sending key can send mail and add contacts.

Install github.com/pigeonfs/pigeon-mcp. Put the key in the MCP environment, not in the prompt. PIGEON_BASE_URL is https://pigeonfs.com for the hosted API, or http://localhost:4005 on your machine. SENDER_EMAIL_ADDRESS is the default From, and it has to be on a verified domain.

Cursor

JSON
{
  "mcpServers": {
    "pigeon": {
      "command": "npx",
      "args": ["-y", "github:pigeonfs/pigeon-mcp"],
      "env": {
        "PIGEON_API_KEY": "pg_your_key",
        "PIGEON_BASE_URL": "https://pigeonfs.com",
        "SENDER_EMAIL_ADDRESS": "ada@yourdomain.com"
      }
    }
  }
}

Claude Code

shell
claude mcp add pigeon \
  -e PIGEON_API_KEY=pg_your_key \
  -e PIGEON_BASE_URL=https://pigeonfs.com \
  -e SENDER_EMAIL_ADDRESS=ada@yourdomain.com \
  -- npx -y github:pigeonfs/pigeon-mcp

Tools the prompt can call

  • send_email, list_emails, get_email, cancel_email
  • list_domains, create_domain, verify_domain (create and verify need a full-access key)
  • create_contact
  • trigger_automation

Use case: add a domain and read the DNS

Create the key on API keys with permission Full. Reload the MCP server so it picks up the new key. Then prompt:

shell
Use Pigeon to create the sending domain yourdomain.com.
Show the DNS records from the response, then tell me which ones I still have to publish.

create_domain returns the domain id and the records Pigeon expects. Publish those at your DNS host. The apex SPF row is optional. When the records are in place, prompt: "Verify Pigeon domain <id>." verify_domain checks them again. Amazon can still take a few minutes after the records answer.

Use case: draft a template, then send it

The MCP server sends html or text. It does not save a dashboard template. Ask for the copy, check it, then send. Save the same HTML as a template in the dashboard when you want a slug such as welcome for the Supabase webhook.

shell
Draft a short welcome email for a person named Ada.
Send it with Pigeon to me@yourdomain.com, subject "Welcome", using the default from address.

Use case: see what is waiting

shell
List my Pigeon domains and say which ones are still pending.
Then list the last emails with status queued.

list_domains and list_emails are safe with a sending key. create_contact adds someone to the audience. trigger_automation runs an automation you already saved, and it needs that automation's id.

pigeon-mcp on GitHub Call the same API from Supabase