IMAP Email MCP Server
This IMAP Email MCP Server enables AI assistants to manage email accounts across multiple providers (Gmail, Outlook, Yahoo, Fastmail, iCloud, etc.) through IMAP/SMTP protocols.
Core Capabilities:
Browse and Read Emails - List emails from any folder with filtering options (limit, date range, unread status) and retrieve full email content by UID
Search Emails - Search by subject, sender, or body content within specified folders
Folder Management - List all available email folders/mailboxes in the account
Draft Management - Create, list, read, update, and delete email drafts with support for To, CC, BCC recipients
Send Emails - Compose and send emails directly via SMTP with plain text or HTML body content
Delete Emails - Remove emails by UID from any folder
Key Features:
Natural language interface through AI assistants
Secure authentication using app passwords and environment variables
Compatible with Claude Desktop, Cursor, and other MCP-compatible tools
Provides capabilities to read, search, compose, send, and manage emails and drafts directly within a Gmail account using IMAP and SMTP protocols.
Click on "Install 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., "@IMAP Email MCP Serversearch my inbox for recent emails about the project update"
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.
IMAP Email MCP Server
A Model Context Protocol (MCP) server that provides email capabilities to Claude Code, Claude Desktop, Cursor, and other MCP-compatible AI tools. Connect to any IMAP/SMTP email provider to read, search, compose, and manage emails directly from your AI assistant.
Quick Start
Claude Code (CLI)
Important: Claude Code CLI uses claude mcp add, not config files.
claude mcp add imap-email -s user \
-e IMAP_USER=you@example.com \
-e IMAP_PASSWORD='your-app-password' \
-e IMAP_HOST=imap.example.com \
-- npx -y imap-email-mcpNote: If your password contains special shell characters (
%,^,*,$,!, etc.), wrap it in single quotes as shown above.
Note: Restart Claude Code after adding an MCP for the new tools to become available.
Verify with:
claude mcp list
claude mcp get imap-emailRemove with:
claude mcp remove imap-email -s userCursor
Add new MCP server:
Name:
imap-emailType:
commandCommand:
npx -y imap-email-mcp
Then set environment variables in Cursor's MCP settings:
IMAP_USER=your-email@example.com
IMAP_PASSWORD=your-app-password
IMAP_HOST=imap.example.comClaude Desktop
Add to your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"imap-email": {
"command": "npx",
"args": ["-y", "imap-email-mcp"],
"env": {
"IMAP_USER": "your-email@example.com",
"IMAP_PASSWORD": "your-app-password",
"IMAP_HOST": "imap.example.com"
}
}
}
}Related MCP server: mcp-imap
Features
Read emails - List and read emails from any folder
Search - Search by subject, sender, or body content
Compose - Create and save email drafts
Send - Send emails directly via SMTP
Manage drafts - List, read, update, and delete drafts
Delete emails - Remove unwanted messages
Multi-provider support - Works with Gmail, Outlook, Yahoo, Fastmail, and any standard IMAP provider
Configuration
Required Environment Variables
Variable | Description |
| Your email address |
| App password (not your main password!) |
| IMAP server hostname |
Optional Environment Variables
Variable | Default | Description |
|
| IMAP port |
|
| Use TLS |
| Same as IMAP_HOST | SMTP server hostname |
|
| SMTP port |
|
| Use secure SMTP |
Provider Settings
Provider | IMAP_HOST | SMTP_HOST | Notes |
Gmail |
|
| |
Outlook |
|
| Use port 587, SMTP_SECURE=false |
Yahoo |
|
| Generate App Password in settings |
Fastmail |
|
| App Password from Privacy & Security |
iCloud |
|
|
Available Tools
Tool | Description |
| List all email folders/mailboxes |
| List emails with optional filtering |
| Get full email content by UID |
| Search by subject, sender, or body |
| List all draft emails |
| Get a specific draft by UID |
| Create a new email draft |
| Update an existing draft |
| Send an email directly |
| Delete an email by UID |
Usage Examples
Once configured, use natural language:
"Check my inbox for unread emails"
"Search for emails from john@example.com"
"Create a draft email to sarah@example.com about the meeting tomorrow"
"Show me my drafts folder"
Security Best Practices
Use App Passwords - Never use your main account password
Environment Variables - Store credentials in env vars, not in code
Review Before Sending - Use
create_draftinstead ofsend_emailto review first
Troubleshooting
Authentication failed
Verify your app password is correct
Ensure IMAP access is enabled in your email provider's settings
Drafts folder not found
The server tries common names (
Drafts,INBOX.Drafts,[Gmail]/Drafts)Your provider may use a different folder name
Connection timeout
Check your
IMAP_HOSTis correctVerify port 993 is not blocked by firewall
Alternative Installation
Install globally
npm install -g imap-email-mcp
imap-email-mcpClone and run
git clone https://github.com/jdickey1/imap-email-mcp.git
cd imap-email-mcp
npm install
node index.jsLicense
MIT License - see LICENSE for details.
Links
Available Tools
10 toolscreate_draftC
Create a new draft email
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address(es), comma-separated | |
| subject | Yes | Email subject | |
| body | No | Email body (plain text) | |
| html | No | Email body (HTML) | |
| cc | No | CC recipients, comma-separated | |
| bcc | No | BCC recipients, comma-separated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'create' which implies a write operation, but doesn't disclose behavioral traits like whether this requires authentication, where the draft is stored (e.g., in a drafts folder), if it's immediately visible in email clients, or what happens on failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste: 'Create a new draft email'. It's front-loaded with the core action and resource, making it immediately scannable. Every word earns its place, and there's no redundant or verbose phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a mutation tool creating email drafts), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a draft ID, success status, or error details), behavioral constraints, or integration context. For a tool with 6 parameters and mutation behavior, this minimal description leaves too much unspecified for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters with clear descriptions (e.g., 'to' as 'Recipient email address(es), comma-separated'). The description adds no additional parameter information beyond what's in the schema. According to guidelines, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('create') and resource ('new draft email'), making the purpose immediately understandable. It distinguishes from siblings like 'send_email' (which sends) and 'update_draft' (which modifies existing drafts). However, it doesn't specify that this creates a draft rather than a sent email, which is somewhat implied but could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an email account), when to choose 'create_draft' over 'send_email' (for later editing vs. immediate sending), or how it relates to 'update_draft' (for modifying existing drafts). Without this context, the agent must infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailB
Delete an email by UID
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Email UID to delete | |
| folder | No | Folder name (default: INBOX) | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'delete' implies a destructive mutation, it doesn't specify whether the deletion is permanent or reversible, if it requires special permissions, or what happens on success/failure. This is inadequate for a destructive tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is incomplete. It lacks critical behavioral details (permanence, permissions, error handling) and doesn't explain the relationship with sibling tools, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (uid and folder) thoroughly. The description adds no additional meaning beyond what the schema provides, such as explaining UID format or folder hierarchy. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an email by UID' clearly states the specific action (delete) and target resource (email), using the verb+resource pattern. It distinguishes from siblings like get_email, list_emails, or search_emails by specifying the destructive operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the email UID from list_emails or get_email), nor does it specify when not to use it (e.g., for drafts vs. sent emails).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_draftC
Get a specific draft email by UID
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Draft UID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a draft but doesn't mention whether this is a read-only operation, what happens with invalid UIDs, or the response format. This is inadequate for a tool with potential error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a retrieval tool with no annotations and no output schema, the description is incomplete. It doesn't explain what data is returned (e.g., email content, metadata) or error handling, leaving gaps in understanding the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'uid' parameter fully. The description adds no additional meaning beyond implying UID identifies a draft, which is minimal value. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('a specific draft email by UID'), making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'get_email' (which likely retrieves non-draft emails), missing full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_email' or 'list_drafts'. It lacks context about prerequisites (e.g., needing a valid UID) or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emailC
Get full email content by UID
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Email UID | |
| folder | No | Folder name (default: INBOX) | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't cover important aspects like whether this is a read-only operation, potential authentication needs, error handling for invalid UIDs, or rate limits. This leaves significant gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single, clear sentence that states the core functionality upfront. There's no wasted verbiage or unnecessary elaboration, making it efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'full email content' includes (e.g., headers, body, attachments) or the return format, leaving the agent with critical unknowns about the operation's behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation but not providing extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('full email content') with a specific mechanism ('by UID'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_draft' or 'list_emails', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'list_emails' for retrieving a single email, or when 'get_draft' might be more appropriate for draft content, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsC
List all draft emails
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of drafts to return (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all draft emails') but lacks details on permissions, rate limits, pagination, or return format. This is inadequate for a tool that likely interacts with user data, leaving significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—'List all draft emails' is front-loaded and directly conveys the core function. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like safety, data handling, or response format, which are crucial for a list operation. For a tool with minimal structured data, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'limit' parameter fully documented. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all draft emails' clearly states the verb ('List') and resource ('draft emails'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_emails' or 'get_draft' beyond the resource type, missing explicit scope or functional distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'list_emails' (for non-draft emails) or 'get_draft' (for a specific draft). There's no mention of prerequisites, context, or exclusions, leaving usage entirely implied from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsB
List emails from a folder with optional filtering
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder name (default: INBOX) | INBOX |
| limit | No | Maximum number of emails to return (default: 20) | |
| unseen_only | No | Only return unread emails | |
| since_date | No | Only return emails since this date (YYYY-MM-DD format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states basic functionality. It doesn't disclose behavioral traits like pagination, rate limits, authentication needs, error conditions, or what happens with invalid inputs. The description is minimal and lacks crucial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place with no redundancy or unnecessary elaboration. It's appropriately sized for a listing tool with good schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return format, pagination behavior, error handling, or authentication requirements. The schema covers parameters well, but the description fails to provide necessary operational context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it mentions 'optional filtering' but doesn't explain which parameters constitute filtering or their relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('emails'), specifying the scope ('from a folder') and optional filtering. It distinguishes from siblings like 'search_emails' by focusing on listing rather than searching, but doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing emails from folders with filtering, but provides no explicit guidance on when to use this vs. alternatives like 'search_emails' or 'get_email'. It mentions optional filtering which gives some context, but lacks when-not scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersB
List all email folders/mailboxes in the IMAP account
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but fails to describe key behaviors like whether this is a read-only operation, if it requires specific permissions, how results are formatted, or if there are rate limits. This leaves significant gaps for an agent to understand how to interact with it safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and wastes no space, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like safety, permissions, or result format, which are crucial for a tool that interacts with an IMAP account. This leaves the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, which is efficient and avoids redundancy. A baseline of 4 is applied since the schema fully handles the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all email folders/mailboxes in the IMAP account'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_drafts' or 'list_emails', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_emails' or 'list_drafts'. It lacks context about prerequisites, such as whether authentication is required or if there are any limitations on folder types listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsC
Search emails by subject, from, or body text
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder to search (default: INBOX) | INBOX |
| subject | No | Search in subject line | |
| from | No | Search by sender | |
| body | No | Search in body text | |
| limit | No | Maximum results (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the search functionality but fails to describe key behaviors such as whether this is a read-only operation, how results are returned (e.g., pagination, format), error handling, or any rate limits. For a search tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality ('Search emails') and specifies key parameters without unnecessary details. Every word earns its place, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a search tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., safety, performance), result format, and usage context, which are crucial for an agent to invoke the tool effectively in a real-world scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters with their types, defaults, and descriptions. The description adds minimal value by listing searchable fields ('subject, from, or body text'), but it doesn't explain parameter interactions (e.g., how multiple fields combine) or semantics beyond what the schema provides, aligning with the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Search') and resource ('emails'), and specifies searchable fields ('by subject, from, or body text'). However, it doesn't explicitly differentiate from sibling tools like 'list_emails' or 'get_email', which might provide similar functionality without search parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_emails' (for unfiltered listing) or 'get_email' (for retrieving a specific email by ID). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage based on the search capability alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailC
Send an email directly
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address(es) | |
| subject | Yes | Email subject | |
| body | No | Email body (plain text) | |
| html | No | Email body (HTML) | |
| cc | No | CC recipients | |
| bcc | No | BCC recipients |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Send an email directly' implies a write operation that transmits an email, but it doesn't disclose critical traits: whether this requires specific permissions, if emails are sent immediately or queued, rate limits, error handling, or what happens on success/failure. The description is too minimal for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, front-loaded with the core action. There's zero wasted language, making it easy to parse quickly, though this conciseness comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool (sending emails) with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral nuances. For a 6-parameter tool that performs a potentially destructive action, more context is needed to guide safe and effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters (to, subject, body, html, cc, bcc) with clear descriptions. The tool description adds no parameter information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Send an email directly' clearly states the action (send) and resource (email), but it's vague about scope and lacks differentiation from siblings like 'create_draft' or 'update_draft'. It doesn't specify if this sends immediately versus scheduling, which would help distinguish it from draft-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'send_email' over 'create_draft' for composing emails, or when to use it in conjunction with 'list_emails' or 'search_emails'. There's no context about prerequisites like authentication or email client setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_draftC
Update an existing draft by deleting old and creating new
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | UID of draft to update | |
| to | Yes | Recipient email address(es) | |
| subject | Yes | Email subject | |
| body | No | Email body (plain text) | |
| html | No | Email body (HTML) | |
| cc | No | CC recipients | |
| bcc | No | BCC recipients |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'deleting old and creating new,' which implies mutation and data replacement, but fails to detail permissions, side effects, error handling, or response format. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words, clearly front-loading the core action. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, lack of annotations, and no output schema, the description is incomplete. It should explain more about the update process, potential impacts, and what to expect in return, but it only provides a high-level overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no specific parameter information beyond the general update action, meeting the baseline of 3 where the schema handles the heavy lifting without extra value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing draft'), distinguishing it from siblings like create_draft and get_draft. However, it doesn't specify what fields can be updated beyond the general concept, which keeps it from being a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like create_draft or send_email, nor does it mention prerequisites such as needing an existing draft UID. It lacks explicit usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
- First observed
create_draft - First observed
delete_email - First observed
get_draft - First observed
get_email - First observed
list_drafts - First observed
list_emails - First observed
list_folders - First observed
search_emails - First observed
send_email - First observed
update_draft
TDQS
Every tool has a clearly distinct purpose with no ambiguity. For example, list_emails retrieves emails from a folder, while search_emails filters by content, and get_email fetches full content of a specific email. The draft-related tools (create_draft, get_draft, list_drafts, update_draft) are well-separated from email management tools, ensuring agents can easily select the right tool for each task.
All tool names follow a consistent verb_noun pattern using snake_case, such as list_folders, create_draft, and send_email. This predictability makes the tool set easy to navigate and understand, with no deviations in naming conventions across the ten tools.
With 10 tools, the server is well-scoped for email management via IMAP. Each tool earns its place by covering essential operations like listing, creating, retrieving, updating, and deleting emails and drafts, without being overly sparse or bloated for the domain.
The tool surface provides strong coverage for core email workflows, including CRUD operations for emails and drafts, folder management, and sending. A minor gap is the lack of tools for moving emails between folders or marking them as read/unread, but agents can work around this with the existing tools for basic email handling.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Stateful email for AI agents — read inboxes, reply in-thread, draft with approval.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.2712MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.16421MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI models to send, receive, search, and manage emails via SMTP/IMAP, including support for attachments, contacts, and advanced search.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jdickey1/imap-email-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server