GeminiDesktop MCP Server 2026: Plug Gemini's Native Tools Into Claude Code and Cursor
GeminiDesktop MCP Server 2026: Plug Gemini’s Native Tools Into Claude Code and Cursor
Bottom line: GeminiDesktop exposes the nine most useful Gemini-native capabilities (chat / generate_image / generate_video / generate_music / tts / embed / generate_audio_overview / rag_index / rag_query) as a single stdio MCP server. If you already have GeminiDesktop.app installed, you already have the CLI and the MCP server — no npm publish, no pip install, no glue code. A single claude mcp add line lets Claude Code call Gemini’s Nano Banana 2 for cover art or query your local RAG while it writes code.
One-liner: One Rust binary, three entry modes (GUI / CLI / MCP). Rust + rmcp + stdio is the lightest possible stack. BYOK via env var first, Tauri store as fallback. Claude Code and Cursor get the actual native Gemini tools — not another REST wrapper.
The MCP Ecosystem in 2026: Who Ships a Server, Who Doesn’t
Since Anthropic open-sourced MCP (Model Context Protocol) in late 2024, the ecosystem has settled into three tiers:
- Official reference servers: Anthropic maintains filesystem / github / slack / puppeteer in
modelcontextprotocol/servers. High quality, narrow coverage. - Community wrappers: Individual developers wrap REST APIs with
@modelcontextprotocol/sdk. Quality varies; Gemini, Claude, and OpenAI still don’t ship first-party MCP servers. - Product-native servers: Linear, Sentry, and a few others embed MCP directly into their apps — install once, it’s already there.
GeminiDesktop follows tier three. Install the app and you automatically get /Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop mcp as an entry point. That’s the lowest-friction path for Claude Code and Cursor users.
Why Rust + rmcp + stdio
Three realistic stacks for building an MCP server:
| Stack | Cold start | Binary size | Reuse | Best for |
|---|---|---|---|---|
Node + @modelcontextprotocol/sdk |
300-800ms (incl. Node boot) | Separate ~50 MB | Standalone | Prototypes, standalone servers |
Python + mcp |
500-1000ms | Separate deploy | Standalone | Data-science adjacent |
Rust + rmcp crate + stdio |
< 50ms | Reuses GUI binary, 0 extra | Shared with GUI and CLI | Product-native MCP |
GeminiDesktop is already a Tauri 2.x + Rust desktop app. Pulling in the rmcp crate (the official Rust SDK) meant adding one mcp subcommand branch in main.rs. Every Gemini API call is shared with the GUI — fix a bug once, all three entry modes update together.
stdio transport is a natural fit: Claude Code, Cursor, Continue all spawn subprocesses and talk over stdio by default. No HTTP port, no OAuth, nothing to break.
Single Binary: GeminiDesktop.app Already Ships It
The usual approach is “download the GUI and then npm install @something/mcp-server.” Users install twice, upgrade twice, configure the API key twice. GeminiDesktop’s approach:
# After installing GeminiDesktop.app, the same binary gives you three entry modes:
/Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop # GUI mode
/Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop chat # CLI mode
/Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop mcp # MCP mode
The three modes share:
- Config: one Tauri store (
~/Library/Application Support/app.geminidesktop.desktop/) - API key: set once in the GUI, CLI and MCP both pick it up
- Caches: Gemini model list, embedding cache, RAG indexes — all shared
- Upgrades: Tauri’s updater upgrades the GUI, CLI and MCP come along
Install once, everything works. No npm publish, no version skew.
The Nine Tools
| Tool | What it does | Typical use |
|---|---|---|
chat |
Plain Gemini chat | Second-opinion code review from Claude |
generate_image |
Imagen / Nano Banana 2 | Cover art while writing a blog post |
generate_video |
Veo 3 text-to-video | Product demo clips, hero video |
generate_music |
Lyria soundtrack generation | Podcast intros, video scoring |
tts |
Gemini TTS (multi-voice, multilingual) | Article-to-podcast, voice demos |
embed |
gemini-embedding-001 (768-dim) | Client-side RAG preprocessing |
generate_audio_overview |
NotebookLM-style two-host podcast | Turn a long doc into a 10-min commute podcast |
rag_index |
Index files/folders into local sqlite-vec | Index a codebase Claude is editing |
rag_query |
Query local sqlite-vec, top-k | “Find how I implemented X in my notes” |
The first seven are Gemini cloud capabilities. The last two are GeminiDesktop-exclusive local RAG — no upload, everything goes into a local SQLite file. Engineering details in Local sqlite-vec RAG: Indexing 500K Words of Notes Into a 200 MB File.
Claude Code: One Line to Install
Claude Code 0.6+ supports claude mcp add for registering servers from the command line:
# macOS
claude mcp add geminidesktop -- /Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop mcp
# Windows
claude mcp add geminidesktop -- "C:\Program Files\GeminiDesktop\GeminiDesktop.exe" mcp
# Verify
claude mcp list
# Expect: geminidesktop (stdio) - 9 tools available
Then in any Claude Code conversation:
> Give me a cover image for the README I just wrote, 1600x900 landscape.
Claude picks generate_image, calls Nano Banana 2 behind the scenes, saves the file to your project, and posts the path back. All without leaving the terminal.
Cursor settings.json
Cursor 0.46+ supports MCP natively. Add this block to ~/.cursor/settings.json:
{
"mcp": {
"servers": {
"geminidesktop": {
"command": "/Applications/GeminiDesktop.app/Contents/MacOS/GeminiDesktop",
"args": ["mcp"],
"env": {}
}
}
}
}
Differences vs Claude Code:
- Claude Code: CLI-driven (
claude mcp add), stored in~/.claude/mcp.json - Cursor: manual JSON edit, no management CLI yet
- Both: stdio transport, same binary, shared API key
In Cursor Composer, just say “generate an image of…” in the Cmd+I chat — Cursor picks the right MCP tool automatically.
BYOK Priority: Env Var > Tauri Store
GeminiDesktop resolves API keys in this order:
GEMINI_API_KEYenv var (highest) — great for CI, one-off overrides, per-project keys- Tauri store (
~/Library/Application Support/app.geminidesktop.desktop/config.json) — the persisted key from the GUI - Error — no fallback to a Google-hosted shared key, on purpose (prevents quota leaks)
Why this order:
- Different project wants a different key? Just
export GEMINI_API_KEY=xxxbefore launching Claude Code / Cursor - CI/team shared runners: never write keys into the Tauri store (which can get rsynced or accidentally committed); inject via env
- Individual users: set the key once in the GUI, CLI and MCP both inherit it
Workflow Example: Claude Code + Gemini Cover Art + Local RAG
A real blog-writing loop:
[you] I'm drafting "How to Build an AI Chat With React Server Components."
First, find my previous RSC-related notes in ~/notes.
[claude] Calling geminidesktop.rag_query...
Top 3 matches:
1. 2025-11-20-rsc-streaming.md (score 0.89)
2. 2025-09-03-ai-chat-patterns.md (score 0.84)
3. 2026-02-14-use-server-actions.md (score 0.78)
Based on these notes, here's an outline...
[you] Good, generate a cover image for each H2 section.
[claude] Calling geminidesktop.generate_image x 5...
Saved 5 images to ./images/.
Claude gets both local context (RAG) and multimodal generation (Gemini), all via a single binary. No extra browser tab, no key juggling, no glue code.
More engineering notes at geminidesktop.app and in How to Migrate Claude Code Skills Into GeminiDesktop.
FAQ
Q1: How is this different from calling Gemini’s REST API directly?
A: REST means you write fetch, handle auth, track rate limits. MCP makes these “tools” that Claude Code / Cursor picks automatically based on the conversation. No code, no glue layer.
Q2: Can I use this MCP server without installing GeminiDesktop?
A: Not today. The design point is “GUI + CLI + MCP share one binary” so config and caches are reused. If you really want headless-only, grab the headless build from GitHub releases — but you lose auto-update.
Q3: Windows / Linux support?
A: macOS and Windows are first-class. Linux has a community-maintained AppImage with the same MCP entry point.
Get Started
- Website: https://geminidesktop.app
- BibiGPT: https://bibigpt.co
- Desktop download: https://bibigpt.co/download/desktop
- More features: https://bibigpt.co/features