Uses Google's Gemini API to generate semantic embeddings for code chunks, enabling AI-powered semantic search across codebases
MCP Codebase Index Server
AI-powered semantic search for your codebase in GitHub Copilot, Kiro, and other MCP-compatible editors
A Model Context Protocol (MCP) server that enables AI editors to search and understand your codebase using Google's Gemini embeddings and Qdrant vector storage.
Supported Editors:
✅ VS Code with GitHub Copilot
✅ VS Code with Roo Cline
✅ GitHub Copilot CLI
✅ Google Gemini CLI
✅ Kiro AI Editor
✅ Any MCP-compatible editor
📚 Quick Navigation
🚀 Getting Started
📖 Full Documentation - Complete documentation
⚙️ Setup Guide - VS Code - Installation for VS Code Copilot
🖥️ Setup Guide - CLI - Installation for GitHub Copilot CLI
🤖 Setup Guide - Gemini CLI - Installation for Google Gemini CLI
🎯 Setup Guide - Kiro - Installation for Kiro AI Editor
🦘 Setup Guide - Roo Cline - Installation for Roo Cline (VS Code)
⚡ Quick Reference - Command cheat sheet
🗺️ Navigation Guide - Find any doc quickly
💻 For Developers
Source Code Structure - Code organization
MCP Server Guide - Build your own MCP server
Roadmap - Future plans
🔧 Resources
Qdrant Setup - Get Qdrant credentials
Testing Guide - Test search functionality
Prompt Enhancement Guide - Use prompt enhancement effectively
Vector Visualization Guide - Visualize your codebase
Changelog - Version history
✨ Features
🔍 Semantic Search - Find code by meaning, not just keywords
🎯 Smart Chunking - Automatically splits code into logical functions/classes
🔄 Incremental Indexing - Only re-indexes changed files (90%+ time savings)
💾 Auto-save Checkpoints - Saves progress every 10 files, resume anytime
📊 Real-time Progress - Track indexing with ETA and performance metrics
⚡ Parallel Processing - 25x faster indexing with batch execution
🔄 Real-time Watch - Auto-updates index on file changes
🌐 Multi-language - Supports 15+ programming languages
☁️ Vector Storage - Uses Qdrant for persistent storage
🤖 Prompt Enhancement - AI-powered query improvement (optional)
� Vector Visualization - 2D/3D UMAP visualization of your codebase
🏗️ Modular Architecture - Clean handler separation for maintainability
�📦 Simple Setup - Just 4 environment variables
🚀 Quick Start
Prerequisites
Gemini API Key - Get free at Google AI Studio
Qdrant Cloud Account - Sign up free at cloud.qdrant.io
Installation
Choose your environment:
VS Code Users: Follow steps below or see Roo Cline Setup
Copilot CLI Users: See Copilot CLI Setup Guide
Gemini CLI Users: See Gemini CLI Setup Guide
Kiro Users: See Kiro Setup Guide
Step 1: Open MCP Configuration in VS Code
Open GitHub Copilot Chat (
Ctrl+Alt+I/Cmd+Alt+I)Click Settings icon → MCP Servers → MCP Configuration (JSON)
Step 2: Add this configuration to mcp.json:
Step 3: Restart VS Code
The server will automatically:
Connect to Qdrant Cloud
Index your codebase
Watch for file changes
📖 Detailed instructions:
📖 Usage
Search Your Codebase
Ask GitHub Copilot:
Visualize Your Codebase
Ask GitHub Copilot:
📖 Complete guide: Vector Visualization Guide
Check Indexing Status
📖 More examples: Testing Guide
📊 Vector Visualization
See your codebase in 2D/3D space - Understand semantic relationships and code organization visually.
What is Vector Visualization?
Vector visualization transforms your codebase's 768-dimensional embeddings into interactive 2D or 3D visualizations using UMAP dimensionality reduction. This allows you to:
🎨 Explore semantic relationships - Similar code clusters together
🔍 Understand architecture - See your codebase structure at a glance
🎯 Debug search results - Visualize why certain code was retrieved
📈 Track code organization - Identify modules, patterns, and outliers
Quick Start
Visualize entire codebase:
Export as HTML:
Understanding the Visualization
Colors and Clusters:
Each color represents a semantic cluster (module/functionality)
Points close together = similar in meaning
Distance reflects semantic similarity
Outliers indicate unique/specialized code
Common Cluster Patterns:
Blue: Frontend/UI components
Orange: API endpoints and routes
Green: Database models and queries
Red: Authentication and security
Purple: Tests and validation
Gray: Utilities and helpers
Use Cases
🏗️ Architecture Understanding
Visualize to see module boundaries
Identify tightly coupled code
Find opportunities for refactoring
🔍 Code Discovery
Locate related functionality visually
Find all code touching a feature
Discover cross-cutting concerns
🐛 Search Debugging
Understand why results were retrieved
See semantic relationships
Refine queries based on visualization
👥 Team Onboarding
Export HTML for new developers
Visual guide to codebase structure
Interactive exploration tool
✅ Refactoring Validation
Visualize before/after refactoring
Verify improved code organization
Track architecture evolution
Performance
Collection Size | Processing Time | Recommended maxVectors |
Small (<500 vectors) | ~1s | 500 |
Medium (500-2K) | ~4s | 1000 |
Large (2K-10K) | ~15s | 2000 |
Very Large (>10K) | ~30s | 3000 |
Tips:
Use 2D for faster processing (40% faster than 3D)
Limit maxVectors for large codebases
Export HTML for offline exploration
📖 Learn More
For detailed documentation including:
Complete tool reference
Interpretation guide
Technical details (UMAP, clustering)
Troubleshooting
Best practices
Advanced use cases
See: Vector Visualization Guide
🎯 Prompt Enhancement (Optional)
TL;DR: Prompt enhancement is a transparent background tool that automatically improves search quality. Just ask naturally - no need to mention "enhance" in your prompts.
Quick Overview
When enabled (PROMPT_ENHANCEMENT=true), the AI automatically:
Enhances your search query with codebase context
Searches with the improved query
Continues with your original request (implement, fix, explain, etc.)
Good Prompts ✅
Why these work: Clear goal (find + action) → AI knows what to do
Bad Prompts ❌
Why these fail: No clear action → AI stops after search
Key Principle
Prompt enhancement is invisible infrastructure.
Just tell the AI what you want to accomplish. It will automatically use enhancement to improve search quality behind the scenes.
Think of it like autocomplete: You don't say "use autocomplete" - you just type and it helps automatically.
📖 Learn More
For detailed guide including:
Technical details and architecture
Configuration options
Real-world examples (TypeScript, Python, Dart, etc.)
Performance tips and optimization
Troubleshooting and FAQ
Advanced use cases
🎛️ Configuration
Required Variables
Optional Variables
📖 Full configuration guide: Setup Guide
🌍 Supported Languages
Python • TypeScript • JavaScript • Dart • Go • Rust • Java • Kotlin • Swift • Ruby • PHP • C • C++ • C# • Shell • SQL • HTML • CSS
📊 Performance
Metric | Value |
Indexing Speed | ~25 files/min |
Search Latency | <100ms |
Incremental Savings | 90%+ time reduction |
Parallel Processing | 25 chunks/sec |
📖 Performance details: Main Documentation
🐛 Troubleshooting
Server not appearing?
Check Copilot Chat → Settings → MCP Servers → Show Output
Verify all 4 env variables are set
Ensure
REPO_PATHis absolute path
Can't connect to Qdrant?
Indexing too slow?
Large repos take 5-10 minutes initially
Subsequent runs only index changed files (90%+ faster)
📖 More troubleshooting: Main Documentation
📁 Project Structure
📖 Detailed structure: Project Structure | Source Code Structure
🔧 Development
Build
Run Locally
Test
📖 Development guide: Source Code Structure
🤝 Contributing
Contributions welcome! Check out:
Improvement Plan - Roadmap
Issues - Detailed feature docs
Source Code - Code structure
📄 License
MIT © NgoTaiCo
📞 Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: ngotaico.flutter@gmail.com
⭐ If you find this useful, please star the repo!