Skip to main content

FastMCP stdio server exposing the useSend email platform over MCP.

Project description

usesend-mcp

CI PyPI Docker Hub License: MIT Python 3.13

An MCP server for the useSend email platform (an open-source Resend/Postmark alternative). It gives any MCP client — Claude, Cursor, VS Code, Windsurf, Codex — 33 tools for transactional email, contacts, campaigns, domains, and analytics, over stdio.

Setup

1. Get a useSend API key (us_…) from Settings → API Keys at app.usesend.com (or your self-hosted instance).

2. Add the server to your MCP client. Almost every client uses the same JSON — paste this in and swap in your key:

{
  "mcpServers": {
    "usesend": {
      "command": "uvx",
      "args": ["usesend-mcp"],
      "env": { "USESEND_API_KEY": "us_your_api_key_here" }
    }
  }
}

uvx (from uv) downloads and runs the server from PyPI on demand — nothing to install first.

Where does that JSON go?

Client Config file
Claude Code .mcp.json (project root)
Claude Desktop claude_desktop_config.json
Cursor .cursor/mcp.json (project) or ~/.cursor/mcp.json
VS Code (Cline) cline_mcp_settings.json
Windsurf ~/.codeium/windsurf/mcp_config.json

Prefer the command line?

claude mcp add usesend --env USESEND_API_KEY=us_your_api_key_here -- uvx usesend-mcp   # Claude Code
codex  mcp add usesend --env USESEND_API_KEY=us_your_api_key_here -- uvx usesend-mcp   # Codex CLI

Done — ask your assistant "list my useSend contact books" or "send a welcome email to jane@example.com" to check it works.

Run with Docker instead of uvx

Use the published image in any JSON config above:

{
  "mcpServers": {
    "usesend": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "USESEND_API_KEY", "gardenbaum/usesend-mcp"],
      "env": { "USESEND_API_KEY": "us_your_api_key_here" }
    }
  }
}

Or run it directly (-i keeps stdin open for the stdio protocol, --rm cleans up on exit):

docker run -i --rm -e USESEND_API_KEY=us_your_api_key_here gardenbaum/usesend-mcp

Images: gardenbaum/usesend-mcp on Docker Hub, mirrored to ghcr.io/gardenbaum/usesend-mcplinux/amd64 + linux/arm64.

Configuration

Environment variables (prefix USESEND_, also read from a .env file):

Variable Default Description
USESEND_API_KEY (required) API key, format us_….
USESEND_BASE_URL https://app.usesend.com API base URL; change for a self-hosted instance.
USESEND_DEFAULT_FROM (unset) Default sender for send_email / batch_send_emails.
USESEND_LOG_LEVEL INFO Log verbosity (DEBUGCRITICAL).
USESEND_TIMEOUT 30 HTTP request timeout, in seconds.

Tools

33 tools across 6 domains. Every tool also accepts an optional response_format ("markdown" default, or "json" for machine-readable output).

Full tool list

Emails (6)

Tool Description
usesend_send_email Send a single transactional email (falls back to USESEND_DEFAULT_FROM if from_address is omitted).
usesend_batch_send_emails Send up to 100 emails in a single request.
usesend_list_emails List emails with pagination; optional start_date/end_date (ISO-8601) and domain_id filters.
usesend_get_email Get details for a specific email.
usesend_cancel_email Cancel a scheduled email.
usesend_update_email_schedule Reschedule a scheduled email.

Contact Books (5)

Tool Description
usesend_list_contact_books List all contact books accessible by the API key.
usesend_get_contact_book Get details for a specific contact book.
usesend_create_contact_book Create a contact book, optionally with double opt-in.
usesend_update_contact_book Update a contact book's name or double opt-in setting.
usesend_delete_contact_book Delete a contact book.

Contacts (8)

Tool Description
usesend_list_contacts List contacts in a contact book, with pagination.
usesend_get_contact Get details for a specific contact.
usesend_create_contact Create a contact in a contact book.
usesend_update_contact Update a contact's mutable fields.
usesend_upsert_contact Create or update a contact by email address.
usesend_delete_contact Delete a contact from a contact book.
usesend_bulk_create_contacts Create multiple contacts in a single request.
usesend_bulk_delete_contacts Delete multiple contacts in a single request.

Campaigns (7)

Tool Description
usesend_create_campaign Create an email campaign.
usesend_get_campaign Get details for a specific campaign.
usesend_list_campaigns List campaigns; optional status and search filters.
usesend_delete_campaign Delete a campaign.
usesend_pause_campaign Pause a running campaign.
usesend_resume_campaign Resume a paused campaign.
usesend_schedule_campaign Schedule a campaign for a future time.

Domains (5)

Tool Description
usesend_list_domains List all domains.
usesend_get_domain Get details for a specific domain.
usesend_create_domain Create a domain (name and region required).
usesend_verify_domain Trigger DNS verification for a domain.
usesend_delete_domain Delete a domain.

Analytics (2)

Tool Description
usesend_email_time_series Email volume time series (days: "7" or "30"); optional domain_id.
usesend_reputation_metrics Sending reputation metrics (bounce/complaint rates); optional domain_id.

Development

uv sync --dev      # install runtime + dev dependencies
just check         # lint, format, types, import contracts, tests @ 100% diff coverage

Work happens on dev; main is the release branch (push a v* tag to publish). Architectural decisions are recorded as ADRs in docs/adr/. Logs go to stderrstdout is reserved for the MCP protocol.

Contributing · Security · License

Contributions welcome — see CONTRIBUTING.md and the Code of Conduct. Report vulnerabilities privately via SECURITY.md, not public issues. Licensed under MIT © gardenbaum.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

usesend_mcp-0.1.0.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

usesend_mcp-0.1.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file usesend_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: usesend_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for usesend_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 524fc43917ff3d23befb82688da06cc966a58c7b53c171e4e869f303227a011b
MD5 79fa1a61761566b9d6041d334a61122d
BLAKE2b-256 42c3d5bd8c94aa306c3ace7f4e5722a2f3860f256f78c51691942ab94110cb7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for usesend_mcp-0.1.0.tar.gz:

Publisher: release.yml on gardenbaum/usesend-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file usesend_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: usesend_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for usesend_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ca8ed7dc348c3d3d8aa4d663c451ef8f69cf0b89fd718051287985826fc0158
MD5 743ca9c7fd03038d44050ad859bedb2f
BLAKE2b-256 e2e31c0c902dc80f925d6f03eb8874f63f00dca2b51c16aa9563299a640be101

See more details on using hashes here.

Provenance

The following attestation bundles were made for usesend_mcp-0.1.0-py3-none-any.whl:

Publisher: release.yml on gardenbaum/usesend-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page