Model Context Protocol
MCP Server
Give AI agents secure email access through the Model Context Protocol. 12 built-in tools for reading, sending, searching, and managing email — no custom integration code required.
Tools Overview
Read
- list_accounts — List connected accounts
- list_messages — List and filter emails
- get_message — Read full email content
- get_thread — Get conversation thread
- search — Full-text search
Write
- send_email — Send a new email
- reply — Reply to a message
- forward — Forward a message
- create_draft — Save a draft
Webhooks
- list_webhooks — List subscriptions
- create_webhook — Register webhook
- delete_webhook — Remove webhook
Installation
Install globally from npm:
npm install -g @inbox-api/mcp
Or use directly with npx (no install needed):
npx @inbox-api/mcp
Configuration
The MCP server requires an API token and communicates over stdio.
Environment variables:
INBOX_API_TOKEN API token with cw_ prefix (required)
INBOX_API_URL API base URL (default: https://api.inbox-api.com)
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"inbox-api": {
"command": "npx",
"args": ["-y", "@inbox-api/mcp"],
"env": {
"INBOX_API_TOKEN": "cw_your_token_here"
}
}
}
}
Config file locations:
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%/Claude/claude_desktop_config.json
Linux ~/.config/Claude/claude_desktop_config.json
Claude Code
Add to your project's .mcp.json or global settings:
{
"mcpServers": {
"inbox-api": {
"command": "npx",
"args": ["-y", "@inbox-api/mcp"],
"env": {
"INBOX_API_TOKEN": "cw_your_token_here"
}
}
}
}
Cursor
Add to your Cursor MCP settings (.cursor/mcp.json):
{
"mcpServers": {
"inbox-api": {
"command": "npx",
"args": ["-y", "@inbox-api/mcp"],
"env": {
"INBOX_API_TOKEN": "cw_your_token_here"
}
}
}
}
Windsurf
Add to your Windsurf MCP configuration (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"inbox-api": {
"command": "npx",
"args": ["-y", "@inbox-api/mcp"],
"env": {
"INBOX_API_TOKEN": "cw_your_token_here"
}
}
}
}
list_accounts
List all connected email accounts with message and unread counts.
Parameters: None
Example prompt:
"List my email accounts"
Response:
Connected accounts:
- me@gmail.com (Gmail) — 1,247 messages, 23 unread
- work@company.com (IMAP) — 3,891 messages, 7 unread
list_messages
List emails with filtering, sorting, and pagination.
Parameters:
accountId string, optional Filter by account ID
isRead boolean, optional Filter by read status
isStarred boolean, optional Filter by starred status
startDate string, optional Start date (ISO 8601)
endDate string, optional End date (ISO 8601)
page number, default: 1 Page number
pageSize number, default: 10 Results per page (max 100)
Example prompts:
"Show my unread emails"
"List emails from the last 7 days"
"Show starred messages in my work account"
Response:
Messages (page 1 of 5, 47 total):
* 2026-03-25 14:30 alice@example.com — Q3 Report [attachments]
2026-03-25 10:15 bob@company.com — Re: Meeting notes
* 2026-03-24 18:00 noreply@github.com — PR #42 merged
(* = unread)
get_message
Read a full email including headers, body content, and metadata.
Parameters:
messageId string, required ID of the message to read
Example prompts:
"Read message abc123"
"Show me the full email from Alice about the Q3 report"
Response:
From: Alice <alice@example.com>
To: me@company.com
Date: 2026-03-25 14:30
Subject: Q3 Report
Status: Unread | Has Attachments
──────────────────────────
Hi, please find the Q3 report attached.
Best, Alice
get_thread
Get an entire conversation thread with all messages.
Parameters:
threadId string, required ID of the thread
Example prompts:
"Show me the full thread about the Q3 report"
"Get conversation thread xyz789"
Response:
Thread: Q3 Report (3 messages, 1 unread)
[1/3] 2026-03-24 10:00 — alice@example.com
Hi, I'll send the Q3 report by end of day.
[2/3] 2026-03-25 09:15 — me@company.com
Thanks Alice, no rush.
[3/3] 2026-03-25 14:30 — alice@example.com
Here's the report, attached as PDF.
search
Full-text search across all accounts or a specific account.
Parameters:
query string, required Search query
accountId string, optional Limit to specific account
page number, default: 1 Page number
pageSize number, default: 10 Results per page (max 100)
Example prompts:
"Search for emails about invoices"
"Find messages from alice@example.com about the Q3 report"
"Search my work account for 'project deadline'"
send_email
Compose and send a new email.
Parameters:
accountId string, required Account to send from
to array, required Recipients [{email, name?}]
subject string, required Email subject
textBody string, optional Plain text body
htmlBody string, optional HTML body
cc array, optional CC recipients [{email, name?}]
bcc array, optional BCC recipients [{email, name?}]
Example prompts:
"Send an email to bob@example.com saying the meeting is moved to 3pm"
"Email alice@example.com with subject 'Q3 Report' and CC carol@example.com"
Response:
Email sent successfully.
Message ID: msg_abc123
reply
Reply to an existing email message.
Parameters:
messageId string, required ID of the message to reply to
textBody string, optional Plain text reply body
htmlBody string, optional HTML reply body
replyAll boolean, default: false Reply to all recipients
Example prompts:
"Reply to the last email from Alice saying 'Thanks, looks great!'"
"Reply all to message xyz with 'Noted, thanks everyone.'"
Response:
Reply sent successfully.
Message ID: msg_def456
forward
Forward a message to new recipients with all attachments preserved.
Parameters:
messageId string, required ID of the message to forward
to array, required Recipients [{email, name?}]
cc array, optional CC recipients [{email, name?}]
bcc array, optional BCC recipients [{email, name?}]
additionalText string, optional Text to prepend to the forwarded message
Example prompts:
"Forward this email to bob@example.com"
"Forward the invoice email to the finance team with a note saying 'Please review'"
Response:
Message forwarded successfully.
Message ID: msg_ghi789
create_draft
Save an email draft for later review or sending.
Parameters:
accountId string, required Account for the draft
to array, optional Recipients [{email, name?}]
cc array, optional CC recipients [{email, name?}]
subject string, optional Email subject
textBody string, optional Plain text body
htmlBody string, optional HTML body
Example prompts:
"Draft an email to the team about the upcoming sprint"
"Save a draft reply to alice@example.com, I'll finish it later"
Response:
Draft saved successfully.
Draft ID: draft_abc123
list_webhooks
List all webhook subscriptions.
Parameters: None
Example prompts:
"List my webhooks"
"Show my webhook subscriptions"
Response:
Webhooks (2):
Active: https://my-app.com/webhooks/inbox
Events: message.received, message.sent
Payload: Standard
ID: wh_abc123
create_webhook
Register a webhook to receive email event notifications.
Parameters:
url string, required URL to receive POST requests
events array, required Events to subscribe to:
message.received New email arrived
message.sent Email was sent
message.updated Flags changed
message.deleted Message deleted
message.moved Message moved
description string, optional Description
payloadLevel string, default: Standard
Minimal IDs and subject only
Standard Full metadata, no body
Full Includes message body
Example prompts:
"Create a webhook at https://my-app.com/hook for new messages"
"Set up a webhook for all message events with full payloads"
Response:
Webhook created.
ID: wh_abc123
Secret: whsec_...
IMPORTANT: Save the secret — it is only shown once.
delete_webhook
Delete a webhook subscription.
Parameters:
webhookId string, required ID of the webhook to delete
Example prompts:
"Delete webhook wh_abc123"
"Remove the webhook for my-app.com"
Security
Scoped tokens — API tokens can
be restricted to specific email accounts and permission scopes (read,
send, drafts, manage).
Zero credential exposure — The
LLM never sees email passwords or OAuth tokens. Only scoped API tokens
are passed.
Audit trail — All actions through
the MCP server are logged with full audit trail in your workspace.