gemini-mcp-desktop-client

MCP.Pizza Chef: duke7able

The gemini-mcp-desktop-client is a desktop client built with Electron, React, and TypeScript that serves as the first Gemini-based client for the Model Context Protocol (MCP). It provides a user-friendly interface for interacting with MCP hosts and managing real-time context flow between LLMs and their environments, enabling secure and efficient AI-enhanced workflows on desktop platforms.

Use This MCP client To

Run Gemini-based MCP workflows on desktop environments Manage real-time context flow for LLMs locally Integrate MCP with desktop applications using Electron Test and develop MCP clients with React and TypeScript Visualize and control model interactions in real time

README

Gemini MCP Desktop Client

Electron Badge Vite Badge React Badge TypeScript Badge MUI Badge Emotion Badge Framer Motion Badge

Gemini MCP Desktop Client is a desktop client built with Electron, Vite, React, and TypeScript, designed to interact with various Model Context Protocol (MCP) servers.
It also integrates Google's Gemini API to provide a powerful LLM chat experience.

πŸ–ΌοΈ App Screenshot

Electron MCP Client Screenshot


Electron MCP Client Screenshot



Features

  • ⚑ Fast and Modern Stack: Built with Electron, React, Vite, and TypeScript.
  • πŸ”Œ MCP Server Integration: Connects to multiple MCP servers for diverse data operations.
  • πŸ€– LLM Chat Support: Uses Gemini API for LLM-based chatting.
  • πŸ–₯️ Cross-Platform: Packages for Windows (NSIS installer) and macOS (DMG).
  • 🎨 Beautiful UI: Built with MUI, Emotion, Framer Motion, and other modern libraries.
  • πŸ“š Markdown Rendering: Supports rich markdown with syntax highlighting.
  • πŸ› οΈ Developer Friendly: Full TypeScript support, ESLint, and Vite HMR.

Setting Up Google Gemini API Key

To get started with Google Gemini API, you'll need to generate an API key. Follow the steps below to create the key and secure it for your project.

1. Obtain the API Key

To generate a Google Gemini API key, follow the official guide from Merge Dev. You can access the instructions here: Google Gemini API Key Documentation.

This documentation will walk you through the process of creating and managing your API key.

Restrict API Key (Optional but recommended)

  • After copying the API key, you can click Restrict Key to limit its usage.
  • You can restrict the API key to specific IP addresses, referrers, or HTTP methods to secure your API key further.z

Installation

git clone https://github.com/duke7able/gemini-mcp-desktop-client.git
cd gemini-mcp-desktop-client
npm install

Environment Setup

To create .env run npm run create-env for mac and unix and npm run create-env-win for windows Or simply create one like this Create a .env file in the root directory of the project with the following content:

PORT=5001 # Port for the backend API server
VITE_API_URL=http://localhost:5001
NODE_ENV="DEVELOPMENT"

Make sure to adjust VITE_API_URL if you run your backend server on a different port or domain.


Development

To start the app in development mode:

npm run dev

This will start Vite and Electron in watch mode for live-reloading.


Build

To create a production build:

npm run build

This will:

  • Compile the TypeScript code
  • Build the Vite frontend
  • Package the Electron app using electron-builder

Output will be available inside the dist/ and dist-electron/ folders.


Scripts

Script Description
npm run dev Start the app in development mode (Vite + Electron)
npm run build Build the app for production
npm run preview Preview the production Vite build
npm run lint Run ESLint on the codebase

Tech Stack

  • Electron - Desktop application framework
  • Vite - Frontend tooling and development server
  • React - UI library
  • TypeScript - Static typing
  • @modelcontextprotocol/sdk - MCP Server interaction
  • @google/generative-ai - Gemini LLM API integration
  • MUI - Material UI components
  • Emotion - CSS-in-JS styling
  • Framer Motion - Animations
  • Express - Local API server within the app
  • Zod - Runtime validation
  • React Router - Routing inside the app

You can update your README.md by adding a link to the mcpServerTested.md file and a short explanation. Here’s how you can insert it in the "MCP Servers" section of your README.md:


