A high-performance Rust implementation of MCP (Model Context Protocol) server that wraps the Gemini CLI for AI-driven tasks.
Note: This is a Rust port of the original Python implementation geminimcp. It offers the same functionality with improved performance and lower resource usage.
- MCP Protocol Support: Implements the official Model Context Protocol using the Rust SDK
- Gemini Integration: Wraps the Gemini CLI to enable AI-driven tasks through MCP
- Session Management: Supports multi-turn conversations via session IDs
- Sandbox Safety: Configurable sandbox mode for isolated execution
- Async Runtime: Built on Tokio for efficient async I/O
- Cross-platform: Works on Windows, Linux, and macOS
- Rust 1.90+ (uses 2021 edition)
- Gemini CLI installed and configured
- Claude Code or another MCP client
# Debug build
cargo build
# Release build
cargo build --releaseThe server communicates via stdio transport:
cargo runOr after building:
./target/release/gemini-mcp-rs# Display help information
./target/release/gemini-mcp-rs --help
# Display version information
./target/release/gemini-mcp-rs --versionThe --help flag provides comprehensive documentation including:
- Environment variables
- MCP client configuration examples
- All supported tool parameters
- GEMINI.md configuration file support
- Return structure format
- Best practices and security information
Install the latest release with a single command:
curl -sSL https://raw.githubusercontent.com/missdeer/gemini-mcp-rs/master/scripts/install.sh | bashOr install a specific version:
curl -sSL https://raw.githubusercontent.com/missdeer/gemini-mcp-rs/master/scripts/install.sh | bash -s v0.1.0This script will:
- Detect your platform and architecture
- Download the appropriate binary from GitHub releases
- Install it to
~/.local/bin(or/usr/local/binif needed) - Automatically add it to your Claude MCP configuration
git clone https://github.com/missdeer/gemini-mcp-rs.git
cd gemini-mcp-rs
cargo build --release
claude mcp add gemini-rs -s user --transport stdio -- $(pwd)/target/release/gemini-mcp-rsDownload the appropriate binary for your platform from the releases page, extract it, and add to your MCP configuration:
claude mcp add gemini-rs -s user --transport stdio -- /path/to/gemini-mcp-rsThe server provides a single gemini tool with the following parameters:
PROMPT(string): Instruction for the task to send to gemini
sandbox(bool): Run in sandbox mode. Defaults toFalseSESSION_ID(string): Resume the specified session of the gemini. Defaults to empty string, start a new sessionreturn_all_messages(bool): Return all messages (e.g. reasoning, tool calls, etc.) from the gemini session. Set toFalseby default, only the agent's final reply message is returnedmodel(string): The model to use for the gemini session. This parameter is strictly prohibited unless explicitly specified by the user
Success:
{
"success": true,
"SESSION_ID": "session-uuid",
"agent_messages": "Gemini's reply content..."
}With return_all_messages enabled:
{
"success": true,
"SESSION_ID": "session-uuid",
"agent_messages": "Gemini's reply content...",
"all_messages": [...]
}Failure:
{
"success": false,
"error": "Error description"
}- Always capture and reuse
SESSION_IDfor multi-turn interactions - Enable
sandboxmode when file modifications should be isolated - Use
return_all_messagesonly when detailed execution traces are necessary (increases payload size) - Only pass
modelwhen the user has explicitly requested a specific model
-
GEMINI_BIN: Override the Gemini CLI binary path. By default, the server usesgeminifrom your PATH. This is useful for:- Using a specific Gemini installation location
- Testing with a custom binary
- Development environments with multiple Gemini versions
Example:
export GEMINI_BIN=/usr/local/bin/gemini-custom cargo run
# Run all tests
cargo test
# Run with output
cargo test -- --nocapture
# Test with a custom Gemini binary
GEMINI_BIN=/path/to/gemini cargo testThe project follows a modular architecture:
src/main.rs: Entry point that parses CLI arguments and starts the MCP serversrc/lib.rs: Library root that exports modulessrc/server.rs: MCP server implementation and tool handlerssrc/gemini.rs: Gemini CLI execution and result parsing
| Feature | gemini-mcp-rs (Rust) | geminimcp (Python) |
|---|---|---|
| Language | Rust | Python |
| Performance | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Memory Usage | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Binary Size | Medium | N/A |
| Startup Time | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Session Management | ✓ | ✓ |
| Sandbox Support | ✓ | ✓ |
- geminimcp - Original Python implementation
- codex-mcp-rs - Rust MCP server for Codex CLI
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - Copyright (c) 2025 missdeer
See LICENSE for details.