Skip to main content
Glama
daswort
by daswort

🧩 code-context-mcp

Pipeline para segmentar cΓ³digo fuente en chunks, generar embeddings y almacenarlos en ChromaDB. DiseΓ±ado para dar contexto semΓ‘ntico a AI coding assistants (Antigravity, Cursor, VS Code Copilot) vΓ­a Model Context Protocol (MCP).

Arquitectura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  AI Assistant (Antigravity, Cursor, VS Code, etc.)     β”‚
β”‚  Usa tools MCP para buscar cΓ³digo relevante            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ MCP (stdio)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  chunking-mcp                                          β”‚
β”‚  MCP Server liviano Β· 9 tools disponibles              β”‚
β”‚  Sin modelo local β€” queries vΓ­a HTTP                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ HTTP
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ChromaDB (Docker)                                     β”‚
β”‚  Genera embeddings server-side (all-MiniLM-L6-v2)      β”‚
β”‚  Almacena y busca vectores                             β”‚
β”‚  Named volume: code-context-chroma-data                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Related MCP server: Enterprise Code Search MCP Server

InstalaciΓ³n

# Clonar
git clone git@github.com:daswort/code-context-mcp.git && cd code-context-mcp

# Crear virtualenv e instalar
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# Levantar ChromaDB
cd docker && docker compose up -d

Esto instala 3 comandos CLI:

Comando

FunciΓ³n

chunking-get

Segmenta cΓ³digo fuente en chunks JSONL

chunking-ingest

Ingesta chunks en ChromaDB (delta incremental)

chunking-mcp

MCP server para AI assistants

Uso rΓ‘pido

1. Segmentar cΓ³digo

chunking-get <rama> --repo /ruta/al/repo --output /ruta/chunks/mi-repo

Ejemplo:

chunking-get main --repo ~/projects/agenda2-app --output ~/projects/chunking/chunks/agenda2-app

Esto genera un archivo JSONL con todos los fragmentos del cΓ³digo fuente:

chunks/agenda2-app/main/00001_chunks.jsonl

2. Ingestar en ChromaDB

chunking-ingest <rama> --repo /ruta/al/repo --chunks-dir /ruta/chunks/mi-repo

Ejemplo:

chunking-ingest main --repo ~/projects/agenda2-app --chunks-dir ~/projects/chunking/chunks/agenda2-app

La ingesta es delta: detecta chunks nuevos, modificados y eliminados. Solo re-procesa lo necesario:

πŸ” Analizando cambios...
♻️ 3 fragmentos modificados o nuevos detectados.
πŸ—‘οΈ 1 fragmentos eliminados detectados.
🧠 Insertando 3 fragmentos (embeddings server-side)
πŸ—‘οΈ Eliminando 1 fragmentos obsoletos
βœ… Ingesta completada: 3 actualizados, 1 eliminados en 'agenda2-app_main'.

3. Buscar cΓ³digo (MCP)

3. Buscar cΓ³digo (MCP)

El MCP server expone 9 tools para AI assistants:

Tool

DescripciΓ³n

search_code

BΓΊsqueda semΓ‘ntica (cosine distance) con filtros por extensiΓ³n y lenguaje

search_exact

BΓΊsqueda full-text o regex exacto (no semΓ‘ntica, ideal para encontrar sΓ­mbolos)

list_collections

Lista todas las colecciones con conteos

get_collection_info

DistribuciΓ³n de archivos y chunks por colecciΓ³n

get_file_chunks

Todos los chunks de un archivo especΓ­fico

peek_collection

Vista previa de los primeros N documentos

delete_collection

Eliminar una colecciΓ³n completa

get_document

Obtener un chunk especΓ­fico por ID

search_by_file_pattern

Buscar archivos indexados por patrΓ³n o extensiΓ³n (.go, .py)

4. Preview sin procesar (dry-run)

chunking-get main --repo ~/projects/mi-repo --dry-run

Lista los archivos que se procesarΓ­an, agrupados por extensiΓ³n, sin ejecutar nada:

πŸ”Ž Dry-run para repo '/home/user/projects/mi-repo' (rama 'main')

πŸ“‹ Dry-run: 42 archivos serΓ­an procesados

  .go  (25 archivos)
    β€’ backend/cmd/api/main.go
    β€’ backend/internal/config/auth.go
    ...

  .sql  (12 archivos)
    β€’ backend/migrations/000001_init_extensions.up.sql
    ...

Total: 42 archivos

ConfiguraciΓ³n por proyecto

Cada repositorio puede tener un archivo .chunking.yaml en su raΓ­z para personalizar el comportamiento. Las listas extienden los defaults, no los reemplazan.

