The problem
AI assistants are most useful when they can act inside the tools you already live in — but email and calendar are exactly where you don't want a model reaching in carelessly. Amazon WorkMail speaks Exchange Web Services, not a friendly REST API, and wiring an assistant to it usually means a brittle script or handing your credentials to a cloud service you have to trust. Connecting Claude to a real inbox has to clear a higher bar: local, least-privilege, and impossible to send or schedule anything by accident.
What we built
An open-source Model Context Protocol (MCP) server, in TypeScript, that Claude Desktop talks to over local stdio — no HTTP server, no cloud middleman.
- Seven typed tools.
list_emails,read_email, andsearch_emails(Amazon's AQS query syntax) for reading;send_emailfor sending; andlist_calendar_events,get_calendar_event, andcreate_calendar_eventfor the calendar. List operations paginate. - Write-protection by default. The two tools that change anything — sending mail and creating events — refuse to run unless the caller passes an explicit
confirm: true. The model can't fire off a message on its own. - Credentials that never leave the machine. WorkMail auth lives in the macOS Keychain (hardware-encrypted on Apple Silicon), never in an env var or a config file, and tool output is sanitized so credentials can't leak back through a response.
- Guardrails around the edges. Every input is validated against a Zod schema, requests are rate-limited (30 per minute by default), and the server connects to WorkMail over EWS at a fixed compatibility level.
- MIT-licensed and installable straight from GitHub, then registered with Claude Desktop through a small JSON config.
Status
Open source and MIT-licensed. It's the same principle we bring to client automations — give an assistant real tools, but make the safe path the only path — here applied to email and calendar, where the cost of a careless action is highest.
