A personal collection of MCP servers I built for my Claude Code workflow. Some wrap heavier upstream servers to reduce token usage, others add capabilities that don't exist elsewhere.
| Hub | Purpose | Backend | Notes |
|---|---|---|---|
| agent-mesh | Headless agent runners | Claude/Codex/Gemini CLIs | Multi-agent orchestration |
| browser-hub | Browser automation | agent-browser | 24x token reduction, batch form filling |
| search-hub | Web research | OpenAI API | Synthesized answers with citations |
| image-hub | Image generation | Vertex AI Gemini | Gemini 3 Pro native image gen |
| gdrive-hub | Google Drive access | Google Drive API | Service account auth, Shared Drives |
| google-ads-hub | Google Ads analysis | Google Ads API | Read-only reporting tools |
Each tool is a standalone Python package managed with uv:
cd browser-hub && uv sync # Browser automation
cd search-hub && uv sync # Web research
cd image-hub && uv sync # Image generation
cd gdrive-hub && uv sync # Google Drive accessAdd to ~/.claude.json:
{
"mcpServers": {
"browser-hub": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tools/browser-hub", "browser-hub"]
},
"search-hub": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tools/search-hub", "search-hub"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
},
"image-hub": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tools/image-hub", "image-hub"],
"env": {
"GOOGLE_CLOUD_PROJECT": "${GOOGLE_CLOUD_PROJECT}"
}
},
"gdrive-hub": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tools/gdrive-hub", "gdrive-hub"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"GDRIVE_DRIVE_ID": "your-shared-drive-id"
}
}
}
}To avoid editing large config files by hand, use the central registry:
cd ~/git/mcp-tools
python registry/sync_mcp.py # dry-run
python registry/sync_mcp.py --diff # show changes
python registry/sync_mcp.py --writeSource of truth: registry/mcp-registry.toml.
Local overrides: registry/mcp-registry.local.toml (not committed).
browser(action="navigate", url="https://example.com")
browser(action="look") # Screenshot + filtered elements in ONE call
# Batch fill forms (10x faster than individual type calls)
browser(action="fill_form", fields={
"#email": "user@example.com",
"#name": "John Doe",
"#country": "United States"
})
browser(action="click", ref="@e5") # Refs from accessibility tree# Ask complete questions, not keywords
web_research(task="What are the latest developments in quantum computing?")
web_research(task="Compare React vs Vue", reasoning_effort="high")# Generate images with Gemini
generate_image(prompt="A sunset over mountains", output_path="/tmp/sunset.png")# List files in root (or specific folder)
list_files()
list_files(folder_id="1ABC...")
# Search with Drive query syntax
list_files(query="name contains 'report'")
list_files(query="mimeType = 'application/pdf'")
list_files(query="modifiedTime > '2024-01-01'")
# Upload and download
upload_file(local_path="/tmp/doc.pdf", folder_id="1ABC...")
download_file(file_id="1XYZ...", export_format="pdf") # Exports Google Docs| Dependency | Purpose |
|---|---|
| Python 3.11+ | Runtime |
| uv | Package management |
| Claude/Codex/Gemini CLIs | agent-mesh |
| agent-browser | browser-hub (npm i -g agent-browser && agent-browser install) |
| OpenAI API key | search-hub |
| Google Cloud project | image-hub |
| Google service account | gdrive-hub (with Drive API access) |
| Google Ads API credentials | google-ads-hub |
MIT