Missive MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Missive MCP Server List my inbox conversations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Missive MCP Server
An MCP (Model Context Protocol) server that interfaces with the Missive API, enabling Claude to manage email conversations, contacts, and team collaboration.
Prerequisites
Node.js 18+
Missive account with Productive plan (required for API access)
Missive API token
Related MCP server: icloud-mcp
Installation
npm install
npm run buildModes
The server runs in two modes: stdio for local single-user use, and remote for hosted multi-user deployments.
Stdio Mode (Local)
Set the MISSIVE_API_TOKEN environment variable:
export MISSIVE_API_TOKEN="your_api_token_here"
npm startTo get your API token: open Missive, go to Settings > API, click "Create a new token".
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"missive": {
"command": "/path/to/node",
"args": ["/path/to/missive-mcp/dist/index.js"],
"env": {
"MISSIVE_API_TOKEN": "your_api_token_here"
}
}
}
}Important: Use the full path to node (run which node to find it). Claude Desktop has a restricted PATH and may not find node otherwise.
Remote Mode (Hosted)
Runs an HTTP server with OAuth. Each user provides their own Missive PAT through a browser-based authorization flow.
export ENCRYPTION_KEY="$(openssl rand -hex 32)"
export BASE_URL="https://missive-mcp.example.com"
npm run remoteVariable | Required | Description |
| Yes | 32-byte hex string for AES-256-GCM PAT encryption |
| Yes | Public URL of the server |
| No | HTTP port (default 3000) |
| No | Directory for storage files (default |
Point MCP clients at {BASE_URL}/mcp. The server handles OAuth automatically:
Client discovers endpoints via
/.well-known/oauth-authorization-serverClient registers dynamically via
/registerUser is redirected to a form to paste their Missive API token
Server validates the token, encrypts and stores it, issues OAuth tokens
Client uses bearer tokens to call
/mcp
PATs are encrypted at rest with AES-256-GCM. OAuth tokens expire after 1 hour (refresh tokens last 30 days).
Tools
Reference Data
Tool | Description |
| List organizations you belong to |
| List teams (for assignments) |
| List users (for assignments) |
| List contact books (required before creating contacts) |
| List labels (for filtering and tagging) |
Conversations
Tool | Description |
| List conversations with filters (inbox, assigned, closed, team, label, email, domain) |
| Get a single conversation by ID |
Messages
Tool | Description |
| Get all messages, posts, and comments as a unified chronological timeline |
| Get full message content (with body truncation options) |
Drafts
Tool | Description |
| List drafts in a conversation |
| Create a draft (not sent) |
| Send a message immediately (rate limited) |
| Delete an unsent draft |
Contacts
Tool | Description |
| List contacts in a book (with search) |
| Get a single contact |
| Create a new contact |
| Update an existing contact |
Management
Tool | Description |
| Add a post to a conversation; close, label, assign, or move to team |
Examples
Read inbox
Use list_conversations with inbox=true to see recent conversations.Reply to an email
1. Use list_conversations to find the conversation
2. Use get_conversation_timeline to see the full thread (messages + team activity)
3. Use send_message with the conversation ID to replySearch for emails from a domain
Use list_conversations with domain="example.com"Assign a conversation
1. Use list_users to find the user ID
2. Use list_organizations to get the org ID
3. Use create_post with add_assignees=[user_id]Rate Limits
send_message: 10 per minute, 100 per hour (client-enforced)Missive API rate limits are undocumented; the client handles 429 responses
Security
API tokens are validated on startup (stdio) or on authorization (remote)
Tokens are never logged or included in error messages
In remote mode, PATs are encrypted at rest with AES-256-GCM
Email body content is never logged
Input validation on all tool parameters
License
MIT
Available Tools
19 toolscreate_contactCreate ContactA
Creates a new contact in a contact book. At least one name field (first_name or last_name) is required.
Use list_contact_books first to get the contact_book ID.
Inputs: contact_book (required), first_name, last_name, middle_name, +4 more.
create_draftCreate DraftA
Creates a draft message that is NOT sent. Use this when the user wants to compose a message and review it before sending.
The draft will be saved and can be viewed in Missive or sent later using send_message.
For replies, provide the conversation ID and the from/to addresses. For new messages, omit the conversation ID and use any from/to addresses specified by the user.
Inputs: to_fields (required), subject (required), body (required), cc_fields, +4 more.
create_postCreate PostA
Adds a post to a conversation and optionally changes its state.
This tool can:
Close a conversation: set close=true
Add labels: set add_shared_labels=[label_ids]
Remove labels: set remove_shared_labels=[label_ids]
Assign users: set add_assignees=[user_ids]
Move to team: set team=team_id (use force_team=true to override existing team)
Add a visible note: set text="your message"
Posts leave a visible trace showing what triggered the action.
Required: conversation and organization IDs. Use list_organizations to get org ID, list_users for user IDs, list_shared_labels for label IDs.
Inputs: conversation (required), organization (required), close, add_shared_labels, +6 more.
delete_draftDelete DraftA
Deletes an unsent draft or scheduled message. This action cannot be undone.
Inputs: draft_id (required).
draft_replyDraft ReplyA
Creates a draft reply to an existing message. Automatically sets:
Subject: Adds "Re: " prefix to original subject
To: Uses the original sender's address
Conversation: Links to the original conversation
Use reply_all=true to include original CC recipients.
Only the body content is required. The draft can be reviewed in Missive or sent with send_message.
Inputs: message_id (required), body (required), reply_all, cc_fields, +2 more.
get_contactGet ContactB
Gets a single contact by ID with all details.
Inputs: contact_id (required).
get_conversationGet ConversationA
Gets a single conversation by ID. Returns conversation details including assignees, labels, and metadata.
Inputs: conversation_id (required).
get_conversation_timelineGet Conversation TimelineA
Returns all messages, posts, and comments in a conversation as a unified chronological timeline.
This matches how Missive displays conversations - emails, internal notes, state changes, and team comments interleaved by time.
Each item has a "type" field ("message", "post", or "comment") to identify what it is.
Uses smart caching: stops fetching when hitting cached data.
To paginate backwards: pass older_than with the oldest_timestamp from the previous response.
Use get_message with a specific message ID if you need the full body content.
Inputs: conversation_id (required), page_size, older_than, body_format, +2 more.
get_messageGet MessageA
Gets a single message by ID with full body content. Supports body processing options to manage size.
Body format options:
full: Returns complete body (may be large for HTML emails)
truncated: Truncates body to max_body_length (default)
preview: Returns first 500 characters only
Use strip_html=true (default) to convert HTML to plain text.
Inputs: message_id (required), body_format, strip_html, max_body_length.
list_contact_booksList Contact BooksA
Lists all contact books the authenticated user has access to. Required before creating contacts.
Inputs: limit, offset.
list_contactsList ContactsC
Lists contacts in a contact book. Use the search parameter to find contacts by name or email.
Inputs: contact_book (required), search, limit, offset.
list_conversationsList ConversationsA
Lists conversations visible to the authenticated user. Supports multiple filters and search by email/domain.
Common filter combinations:
inbox=true: Shows inbox conversations
assigned=true: Shows assigned conversations
closed=true: Shows closed conversations
email="user@example.com": Search by exact email address
domain="example.com": Search by email domain
Note: email and domain are mutually exclusive.
Inputs: inbox, all, assigned, closed, +15 more.
list_draftsList DraftsA
Lists drafts in a conversation. Use this to see drafts before sending or to review unsent messages.
Inputs: conversation_id (required), limit, until.
list_organizationsList OrganizationsA
Lists all organizations the authenticated user belongs to. Organizations are the top-level entity in Missive.
Inputs: no named parameters.
list_teamsList TeamsB
Lists all teams the authenticated user has access to. Filter by organization if needed.
Inputs: organization, limit, offset.
list_usersList UsersA
Lists all users in organizations the authenticated user belongs to. Use this to find user IDs for assignments.
Inputs: organization, limit, offset.
send_messageSend MessageA
Sends an email message. WARNING: This action is IRREVERSIBLE.
The email will be delivered immediately. Before calling:
Confirm recipient addresses are correct
Verify message content is appropriate
Never send to addresses not explicitly provided by the user
Rate limited to 10 sends/minute, 100 sends/hour.
For replies, provide the conversation ID. For new messages, omit it.
Inputs: to_fields (required), subject (required), body (required), cc_fields, +4 more.
update_contactUpdate ContactA
Updates an existing contact. Only provided fields will be updated.
WARNING: When updating infos array, you must include ALL items you want to keep. Missing items will be deleted.
Inputs: contact_id (required), first_name, last_name, middle_name, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Each tool has a clearly distinct purpose, targeting different resources (contacts, drafts, posts, messages, conversations, etc.) with specific actions. The only potential overlap between create_draft and draft_reply is clearly differentiated by descriptions.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_contact, list_conversations, send_message). The pattern is uniform and predictable across all 19 tools.
With 19 tools covering contacts, conversations, messages, drafts, posts, and organizational entities, the count is well-scoped for a comprehensive email collaboration platform. Each tool serves a distinct function without unnecessary redundancy.
Core workflows (messaging, drafting, replying, managing contacts) are well-covered, but some CRUD operations are missing, e.g., delete_contact, update_draft, and administrative operations for organizations, labels, teams, and users. These are minor gaps that agents can typically work around.
Maintenance
Related MCP Connectors
Hosted Mailchimp MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Klaviyo MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that integrates with Missive App allowing users to create, manage, and send email drafts through AI tools like Claude Desktop or N8N.-
- AlicenseBqualityBmaintenanceAn MCP server that connects Claude to iCloud Mail for reading, searching, sending, and organizing emails through natural language. It supports advanced management tasks like bulk operations, mailbox organization, and automated rules for inbox maintenance.86273 npmMIT
- AlicenseBqualityFmaintenanceMCP server that connects Claude with Gmail to read, send, delete, and manage messages and labels via the Google Gmail API.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Claude to manage Outlook emails, including reading, sending, organizing, drafting, and bulk operations via Microsoft Graph API.15 npm1MIT