Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
Description from the maker (original English)
Mail, contacts, calendar and filters of Thunderbird for AI assistants, through a local add-on.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account commonpost, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.19.1) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB on your computer.
In the same category: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Agent-Native Google Calendar - manage events, sync, and public booking
Lets AI create and edit Excel files itself, including formulas, charts and PivotTables, without Excel installed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Give your AI assistant full access to Thunderbird -- search mail, compose messages, manage filters, and organize your inbox. All through the Model Context Protocol.
A continuation of [thunderbird-mcp](https://github.com/TKasperczyk/thunderbird-mcp) by Tomasz Kasperczyk (MIT), started from its 0.7.5 release with its full history kept. It is an independent project by the Commonpost community, not the original and not endorsed by it; it can be installed beside the original (see Migrating). If the original author wants any of this work back, we hand it over: our changes are MIT-licensed and offered upstream too. Thunderbird is a trademark of the Mozilla Foundation; this project is not affiliated with Mozilla or MZLA.
The original was inspired by bb1/thunderbird-mcp. What is in this release is listed in the changelog.
Requirements: Windows, macOS or Linux, with Thunderbird 140 or later and Node.js 22 or later. On Windows, attach files through the bridge (see Attachments refused).
commonpost-mcp-v .xpi from the latest release. In Thunderbird: Tools > Add-ons and Themes > gear menu > Install Add-on From File. Restart Thunderbird.mcp-bridge.cjs from the same release and put it in a folder you will keep, for example ~/commonpost-mcp/. The bridge is a single file and needs nothing else: the release does not ship a package.json. (The bridge carries its own version; it reads no package.json.)node --version must show 22 or later. claude plugin marketplace add commonpost/thunderbird-mcp claude plugin install commonpost-mcp@commonpost
claude mcp add commonpost-mail -- node /absolute/path/to/mcp-bridge.cjs
claude mcp add commonpost-mail -- node C:\Users\ \commonpost-mcp\mcp-bridge.cjs
/ or double the backslashes ("C:/Users/ /commonpost-mcp/mcp-bridge.cjs").json { "mcpServers": { "commonpost-mail": { "command": "node", "args": ["/absolute/path/to/mcp-bridge.cjs"] } } }
The bridge is not updated automatically, and each MCP client has its own. When one should be replaced, the extension says so in a tool result (your assistant passes it on) and in its options page (section Bridge), which lists the bridges that connected with "Up to date", "Newer version available" (it works; updating is optional) or "Update recommended". For a bridge to update or one the extension refuses, Thunderbird also shows a system notification, once per bridge and per Thunderbird session; the hidden preference extensions.commonpost-mcp.bridgeUpdateAlert set to false turns it off. Every release page starts with what the release brings, whether it changes the bridge, and the steps: download mcp-bridge.cjs and put it in place of your copy (its path is in the MCP configuration of your client; in Claude Code: claude mcp get ), then reconnect your MCP client (/mcp in Claude Code); in Claude Desktop, install the .mcpb bundle again; with the Claude Code plugin, update the plugin. A release that does not change the bridge ships the same bridge again. The extension's version is shown in Tools > Add-ons and Themes.
Right after installing, open the extension's options page (Tools > Add-ons and Themes > Commonpost MCP for Thunderbird > Options) and choose which accounts and tools your assistant may use. Until you do, every account and tool is visible to MCP clients.
Snap, Flatpak and macOS need no extra step in most cases; see Sandbox-aware connection discovery. If something fails, see Troubleshooting.
Thunderbird has no official API for AI tools. Your AI assistant can't read your email, can't help you draft replies, can't organize your inbox. This extension fixes that -- it exposes 41 tools over MCP so any compatible AI (Claude, GPT, local models) can work with your mail the way you'd expect. The list is kept to about 40 tools so that assistants choose among them reliably; older Cursor versions also sent an agent only the first 40 tools of all servers combined (since January 2026 Cursor loads tool descriptions only when needed), and VS Code allows 128 tools per request.
Mail sends and event/task creation require review by default because Block `skipReview` starts enabled. skipReview: true is honored only after you explicitly disable that safety setting. By default, nothing is sent or created without your review.
stdio HTTP (localhost:8780-8789)
MCP Client <-----------> Bridge <---------------------> Thunderbird (Claude, etc.) mcp-bridge.cjs Extension + HTTP Server
The Thunderbird extension embeds a local HTTP server with session-scoped auth tokens. The Node.js bridge translates between MCP's stdio protocol and HTTP, discovering the port and token automatically via a connection file. The bridge handles MCP lifecycle methods (initialize, ping) locally, so clients can connect even before Thunderbird is fully loaded.
| Tool | Description | |
|---|---|---|
listAccounts | List all email accounts and their identities | |
listFolders | Browse folder tree with message counts -- filter by account or subtree; savedSearches lists saved searches instead; refresh with folderPath first fetches that folder's new mail from its mail server (IMAP, Exchange, Graph; not news or feeds) and waits up to 20 s | |
searchMessages | Search headers across accounts. Words must all match (subject, from, to, cc, preview); operators from:, to:, cc:, subject:, participant: (from/to/cc/bcc; @domain matches addresses in that domain only, commas list alternatives: participant:@acme.com,@acme-group.com) and quoted phrases can be combined, e.g. participant:@acme.com subject:"invoice 42". `groupBy: "sender" \ | "thread" returns one row per sender or conversation (latestId is the newest message that is not a draft); threadOf: {messageId, folderPath} returns a whole conversation across folders (Sent included), oldest first (it reads at most 10,000 headers, then sets incomplete: true). A Re: message sent without threading headers joins by subject the earlier message its sender took part in (linkedBy: "subject"); the same mail sent separately to several people and repeated notifications stay separate. Filters pick messages of the conversation without cutting its links. Trash and Junk are skipped unless includeTrash or an explicit folderPath. Always returns { messages, totalMatches, offset, limit, hasMore } (default 20 rows, max 200); format: "table" returns { columns, rows }, and format: "legacy" the output of 0.10 and earlier (deprecated), see CHANGELOG. Also countOnly, includeSubfolders, date range, unread/flagged/tag filters, searchBody (Gloda full text: terms under 3 characters are left out and listed in warning, English words match other forms, Russian and other languages only the exact word form) and dedupByMessageId (copies in several folders collapse into one row with dupLocations). attachmentName (part of a filename, any case) and attachmentType (application/pdf, or a prefix such as image/) keep messages with a matching attachment, combined with the other filters; each row lists its matching attachments (name, contentType, size). Only messages Thunderbird marks as having attachments are read, from their local copy (nothing is downloaded or decrypted), at most 500 per call and 16 MiB each; attachmentSearch gives how many were checked and why the others were skipped (encrypted, tooLarge, notOffline, unreadable, limitReached). Thunderbird flags a message from its top-level structure, so a signed message (multipart/signed), a multipart/related one or a single-part attachment is usually not found. While reading encrypted messages is not allowed, a query with words leaves out messages with an encrypted envelope, as without attachment options. attachmentName and attachmentType cannot be combined with searchBody, threadOf or format: "legacy". fields returns only the listed columns (date, author, recipients, ccList, subject, read, flagged, tags, preview, dupLocations); id, folderPath and the columns an option adds are always kept; not with countOnly, groupBy or format: "legacy"`. |
getMessage | Read full email content -- bodyFormat: markdown (default), text, or html. Bodies are capped (maxBodyChars, default 20000); a longer body sets bodyTruncated and nextBodyOffset, read the rest with bodyOffset. Set rawSource: true for the complete RFC 2822 source (same cap), decoded as UTF-8 when valid, else by its top-level, part or detected charset (rawCharset; a warning when parts declare different charsets, listed in rawMixedCharsets, or when invalid UTF-8 was replaced), with hidden characters removed as in a body; rawEncoding: "base64" returns the exact bytes. Optional attachment saving. Set includeInlineImages: true to append supported inline CID images as MCP image blocks (PNG, JPEG, GIF, or WebP; max 1 MiB base64 per image and 4 MiB total). Skipped images are reported in attachment metadata. authentication gives the SPF, DKIM and DMARC results of the topmost Authentication-Results header, as the receiving mail server reported them (authservId names it); Thunderbird checks none of this, and a sender can forge such headers lower down. |
| getMessages | Read full email content for up to the configured batch limit in one call (default 10, max 20). Uses the same bodyFormat, rawSource, and attachment options as getMessage; each item supplies messageId and folderPath. Bodies are capped per message (maxBodyChars, default 4000). headersOnly returns only the headers as received and the flags, for up to 200 messages whatever that limit, without parsing any body; a List-Unsubscribe header also comes parsed as unsubscribe (`ma
Only the beginning is shown; read the rest in the repo