Add email capabilities to your self-hosted LibreChat instance through MCP. Send, read, and manage email with any supported LLM.
LibreChat is an open-source, self-hosted AI chat platform that supports multiple LLM providers including OpenAI, Anthropic, Google, and local models. With MCP integration, you can extend LibreChat's capabilities with external tools like MultiMail, giving any connected model access to email operations.
MCP servers in LibreChat are configured in the platform's YAML configuration file, typically librechat.yaml. LibreChat supports both stdio and SSE transport, and the MultiMail server connects via stdio. Once configured, email tools are available across all conversations in your LibreChat instance.
For teams and organizations running their own AI chat infrastructure, the LibreChat and MultiMail combination provides email tools with full data sovereignty. You control the chat platform, choose your LLM provider, and MultiMail handles the email operations with configurable oversight.
Sign up at multimail.dev and create an API key from your dashboard. This key authenticates all MCP server requests.
In the MultiMail dashboard, create a mailbox for your LibreChat instance. Set oversight to gated_send so outbound emails require approval.
Add the MultiMail MCP server to your LibreChat configuration file.
mcpServers:
multimail:
type: stdio
command: npx
args:
- "-y"
- "@multimail/mcp-server"
env:
MULTIMAIL_API_KEY: "mm_live_your_key_here"Restart your LibreChat instance to load the new MCP configuration. If using Docker, run 'docker compose restart' or rebuild with 'docker compose up -d'.
Start a new conversation in LibreChat and ask the AI to list your MultiMail mailboxes. If the MCP server is connected, email tools will be available in the conversation.
| Tool | Description | Example |
|---|---|---|
| send_email | Send an email from your agent mailbox to any recipient. | Send a summary of a team discussion to all participants. |
| reply_email | Reply to a received email, maintaining the thread context. | Reply to a client inquiry using information from the chat history. |
| check_inbox | Check a mailbox for new or unread messages. | Check for new support tickets in the shared team inbox. |
| read_email | Read the full content of a specific email including headers and body. | Read a detailed customer inquiry to draft a thorough response. |
| create_mailbox | Create a new agent mailbox on your MultiMail account. | Create a department-specific mailbox for the LibreChat instance. |
| list_mailboxes | List all mailboxes on your MultiMail account. | View available mailboxes to select the right sender identity. |
| get_thread | Retrieve an entire email thread to see the full conversation history. | Pull up a full customer support thread for context. |
| search_contacts | Search your contact list by name, email, or tags. | Find contacts by department to send targeted announcements. |
| add_contact | Add a new contact to your MultiMail contact list. | Add a new vendor contact after receiving their first email. |
| tag_email | Tag or categorize an email for organization and filtering. | Tag support emails by issue category for reporting. |
| list_pending | List all emails currently awaiting human approval. | Review all queued outbound emails before end of business. |
| decide_email | Approve or reject a pending email in the oversight queue. | Approve a customer response after reviewing it for accuracy. |
mcpServers:
multimail:
type: stdio
command: npx
args:
- "-y"
- "@multimail/mcp-server"
env:
MULTIMAIL_API_KEY: "mm_live_your_key_here"Add this to your librechat.yaml to connect MultiMail.
# In your docker-compose.yml, ensure the LibreChat service
# has Node.js available. If using the official image, Node.js
# is typically pre-installed. Otherwise, add:
services:
librechat:
image: ghcr.io/danny-avila/librechat:latest
environment:
- MULTIMAIL_API_KEY=mm_live_your_key_here
volumes:
- ./librechat.yaml:/app/librechat.yamlEnsure Node.js is available in your LibreChat Docker container for npx.
Check the support inbox for unread emails. For each one, categorize it as 'billing', 'technical', or 'general'. Draft a response for each technical issue, referencing our documentation. Queue the responses for my review.Use LibreChat as a shared support agent with email capabilities.
Read the latest email in my inbox. Draft three different response options: one formal, one friendly, and one brief. Let me choose which to send.Leverage LibreChat's multi-provider support for email drafting.
If you run LibreChat in Docker, verify that Node.js and npx are available inside the container. The official LibreChat Docker image typically includes Node.js. If using a custom image, you may need to install Node.js for the MCP server to work.
LibreChat supports conversation presets with pre-configured system prompts. Create a preset for email operations that instructs the AI to check the inbox first, summarize messages, and await your instructions before sending replies.
Since LibreChat is multi-user, all users on your instance can access the configured MultiMail tools. Use MultiMail's oversight mode to ensure proper review of outbound emails, regardless of which team member initiates them.
Instead of hardcoding your API key in librechat.yaml, use an environment variable reference. Set MULTIMAIL_API_KEY in your Docker Compose environment or .env file, and reference it in the YAML config.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.