Mail.tm MCP Server
by opastorello
README.md
# Mail.tm MCP Server
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that lets AI assistants manage temporary email addresses via the [mail.tm](https://mail.tm) API. Create disposable inboxes, read messages, and manage accounts — all from your AI chat.
[](https://github.com/opastorello/mailtm-mcp-server/pkgs/container/mailtm-mcp-server)
[](https://github.com/opastorello/mailtm-mcp-server/releases)
## Tools
| Tool | Description |
|------|-------------|
| `list_domains` | List available domains for creating temp addresses |
| `create_temp_email` | Create a new disposable email account (random or custom) |
| `login` | Log in to an existing mail.tm account |
| `get_inbox` | List messages in the current inbox (paginated) |
| `read_email` | Read the full content of an email by ID |
| `mark_as_read` | Mark a message as read |
| `delete_email` | Permanently delete a message |
| `get_account_info` | Get current account details and storage usage |
| `delete_account` | Permanently delete the account and all its messages |
| `logout` | Clear the current session without deleting the account |
## Transport
The server runs as a **streamable-http** MCP server on port `8000`, endpoint `/mcp`.
Compatible with:
- [mcpjungle](https://github.com/mcpjungle/mcpjungle)
- Claude Desktop (HTTP mode)
- Any MCP client that supports `streamable-http`
---
## Quick Start
### Docker Compose (recommended)
```bash
curl -O https://raw.githubusercontent.com/opastorello/mailtm-mcp-server/master/docker-compose.yml
docker compose up -d
```
Server available at `http://localhost:8000/mcp`.
### Docker (manual)
```bash
docker pull ghcr.io/opastorello/mailtm-mcp-server:latest
docker run -d -p 8000:8000 -v mailtm-session:/tmp --name mailtm ghcr.io/opastorello/mailtm-mcp-server:latest
```
### Local (no Docker)
```bash
pip install -r requirements.txt
python mailtm_server.py
```
Requires Python 3.11+.
---
## Register with mcpjungle
### Standalone (mcpjungle on the host)
```bash
cat > /tmp/mailtm.json << 'EOF'
{
"name": "mailtm",
"transport": "streamable_http",
"url": "http://localhost:8000/mcp"
}
EOF
mcpjungle register -c /tmp/mailtm.json
```
### mcpjungle running in Docker (same host)
When mcpjungle runs inside Docker, `localhost` doesn't resolve to the host. You need both containers on the same Docker network.
The included `docker-compose.yml` handles this automatically — it joins the `opt_default` network (mcpjungle's default network) and sets a fixed container name `mailtm` so the hostname never changes across restarts.
```bash
# Download and start
curl -O https://raw.githubusercontent.com/opastorello/mailtm-mcp-server/master/docker-compose.yml
docker compose up -d
# Register using the container hostname
cat > /tmp/mailtm.json << 'EOF'
{
"name": "mailtm",
"transport": "streamable_http",
"url": "http://mailtm:8000/mcp"
}
EOF
mcpjungle register -c /tmp/mailtm.json
```
> **Note:** The transport value is `streamable_http` (underscore), not `http` — this is mcpjungle-specific.
> **Note:** `host.docker.internal` does not work on Linux. Use the container name or a fixed IP instead.
To re-register after changes:
```bash
mcpjungle deregister mailtm
mcpjungle register -c /tmp/mailtm.json
```
### Invoke tools via mcpjungle CLI
```bash
mcpjungle invoke mailtm__create_temp_email
mcpjungle invoke mailtm__get_inbox
mcpjungle invoke mailtm__list_domains
```
---
## Configure in Claude Desktop
Pointing to a running instance:
```json
{
"mcpServers": {
"mailtm": {
"url": "http://localhost:8000/mcp"
}
}
}
```
---
## Session Management
The server stores the active session in `/tmp/mailtm_session.json`:
- Session persists between tool calls automatically within the same run.
- Mount `/tmp` as a Docker volume to survive container restarts.
- `logout()` clears the session without deleting the account.
- `delete_account()` deletes the account and clears the session.
---
## Example Workflow
```
1. create_temp_email() → generates a random address like abc123@dollicons.com
2. get_inbox() → check for new messages
3. read_email(message_id="...") → read the content
4. delete_account() → clean up when done
```
---
## Dependencies
- [`mcp[cli]`](https://pypi.org/project/mcp/) >= 1.2.0 — FastMCP server framework
- [`requests`](https://pypi.org/project/requests/) >= 2.31.0 — HTTP client for the mail.tm API
---
## License
MIT — [Nícolas Pastorello](https://github.com/opastorello)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues