Gemini Code Review MCP
🚀 AI-powered code reviews that understand your project's context and development progress
Transform your git diffs into actionable insights with contextual awareness of your project guidelines, task progress, and coding standards.
📚 Table of Contents
- Why Use This?
- Quick Start
- Available MCP Tools
- Configuration
- Key Features
- CLI Usage
- Troubleshooting
- Development
Why Use This?
- 🎯 Context-Aware Reviews: Automatically includes your CLAUDE.md guidelines and project standards
- 📊 Progress Tracking: Understands your task lists and development phases
- 🤖 AI Agent Integration: Seamless MCP integration with Claude Code and Cursor
- 🔄 Flexible Workflows: GitHub PR reviews, project analysis, or custom scopes
- ⚡ Smart Defaults: Auto-detects what to review based on your project state
🚀 Claude Code Installation
Option A: Install the MCP server to Claude Code as user-scoped MCP server:
claude mcp add-json gemini-code-review -s user '{"command":"uvx","args":["gemini-code-review-mcp"],"env":{"GEMINI_API_KEY":"your_key_here","GITHUB_TOKEN":"your_key_here"}}'
(-s user installs as user-scoped and will be available to you across all projects on your machine, and will be private to you. Omit -s user to install the as locally scoped.)
Option B: Install the MCP server to Claude Code as project-scoped MCP server:
claude mcp add-json gemini-code-review -s project /path/to/server '{"type":"stdio","command":"npx","args":["gemini-code-review"],"env":{"GEMINI_API_KEY":"your_key_here","GITHUB_TOKEN":"your_key_here"}}'
The command above creates or updates a .mcp.json file to the project root with the following structure:
{
"mcpServers": {
"gemini-code-review": {
"command": "/path/to/server",
"args": ["gemini-code-review"],
"env": {"GEMINI_API_KEY":"your_key_here","GITHUB_TOKEN":"your_key_here"}
}
}
}
Get your Gemini API key: https://ai.google.dev/gemini-api/docs/api-key
Get your GitHub token: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
Docs for setting up MCP for Claude Code: https://docs.anthropic.com/en/docs/claude-code/tutorials#set-up-model-context-protocol-mcp
Troubleshooting MCP Installation
If the MCP tools aren't working:
- Check your installation:
claude mcp list - Verify API key is set:
claude mcp get gemini-code-review - If API key shows empty, remove and re-add:
claude mcp remove gemini-code-review claude mcp add-json gemini-code-review -s user '{"type":"stdio","command":"npx","args":["@modelcontextprotocol/server-gemini-code-review"],"env":{"GEMINI_API_KEY":"your_key_here","GITHUB_TOKEN":"your_key_here"}}'
(Make sure you replace/path/to/serverwith the path to your server executable) - Always restart Claude Desktop after any MCP configuration changes
📋 Available MCP Tools
| Tool | Purpose | Key Options |
|---|---|---|
generate_ai_code_review |
Complete AI code review | project_path, model, scope |
generate_pr_review |
GitHub PR analysis | github_pr_url, project_path |
ask_gemini |
Generate context and get AI response | user_instructions, file_selections |
📖 Detailed Tool Examples
AI Code Review
// Quick project review (uses default model: gemini-2.0-flash)
{
tool_name: "generate_ai_code_review",
arguments: {
project_path: "/path/to/project"
}
}
// With advanced model
{
tool_name: "generate_ai_code_review",
arguments: {
project_path: "/path/to/project",
model: "gemini-2.5-pro", // Uses alias for gemini-2.5-pro-preview-06-05
thinking_budget: 15000 // Optional: thinking tokens (when supported)
}
}
GitHub PR Review
// Analyze GitHub pull request
{
tool_name: "generate_pr_review",
arguments: {
github_pr_url: "https://github.com/owner/repo/pull/123",
thinking_budget: 20000 // Optional: thinking tokens
}
}
// With reference documentation
{
tool_name: "generate_pr_review",
arguments: {
github_pr_url: "https://github.com/owner/repo/pull/123",
url_context: ["https://docs.api.com/v2/guidelines"] // Optional: Reference docs for the review
}
}
Ask Gemini (NEW!)
// Generate context from files and get AI response in one step
{
tool_name: "ask_gemini",
arguments: {
user_instructions: "Review for security vulnerabilities and suggest fixes",
file_selections: [
{ path: "src/auth.py" },
{ path: "src/database.py", line_ranges: [[50, 100]] }
],
project_path: "/path/to/project",
model: "gemini-2.5-pro"
}
}
// Simple query without files
{
tool_name: "ask_gemini",
arguments: {
user_instructions: "Explain the security implications of the current authentication approach",
include_claude_memory: true // Includes project guidelines
}
}
Common Workflows
Quick Project Review
Human: Generate a code review for my project
Claude: I'll analyze your project and generate a comprehensive review.
[Uses generate_ai_code_review with project_path]
GitHub PR Review
Human: Review this PR: https://github.com/owner/repo/pull/123
Claude: I'll fetch the PR and analyze the changes.
[Uses generate_pr_review with github_pr_url]
Custom Model Review
Human: Generate a detailed review using Gemini 2.5 Pro
Claude: I'll use Gemini 2.5 Pro for a more detailed analysis.
[Uses generate_ai_code_review with model="gemini-2.5-pro"]
File-Specific Review with AI
Human: Review auth.py and database.py lines 50-100 for security issues
Claude: I'll analyze those specific files for security vulnerabilities.
[Uses ask_gemini with file_selections and security-focused instructions]
Quick Code Question
Human: What are the performance implications of the current caching strategy?
Claude: I'll analyze your caching implementation and provide insights.
[Uses ask_gemini with user_instructions only, leveraging project context]
⚙️ Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
GEMINI_API_KEY |
✅ | - | Your Gemini API key |
GITHUB_TOKEN |
⬜ | - | GitHub token for PR reviews (create one) |
GEMINI_MODEL |
⬜ | gemini-2.0-flash |
AI model selection |
GEMINI_TEMPERATURE |
⬜ | 0.5 |
Creativity (0.0-2.0) |
THINKING_BUDGET |
⬜ | Auto | Thinking tokens (Pro: 128-32768, Flash: 0-24576) |
Model Configuration
Default Models
- Primary Model:
gemini-2.0-flash- Fast, efficient model for code reviews - Summary Model:
gemini-2.0-flash-lite- Used internally for quick summaries
Model Aliases
For convenience, you can use these short aliases instead of full model names:
| Alias | Full Model Name | Features |
|---|---|---|
gemini-2.5-pro |
gemini-2.5-pro-preview-06-05 |
Advanced reasoning, thinking mode, URL context |
gemini-2.5-flash |
gemini-2.5-flash-preview-05-20 |
Fast, thinking mode, URL context |
Available Models
All models support code review, with varying capabilities:
With Thinking Mode + URL Context:
gemini-2.5-pro(alias) /gemini-2.5-pro-preview-06-05gemini-2.5-flash(alias) /gemini-2.5-flash-preview-05-20
With URL Context Only:
gemini-2.0-flash(default)gemini-2.0-flash-live-001
Basic Models:
gemini-1.5-progemini-1.5-flash(used for integration tests - cost-effective)
Usage Examples
// Using default model (gemini-2.0-flash)
{ tool_name: "generate_ai_code_review", arguments: { project_path: "/path" } }
// Using alias for advanced model
{ tool_name: "generate_ai_code_review", arguments: {
project_path: "/path",
model: "gemini-2.5-pro" // Automatically resolves to gemini-2.5-pro-preview-06-05
} }
// Using full model name
{ tool_name: "generate_ai_code_review", arguments: {
project_path: "/path",
model: "gemini-2.5-pro-preview-06-05"
} }
Automatic Configuration Discovery
When enabled with flags, the tool discovers and includes:
- 📁 CLAUDE.md files at project/user/enterprise levels (use
--include-claude-memory) - 📝 Cursor rules (
.cursorrules,.cursor/rules/*.mdc) (use--include-cursor-rules) - 🔗 Import syntax (
@path/to/file.md) for modular configs
Configuration in pyproject.toml
You can set default values in your pyproject.toml:
[tool.gemini]
temperature = 0.5
default_prompt = "Your custom review prompt"
default_model = "gemini-1.5-flash"
include_claude_memory = true
include_cursor_rules = false
enable_cache = true
cache_ttl_seconds = 900 # 15 minutes
Configuration precedence: CLI flags > Environment variables > pyproject.toml > Built-in defaults
✨ Key Features
- 🤖 Smart Context - Optionally includes CLAUDE.md (use
--include-claude-memory), task lists (use--task-list), and project structure - 🎯 Flexible Scopes - Review PRs, recent changes, or entire projects
- ⚡ Model Selection - Choose between Gemini 2.0 Flash (speed) or 2.5 Pro (depth)
- 🔄 GitHub Integration - Direct PR analysis with full context
- 📊 Progress Aware - Understands development phases and task completion
- 🔗 URL Context - Gemini automatically fetches and analyzes URLs in prompts (or use
--url-contextflag) - 🏗️ Project Scaffolding - Initialize projects with recommended structure via
gemini-code-review-init - 🚀 Performance Optimized - Built-in caching layer for faster repeated operations
- 🎨 Clear Mode Indication - Explicit feedback about Task-Driven vs General Review modes
🖥️ CLI Usage
Alternative: Command-line interface for development/testing
Installation
# Quick start with uvx (no install needed)
uvx gemini-code-review-mcp /path/to/project
# Or install globally
pip install gemini-code-review-mcp
Commands
# Initialize a new project with recommended structure
gemini-code-review-init
# Basic review (current directory)
generate-code-review
# Review specific project
generate-code-review /path/to/project
# Advanced options
generate-code-review . \
--scope full_project \
--model gemini-2.5-pro
# Use specific task list (overrides auto-discovery)
generate-code-review \
--task-list tasks/tasks-feature-x.md \
--scope specific_phase \
--phase-number 2.0
# With thinking budget (current directory)
generate-code-review --thinking-budget 20000 --temperature 0.7
# With URL context for framework-specific review
generate-code-review \
--file-instructions "Review my async implementation against the official docs" \
--url-context https://docs.python.org/3/library/asyncio.html
# File-based context generation (for debugging - does not call AI)
generate-file-context -f src/main.py -f src/utils.py:10-50 \
--user-instructions "Review for performance issues" \
-o context.md
# Meta-prompt only (current directory)
generate-meta-prompt --stream
Review Modes
The tool operates in one of three modes:
-
🔍 General Review Mode: Default mode (no
--task-listflag)- Comprehensive code quality analysis
- Focuses on best practices and improvements
- Best for: Maintenance, refactoring, or exploratory reviews
-
📝 Task-Driven Mode: When
--task-listflag is used (opt-in)- Enable with:
generate-code-review . --task-list tasks-feature.md - Or auto-select latest:
generate-code-review . --task-list - Contextualizes review based on your current development phase
- Tracks progress against planned tasks
- Best for: Active development with defined milestones
- Enable with:
-
🐙 GitHub PR Mode: When
--github-pr-urlis provided- Analyzes specific pull request changes
- Includes PR context and discussions
- Best for: Code review workflows
Supported File Formats
- 📋 Task Lists:
/tasks/tasks-*.md- Track development phases - 📄 PRDs:
/tasks/prd-*.md- Project requirements - 📦 Configs:
CLAUDE.md,.cursorrules- Coding standards
🆘 Troubleshooting
- Missing API key? → Get one at ai.google.dev
- MCP not working? → Run
claude mcp listto verify installation - Old version cached? → Run
uv cache clean
📦 Development
# Setup
git clone https://github.com/nicobailon/gemini-code-review-mcp
cd gemini-code-review-mcp
pip install -e ".[dev]"
# Testing commands
python -m pytest tests/ # Run all tests in venv
make lint # Check code style
make test-cli # Test CLI commands
Testing Configuration
The test suite includes both mocked unit tests and real API integration tests:
Unit Tests (Default)
- Fast execution: Mock all external API calls
- No API key required: Run without any setup
- Model configuration: Tests use
gemini-2.0-flashdefaults - Run with:
pytestorpython -m pytest tests/
Integration Tests (Optional)
- Real API calls: Uses
gemini-1.5-flashfor cost-effective testing - API key required: Set
GEMINI_API_KEYenvironment variable - Limited features: Tests only features supported by
gemini-1.5-flash(no thinking mode/URL context) - Run with:
pytest -m integrationorpytest tests/integration/
Running Tests
# Run only unit tests (default, fast)
pytest
# Run only integration tests (requires API key)
export GEMINI_API_KEY=your_key_here
pytest -m integration
# Run all tests including integration
pytest -m ""
# Run specific integration test
pytest tests/integration/test_gemini_real.py::TestGeminiRealAPI::test_basic_code_review_generation
# Verbose output with integration tests
pytest -v -m integration
Test Features
- Model verification: Ensures
gemini-1.5-flashis used for integration tests - Capability testing: Validates that unsupported features are properly handled
- Error handling: Tests graceful degradation with invalid inputs
- Temperature testing: Verifies model parameter effects
📏 License
MIT License - see LICENSE file for details.
👥 Credits
Built by Nico Bailon.
Metadata
Release files for gemini-code-review-mcp 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gemini_code_review_mcp-0.5.0.tar.gz | 309.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gemini_code_review_mcp-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 465.6 kB
Release files / gemini_code_review_mcp-0.5.0.tar.gz
| Download URL | gemini_code_review_mcp-0.5.0.tar.gz |
|---|---|
| Size | 309.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4ba7db00661ce0d4032b7d4e4753965b6f5f934f88c92548ecaae58451050c7
|
|
BLAKE2b-256 checksum How to use checksums |
3ee278819fc8eeb2e491d513838b596deef26e66c84fcaec268b4d0794e3a8b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.13
|
Release files / gemini_code_review_mcp-0.5.0-py3-none-any.whl
| Download URL | gemini_code_review_mcp-0.5.0-py3-none-any.whl |
|---|---|
| Size | 156.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
333a66be562df1137ff689984f632b7b8362323dcfa147ff1f90061ec21ebe04
|
|
BLAKE2b-256 checksum How to use checksums |
eb880df4160104bb4294bb2fad444422010452a2951ef11ee17520a7c690a325
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.13
|