gpal
An MCP server that gives your IDE or agent access to Google Gemini with autonomous codebase exploration, enabling deep code analysis, architectural reviews, and bug hunting.
README
<p align="center"> <img src="assets/banner.svg" alt="gpal — Your Pal Gemini" width="800"/> </p>
gpal
An MCP server that gives your IDE or agent access to Google Gemini with autonomous codebase exploration. Your pal Gemini.
Why gpal?
When you ask gpal a question, Gemini doesn't just guess — it explores your codebase itself. It lists directories, reads files, and searches for patterns before answering. This makes it ideal for:
- 🔍 Deep code analysis — "Find all error handling patterns in this codebase"
- 🏗️ Architectural reviews — "How is authentication implemented?"
- 🐛 Bug hunting — "Why might this function return null?"
- 📚 Codebase onboarding — "Explain how the request pipeline works"
- 🖼️ Visual review — Analyze screenshots, diagrams, video via
media_paths - 📋 Structured extraction — "List all API endpoints as JSON"
Features
| Feature | Description |
|---|---|
| Stateful sessions | Maintains conversation history via ctx.session_id |
| Autonomous exploration | Gemini has tools to list, read, and search files |
| FileSearch | Semantic code search via Google's native FileSearch API |
| Gemini 3 Series | Supports Flash and Pro with unified auto mode |
| Context Caching | Store large code contexts to reduce costs and latency |
| Observability | Native OpenTelemetry support (OTLP gRPC) |
| Distributed Tracing | Propagates traceparent from MCP requests |
| Multimodal | Analyze images, audio, video, PDFs |
| Batch Processing | Async discounted (~50%) Gemini batch API |
Limits: 10MB file reads, 20MB inline media, 20 search matches max.
Model Tiers
| Tool | Model | Use Case |
|---|---|---|
consult_gemini |
auto (default) |
Lite explores, then Flash synthesizes |
consult_gemini |
flash |
Fast, efficient mapping and searching |
consult_gemini |
pro |
Deep reasoning, complex reviews |
consult_gemini_oneshot |
flash / pro |
Stateless single-shot queries, no session history |
Auto mode: Lite autonomously explores the codebase (cheap, thorough), then Flash synthesizes over what Lite found. Use model="pro" for deep reasoning (Lite explores, then Pro with thinking HIGH).
Observability & Tracing
gpal supports native OpenTelemetry for monitoring and distributed tracing. It automatically propagates traceparent headers from incoming MCP requests.
# Configure via standard environment variables
export OTEL_SERVICE_NAME="gpal-server"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317"
# Or via CLI argument
uv run gpal --otel-endpoint localhost:4317
Context Caching
Reduce costs for large projects by caching context on Google's servers:
- Upload large files using
upload_file. - Create a cache using
create_context_cachewith the returned URIs. - Reference the cache name in
consult_geminicalls via thecached_contentparameter. - View active caches via the
gpal://cachesresource.
FileSearch
Semantic code search using Google's native FileSearch API — no local embeddings or databases:
# Create a store and upload files
create_file_store("my-project")
upload_to_file_store("stores/...", "src/server.py")
# Gemini searches stores automatically during generation
consult_gemini("find authentication logic", model="auto")
- Google handles chunking, embedding, and retrieval
- Stores managed via
create_file_store,upload_to_file_store,list_file_stores,delete_file_store - When stores exist, Gemini searches them automatically during
consult_geminicalls
Custom System Prompts
Customize what Gemini "knows" about you, your project, or your workflow by composing system prompts from multiple sources.
Config file (~/.config/gpal/config.toml):
# Files loaded in order and concatenated
system_prompts = [
"~/.config/gpal/GEMINI.md",
"~/CLAUDE.md",
]
# Inline text appended after files
system_prompt = "常に日本語で回答してください (Always respond in Japanese)"
# Set to false to fully replace the built-in prompt with your own
include_default_prompt = true
Paths support ~ and $ENV_VAR expansion, so you can use $WORKSPACE/CLAUDE.md etc.
CLI flags (repeatable, concatenated in order):
# Append additional prompt files
uv run gpal --system-prompt /path/to/project-context.md
# Multiple files
uv run gpal --system-prompt ~/GEMINI.md --system-prompt ./CLAUDE.md
# Replace the built-in prompt entirely
uv run gpal --system-prompt ~/my-prompt.md --no-default-prompt
Composition order:
- Built-in gpal system instruction (unless
include_default_prompt = falseor--no-default-prompt) - Files from
system_promptsin config.toml - Inline
system_promptfrom config.toml - Files from
--system-promptCLI flags
Check what's active via the gpal://info resource — it shows which sources contributed and the total instruction length.
Installation
Prerequisites
- Python 3.12+
- uv (recommended)
- Gemini API key
Quick Start
git clone https://github.com/tobert/gpal.git
cd gpal
export GEMINI_API_KEY="your_key_here" # or GOOGLE_API_KEY
uv run gpal
Usage
Claude Desktop / Cursor / VS Code
Add to your MCP config (e.g., claude_desktop_config.json):
{
"mcpServers": {
"gpal": {
"command": "uv",
"args": ["--directory", "/path/to/gpal", "run", "gpal"],
"env": {
"GEMINI_API_KEY": "your_key_here"
}
}
}
}
Then ask your AI assistant:
"Ask Gemini to analyze the authentication flow in this codebase"
"Use
consult_geminito find where errors are handled"
Development
uv run pytest # Run tests
uv run pytest -v # Verbose output
⚠️ Note: Integration tests (test_connectivity.py, test_agentic.py, test_switching.py) make live API calls and will incur Gemini API costs.
See Also
- cpal — The inverse: an MCP server that lets Gemini (or any MCP client) consult Claude. Your pal Claude.
License
MIT — see LICENSE
Roadmap / TODO
- Refactoring Agent: A loop that edits files, runs tests (via
code_executionor shell), and iterates until green. - Review Agent: specialized system instruction for code review that outputs structured comments.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。