MCP servers for desktop applications — give AI assistants access to Thunderbird (email, calendar, contacts) and Firefox (browser automation).
| Package | Description | npm |
|---|---|---|
| thunderbird-mcp | Email, calendar, tasks, contacts, feeds via Thunderbird | npm i thunderbird-mcp |
| firefox-mcp | Browser automation via Firefox | npm i firefox-mcp |
| @desktop-mcp/shared | Shared backend: native messaging, MCP server factory, install helpers | internal |
Both packages follow the same pattern:
MCP Client <--HTTP--> Node.js Server <--native messaging--> Browser Extension
- Streamable HTTP transport (MCP SDK) between AI client and server
- Native messaging (stdin/stdout, 4-byte framed) between server and extension
- Shared
BaseBrowserAPIclass handles correlation-ID-based request/response - Shared
createServerfactory sets up McpServer + HTTP + plugin loading
git clone https://github.com/hmblair/desktop-mcp.git
cd desktop-mcp
npm install
npm run build -w packages/shared
# Thunderbird
npm run build -w packages/thunderbird
cd packages/thunderbird && make && make install
# Firefox
npm run build -w packages/firefox
cd packages/firefox && make && make installSee each package's README for detailed setup instructions.
npm run build -w packages/shared # Build shared (required first)
npm run build -w packages/firefox # Build firefox server + extension
npm run build -w packages/thunderbird # Build thunderbird server
npm run test -w packages/firefox # Smoke test firefox
npm run test -w packages/thunderbird # Smoke test thunderbirdThis project began as two separate forks, both substantially rewritten since:
- thunderbird-mcp — forked from TKasperczyk/thunderbird-mcp by Tomasz Kasperczyk.
- firefox-mcp — forked from eyalzh/browser-control-mcp by eyalzh (named
firefox-mcpat the time of the fork).
MIT. See LICENSE and individual package licenses.