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
Write
Webhooks

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.
                

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.