Skip to main content
Glama

CopilotRAG

Base RAG locale qui indexe le code de vos projets de référence et le rend interrogeable par GitHub Copilot via un serveur MCP. Objectif : lors d'un nouveau développement, Copilot retrouve les implémentations et conventions existantes et génère un code homogène.

flowchart LR
    A[Projets de référence] -->|scan + chunk| B[Ingestion]
    B -->|embeddings locaux<br>sentence-transformers| C[(ChromaDB<br>data/chroma)]
    D[VS Code + Copilot Chat] <-->|MCP stdio| E[Serveur copilot-rag]
    E -->|recherche sémantique| C
  • 100 % local : aucune clé API, aucune donnée ne quitte la machine.

  • Ingestion incrémentale : seuls les fichiers modifiés sont ré-indexés.

  • Respecte les .gitignore + patterns include/exclude par projet.

Installation

py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .[dev]

Le premier run télécharge le modèle d'embeddings (~100 Mo) puis le met en cache.

Related MCP server: OmniDocs-RAG-CN

Configuration

Éditez config/projects.yaml et listez vos projets. Deux sources possibles : un dossier local (path) ou l'URL d'un dépôt git (git), cloné une fois dans data/repos puis mis à jour automatiquement à chaque ingestion (clone shallow, git doit être sur le PATH) :

projects:
  - name: mon-backend
    path: D:/wks/MonBackend
    include: ["**/*.cs", "**/*.sql", "**/*.md"]   # optionnel
    exclude: ["**/generated/**"]                  # optionnel

  - name: mon-frontend
    git: https://github.com/mon-org/mon-frontend.git
    ref: main                                     # optionnel : branche, tag ou commit

L'ingestion est incrémentale aussi pour les dépôts git : après le fetch, seuls les fichiers dont le hash a changé sont ré-indexés.

Ingestion

.\scripts\ingest.ps1                    # tout indexer (incrémental)
.\scripts\ingest.ps1 -Project mon-backend
.\scripts\ingest.ps1 -Force             # tout ré-indexer

Utilisation dans Copilot

Le serveur MCP est déclaré dans .vscode/mcp.json : VS Code le démarre automatiquement dans ce workspace. Dans Copilot Chat (mode Agent), les outils disponibles sont :

Outil

Rôle

search_code

Recherche sémantique de code (filtres projet/langage)

find_similar_code

Trouve du code similaire à un extrait

search_documentation

Recherche dans les README / docs indexés

list_projects

Liste les projets indexés

index_stats

Volumes par projet et par langage

Exemples de prompts Copilot :

  • « Avant d'écrire ce service, cherche dans copilot-rag comment les autres projets implémentent l'accès aux données. »

  • « Utilise search_documentation pour retrouver nos conventions de logging. »

Rendre la base disponible dans tous les workspaces

Pour interroger la base depuis n'importe quel projet, ajoutez le serveur à la configuration MCP utilisateur (Palette de commandes → MCP: Open User Configuration) :

{
  "servers": {
    "copilot-rag": {
      "type": "stdio",
      "command": "D:\\wks\\Labo\\CopilotRAG\\.venv\\Scripts\\python.exe",
      "args": ["-m", "copilot_rag.server"],
      "cwd": "D:\\wks\\Labo\\CopilotRAG"
    }
  }
}

Obliger Copilot à exploiter la base dans un projet

Copiez le modèle templates/copilot-instructions.md dans .github/copilot-instructions.md du projet consommateur : il impose à Copilot de consulter la base RAG avant/après toute écriture de code et de s'aligner sur les patterns des projets indexés.

Tests et vérifications

.\.venv\Scripts\python.exe -m pytest                 # tests unitaires
.\.venv\Scripts\python.exe scripts\smoke_test.py     # test de bout en bout du serveur MCP

Des configurations de débogage sont fournies (.vscode/launch.json) : RAG : Ingestion et RAG : Smoke test MCP.

Structure

config/projects.yaml   # projets à indexer (dossier local ou URL git), modèle, chunking
src/copilot_rag/       # config, chunker, embeddings, store, gitsync, ingest, server
scripts/               # ingest.ps1, smoke_test.py
samples/demo-api/      # projet d'exemple indexé par défaut
data/chroma/           # base vectorielle (générée, git-ignorée)
data/repos/            # clones locaux des dépôts git (généré, git-ignoré)

Références

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to perform intelligent semantic code search across codebases using local AI embeddings for meaning-based retrieval.
    6
    79 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to index and search local files, websites, GitHub repos, and packages with hybrid AI-powered retrieval, all locally through IDE chat.
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI coding agents to build and query local repository memory, returning ranked files, context packs, relationship maps, semantic recall, and feedback-tuned search without uploading code.
    9
    1,459 PyPI
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search a codebase by meaning rather than exact keywords by indexing files with local AI embeddings, alongside package-version lookup and index management tools. It supports incremental, resource-throttled indexing across multiple workspaces and IDE integrations.
    79 npm
    MIT