MCP Agent Mail
by WhienLiou
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TOON_BIN | No | Path/command for toon_rust encoder (Node `toon` is rejected) | tru |
| HTTP_HOST | No | Bind host for HTTP transport | 127.0.0.1 |
| HTTP_PATH | No | Preferred MCP endpoint mount path (`/api` and `/mcp` aliases are also mounted) | /mcp/ |
| HTTP_PORT | No | Bind port for HTTP transport | 8765 |
| LOG_LEVEL | No | Server log level | INFO |
| AGENT_NAME | No | Set `AGENT_NAME` in your environment so the pre-commit guard can block commits that conflict with others' active exclusive file reservations. | |
| TOON_STATS | No | Emit TOON token stats (uses `tru --stats`) | false |
| LLM_ENABLED | No | Enable LiteLLM for thread summaries and discovery | true |
| DATABASE_URL | No | SQLAlchemy async database URL | sqlite+aiosqlite:///./storage.sqlite3 |
| STORAGE_ROOT | No | Root for per-project repos and SQLite DB | ~/.mcp_agent_mail_git_mailbox_repo |
| TOON_TRU_BIN | No | Explicit path/command for the `tru` encoder (overrides `TOON_BIN`) | |
| DATABASE_ECHO | No | Echo SQL statements for debugging | false |
| QUOTA_ENABLED | No | Enable quota enforcement | false |
| AGENT_MAIL_URL | No | Server URL for inbox check hooks | http://127.0.0.1:8765/mcp/ |
| CONVERT_IMAGES | No | Convert images to WebP (and optionally inline small ones) | true |
| LLM_MAX_TOKENS | No | Max tokens for LLM completions | 512 |
| ACK_TTL_ENABLED | No | Enable overdue ACK scanning (logs/panels; see views/resources) | false |
| ACK_TTL_SECONDS | No | Age threshold (seconds) for overdue ACKs | 1800 |
| APP_ENVIRONMENT | No | Environment name (development/production) | development |
| GIT_AUTHOR_NAME | No | Git commit author name | mcp-agent |
| HTTP_JWT_ISSUER | No | Expected `iss` (optional) | |
| HTTP_JWT_SECRET | No | HMAC secret for HS* algorithms (dev) | |
| LLM_TEMPERATURE | No | LLM temperature for text generation | 0.2 |
| AGENT_MAIL_AGENT | No | Agent name for inbox check hooks | *required* |
| AGENT_MAIL_TOKEN | No | Bearer token for inbox check hooks | |
| GIT_AUTHOR_EMAIL | No | Git commit author email | mcp-agent@example.com |
| HTTP_JWT_ENABLED | No | Enable JWT validation middleware | false |
| LOG_JSON_ENABLED | No | Output structlog JSON logs | false |
| LOG_RICH_ENABLED | No | Enable Rich console logging | true |
| AGENT_MAIL_BYPASS | No | Emergency bypass for the pre-commit guard (use sparingly) | |
| HTTP_BEARER_TOKEN | No | Static bearer token (only when JWT disabled) | |
| HTTP_CORS_ENABLED | No | Enable CORS middleware when true | false |
| HTTP_CORS_ORIGINS | No | CSV of allowed origins (e.g., `https://app.example.com,https://ops.example.com`) | |
| HTTP_JWT_AUDIENCE | No | Expected `aud` (optional) | |
| HTTP_JWT_JWKS_URL | No | JWKS URL for public key verification | |
| HTTP_OTEL_ENABLED | No | Enable OpenTelemetry instrumentation | false |
| HTTP_RBAC_ENABLED | No | Enforce read-only vs tools RBAC | true |
| LLM_CACHE_BACKEND | No | LLM cache backend (`memory` or `redis`) | memory |
| LLM_CACHE_ENABLED | No | Enable LLM response caching | true |
| LLM_DEFAULT_MODEL | No | Default LiteLLM model identifier | gpt-5-mini |
| LOG_INCLUDE_TRACE | No | Include trace-level logs | false |
| OTEL_SERVICE_NAME | No | Service name for telemetry | mcp-agent-mail |
| TOOLS_LOG_ENABLED | No | Log tool invocations for debugging | true |
| WORKTREES_ENABLED | No | Enables git-based identity features | false |
| AGENT_MAIL_PROJECT | No | Project key (absolute path) for inbox check hooks | *required* |
| DATABASE_POOL_SIZE | No | Base SQLAlchemy pool size (optional override) | 50 (sqlite) / 25 (other) |
| ACK_ESCALATION_MODE | No | `log` or `file_reservation` escalation mode | log |
| AGENT_MAIL_INTERVAL | No | Seconds between inbox checks | 120 |
| HTTP_JWT_ALGORITHMS | No | CSV of allowed algs | HS256 |
| HTTP_JWT_ROLE_CLAIM | No | JWT claim name containing role(s) | role |
| LLM_CACHE_REDIS_URL | No | Redis URL for LLM cache (if backend=redis) | |
| TOON_DEFAULT_FORMAT | No | Global default output format fallback (`json` or `toon`) | |
| GIT_IDENTITY_ENABLED | No | Enables git-based identity features | false |
| KEEP_ORIGINAL_IMAGES | No | Also store original image bytes alongside WebP (attachments/originals/) | false |
| DATABASE_MAX_OVERFLOW | No | Extra connections allowed beyond pool_size | 4 (sqlite) / 25 (other) |
| DATABASE_POOL_TIMEOUT | No | Seconds to wait for a pool connection before failing | 45 (sqlite) / 30 (other) |
| ACK_ESCALATION_ENABLED | No | Enable escalation for overdue ACKs | false |
| HTTP_RBAC_DEFAULT_ROLE | No | Role used when none present | reader |
| HTTP_RBAC_READER_ROLES | No | CSV of reader roles | reader,read,ro |
| HTTP_RBAC_WRITER_ROLES | No | CSV of writer roles | writer,write,tools,rw |
| INLINE_IMAGE_MAX_BYTES | No | Threshold (bytes) for inlining WebP images during send_message | 65536 |
| RETENTION_MAX_AGE_DAYS | No | Max age for retention policy reporting | 180 |
| HTTP_CORS_ALLOW_HEADERS | No | CSV of allowed headers or `*` | * |
| HTTP_CORS_ALLOW_METHODS | No | CSV of allowed methods or `*` | * |
| HTTP_RATE_LIMIT_BACKEND | No | `memory` or `redis` | memory |
| HTTP_RATE_LIMIT_ENABLED | No | Enable token-bucket limiter | false |
| QUOTA_INBOX_LIMIT_COUNT | No | Max inbox messages per agent (0=unlimited) | 0 |
| CONTACT_AUTO_TTL_SECONDS | No | TTL for in-session auto-approved contact links and the "recent contact" recency window (1 day) | 86400 |
| HTTP_RBAC_READONLY_TOOLS | No | CSV of read-only tool names | health_check,fetch_inbox,whois,search_messages,summarize_thread |
| HTTP_REQUEST_LOG_ENABLED | No | Print request logs (Rich + JSON) | false |
| LLM_COST_LOGGING_ENABLED | No | Log LLM API costs and token usage | true |
| RETENTION_REPORT_ENABLED | No | Enable retention/quota reporting | false |
| HTTP_RATE_LIMIT_REDIS_URL | No | Redis URL for multi-worker limits | |
| TOOL_METRICS_EMIT_ENABLED | No | Emit periodic tool usage metrics | false |
| CONTACT_AUTO_RETRY_ENABLED | No | Auto-retry contact requests on policy violations | true |
| HTTP_RATE_LIMIT_PER_MINUTE | No | Legacy per-IP limit (fallback) | 60 |
| AGENT_NAME_ENFORCEMENT_MODE | No | Agent naming policy: `strict` (reject invalid adjective+noun names), `coerce` (auto-generate if invalid), `always_auto` (always auto-generate) | coerce |
| CONTACT_ENFORCEMENT_ENABLED | No | Enforce contact policy before messaging. When `false`, explicitly addressed cross-project recipients (`project:X#name` / `name@project`) also no longer require an approved contact link; `block_all` is still honored | true |
| CONTACT_PENDING_TTL_SECONDS | No | TTL for the *pending* contact-request fallback created by `send_message(auto_contact_if_blocked=True)` when in-session auto-approval is not possible — i.e. how long an async human approver has to respond (7 days) | 604800 |
| HTTP_CORS_ALLOW_CREDENTIALS | No | Allow credentials on CORS | false |
| HTTP_RATE_LIMIT_TOOLS_BURST | No | Optional burst for tools (0=auto=rpm) | 0 |
| OTEL_EXPORTER_OTLP_ENDPOINT | No | OTLP exporter endpoint URL | |
| MCP_AGENT_MAIL_OUTPUT_FORMAT | No | Default output format for tools/resources (`json` or `toon`) | |
| ACK_TTL_SCAN_INTERVAL_SECONDS | No | Scan interval for overdue ACKs | 60 |
| AGENT_MAIL_REGISTRATION_TOKEN | No | Registration token used for authenticated tool calls and CLI commands. | |
| QUOTA_ATTACHMENTS_LIMIT_BYTES | No | Max attachment storage per project (0=unlimited) | 0 |
| ACK_ESCALATION_CLAIM_EXCLUSIVE | No | Make escalation file reservation exclusive | false |
| ALLOW_ABSOLUTE_ATTACHMENT_PATHS | No | Allow absolute filesystem paths in attachments and markdown image references. Keep this disabled on networked deployments unless you explicitly want server-side file reads. | false |
| HTTP_RATE_LIMIT_RESOURCES_BURST | No | Optional burst for resources (0=auto=rpm) | 0 |
| ACK_ESCALATION_CLAIM_HOLDER_NAME | No | Ops agent name to own escalation file reservations | |
| ACK_ESCALATION_CLAIM_TTL_SECONDS | No | TTL for escalation file reservations | 3600 |
| HTTP_RATE_LIMIT_TOOLS_PER_MINUTE | No | Per-minute for tools/call | 60 |
| FILE_RESERVATIONS_CLEANUP_ENABLED | No | Enable background cleanup of expired file reservations | false |
| MESSAGING_AUTO_HANDSHAKE_ON_BLOCK | No | When contact policy blocks delivery, attempt a contact handshake (auto-accept) and retry | true |
| RETENTION_IGNORE_PROJECT_PATTERNS | No | CSV of project patterns to ignore in retention/quota reports | demo,test*,testproj*,testproject,backendproj*,frontendproj* |
| RETENTION_REPORT_INTERVAL_SECONDS | No | Interval for retention reports (1 hour) | 3600 |
| MESSAGING_AUTO_REGISTER_RECIPIENTS | No | Automatically create missing local recipients during `send_message` and retry routing | true |
| TOOL_METRICS_EMIT_INTERVAL_SECONDS | No | Interval for metrics emission | 60 |
| FILE_RESERVATION_INACTIVITY_SECONDS | No | Inactivity threshold (seconds) before a reservation is considered stale | 1800 |
| HTTP_ALLOW_LOCALHOST_UNAUTHENTICATED | No | Allow localhost UI without auth (dev convenience) | true |
| HTTP_RATE_LIMIT_RESOURCES_PER_MINUTE | No | Per-minute for resources/read | 120 |
| FILE_RESERVATIONS_ENFORCEMENT_ENABLED | No | Block message writes on conflicting file reservations targeting mail archive paths (agents/, messages/, attachments/) | true |
| FILE_RESERVATION_ACTIVITY_GRACE_SECONDS | No | Grace window for recent mail/filesystem/git activity to keep a reservation active | 900 |
| FILE_RESERVATIONS_CLEANUP_INTERVAL_SECONDS | No | Interval for file reservations cleanup task | 60 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
No tools | |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues