A powerful MCP server that allows Claude Code to consult Gemini for complex coding problems with full code context and conversation persistence.
- Session Management: Maintain conversation context across multiple queries
- File Attachments: Read and include actual code files in conversations
- Hybrid Context: Combine text-based
code_contextwith file attachments - Follow-up Questions: Ask follow-up questions without resending code context
- Context Caching: Code context and file content are cached per session
- Automatic Processing: Files are processed and formatted automatically
- Multiple Sessions: Run multiple parallel conversations for different problems
- Session Expiry: Automatic cleanup of inactive sessions after 1 hour
- Latest Model: Uses Gemini 2.5 Pro (stable) by default
When Claude Code encounters difficult problems or needs a second opinion, it can:
- Send complete code files by reading them from the local filesystem
- Include text-based code context alongside file attachments
- Have multi-turn conversations about the same problem
- Get different perspectives without repeating context
- Work on multiple problems in parallel sessions
- Process files locally and include content in conversations
- Clone this repository
- Create a Python virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Copy
.env.exampleto.envand add your Gemini API key:cp .env.example .env # Edit .env file and set your GEMINI_API_KEY - Add to Claude Code:
Replace
claude mcp add gemini-coding -s user -- /path/to/gemini-mcp/start_server.sh
/path/to/gemini-mcp/with the actual path to this directory.
Start or continue a conversation with Gemini about complex coding problems.
Parameters:
session_id(optional): Continue a previous conversationproblem_description: Description of the problem (required for new sessions)code_context: All relevant code (required for new sessions, cached afterward)attached_files(optional): Array of file paths to read and include in the conversationfile_descriptions(optional): Object mapping file paths to descriptionsspecific_question: The question you want answeredadditional_context(optional): Updates or changes since last questionpreferred_approach: Type of help needed (solution/review/debug/optimize/explain/follow-up)
List all active Gemini consultation sessions.
End a specific session to free up memory.
/consult_gemini
problem_description: "I need to implement efficient caching for a React application"
code_context: "[paste entire relevant codebase]"
specific_question: "What's the best approach for implementing LRU cache with React Query?"
preferred_approach: "solution"
/consult_gemini
problem_description: "I need to optimize this React component for performance"
attached_files: ["/absolute/path/to/src/components/Dashboard.jsx", "/absolute/path/to/src/hooks/useData.js", "/absolute/path/to/package.json"]
file_descriptions: {
"/absolute/path/to/src/components/Dashboard.jsx": "Main dashboard component with performance issues",
"/absolute/path/to/src/hooks/useData.js": "Custom hook for data fetching",
"/absolute/path/to/package.json": "Project dependencies"
}
specific_question: "How can I improve the rendering performance of this dashboard?"
preferred_approach: "optimize"
/consult_gemini
problem_description: "Complex authentication flow needs debugging"
code_context: "// Additional context or pseudocode here"
attached_files: ["/absolute/path/to/auth/login.js", "/absolute/path/to/middleware/auth.js"]
specific_question: "Why is the token refresh failing?"
preferred_approach: "debug"
Response includes a session ID for follow-ups.
/consult_gemini
session_id: "abc123..."
specific_question: "I implemented your suggestion but getting stale data issues. How do I handle cache invalidation?"
additional_context: "Added the LRU cache as suggested, but users see old data after updates"
preferred_approach: "follow-up"
/list_sessions
# Shows all active sessions with IDs and summaries
/end_session
session_id: "abc123..."
# Frees up memory for completed conversations
- Initial Context: Include ALL relevant code via
code_contextorattached_files - File Organization: Use
attached_filesfor multiple files,code_contextfor snippets - File Descriptions: Provide clear descriptions for each attached file
- Follow-ups: Use the session ID to continue conversations
- Additional Context: When asking follow-ups, explain what changed
- Session Management: End sessions when done to free memory and clean up files
- Multiple Problems: Use different sessions for unrelated problems
- File Types: Supports JavaScript, Python, TypeScript, JSON, and other text-based files
You can test the server directly before adding it to Claude Code:
# Make sure your .env file has a valid GEMINI_API_KEY
./start_server.shThe server will start and display:
Gemini Coding Assistant MCP Server v3.0 running (Python)
Features: Session management, file attachments, context persistence, follow-up questions
Ready to help with complex coding problems!
- Maximum combined input: ~50,000 characters per message
- Maximum response: 8,192 tokens (~16,000 characters)
- Session timeout: 1 hour of inactivity
- Rate limiting: 1 second between requests
- First Message: Creates a new session, caches code context
- Follow-ups: Reuses cached context, maintains conversation history
- Session Storage: In-memory storage (use Redis for production)
- Cleanup: Automatic expiry after 1 hour of inactivity
- Efficiency: Code context sent only once per session
- Context: Gemini remembers previous questions and answers
- Natural Flow: Have real conversations about complex problems
- Cost Savings: Reduced token usage for follow-up questions
- API key is never exposed
- Rate limiting prevents abuse
- Sessions expire automatically
- No persistent storage of code
- v2.1.0: Added file attachment system with automatic cleanup
- v2.0.0: Added session management and follow-up support
- v1.0.0: Initial stateless implementation