Copie .chunking.example.yaml como punto de partida:

cp /ruta/a/chunking/.chunking.example.yaml ~/projects/mi-repo/.chunking.yaml

Ejemplo completo

# ~/projects/mi-repo/.chunking.yaml

# Directorios adicionales a excluir
exclude_dirs:
  - vendor
  - tmp

# Extensiones adicionales a excluir
exclude_ext:
  - .log

# Extensiones adicionales a incluir
extra_valid_ext:
  - .go
  - .py
  - .html
  - .sql

# ParΓ‘metros de chunking
chunk_size: 800
chunk_overlap: 100

# Tuning del Γ­ndice HNSW (ChromaDB)
hnsw_space: cosine            # cosine, l2, ip
hnsw_ef_construction: 200     # Calidad de indexaciΓ³n
hnsw_ef_search: 150           # Calidad de recall

# ChromaDB
collection_prefix: mi-proyecto     # β†’ colecciΓ³n: mi-proyecto_main
chroma_host: localhost
chroma_port: 8000
# chroma_auth_token: mi-token     # Opcional

Defaults incluidos

.git, __pycache__, node_modules, dist, build, .venv, .idea, .vscode, .github, bin, obj, chunks

.exe, .bin, .dll, .pdb, .user, .jpg, .jpeg, .png, .gif, .zip, .tar, .gz, .lock

.cs, .csproj, .sln, .cshtml, .js, .ts, .md, .json, .yaml, .yml, .txt, .http

ConfiguraciΓ³n MCP para AI Assistants

Antigravity

Agregar a ~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "code-context": {
      "command": "/ruta/a/code-context-mcp/.venv/bin/chunking-mcp",
      "env": {
        "CHROMA_HOST": "localhost",
        "CHROMA_PORT": "8000"
      }
    }
  }
}

Cursor

Agregar a .cursor/mcp.json:

{
  "mcpServers": {
    "code-context": {
      "command": "/ruta/a/code-context-mcp/.venv/bin/chunking-mcp",
      "env": {
        "CHROMA_HOST": "localhost",
        "CHROMA_PORT": "8000"
      }
    }
  }
}

VS Code (Copilot)

Agregar a .vscode/mcp.json:

{
  "servers": {
    "code-context": {
      "type": "stdio",
      "command": "/ruta/a/code-context-mcp/.venv/bin/chunking-mcp",
      "env": {
        "CHROMA_HOST": "localhost",
        "CHROMA_PORT": "8000"
      }
    }
  }
}

ChromaDB (Docker)

El servidor se levanta con Docker Compose:

cd docker/
docker compose up -d

ConfiguraciΓ³n

Editar docker/.env:

# Puerto (default: 8000)
CHROMA_PORT=8000

# AutenticaciΓ³n por token (opcional)
# CHROMA_AUTH_TOKEN=mi-token-secreto
# CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider

Operaciones comunes

# Ver estado
docker compose ps

# Ver logs
docker compose logs -f chromadb

# Parar
docker compose down

# Parar y borrar datos
docker compose down -v

Los datos persisten en un named volume (code-context-chroma-data). Se mantienen entre reinicios del contenedor.

Script de orquestaciΓ³n

run_branch_tasks.sh ejecuta el pipeline completo (get + ingest) para la rama actual o una especΓ­fica:

# Rama actual
./run_branch_tasks.sh

# Rama especΓ­fica
./run_branch_tasks.sh feature/mi-feature

Estructura del proyecto

code-context-mcp/
β”œβ”€β”€ .chunking.example.yaml       # Template de configuraciΓ³n
β”œβ”€β”€ pyproject.toml                # Paquete Python (v1.0.0)
β”œβ”€β”€ run_branch_tasks.sh           # Orquestador get + ingest
β”œβ”€β”€ docker/
β”‚   β”œβ”€β”€ docker-compose.yml        # ChromaDB server
β”‚   └── .env                      # Variables de entorno
└── chunking/
    β”œβ”€β”€ __init__.py
    β”œβ”€β”€ config.py                 # Defaults + merge con .chunking.yaml
    β”œβ”€β”€ get_chunks.py             # chunking-get: segmentaciΓ³n de cΓ³digo
    β”œβ”€β”€ ingest_delta.py           # chunking-ingest: ingesta delta en ChromaDB
    └── mcp_server.py             # chunking-mcp: MCP server (9 tools)

Requisitos

  • Python β‰₯ 3.10

  • Docker (para ChromaDB)

  • Git (los repos a procesar deben ser repositorios Git)

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daswort/code-context-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server