πŸ“Œ MCP Servers

This client is designed to interact with various MCP servers listed at:
πŸ‘‰ Model Context Protocol - Servers

There are many MCP servers available, including third-party MCP implementations integrated into this application.
However, I have created a separate list of tested and verified MCP servers to help users identify reliable options.

πŸ‘‰ See the list of tested MCP servers here: mcpServerTested.md

You can configure which server to connect to from within the app settings.


Let me know if you'd like this inserted automatically into your file or formatted differently.

Gemini API

This app uses Gemini to provide LLM-based chat inside the app.

Make sure you have your API key to configure app


Packaging Targets

  • macOS: DMG installer
  • Windows: NSIS installer (x64 architecture)

Folder Structure

/
β”œβ”€β”€ dist/               # Vite frontend build output
β”œβ”€β”€ dist-electron/      # Electron main process build output
β”œβ”€β”€ static/             # Static assets
β”œβ”€β”€ src/                # Source code (React + Electron)
β”œβ”€β”€ package.json
β”œβ”€β”€ vite.config.ts
└── electron-builder.yml

🧰 Enable/Disable DevTools

You can control whether DevTools are enabled in the Electron window directly from the electron/main.ts file.

In the createWindow function, modify the devTools property inside the webPreferences object to control this behavior:

devTools: false // Set to true to enable DevTools, false to disable

Additionally, you can programmatically open DevTools using:

win.webContents.openDevTools(); // Opens DevTools automatically when the app launches

Example:

function createWindow() {
  const { width, height } = screen.getPrimaryDisplay().workAreaSize;
  win = new BrowserWindow({
    width,
    height,
    icon: path.join(process.env.VITE_PUBLIC, "electron-vite.svg"),
    webPreferences: {
      webSecurity: false,
      preload: path.join(__dirname, "preload.mjs"),
      contextIsolation: true,
      nodeIntegration: true,
      devTools: false, // βœ… Change this to true or false as needed
    },
  });

  if (VITE_DEV_SERVER_URL) {
    win.loadURL(VITE_DEV_SERVER_URL);
  } else {
    win.loadFile(path.join(RENDERER_DIST, "index.html"));
  }

  // βœ… Open DevTools automatically (only works if devTools is true)
  win.webContents.openDevTools();
}

⚠️ Ensure devTools is set to true in webPreferences if you want openDevTools() to work. Otherwise, the DevTools will not open.

πŸ”½ Download Prebuilt Installers

You can directly download and install the latest version of the Gemini MCP Desktop Client for your platform:

Steps to make it work for mac :

  • Extract zip
  • move the electron app to desktop
  • run this command : sudo xattr -rd com.apple.quarantine ~/Desktop/electron-mcp.app .
  • then now you can move that to applications folder to be find using spotlight

These are prebuilt installers using electron-builder and are ideal for users who don’t want to build the app manually.

Notes

  • Make sure to have Node.js and npm installed.
  • The app is under active development β€” contributions and feedback are welcome!

gemini-mcp-desktop-client FAQ

How do I install the gemini-mcp-desktop-client?
You can install it by cloning the GitHub repository and following the Electron app build instructions provided in the README.
What technologies is the gemini-mcp-desktop-client built with?
It is built using Electron, React, TypeScript, Vite, MUI, and Emotion for a modern desktop experience.
Can the gemini-mcp-desktop-client work with other MCP hosts?
Yes, it is designed to interact with any MCP host supporting the Gemini protocol, enabling flexible integrations.
Is the gemini-mcp-desktop-client suitable for production use?
While it is a first-generation client, it is stable for development and testing; production readiness depends on your use case.
Does the client support secure and scoped model interactions?
Yes, it leverages MCP principles to ensure secure, scoped, and observable interactions with LLMs.
Can I customize the gemini-mcp-desktop-client UI?
Yes, since it uses React and MUI, you can extend and customize the UI components as needed.
Which LLM providers can I use with this client?
The client supports any LLM provider compatible with MCP, including OpenAI, Anthropic Claude, and Google Gemini.