Skip to content

Releases: securemessage/mail-mcp

v1.3.4

Choose a tag to compare

@tuaris tuaris released this 30 Sep 07:21

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 with mail_open_mailbox); previously this lived only in the server instructions.
  • Tool and parameter descriptions tightened to cut the up-front tools/list token cost; descriptions that only restated a parameter name are gone. mail_search's mailbox description now states the real default (all mailboxes, not INBOX).

v1.3.3

Choose a tag to compare

@tuaris tuaris released this 13 Sep 07:20

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=/path for a durable file, MAIL_MCP_LOG_STDERR=1 for a budgeted mirror, --log / --log-level / --io-mode CLI flags.

v1.3.2

Choose a tag to compare

@tuaris tuaris released this 30 Sep 07:21

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 through EnchiladaMCP\Logger (silent by default, MAIL_MCP_LOG / MAIL_MCP_LOG_STDERR opt-in). Adds --log / --log-level / --io-mode flags.
  • Re-vendored OAuthCallbackServer from 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

Choose a tag to compare

@tuaris tuaris released this 10 Sep 07:00

Release v1.3.1 of SecureMessage Mail MCP Server.

Changed

  • OAuth token exchange/refresh HTTP moved from the blocking \EnchiladaHTTP to the loop-aware pipeline (Enchilada\Tortilla\Oauth3LOClient over HttpClient over EnchiladaMultiHTTP), enabled by the Extras OAuth/ split (Oauth3LO pure 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

Choose a tag to compare

@tuaris tuaris released this 10 Sep 03:08

Release v1.3.0 of SecureMessage Mail MCP Server.

Changed

  • Enchilada transport split: EnchiladaMCP re-vendored as the slim protocol core; stdio transport now comes from the new Enchilada\Tortilla library 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/ and libraries/EnchiladaMultiHTTP/ (eponymous dirs the framework autoloader resolves natively — no guarded require_once); EnchiladaMultiHTTP gained setVerifySsl/setTimeout/setPlaintextAuth/setCaCert parity setters and getResult() diagnostics

SHA256: 04430ed6a12ea25c3ec615759eebe467e382cc4dc477cc02e609d8a8fc5476cc

Install

curl -LO https://github.com/securemessage/mail-mcp/releases/download/v1.3.0/mail-mcp.phar
chmod +x mail-mcp.phar

v1.2.0

Choose a tag to compare

@tuaris tuaris released this 04 Sep 21:25

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.phar

Added

  • attachments parameter on mail_reply — attach files to replies, consistent with mail_send and mail_create_draft (#19)
  • Missing-attachment heuristic (#19): if the body contains an attachment phrase but no files are attached, mail_send refuses to send unless force: true is passed; mail_create_draft and mail_reply include a warning field in the response without blocking
  • force parameter on mail_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/renamedFrom tool metadata, structured content results, ToolWarningInterface support
  • Re-vendored EnchiladaHTTP: multipart form format support, getLastCurlErrno()/getLastCurlError() accessors
  • File attachment handling refactored into shared Mail\AttachmentHelper class

SHA256: 1f1ed51acaaf890713afd2f1a6ee7891723b95b10a10691e9f83190cf2eb64df

v1.1.6

Choose a tag to compare

@tuaris tuaris released this 02 Aug 05:58

Fixed

  • mail_search multi-mailbox path now slices UIDs to limit per mailbox before fetching headers, matching the single-mailbox path (#18)
  • mail_search multi-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.phar

v1.1.5

Choose a tag to compare

@tuaris tuaris released this 02 Aug 03:44

Added

  • from key 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_draft no longer emit an invalid From: 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.phar

v1.1.4

Choose a tag to compare

@tuaris tuaris released this 30 Jul 22:38

Changes

Added

  • mail_get_headers — raw RFC 5322 header block inspection

Fixed

  • mail_create_draft with in_reply_to now 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

v1.1.3

Choose a tag to compare

@tuaris tuaris released this 23 Jul 18:34

EnchiladaMCP graceful lifecycle: onReinitialize hook for IDE multi-session resilience, stdout write failure detection.