sesame-mcp
An MCP server that exposes Sesame's human-in-the-loop approval API as an agent tool. Drop it into any MCP-capable agent (Claude Desktop, Claude Code, Cursor, etc.) and that agent gains an approval gate it can call before doing anything destructive or sensitive — with zero integration code on your side.
The server talks only to Sesame's public REST contract over stdio. It does not import the broker, core, or CLI packages.
Tool
request_approval(
action: str,
summary: str,
reason: str | None = None,
timeout_seconds: int = 300,
) -> dict
It triggers an approval (POST /v1/approvals), then long-polls
(GET /v1/approvals/{id}?wait=true) until a human decides or timeout_seconds
elapses. A human is notified via Telegram + push and must approve or deny.
Returns:
{ "approval_id": "ap_...", "status": "approved" | "denied" | "expired" | "timeout" | "error", "decided": true }
The agent must only proceed with the action when status == "approved".
Configuration
Set SESAME_API_KEY — create one in the
Sesame dashboard (API Keys). That's the
only thing required; the server reaches the hosted Sesame broker automatically
and fails fast at startup if the key is missing.
Self-hosting only: point SESAME_BROKER_URL at your own broker (defaults to
https://getsesame.dev).
Install
uv pip install sesame-mcp # or: pip install sesame-mcp
sesame-mcp # runs the stdio server
Register in an MCP client
Claude Code
claude mcp add sesame \
--env SESAME_API_KEY=sk_live_xxx \
-- uvx sesame-mcp
SESAME_API_KEY is the only required env var — the server targets the hosted
broker by default. Add --env SESAME_BROKER_URL=... only to self-host or hit a
local broker.
uvx sesame-mcp downloads and runs the published package on demand — no prior
install needed.
Claude Desktop / generic JSON config
Add to your client's mcpServers block (e.g. claude_desktop_config.json):
{
"mcpServers": {
"sesame": {
"command": "sesame-mcp",
"env": {
"SESAME_API_KEY": "sk_live_xxx"
}
}
}
}
If sesame-mcp is not on the client's PATH, use uvx:
{
"mcpServers": {
"sesame": {
"command": "uvx",
"args": ["sesame-mcp"],
"env": { "SESAME_API_KEY": "sk_live_xxx" }
}
}
}
Any MCP-capable agent that loads this server gets the approval gate automatically — no SDK calls, no glue code.
Development
uv run --extra dev ruff check .
uv run --extra dev pytest tests/
Metadata
Release files for sesame-mcp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sesame_mcp-0.1.2.tar.gz | 7.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sesame_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.3 kB
Release files / sesame_mcp-0.1.2.tar.gz
| Download URL | sesame_mcp-0.1.2.tar.gz |
|---|---|
| Size | 7.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5b24168c2dc165242e07eecd08f8f76c41c3fba8c1125395800e866e23cb399e
|
|
BLAKE2b-256 checksum How to use checksums |
008b8bca5be338660e55f5d72ce26668192c035efef1175309849c98f08b5561
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sesame_mcp-0.1.2-py3-none-any.whl
| Download URL | sesame_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3475faeee0dce8faa36ac863bda64c802e8914e44534a35c645309a02d663f82
|
|
BLAKE2b-256 checksum How to use checksums |
5c34aef2310c51b2fd26f59fb53b9f54d8949febcf6e153fe32e771687b91d9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|