{"name":"io.github.codefuturist/email-mcp","slug":"codefuturist-email-mcp","title":null,"description":"IMAP/SMTP email MCP server — 52 tools, stdio + HTTP, IMAP IDLE push, multi-account, AI triage.","url":"https://mcp.market/server/codefuturist-email-mcp","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"email","tags":["email"],"presence":{"score":51,"stars":149,"forks":69,"downloads_week":1035,"last_push_at":"2026-11-07T10:16:15.000Z","license":"LGPL-3.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/codefuturist/email-mcp.git","website":null,"version":"0.6.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@codefuturist/email-mcp","version":"0.6.0","runtimeHint":"npx","transport":{"type":"stdio"}}],"tools":[{"name":"add_label","description":"Add a label to an email.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_to_calendar","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"analyze_email_for_scheduling","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"apply_template","description":"Apply an email template with variable substitution. Use action \"preview\" to see the result, \"draft\" to save as draft, or \"send\" to send immediately.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bulk_action","description":"Batch operation on multiple emails by UID list. Supports mark_read, mark_unread, flag, unflag, move, and delete. Max 100 IDs per call. Returns success/failure counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cancel_scheduled","description":"Cancel a scheduled email. Removes it from the queue and deletes the associated draft.","write_action":true,"price_micros":0,"input_schema":null},{"name":"check_calendar_permissions","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_clipboard_setup","description":"Diagnose the clipboard integration used for caught verification codes: platform","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_health","description":"Check connection health, quota, and capabilities for email accounts, plus local cache","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_notification_setup","description":"Diagnose desktop notification support on this platform.","write_action":false,"price_micros":0,"input_schema":null},{"name":"configure_alerts","description":"Update alert/notification settings at runtime. Changes take effect immediately.","write_action":true,"price_micros":0,"input_schema":null},{"name":"configure_verification","description":"Update [settings.verification] at runtime — changes take effect immediately,","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_label","description":"Create a new label. For ProtonMail, creates a folder under Labels/.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_mailbox","description":"Create a new mailbox (folder). Use '/' as separator for nested folders (e.g., 'Work/Projects'). Use list_mailboxes to see existing folders.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_reminder","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_email","description":"Delete an email. By default moves to Trash. Set permanent=true for permanent deletion (⚠️ irreversible).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_label","description":"Delete a label. For ProtonMail, deletes the label folder.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_mailbox","description":"⚠️ DESTRUCTIVE: Permanently delete a mailbox and ALL its contents. This cannot be undone. Use list_mailboxes to verify the folder path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_attachment","description":"Download an email attachment by filename or part id. First use get_email to see available","write_action":false,"price_micros":0,"input_schema":null},{"name":"extract_calendar","description":"Extract calendar events (ICS/iCalendar) from an email. Returns structured event data including time, location, attendees, and status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"extract_contacts","description":"Extract unique contacts from recent email headers. Returns contacts sorted by frequency (most frequent first). Useful for finding frequent correspondents or building an address book.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_email_folder","description":"Find which real mailbox folder(s) an email belongs to.","write_action":true,"price_micros":0,"input_schema":null},{"name":"forward_email","description":"Forward an email to new recipients with optional additional message. The original is converted","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_email","description":"Get the full content of a specific email by ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_email_stats","description":"Get email statistics and analytics for a mailbox. Shows volume, top senders, daily trends, and read/flagged counts.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_email_status","description":"Get the current read/flag/label state of an email without fetching its body.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_emails","description":"Fetch the full content of multiple emails in a single call (max 20).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_hooks_config","description":"Get the current AI hooks configuration including preset, rules, and custom instructions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_thread","description":"Reconstruct a full email conversation thread by following References and In-Reply-To headers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_verification_code","description":"Find the newest verification code (OTP/2FA) or sign-in magic link in recent mail,","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_watcher_status","description":"Get the status of IMAP IDLE watcher connections and recent activity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_accounts","description":"List all configured email accounts. Call this first to discover available account names for use with other tools.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_calendars","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_emails","description":"List emails in a mailbox with optional filters. Returns paginated results with metadata","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_events","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_labels","description":"List available labels for an email account.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_mailboxes","description":"List all mailbox folders for an account with unread counts and special-use flags. Use list_accounts first to get the account name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_presets","description":"List all available AI triage presets with their descriptions and suggested labels.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_reminders","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_scheduled","description":"List scheduled emails. Shows pending, sent, or all scheduled emails.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_templates","description":"List all available email templates. Templates are TOML files in ~/.config/email-mcp/templates/ with {{variable}} placeholders for subject and body.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_email","description":"Change email flags — mark as read/unread, flag/unflag. Idempotent: marking an already-read email as read is a no-op.","write_action":true,"price_micros":0,"input_schema":null},{"name":"move_email","description":"Move an email to a different mailbox folder.","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_label","description":"Remove a label from an email. For ProtonMail, this removes the email from the label folder.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rename_mailbox","description":"Rename an existing mailbox (folder). Use list_mailboxes to see current folder paths.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reply_email","description":"Reply to an email with proper threading (In-Reply-To & References headers). Use get_email first to read the original.","write_action":true,"price_micros":0,"input_schema":null},{"name":"save_draft","description":"Save an email draft to the Drafts folder. Compose over time, then use send_draft to send it. Use list_emails with the Drafts mailbox to see saved drafts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"schedule_email","description":"Schedule an email to be sent at a specific time in the future. The email is queued locally and sent automatically when the time arrives.","write_action":true,"price_micros":0,"input_schema":null},{"name":"search_emails","description":"Search emails by keyword across subject, sender, and body — and, where the local","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_draft","description":"Send an existing draft email and remove it from Drafts. The draft is fetched, sent via SMTP, then deleted. Use list_emails with the Drafts mailbox to find draft IDs.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_email","description":"Send a new email. Supports plain text or HTML body, CC, and BCC.","write_action":true,"price_micros":0,"input_schema":null},{"name":"test_notification","description":"Send a test desktop notification to verify that OS permissions are correctly configured.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":74,"grade":"B","scanned_at":"2026-11-08T18:07:34.877Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-08T18:07:34.833Z","components":{"code":{"score":13,"max":25,"notes":["233 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"dist/cli/scheduler.js: …LIST, plist); try { execSync(`launchctl load \"${LAUNCHD_PLIST}\"`, { stdio: 'pipe' }); …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@codefuturist/email-mcp","version":"0.6.0","found":true,"license":"LGPL-3.0-or-later","hasInstallScripts":false,"dependencyCount":10,"publishedAt":"2026-10-10T17:19:09.236Z","repositoryUrl":"git+https://github.com/codefuturist/email-mcp.git","weeklyDownloads":1035}],"repo":{"found":true,"owner":"codefuturist","repo":"email-mcp","archived":false,"pushedAt":"2026-11-07T10:16:15Z","stars":149,"forks":69,"openIssues":41,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/58808821?v=4","ownerCreatedAt":"2019-12-12T09:23:25Z","license":"LGPL-3.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/58808821?v=4&s=128","source":"registry"},"presence":{"stars":149,"forks":69,"downloadsWeek":1035,"license":"LGPL-3.0","lastPushAt":"2026-11-07T10:16:15.000Z","score":51}}}},"grade_history":[],"reviews":[]}