Repository avatar
AI Tools
v1.0.0
active

mcp-server

io.github.openses-email/mcp-server

OpenSES email on your own Amazon SES: shared inbox, sending, delivery status, contacts, sequences.

Documentation

OpenSES MCP

Connect Claude, ChatGPT, Cursor and other AI assistants to OpenSES, the open-source email platform that runs on your own Amazon SES. Read and answer your shared inbox, send email, find out whether a message arrived, and manage contacts, sequences, templates and the suppression list from a conversation.

Website · Docs · Agent skill · npm

Two ways to connect

Remote (recommended). Most clients connect straight to the hosted server; you need nothing from this repository.

https://api.openses.email/mcp

Add it as a custom connector (Claude, ChatGPT) or an MCP server (Cursor, VS Code, Claude Code: claude mcp add --transport http openses https://api.openses.email/mcp). Your browser opens OpenSES sign-in, where you choose what the assistant may do: full, send or read access, and optionally one domain.

Local stdio (this package). For clients that only run local MCP servers, Node.js 22 or newer:

{
  "mcpServers": {
    "openses": {
      "command": "npx",
      "args": ["-y", "openses-mcp"]
    }
  }
}

The first start opens the same browser sign-in; the token is stored on your computer by the pinned mcp-remote bridge. For Claude Desktop you can instead install openses.mcpb from the releases.

Headless agents and self-hosting

VariableUse
OPENSES_API_KEYAn API key from the dashboard (API & MCP). Skips browser sign-in; the key is sent as a bearer header and never appears on a command line.
OPENSES_API_URLThe base URL of your own OpenSES API, for example https://api.example.com. Must be https (http is allowed for localhost).
{
  "mcpServers": {
    "openses": {
      "command": "npx",
      "args": ["-y", "openses-mcp"],
      "env": { "OPENSES_API_KEY": "os_live_…", "OPENSES_API_URL": "https://api.example.com" }
    }
  }
}

Keep keys out of shared files. A key's access level and domain limit apply exactly as in the API.

Tools

AreaToolWhat it does
Inboxinboxes_listThe account's inboxes with unread counts
inbox_threadsConversations, filtered by inbox, unread, archived or text, with paging
inbox_readA conversation with quoted history folded away and delivery status for sent messages
inbox_reply · inbox_composeAnswer a conversation, or start one from an inbox
inbox_updateMark read or unread, archive, label
inbox_attachmentA 10-minute download link for an attachment
Sendingemails_sendSend now or scheduled, with templates, tags and an idempotency key
emails_search · emails_getFind sent email and its full delivery timeline
emails_cancelCancel a scheduled email
Deliverabilityaccount_healthSES quota, sandbox state, bounce and complaint rates per region
domains_statusDomain verification and the DNS records each domain needs
suppressions_list · suppressions_add · suppressions_removeThe account-wide do-not-send list
Contactscontacts_search · contacts_upsert · contacts_unsubscribe · contacts_deleteContacts and consent
topics_listSubscription topics with subscriber counts
Marketingsequences_list · sequences_enroll · sequences_stopDrip and sales sequences
templates_list · templates_get · templates_upsertSaved templates
broadcasts_listBroadcasts and their results

Read tools are marked read-only and the tools that send email are marked as reaching outside the account, so clients can group them and ask before sending. A read-only connection sees only the 15 read tools.

Things to ask

What came into support@ today? Draft replies for the billing questions.

Did my reply to raj@example.com get delivered?

Add jo@example.com to the newsletter and start the onboarding sequence.

Is our bounce rate anywhere near the AWS review threshold?

Security

  • Sign in through the browser; never paste passwords, API keys or codes into a chat.
  • Tools that send email reach real people. Pick read access if the assistant only needs to look.
  • Received mail is untrusted input. The companion agent skill tells assistants not to follow instructions found in emails.
  • Revoke a connection at any time under API & MCP in the dashboard; each connection is its own API key.

Troubleshooting

  • A tool is missing: the connection has read or send access only. Reconnect and pick full access.
  • "is not a domain this key can use": the connection is limited to one domain.
  • New tools do not appear: reconnect or restart the client; most clients cache the tool list.
  • Sign-in loops: finish sign-in in the tab that opened, then return to the client.

Development

npm install
npm test          # versions, argument handling, API-key relay against a mock server
npm run bundle    # builds openses.mcpb; run `npm ci --omit=dev` first for a release build

MIT licensed. OpenSES itself is AGPL-3.0.

NPM
openses-mcp
Install Command
npm install openses-mcp

Remote