Repository navigation
Releases: securemessage/mail-mcp
Release list
v1.3.4
v1.3.4
Compact, self-contained tool schemas:
- Every tool definition is now self-contained: tools that need a session say
Requires mail_connect, and UID parameters state that they refer to the selected mailbox (INBOX unless changed withmail_open_mailbox); previously this lived only in the server instructions. - Tool and parameter descriptions tightened to cut the up-front
tools/listtoken cost; descriptions that only restated a parameter name are gone.mail_search'smailboxdescription now states the real default (all mailboxes, not INBOX).
v1.3.3
v1.3.3
Fixes stdio stalls and hangs affecting MCP hosts (observed with Zed on Windows):
- Blocking-mode stdin hot-loop after the host closed its end of the pipe (
feof()never true on Windows anonymous pipes) — orphaned server processes no longer pin a CPU core while every queued call times out. - Un-decodable response bodies (e.g. a proxy 502 page while a backing service is down) now complete the HTTP request with a loud error instead of leaving it "in flight" forever, spinning the await loop.
- Stdin EOF no longer drops an in-flight tool response; regular-file stdin (
server < request.json) degrades to blocking reads instead of hanging. - Diagnostics now go through EnchiladaMCP Logger and are silent by default:
MAIL_MCP_LOG=/pathfor a durable file,MAIL_MCP_LOG_STDERR=1for a budgeted mirror,--log/--log-level/--io-modeCLI flags.
v1.3.2
v1.3.2
Fixes stdio stalls with hosts that close or never drain their pipes (observed with Zed on Windows), and makes the IMAP and OAuth paths event-driven:
- Re-vendored Tortilla
StdioTransport: bounded no-EOF read retries; diagnostics go throughEnchiladaMCP\Logger(silent by default,MAIL_MCP_LOG/MAIL_MCP_LOG_STDERRopt-in). Adds--log/--log-level/--io-modeflags. - Re-vendored
OAuthCallbackServerfrom Enchilada/Extras master (#49):handleConnection()is fully non-blocking, so the authorization-callback listener can no longer stall the MCP channel when an SSH-forwarded request trickles in. - IMAP socket I/O is now event-driven (
SocketImapClient): permanently non-blocking after connect, buffered reads, writes via writability wait (large APPEND literals included). With the reactor loop, network waits park the dispatch fiber so pings keep being answered mid-call; otherwise a bounded poll emits progress notifications. STARTTLS and async connect share the same wait machinery. - New functional I/O test (
SocketImapClientIoTest) pins the non-blocking engine against an in-process fake IMAP server.
v1.3.1
Release v1.3.1 of SecureMessage Mail MCP Server.
Changed
- OAuth token exchange/refresh HTTP moved from the blocking
\EnchiladaHTTPto the loop-aware pipeline (Enchilada\Tortilla\Oauth3LOClientoverHttpClientoverEnchiladaMultiHTTP), enabled by the Extras OAuth/ split (Oauth3LOpure protocol core). Token waits now fiber-park under the reactor or poll with progress notifications on blocking stdio. Token semantics, persistence format, and PKCE are unchanged.
SHA256: a23158c89564c7b03fe03cf801572d7f8a98637eeb258c331c3e7093302eb1c1
v1.3.0
Release v1.3.0 of SecureMessage Mail MCP Server.
Changed
- Enchilada transport split:
EnchiladaMCPre-vendored as the slim protocol core; stdio transport now comes from the newEnchilada\Tortillalibrary with the event loop opt-in wired in the composition root (bin/mail-mcp). Comal is vendored, so the transport runs in reactor mode where pollable — the OAuth callback listener continues to be serviced continuously during the interactive authorization flow - HTTP library classes vendor at
libraries/EnchiladaHTTP/andlibraries/EnchiladaMultiHTTP/(eponymous dirs the framework autoloader resolves natively — no guardedrequire_once);EnchiladaMultiHTTPgainedsetVerifySsl/setTimeout/setPlaintextAuth/setCaCertparity setters andgetResult()diagnostics
SHA256: 04430ed6a12ea25c3ec615759eebe467e382cc4dc477cc02e609d8a8fc5476cc
Install
curl -LO https://github.com/securemessage/mail-mcp/releases/download/v1.3.0/mail-mcp.phar
chmod +x mail-mcp.pharv1.2.0
Release v1.2.0 of SecureMessage Mail MCP Server.
Upgrade Notes
Breaking: mail_reply now defaults to reply-to-all (reply_all: true) and draft-first (draft: true). Replies are no longer sent immediately — pass draft: false explicitly to send right away. include_original remains true.
Install
curl -LO https://pacyworld.dev/securemessage/mail-mcp/releases/download/v1.2.0/mail-mcp.phar
chmod +x mail-mcp.pharAdded
attachmentsparameter onmail_reply— attach files to replies, consistent withmail_sendandmail_create_draft(#19)- Missing-attachment heuristic (#19): if the body contains an attachment phrase but no files are attached,
mail_sendrefuses to send unlessforce: trueis passed;mail_create_draftandmail_replyinclude awarningfield in the response without blocking forceparameter onmail_send— override the missing-attachment block (#19)mail_update_draft— modify an existing draft (recipients, subject, body, attachments) without losing threading headers or quoted history (#22)
Changed
- Re-vendored Enchilada MCP library: protocol version negotiation (2025-06-18 support), unknown-tool calls return tool-level errors with closest-name suggestions,
outputSchema/renamedFromtool metadata, structured content results,ToolWarningInterfacesupport - Re-vendored
EnchiladaHTTP: multipart form format support,getLastCurlErrno()/getLastCurlError()accessors - File attachment handling refactored into shared
Mail\AttachmentHelperclass
SHA256: 1f1ed51acaaf890713afd2f1a6ee7891723b95b10a10691e9f83190cf2eb64df
v1.1.6
Fixed
mail_searchmulti-mailbox path now slices UIDs tolimitper mailbox before fetching headers, matching the single-mailbox path (#18)mail_searchmulti-mailbox loop now fails fast on connection-level errors (connection lost, timeout) instead of stalling through all remaining mailboxes (#17)- Stale IMAP connections detected via NOOP probe after 60s of inactivity, triggering auto-reconnect instead of silently using a dead socket (#17)
Install
curl -LO https://pacyworld.dev/securemessage/mail-mcp/releases/download/v1.1.6/mail-mcp.phar
chmod +x mail-mcp.pharv1.1.5
Added
fromkey in instance configuration — explicit RFC 5322 From address (with optional display name) separate from the SMTP/IMAP auth username (#16)
Fixed
mail_send,mail_reply,mail_create_draftno longer emit an invalidFrom:header when the login username is not an email address (#16)MessageBuilder::setFrom()now validates that the value contains an addr-spec (has@), failing loudly at build time instead of silently producing an RFC 5322-invalid message (#16)- SMTP envelope sender (
MAIL FROM/Return-Path) now uses the resolved from address for DMARC domain alignment (#16)
Install
curl -LO https://pacyworld.dev/securemessage/mail-mcp/releases/download/v1.1.5/mail-mcp.phar
chmod +x mail-mcp.pharv1.1.4
Changes
Added
mail_get_headers— raw RFC 5322 header block inspection
Fixed
mail_create_draftwithin_reply_tonow includes quoted original message body (#14)- Reply-all no longer corrupts addresses when display names contain commas (#12, #13)
- IMAP reconnect after transient auth error no longer fails due to stale connection state (#15)
Install
curl -LO https://github.com/securemessage/mail-mcp/releases/download/v1.1.4/mail-mcp.phar
chmod +x mail-mcp.phar