Sessy — Amazon SES observability
RemoteAbout Sessy — Amazon SES observability
Sessy is an open-source observability tool for AWS SES, for teams that need visibility into email events after sending. It includes a web interface and an MCP server that lets AI coding agents query email data and manage sources.
Key features
- 01View delivery, bounce, complaint, open, and click events
- 02Search events and inspect delivery timelines
- 03Retrieve aggregate statistics and bounce diagnostics
- 04Create and rename sources
- 05Self-host instances with Docker
Use cases
- 01Investigate email bounces and delivery issues
- 02Analyze delivery and recipient engagement
- 03Let AI coding agents query SES email events
- 04Get SES setup details for a new application
MCP support
Sessy exposes an MCP server at `/mcp` for searching events, inspecting message timelines and statistics, managing sources, and retrieving SES configuration details. Email data is read-only.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://api.sessy.do/mcpclaude mcp add --transport http marckohlbrugge-sessy https://api.sessy.do/mcp{"mcpServers":{"marckohlbrugge-sessy":{"type":"http","url":"https://api.sessy.do/mcp"}}}Open in Cursor{"servers":{"marckohlbrugge-sessy":{"type":"http","url":"https://api.sessy.do/mcp"}}}Open in VS Code{"mcpServers":{"marckohlbrugge-sessy":{"type":"http","url":"https://api.sessy.do/mcp"}}}{"mcpServers":{"marckohlbrugge-sessy":{"serverUrl":"https://api.sessy.do/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://api.sessy.do/mcpAuth requiredTools
Details
From the project READMESessy
Open-source email observability for AWS SES by Marc Köhlbrugge.
What is Sessy?
Amazon SES is a fantastic email service: cost-effective, reliable, and great deliverability. But it's frustratingly difficult to see what's actually happening with your emails.
That's why many people turn to overpriced email services that are often just glorified SES wrappers with a nice UI. You end up paying a lot for something you could do yourself.
Sessy is the open-source alternative. Use raw SES and still get a beautiful interface to see what happens after you hit send: deliveries, bounces, complaints, opens, clicks, and more.
Running your own Sessy instance
The easiest way to run Sessy is with Docker:
docker run -p 80:80 \
-e SECRET_KEY_BASE=$(openssl rand -hex 64) \
-e DISABLE_SSL=true \
-v sessy:/rails/storage \
ghcr.io/marckohlbrugge/sessy:main
See Docker deployment docs for full configuration options.
Want to deploy your own modified version? See Kamal deployment docs for deploying from a fork.
Using Dokku? See Dokku deployment docs.
Need help configuring AWS SES itself? See AWS SES setup guide.
For hardening recommendations, see SES security and deliverability best practices.
MCP server for AI agents
Sessy ships an MCP server at /mcp, so AI coding agents (Claude Code, Cursor, Codex) can query your email data: search events, inspect a message's full delivery timeline with bounce diagnostics, and pull aggregate stats. Agents can also create and rename sources and fetch the SES wiring details (webhook URL, configuration set and topic names) to set up a new app end to end. Email data is read-only; retention settings and deleting sources stay in the web UI.
Create an API key on the API keys page in the web UI, then follow the connect instructions at /docs/mcp on your instance. For example, for Claude Code:
claude mcp add --transport http sessy https://your-sessy-host/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Two things worth knowing:
- Cloudflare / CDN users: bot protection (managed challenges) blocks MCP clients. Exempt the
/mcppath from bot protection or agent requests will fail. - HTTP Basic auth:
/mcpauthenticates with API keys only and ignoresHTTP_AUTH_*. Enabling HTTP Basic later does not revoke previously created API keys — review the API keys page after locking down an install.
Hosted version
We're working on a managed version of Sessy for those who'd rather not run their own instance.
You'll notice references to it in this codebase: a saas/ directory, Gemfile.saas, and the occasional Sessy.saas? check. These power the hosted version and are intentionally kept in this repository for simplicity, rather than maintaining separate repos. None of it affects self-hosting: the default bundle ignores the saas/ engine entirely, and the test suite verifies the open-source version behaves identically without it.
Jobs dashboard
Sessy uses Solid Queue for background jobs. A web dashboard is available at /jobs to monitor queues, retry failed jobs, and view recurring tasks.
Development
You are welcome to modify Sessy to your liking.
To get started:
bin/setup
bin/dev
Contributing
We welcome contributions! Since we're still in a very early stage, please keep the following in mind:
- Typos and obvious bugs: Feel free to submit a PR directly.
- Code changes: Please try to match our existing style.
- New features: Please open an issue first to discuss before implementing.
- Deployment docs: We keep first-party deployment docs focused on broad, open, self-hosted paths we actively use (for example Docker, Kamal, and Dokku). We generally do not add provider-specific deployment guides to this repository.
For anything beyond small fixes, please open an issue first so no one wastes their time on something we might not merge.
License
Sessy is released under the O'Saasy License, except where a subdirectory specifies otherwise (for example, the Claude and Cursor plugin packages are MIT).
Inspiration
Sessy was heavily inspired by Fizzy and we're grateful to 37signals for open-sourcing their codebase.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.