Skip to main content
Glama
README.md
localSMTP
=========

Local dummy SMTP server for development. It accepts messages and writes the
original bytes to `.eml` files.

## SMTP server

```powershell
uv run localsmtp --host 127.0.0.1 --port 25 --out ./mail
```

The legacy entry point also works:

```powershell
uv run python .\main.py --host 127.0.0.1 --port 25 --out ./mail
```

## MCP server

The MCP entry point starts both the MCP stdio server and an SMTP listener. This
lets coding agents start the mail catcher only when they need it.

```powershell
uv run localsmtp-mcp --smtp-host 127.0.0.1 --smtp-port 25
```

By default, the MCP server stores received mail in a temporary directory. Pass
`--out` when you want to keep messages in a specific location.

After publishing the package, use it from an MCP client with `uvx`:

```json
{
  "mcpServers": {
    "localsmtp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/fclef819/localSMTP-mcp.git",
        "localsmtp-mcp",
        "--smtp-host",
        "127.0.0.1",
        "--smtp-port",
        "25"
      ]
    }
  }
}
```

## MCP tools

- `list_messages(limit = 50, newest_first = true)`
- `get_message(id, include_raw = false)`
- `clear_messages()`
- `get_server_status()`

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: clearing all messages, retrieving a specific message, checking server status, and listing messages. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., clear_messages, get_message), making it predictable for agents.

Tool Count5/5

With only 4 tools, the set is well-scoped for a local SMTP server, covering essential operations without unnecessary bloat.

Completeness4/5

The set covers core operations (list, get, clear, status) but lacks individual message deletion or filtering, which could be useful but not critical.

Maintenance

ActivityStale
ResponsivenessNo issues