{"id":"wyattjoh-jmap-mcp","name":"jmap-mcp","homepage":null,"repo_url":"https://github.com/wyattjoh/jmap-mcp","category":"communication","subcategories":[],"tags":["mcp","email","jmap","deno","typescript","agent-tools"],"what_it_does":"Provides a Model Context Protocol (MCP) server exposing tools to interact with JMAP-compliant email servers for email search/retrieval, mailbox listing, message state changes (seen/flagged), moving/deleting messages, and sending/replying to emails. It is implemented in Deno using the @htunnicliff/jmap-jam client library and uses Zod for input validation.","use_cases":["Build agent workflows that search and retrieve emails via MCP tools","Perform mailbox operations like listing folders and moving/deleting messages","Send or reply to emails from an agent with plain-text and/or HTML bodies","Extract thread context by fetching threads for given IDs"],"not_for":["Directly connecting to non-JMAP email systems that do not support RFC 8620/8621","Use cases requiring a public REST/GraphQL API for web clients without running the MCP server","Handling high-volume bulk operations without considering provider limits (batch sizes are limited but not rate-limit strategy described)"],"best_when":"You want an MCP-native interface for email tasks against a JMAP server and can run a Deno stdio MCP server in your agent environment.","avoid_when":"You cannot securely manage bearer tokens for the JMAP server or you need explicit, documented rate-limit behavior and retry/idempotency guarantees.","alternatives":["jmap-jam (direct library integration into your own service)","IMAP-based integrations (IMAP client libraries) where JMAP is not available","Other MCP email/JMAP connectors (if available) or a custom MCP wrapper around a JMAP client"],"af_score":61.8,"security_score":64.8,"reliability_score":32.5,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:39:45.122459+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["JMAP bearer token (JMAP_BEARER_TOKEN)"],"oauth":false,"scopes":false,"notes":"Authentication is performed by providing a JMAP session URL and a bearer token via environment variables. The README does not describe fine-grained scopes/permissions for the token beyond relying on the JMAP server's auth model."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing information is provided; the package appears to be a MIT-licensed open-source MCP server."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":61.8,"security_score":64.8,"reliability_score":32.5,"mcp_server_quality":80.0,"documentation_accuracy":75.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":65.0,"rate_limit_clarity":20.0,"tls_enforcement":80.0,"auth_strength":70.0,"scope_granularity":30.0,"dependency_hygiene":55.0,"secret_handling":85.0,"security_notes":"README states no secrets are logged/exposed and that Zod validates inputs. Authentication relies on a JMAP bearer token provided via environment variables; fine-grained scopes and token lifecycle/rotation are not described. Rate limiting and operational safety (e.g., retry/backoff) are not documented.","uptime_documented":0.0,"version_stability":50.0,"breaking_changes_history":50.0,"error_recovery":30.0,"idempotency_support":"false","idempotency_notes":"No explicit idempotency behavior is documented for write operations (mark/move/delete/send/reply). Some operations are inherently non-idempotent (send/reply).","pagination_style":"position/limit","retry_guidance_documented":false,"known_agent_gotchas":["Write actions like send_email and reply_to_email are likely non-idempotent; agents should avoid automatic retries without safeguards.","Bearer token and session URL must be passed via environment variables; missing/expired tokens will cause failures (retry strategy not documented).","Tool batch sizes are capped in the parameter descriptions (e.g., send/retrieve IDs limits), so agents must chunk requests."]}}