使用说明
MCP Semantic Search
Serveur MCP pour la recherche sémantique dans le code avec RAG (Retrieval-Augmented Generation).
Vue d'ensemble
mcp-semantic-search est un serveur MCP qui permet d'indexer et de rechercher sémantiquement dans une codebase en utilisant des embeddings spécialisés et une approche RAG. Il combine l'analyse statique du code (call graph) avec des embeddings de machine learning pour offrir une recherche intelligente et contextuelle.
Fonctionnalités
- 🔍 Recherche sémantique : Recherche en langage naturel dans le code
- 📚 Documentation automatique : Génération de documentation enrichie pour les symbols
- 🧠 Multi-embeddings : Utilise des modèles différents pour le code et la documentation
- 📊 Analyse de call graph : Impact analysis et navigation dans les dépendances
- ⚡ 100% local et gratuit : Pas de coûts API, tout tourne en local
- 🎯 Chunking intelligent : Séparation optimale code/doc/relations
Architecture
Composants Principaux
┌─────────────────┐
│ SQLite DB │ Symbols + Call Graph
│ .callgraph.db │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Indexer │ Génération doc + embeddings
│ - Extracteur │
│ - Doc Gen │
│ - Priority │
└────────┬────────┘
│
├──────────────┬──────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ ChromaDB │ │ ChromaDB │ │ ChromaDB │
│ Documentation│ │ Code Source │ │ Relations │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└──────────────┴──────────────┘
▼
┌──────────────┐
│ MCP Server │
│ 8 Tools │
└──────────────┘
Modèles d'Embeddings
- Documentation :
all-mpnet-base-v2(768 dim, gratuit) - Code :
microsoft/graphcodebert-base(768 dim, gratuit) - Relations : Custom graph embeddings (256 dim)
Installation
cd C:\Users\nicolasv\MCP_servers\mcp-semantic-search
# Créer environnement virtuel
python -m venv venv
venv\Scripts\activate
# Installer dépendances
pip install -r requirements.txt
Configuration
Créer un fichier config.yaml :
database:
callgraph_db: "C:/path/to/.callgraph.db"
chroma_db_path: "./.chroma_db"
indexing:
modules_filter:
- "open-auction-base"
- "vpauto"
priority:
min_callers: 2
include_controllers: true
include_services: true
documentation:
use_claude_api: false # true pour qualité max
batch_size: 50
embeddings:
code_model: "microsoft/graphcodebert-base"
doc_model: "all-mpnet-base-v2"
device: "cpu" # ou "cuda" si GPU disponible
search:
default_results: 10
enable_reranking: true
Utilisation
1. Indexation
# Indexer la codebase
python scripts/index_codebase.py
# Avec filtre sur modules
python scripts/index_codebase.py --modules "open-auction-base,vpauto"
# Mode verbose
python scripts/index_codebase.py -v
2. Lancer le serveur MCP
python -m mcp_semantic_search.server
3. Configuration dans Claude Code
Ajouter dans claude_desktop_config.json :
{
"mcpServers": {
"semantic-search": {
"command": "python",
"args": [
"-m",
"mcp_semantic_search.server"
],
"cwd": "C:/Users/nicolasv/MCP_servers/mcp-semantic-search",
"env": {
"PYTHONPATH": "C:/Users/nicolasv/MCP_servers/mcp-semantic-search/src"
}
}
}
}
Tools MCP
semantic_search__search_code
Recherche de code par similarité sémantique.
Paramètres :
query(string) : Requête en langage naturel ou coden_results(int) : Nombre de résultats (défaut: 10)filters(object) : Filtres optionnels (package, type, etc.)
Exemple :
{
"query": "method that cancels invoice and releases lots",
"n_results": 5,
"filters": {"package": "open-auction-base"}
}
semantic_search__search_documentation
Recherche dans la documentation des symbols.
Paramètres :
query(string) : Question ou concept métiern_results(int) : Nombre de résultatschunk_type(string) : Type de chunk (summary, business_logic, technical_impl)
semantic_search__get_symbol
Récupère le contexte complet d'un symbol.
Paramètres :
symbol_id_or_fqn(string) : ID ou nom complet du symbolinclude_code(bool) : Inclure le code sourceinclude_relations(bool) : Inclure call graph
semantic_search__find_similar
Trouve du code similaire à un snippet donné.
Paramètres :
code_snippet(string) : Code à comparern_results(int) : Nombre de résultatslanguage(string) : Langage (java, python, etc.)
semantic_search__list_callers
Liste les appelants d'un symbol.
Paramètres :
symbol_id_or_fqn(string) : Symbol à analyserrecursive(bool) : Recherche récursive
semantic_search__list_callees
Liste ce qu'appelle un symbol.
Paramètres :
symbol_id_or_fqn(string) : Symbol à analyserrecursive(bool) : Recherche récursive
semantic_search__analyze_impact
Analyse l'impact de modifier un symbol.
Paramètres :
symbol_id_or_fqn(string) : Symbol à modifierdepth(int) : Profondeur d'analyse
semantic_search__index_status
Statistiques sur l'index.
Retourne :
- Nombre de symbols indexés
- Taille des collections
- Date dernière indexation
Documentation Détaillée
Voir le dossier docs/ pour la documentation complète :
docs/ARCHITECTURE.md: Architecture détailléedocs/RAG_CONCEPTS.md: Concepts RAG et embeddingsdocs/CHUNKING_STRATEGY.md: Stratégie de chunkingdocs/INDEXING_ORDER.md: Ordre de traitement optimaldocs/API.md: Référence API complètedocs/EXAMPLES.md: Exemples d'utilisation
Performances
Coûts
| Composant | Solution | Coût |
|---|---|---|
| Embeddings code | GraphCodeBERT (local) | 0€ |
| Embeddings doc | all-mpnet-base-v2 (local) | 0€ |
| Base vectorielle | ChromaDB (local) | 0€ |
| Documentation (optionnel) | Claude API ou local | 0-15€ |
| TOTAL | 0-15€ |
Temps d'indexation
- 10K symbols custom : ~2-3 heures (avec génération doc Claude)
- 10K symbols custom : ~10 minutes (doc basique)
- Recherche : <100ms par requête
Espace disque
- Modèles : ~1 GB (téléchargement unique)
- Index ChromaDB : ~200-300 MB pour 10K symbols
- Base SQLite : Déjà existante
Roadmap
- [ ] Phase 1 : Infrastructure de base
- [ ] Phase 2 : Indexation avec doc basique
- [ ] Phase 3 : Intégration Claude pour doc enrichie
- [ ] Phase 4 : Interface web de recherche
- [ ] Phase 5 : Support multi-langages
Licence
MIT
Auteur
Développé pour le projet Bricklead Enchères (Axelor)
