@grec0/memory-bank-mcp 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,420 +1,642 @@
1
- # Memory Bank MCP - Semantic Code Indexing
2
-
3
- Servidor MCP (Model Context Protocol) para indexación semántica de código. Permite a agentes de IA como Claude mantener un "memoria persistente" de bases de código completas mediante embeddings vectoriales y búsqueda semántica.
4
-
5
- ## 🧠 ¿Qué es Memory Bank?
6
-
7
- **Memory Bank** es un sistema de memoria externa para agentes de código que resuelve el problema fundamental de la pérdida de contexto en IAs. Funciona como el "cerebro externo" del proyecto:
8
-
9
- - **Indexa** todo tu código usando embeddings de OpenAI
10
- - **Fragmenta** inteligentemente usando parsing AST (funciones, clases, métodos)
11
- - **Almacena** vectores en LanceDB para búsquedas ultrarrápidas
12
- - **Busca** semánticamente: pregunta en lenguaje natural, obtén código relevante
13
- - **Actualiza** incrementalmente: solo reindexa archivos modificados
14
-
15
- ### ¿Por qué lo necesitas?
16
-
17
- Sin Memory Bank, las IAs:
18
- - ❌ Olvidan todo entre sesiones
19
- - ❌ Solo ven fragmentos pequeños de código
20
- - ❌ Alucinan implementaciones inexistentes
21
- - ❌ Dan respuestas genéricas sin contexto
22
-
23
- Con Memory Bank, las IAs:
24
- - ✅ Recuerdan toda la base de código
25
- - ✅ Entienden arquitectura y patrones
26
- - ✅ Responden con código real del proyecto
27
- - ✅ Generan código consistente con tu estilo
28
-
29
- ## 🚀 Características
30
-
31
- - **🔍 Búsqueda Semántica**: Pregunta "¿cómo funciona la autenticación?" y obtén código relevante
32
- - **🧩 Chunking Inteligente**: AST parsing para TypeScript/JavaScript/Python
33
- - **⚡ Actualización Incremental**: Solo reindexa archivos modificados (detección por hash)
34
- - **💾 Cache de Embeddings**: Evita regenerar embeddings innecesariamente
35
- - **🎯 Filtros Avanzados**: Por archivo, lenguaje, tipo de chunk
36
- - **📊 Estadísticas Detalladas**: Conoce el estado de tu índice en todo momento
37
- - **🔒 Privacidad**: Vector store local, respeta .gitignore y .memoryignore
38
-
39
- ## 📋 Requisitos
40
-
41
- - **Node.js** >= 18.0.0
42
- - **OpenAI API Key**: [Obtener aquí](https://platform.openai.com/api-keys)
43
- - **Espacio en disco**: ~10MB por cada 10,000 archivos (embeddings + metadata)
44
-
45
- ## 🛠️ Instalación
46
-
47
- ### Opción 1: NPX (Recomendado)
48
-
49
- La forma más fácil de usar Memory Bank MCP sin instalación local:
50
-
51
- ```bash
52
- npx @grec0/memory-bank-mcp@latest
53
- ```
54
-
55
- ### Opción 2: Instalación Local
56
-
57
- Para desarrollo o contribución:
58
-
59
- ```bash
60
- # Clonar repositorio
61
- git clone https://github.com/grec0/memory-bank-mcp.git
62
- cd memory-bank-mcp
63
-
64
- # Instalar dependencias
65
- npm install
66
-
67
- # Compilar
68
- npm run build
69
-
70
- # Ejecutar
71
- npm run start
72
- ```
73
-
74
- ## ⚙️ Configuración
75
-
76
- ### Variables de Entorno
77
-
78
- Crea un archivo `.env` en la raíz de tu workspace (o configúralas en tu cliente MCP):
79
-
80
- ```bash
81
- # REQUERIDO: Tu API key de OpenAI
82
- OPENAI_API_KEY=sk-your-api-key-here
83
-
84
- # OPCIONAL: Configuración avanzada
85
- MEMORYBANK_STORAGE_PATH=.memorybank # Dónde almacenar el índice
86
- MEMORYBANK_EMBEDDING_MODEL=text-embedding-3-small # Modelo de OpenAI
87
- MEMORYBANK_EMBEDDING_DIMENSIONS=1536 # Dimensiones (1536 o 512)
88
- MEMORYBANK_CHUNK_SIZE=1000 # Tamaño máximo de chunks
89
- MEMORYBANK_CHUNK_OVERLAP=200 # Overlap entre chunks
90
- MEMORYBANK_WORKSPACE_ROOT=/path/to/project # Raíz del workspace
91
- ```
92
-
93
- ### Configuración en Claude Desktop
94
-
95
- Edita tu archivo de configuración de Claude Desktop:
96
-
97
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
98
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
99
- **Linux**: `~/.config/claude/claude_desktop_config.json`
100
-
101
- ```json
102
- {
103
- "mcpServers": {
104
- "memory-bank": {
105
- "command": "npx",
106
- "args": ["@grec0/memory-bank-mcp@latest"],
107
- "env": {
108
- "OPENAI_API_KEY": "sk-your-api-key-here"
109
- }
110
- }
111
- }
112
- }
113
- ```
114
-
115
- ### Configuración con Instalación Local
116
-
117
- ```json
118
- {
119
- "mcpServers": {
120
- "memory-bank": {
121
- "command": "node",
122
- "args": ["/ruta/absoluta/memory-bank-mcp/dist/index.js"],
123
- "cwd": "/ruta/absoluta/memory-bank-mcp",
124
- "env": {
125
- "OPENAI_API_KEY": "sk-your-api-key-here"
126
- }
127
- }
128
- }
129
- }
130
- ```
131
-
132
- ## 📚 Herramientas Disponibles
133
-
134
- ### `memorybank_index_code`
135
-
136
- Indexa código semánticamente para permitir búsquedas.
137
-
138
- **Parámetros:**
139
- - `path` (opcional): Ruta relativa o absoluta (default: raíz del workspace)
140
- - `recursive` (opcional): Indexar subdirectorios (default: true)
141
- - `forceReindex` (opcional): Forzar reindexación completa (default: false)
142
-
143
- **Ejemplo:**
144
- ```
145
- memorybank_index_code({ path: "src/auth", recursive: true })
146
- ```
147
-
148
- ### `memorybank_search`
149
-
150
- Busca código por similitud semántica.
151
-
152
- **Parámetros:**
153
- - `query` (requerido): Consulta en lenguaje natural
154
- - `topK` (opcional): Número de resultados (default: 10)
155
- - `minScore` (opcional): Score mínimo 0-1 (default: 0.7)
156
- - `filterByFile` (opcional): Filtrar por patrón de archivo
157
- - `filterByLanguage` (opcional): Filtrar por lenguaje
158
-
159
- **Ejemplo:**
160
- ```
161
- memorybank_search({
162
- query: "función que autentica usuarios con JWT",
163
- topK: 5,
164
- minScore: 0.8
165
- })
166
- ```
167
-
168
- ### `memorybank_read_file`
169
-
170
- Lee contenido de un archivo.
171
-
172
- **Parámetros:**
173
- - `path` (requerido): Ruta del archivo
174
- - `startLine` (opcional): Línea inicial
175
- - `endLine` (opcional): Línea final
176
-
177
- **Ejemplo:**
178
- ```
179
- memorybank_read_file({ path: "src/auth/service.ts", startLine: 50, endLine: 100 })
180
- ```
181
-
182
- ### `memorybank_write_file`
183
-
184
- Escribe un archivo y lo reindexa automáticamente.
185
-
186
- **Parámetros:**
187
- - `path` (requerido): Ruta del archivo
188
- - `content` (requerido): Contenido del archivo
189
- - `autoReindex` (opcional): Auto-reindexar (default: true)
190
-
191
- **Ejemplo:**
192
- ```
193
- memorybank_write_file({
194
- path: "src/utils/validator.ts",
195
- content: "export function validateEmail(email: string) { ... }"
196
- })
197
- ```
198
-
199
- ### `memorybank_get_stats`
200
-
201
- Obtiene estadísticas del Memory Bank.
202
-
203
- **Ejemplo:**
204
- ```
205
- memorybank_get_stats({})
206
- ```
207
-
208
- ## 🎯 Casos de Uso
209
-
210
- ### 1. Primera Indexación
211
-
212
- ```
213
- Usuario: Hola, quiero que me ayudes con mi proyecto
214
- Claude: [ejecuta memorybank_get_stats]
215
- Veo que no hay código indexado aún.
216
- ¿Deseas que indexe el proyecto para poder ayudarte mejor?
217
-
218
- Usuario:
219
- Claude: [ejecuta memorybank_index_code({})]
220
- He indexado 145 archivos (1,234 chunks) en 45 segundos.
221
- ¿En qué puedo ayudarte?
222
- ```
223
-
224
- ### 2. Búsqueda de Código
225
-
226
- ```
227
- Usuario: ¿Cómo funciona la autenticación en este proyecto?
228
- Claude: [ejecuta memorybank_search({ query: "autenticación login usuarios" })]
229
-
230
- La autenticación se implementa en src/auth/authService.ts (líneas 23-87):
231
-
232
- [Código encontrado]
233
-
234
- El sistema usa JWT tokens con refresh token rotation.
235
- La validación se hace en el middleware src/middleware/auth.ts.
236
- ```
237
-
238
- ### 3. Modificación de Código
239
-
240
- ```
241
- Usuario: Añade validación de email al formulario de registro
242
- Claude: [busca formulario de registro]
243
- [busca validadores existentes]
244
- [lee archivo actual]
245
- [genera código respetando estilo del proyecto]
246
- [escribe archivo con memorybank_write_file]
247
-
248
- He añadido la validación de email en src/forms/RegisterForm.tsx línea 45.
249
- Usa el validador existente de emailValidator.ts para mantener consistencia.
250
- El archivo ha sido reindexado automáticamente.
251
- ```
252
-
253
- ## 🔧 Archivos de Configuración
254
-
255
- ### `.memoryignore`
256
-
257
- Similar a `.gitignore`, especifica patrones a excluir de indexación:
258
-
259
- ```bash
260
- # Dependencias
261
- node_modules/
262
- vendor/
263
-
264
- # Build outputs
265
- dist/
266
- build/
267
- *.min.js
268
-
269
- # Memory Bank storage
270
- .memorybank/
271
-
272
- # Large data files
273
- *.csv
274
- *.log
275
- *.db
276
-
277
- # Binary and media
278
- *.exe
279
- *.pdf
280
- *.jpg
281
- *.png
282
- *.mp4
283
- ```
284
-
285
- **Copia el ejemplo**:
286
- ```bash
287
- cp .memoryignore.example .memoryignore
288
- ```
289
-
290
- ### Respeto de `.gitignore`
291
-
292
- Memory Bank **respeta automáticamente** los patrones de `.gitignore` en tu proyecto, además de los de `.memoryignore`.
293
-
294
- ## 💰 Costos de OpenAI
295
-
296
- Memory Bank usa `text-embedding-3-small` que es muy económico:
297
-
298
- - **Precio**: ~$0.00002 por 1K tokens
299
- - **Ejemplo**: 10,000 archivos × 1,000 tokens promedio = **~$0.20**
300
- - **Cache**: Los embeddings se cachean, solo se regeneran si el código cambia
301
- - **Incremental**: Solo se reindexan archivos modificados
302
-
303
- **Búsquedas son extremadamente baratas** (solo 1 embedding por query).
304
-
305
- ## 🧪 Testing
306
-
307
- ```bash
308
- # Ejecutar tests
309
- npm test
310
-
311
- # Tests con cobertura
312
- npm test -- --coverage
313
- ```
314
-
315
- ## 🔐 Seguridad y Privacidad
316
-
317
- - ✅ **Vector store local**: LanceDB corre en tu máquina
318
- - **Sin telemetría**: No enviamos datos a servidores externos
319
- - **Solo embeddings**: OpenAI solo ve el texto del código, no metadata sensible
320
- - **Respeta .gitignore**: Archivos ignorados no se indexan
321
- - ✅ **API key segura**: Se lee de variables de entorno, nunca se hardcodea
322
-
323
- ### Recomendaciones
324
-
325
- 1. **No subas `.memorybank/` a git** (ya está en .gitignore)
326
- 2. **Usa `.memoryignore`** para excluir archivos sensibles
327
- 3. **API keys en variables de entorno**, nunca en código
328
- 4. **Revisa que `.env` esté en .gitignore**
329
-
330
- ## 🐛 Solución de Problemas
331
-
332
- ### Error: "OPENAI_API_KEY is required"
333
-
334
- **Solución**: Configura tu API key en las variables de entorno.
335
-
336
- ```bash
337
- # En .env
338
- OPENAI_API_KEY=sk-your-key-here
339
-
340
- # O en la configuración de Claude Desktop (ver arriba)
341
- ```
342
-
343
- ### Error: "No files found to index"
344
-
345
- **Causas posibles**:
346
- 1. El directorio está vacío
347
- 2. Todos los archivos están en .gitignore/.memoryignore
348
- 3. No hay archivos de código reconocidos
349
-
350
- **Solución**: Verifica que haya archivos .ts, .js, .py, etc. en el directorio.
351
-
352
- ### Búsquedas retornan resultados irrelevantes
353
-
354
- **Soluciones**:
355
- 1. **Aumenta `minScore`**: Usa 0.8 o 0.9 para resultados más precisos
356
- 2. **Usa filtros**: `filterByFile` o `filterByLanguage`
357
- 3. **Reformula la query**: más específico y descriptivo
358
- 4. **Reindexa**: Puede que el índice esté desactualizado
359
-
360
- ```
361
- memorybank_index_code({ forceReindex: true })
362
- ```
363
-
364
- ### Rate limit de OpenAI
365
-
366
- El sistema maneja automáticamente rate limits con exponential backoff, pero si tienes proyectos muy grandes:
367
-
368
- 1. **Indexa en partes**: Indexa directorios individuales
369
- 2. **Aumenta límites**: Usa una API key con tier más alto
370
- 3. **Reduce batch size**: Ajusta en código (default: 100)
371
-
372
- ### Índice desactualizado
373
-
374
- ```
375
- memorybank_get_stats({})
376
- ```
377
-
378
- Si `pendingFiles` muestra archivos pendientes:
379
-
380
- ```
381
- memorybank_index_code({ forceReindex: true })
382
- ```
383
-
384
- ## 🤝 Contribución
385
-
386
- ¡Contribuciones son bienvenidas!
387
-
388
- 1. Fork el proyecto
389
- 2. Crea tu feature branch (`git checkout -b feature/AmazingFeature`)
390
- 3. Commit cambios (`git commit -m 'Add some AmazingFeature'`)
391
- 4. Push al branch (`git push origin feature/AmazingFeature`)
392
- 5. Abre un Pull Request
393
-
394
-
395
- ## 🎓 Inspiración
396
-
397
- Este proyecto está inspirado en el sistema de Memory Bank de Cursor IDE, tal como se describe en:
398
-
399
- - [Advanced Cursor: Use the Memory Bank](https://medium.com/codetodeploy/advanced-cursor-use-the-memory-bank-to-eliminate-hallucination-affd3fbeefa3)
400
- - [How Cursor Indexes Codebases Fast](https://read.engineerscodex.com/p/how-cursor-indexes-codebases-fast)
401
- - [Cursor Security](https://simonwillison.net/2025/May/11/cursor-security/)
402
-
403
- ## 📜 Licencia
404
-
405
- Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para detalles.
406
-
407
- ## 🆘 Soporte
408
-
409
- - **Issues**: [GitHub Issues](https://github.com/grec0/memory-bank-mcp/issues)
410
- - **Documentación**: [Wiki del Proyecto](https://github.com/grec0/memory-bank-mcp/wiki)
411
- - **OpenAI API**: [Documentación Oficial](https://platform.openai.com/docs)
412
- - **LanceDB**: [Documentación](https://lancedb.github.io/lancedb/)
413
-
414
- ## ⭐ Star History
415
-
416
- Si este proyecto te resulta útil, ¡considera darle una estrella! ⭐
417
-
418
- ---
419
-
420
- **Hecho con ❤️ para la comunidad de AI coding assistants**
1
+ # Memory Bank MCP - Semantic Code Indexing
2
+
3
+ Servidor MCP (Model Context Protocol) para indexación semántica de código. Permite a agentes de IA como Claude mantener un "memoria persistente" de bases de código completas mediante embeddings vectoriales y búsqueda semántica.
4
+
5
+ ## 🧠 ¿Qué es Memory Bank?
6
+
7
+ **Memory Bank** es un sistema de memoria externa para agentes de código que resuelve el problema fundamental de la pérdida de contexto en IAs. Funciona como el "cerebro externo" del proyecto:
8
+
9
+ - **Indexa** todo tu código usando embeddings de OpenAI
10
+ - **Fragmenta** inteligentemente usando parsing AST (funciones, clases, métodos)
11
+ - **Almacena** vectores en LanceDB para búsquedas ultrarrápidas
12
+ - **Busca** semánticamente: pregunta en lenguaje natural, obtén código relevante
13
+ - **Actualiza** incrementalmente: solo reindexa archivos modificados
14
+
15
+ ### ¿Por qué lo necesitas?
16
+
17
+ Sin Memory Bank, las IAs:
18
+ - ❌ Olvidan todo entre sesiones
19
+ - ❌ Solo ven fragmentos pequeños de código
20
+ - ❌ Alucinan implementaciones inexistentes
21
+ - ❌ Dan respuestas genéricas sin contexto
22
+
23
+ Con Memory Bank, las IAs:
24
+ - ✅ Recuerdan toda la base de código
25
+ - ✅ Entienden arquitectura y patrones
26
+ - ✅ Responden con código real del proyecto
27
+ - ✅ Generan código consistente con tu estilo
28
+
29
+ ## 🚀 Características
30
+
31
+ ### Core Memory Bank (Búsqueda Precisa)
32
+ - **🔍 Búsqueda Semántica**: Pregunta "¿cómo funciona la autenticación?" y obtén código relevante
33
+ - **🧩 Chunking Inteligente**: AST parsing para TS/JS/Python con límites de tokens (8192 máx)
34
+ - **⚡ Actualización Incremental**: Solo reindexa archivos modificados (detección por hash)
35
+ - **💾 Cache de Embeddings**: Evita regenerar embeddings innecesariamente
36
+ - **🎯 Filtros Avanzados**: Por archivo, lenguaje, tipo de chunk
37
+ - **📊 Estadísticas Detalladas**: Conoce el estado de tu índice en todo momento
38
+ - **🔒 Privacidad**: Vector store local, respeta .gitignore y .memoryignore
39
+
40
+ ### Project Knowledge Layer (Conocimiento Global) 🆕
41
+ - **📄 Documentación Automática**: Genera 6 documentos markdown estructurados del proyecto
42
+ - **🧠 IA con Razonamiento**: Usa OpenAI Responses API con modelos de razonamiento (gpt-5-mini)
43
+ - **🔄 Actualización Inteligente**: Solo regenera documentos afectados por cambios
44
+ - **📚 Contexto Global**: Complementa búsqueda precisa con visión de alto nivel
45
+
46
+ Los documentos generados incluyen:
47
+ | Documento | Propósito |
48
+ |-----------|-----------|
49
+ | `projectBrief.md` | Descripción general del proyecto |
50
+ | `productContext.md` | Perspectiva de negocio y usuarios |
51
+ | `systemPatterns.md` | Patrones de arquitectura y diseño |
52
+ | `techContext.md` | Stack tecnológico y dependencias |
53
+ | `activeContext.md` | Estado actual de desarrollo |
54
+ | `progress.md` | Seguimiento de cambios |
55
+
56
+ ## 📋 Requisitos
57
+
58
+ - **Node.js** >= 18.0.0
59
+ - **OpenAI API Key**: [Obtener aquí](https://platform.openai.com/api-keys)
60
+ - **Espacio en disco**: ~10MB por cada 10,000 archivos (embeddings + metadata)
61
+
62
+ ## 🛠️ Instalación
63
+
64
+ ### Opción 1: NPX (Recomendado)
65
+
66
+ La forma más fácil de usar Memory Bank MCP sin instalación local:
67
+
68
+ ```bash
69
+ npx @grec0/memory-bank-mcp@latest
70
+ ```
71
+
72
+ ### Opción 2: Instalación Local
73
+
74
+ Para desarrollo o contribución:
75
+
76
+ ```bash
77
+ # Clonar repositorio
78
+ git clone https://github.com/grec0/memory-bank-mcp.git
79
+ cd memory-bank-mcp
80
+
81
+ # Instalar dependencias
82
+ npm install
83
+
84
+ # Compilar
85
+ npm run build
86
+
87
+ # Ejecutar
88
+ npm run start
89
+ ```
90
+
91
+ ## ⚙️ Configuración
92
+
93
+ ### Variables de Entorno
94
+
95
+ Crea un archivo `.env` en la raíz de tu workspace (o configúralas en tu cliente MCP):
96
+
97
+ ```bash
98
+ # REQUERIDO: Tu API key de OpenAI
99
+ OPENAI_API_KEY=sk-your-api-key-here
100
+
101
+ # OPCIONAL: Configuración de indexación
102
+ MEMORYBANK_STORAGE_PATH=.memorybank # Dónde almacenar el índice
103
+ MEMORYBANK_EMBEDDING_MODEL=text-embedding-3-small # Modelo de OpenAI
104
+ MEMORYBANK_EMBEDDING_DIMENSIONS=1536 # Dimensiones (1536 o 512)
105
+ MEMORYBANK_MAX_TOKENS=7500 # Tokens máx por chunk (límite: 8192)
106
+ MEMORYBANK_CHUNK_OVERLAP_TOKENS=200 # Overlap en tokens entre chunks
107
+ MEMORYBANK_WORKSPACE_ROOT=/path/to/project # Raíz del workspace
108
+
109
+ # OPCIONAL: Project Knowledge Layer (documentación con IA)
110
+ MEMORYBANK_REASONING_MODEL=gpt-5-mini # Modelo de razonamiento
111
+ MEMORYBANK_REASONING_EFFORT=medium # low/medium/high
112
+ MEMORYBANK_AUTO_UPDATE_DOCS=false # Auto-actualizar docs al indexar
113
+ ```
114
+
115
+ ### Configuración en Claude Desktop
116
+
117
+ Edita tu archivo de configuración de Claude Desktop:
118
+
119
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
120
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
121
+ **Linux**: `~/.config/claude/claude_desktop_config.json`
122
+
123
+ ```json
124
+ {
125
+ "mcpServers": {
126
+ "memory-bank": {
127
+ "command": "npx",
128
+ "args": ["@grec0/memory-bank-mcp@latest"],
129
+ "env": {
130
+ "OPENAI_API_KEY": "sk-your-api-key-here"
131
+ }
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### Configuración con Instalación Local
138
+
139
+ ```json
140
+ {
141
+ "mcpServers": {
142
+ "memory-bank": {
143
+ "command": "node",
144
+ "args": ["/ruta/absoluta/memory-bank-mcp/dist/index.js"],
145
+ "cwd": "/ruta/absoluta/memory-bank-mcp",
146
+ "env": {
147
+ "OPENAI_API_KEY": "sk-your-api-key-here"
148
+ }
149
+ }
150
+ }
151
+ }
152
+ ```
153
+
154
+ ## 📚 Herramientas Disponibles
155
+
156
+ > **⚠️ IMPORTANTE**: Todas las herramientas requieren `projectId` obligatorio. Este ID debe coincidir con el definido en tu archivo `AGENTS.md`.
157
+
158
+ ### `memorybank_index_code`
159
+
160
+ Indexa código semánticamente para permitir búsquedas.
161
+
162
+ **Parámetros:**
163
+ - `projectId` **(REQUERIDO)**: Identificador único del proyecto
164
+ - `path` (opcional): Ruta relativa o absoluta (default: raíz del workspace)
165
+ - `recursive` (opcional): Indexar subdirectorios (default: true)
166
+ - `forceReindex` (opcional): Forzar reindexación completa (default: false)
167
+
168
+ **Ejemplo:**
169
+ ```json
170
+ {
171
+ "projectId": "my-project",
172
+ "path": "src/auth",
173
+ "recursive": true
174
+ }
175
+ ```
176
+
177
+ ### `memorybank_search`
178
+
179
+ Busca código por similitud semántica.
180
+
181
+ **Parámetros:**
182
+ - `projectId` **(REQUERIDO)**: Identificador del proyecto donde buscar
183
+ - `query` (requerido): Consulta en lenguaje natural
184
+ - `topK` (opcional): Número de resultados (default: 10)
185
+ - `minScore` (opcional): Score mínimo 0-1 (default: 0.4)
186
+ - `filterByFile` (opcional): Filtrar por patrón de archivo
187
+ - `filterByLanguage` (opcional): Filtrar por lenguaje
188
+
189
+ **Ejemplo:**
190
+ ```json
191
+ {
192
+ "projectId": "my-project",
193
+ "query": "función que autentica usuarios con JWT",
194
+ "topK": 5,
195
+ "minScore": 0.8
196
+ }
197
+ ```
198
+
199
+ ### `memorybank_read_file`
200
+
201
+ Lee contenido de un archivo.
202
+
203
+ **Parámetros:**
204
+ - `path` (requerido): Ruta del archivo
205
+ - `startLine` (opcional): Línea inicial
206
+ - `endLine` (opcional): Línea final
207
+
208
+ **Ejemplo:**
209
+ ```
210
+ memorybank_read_file({ path: "src/auth/service.ts", startLine: 50, endLine: 100 })
211
+ ```
212
+
213
+ ### `memorybank_write_file`
214
+
215
+ Escribe un archivo y lo reindexa automáticamente.
216
+
217
+ **Parámetros:**
218
+ - `projectId` **(REQUERIDO)**: Identificador del proyecto para reindexación
219
+ - `path` (requerido): Ruta del archivo
220
+ - `content` (requerido): Contenido del archivo
221
+ - `autoReindex` (opcional): Auto-reindexar (default: true)
222
+
223
+ **Ejemplo:**
224
+ ```json
225
+ {
226
+ "projectId": "my-project",
227
+ "path": "src/utils/validator.ts",
228
+ "content": "export function validateEmail(email: string) { ... }"
229
+ }
230
+ ```
231
+
232
+ ### `memorybank_get_stats`
233
+
234
+ Obtiene estadísticas del Memory Bank.
235
+
236
+ **Ejemplo:**
237
+ ```
238
+ memorybank_get_stats({})
239
+ ```
240
+
241
+ ### `memorybank_analyze_coverage`
242
+
243
+ Analiza la cobertura de indexación del proyecto.
244
+
245
+ **Parámetros:**
246
+ - `projectId` **(REQUERIDO)**: Identificador del proyecto a analizar
247
+ - `path` (opcional): Ruta específica a analizar
248
+
249
+ **Ejemplo:**
250
+ ```json
251
+ {
252
+ "projectId": "my-project"
253
+ }
254
+ ```
255
+
256
+ ### `memorybank_generate_project_docs` 🆕
257
+
258
+ Genera documentación estructurada del proyecto usando IA con razonamiento (gpt-5-mini).
259
+
260
+ **Parámetros:**
261
+ - `projectId` **(REQUERIDO)**: Identificador del proyecto
262
+ - `force` (opcional): Forzar regeneración (default: false)
263
+
264
+ **Ejemplo:**
265
+ ```json
266
+ {
267
+ "projectId": "my-project",
268
+ "force": true
269
+ }
270
+ ```
271
+
272
+ Genera 6 documentos markdown:
273
+ - `projectBrief.md`: Descripción general
274
+ - `productContext.md`: Perspectiva de negocio
275
+ - `systemPatterns.md`: Patrones de arquitectura
276
+ - `techContext.md`: Stack tecnológico
277
+ - `activeContext.md`: Estado actual
278
+ - `progress.md`: Seguimiento
279
+
280
+ ### `memorybank_get_project_docs` 🆕
281
+
282
+ Lee la documentación del proyecto generada por IA.
283
+
284
+ **Parámetros:**
285
+ - `projectId` **(REQUERIDO)**: Identificador del proyecto
286
+ - `document` (opcional): Documento específico o "all"/"summary" (default: "summary")
287
+ - `format` (opcional): "full" o "summary" (default: "full")
288
+
289
+ **Ejemplo:**
290
+ ```json
291
+ // Obtener resumen de todos los docs
292
+ {
293
+ "projectId": "my-project",
294
+ "document": "summary"
295
+ }
296
+
297
+ // Obtener documento específico
298
+ {
299
+ "projectId": "my-project",
300
+ "document": "systemPatterns"
301
+ }
302
+ ```
303
+
304
+ ## 📋 Plantillas de Instrucciones para Agentes
305
+
306
+ Memory Bank incluye plantillas de instrucciones en dos formatos:
307
+ - **AGENTS.md** - Estándar [agents.md](https://agents.md/) (compatible con múltiples agentes)
308
+ - **VSCode/Copilot** - Formato `.github/copilot-instructions.md` para VS Code
309
+
310
+ ### Instalación - Formato AGENTS.md
311
+
312
+ Copia la plantilla que prefieras a la raíz de tu proyecto:
313
+
314
+ ```bash
315
+ # Elegir una plantilla
316
+ cp node_modules/@grec0/memory-bank-mcp/templates/AGENTS.basic.md ./AGENTS.md
317
+
318
+ # Editar los placeholders
319
+ # Reemplaza {{PROJECT_ID}} con tu ID de proyecto
320
+ # Reemplaza {{WORKSPACE_PATH}} con la ruta del workspace
321
+ ```
322
+
323
+ ### Instalación - Formato VS Code
324
+
325
+ Para VS Code con GitHub Copilot, usa el formato `copilot-instructions.md`:
326
+
327
+ ```bash
328
+ # Crear carpeta .github si no existe
329
+ mkdir -p .github
330
+
331
+ # Elegir una plantilla
332
+ cp node_modules/@grec0/memory-bank-mcp/templates/vscode/copilot-instructions.basic.md ./.github/copilot-instructions.md
333
+
334
+ # Habilitar en VS Code settings.json:
335
+ # "github.copilot.chat.codeGeneration.useInstructionFiles": true
336
+ ```
337
+
338
+ También puedes usar el archivo `.instructions.md` con aplicación condicional:
339
+
340
+ ```bash
341
+ # Crear carpeta de instrucciones
342
+ mkdir -p .github/instructions
343
+
344
+ # Copiar instrucciones base
345
+ cp node_modules/@grec0/memory-bank-mcp/templates/vscode/memory-bank.instructions.md ./.github/instructions/
346
+ ```
347
+
348
+ ### 1. Basic Mode (`AGENTS.basic.md`)
349
+
350
+ **Para proyectos donde quieres control total.**
351
+
352
+ - El agente SIEMPRE consulta el Memory Bank antes de actuar
353
+ - ✅ Solo indexa cuando el usuario lo solicita explícitamente
354
+ - ✅ Pide permiso antes de modificar código
355
+ - Sugiere reindexar después de cambios
356
+
357
+ **Ideal para**: Proyectos críticos, revisión de código, onboarding.
358
+
359
+ ### 2. Auto-Index Mode (`AGENTS.auto-index.md`)
360
+
361
+ **Para desarrollo activo con sincronización automática.**
362
+
363
+ - ✅ El agente consulta el Memory Bank automáticamente
364
+ - Reindexa CADA archivo después de modificarlo
365
+ - ✅ Mantiene el Memory Bank siempre actualizado
366
+ - Puede leer/escribir archivos directamente
367
+
368
+ **Ideal para**: Desarrollo activo, iteración rápida, equipos.
369
+
370
+ ### 3. Sandboxed Mode (`AGENTS.sandboxed.md`)
371
+
372
+ **Para entornos sin acceso directo al sistema de archivos.**
373
+
374
+ - ✅ NO tiene acceso directo a archivos
375
+ - ✅ DEBE usar `memorybank_read_file` para leer
376
+ - ✅ DEBE usar `memorybank_write_file` para escribir
377
+ - ✅ Auto-reindexa automáticamente en cada escritura
378
+
379
+ **Ideal para**: Entornos restringidos, desarrollo remoto, seguridad.
380
+
381
+ ### Ejemplo de `AGENTS.md` Configurado
382
+
383
+ ```markdown
384
+ # AGENTS.md
385
+
386
+ ## Project Configuration
387
+ - **Project ID**: `my-awesome-app`
388
+ - **Workspace**: `/home/user/projects/my-awesome-app`
389
+
390
+ ## Memory Bank Instructions
391
+
392
+ ### CRITICAL: Always Consult Before Acting
393
+ Before any action, call `memorybank_search` with projectId="my-awesome-app"
394
+
395
+ ### Auto-Indexing Policy
396
+ AFTER every file modification:
397
+ memorybank_index_code({ projectId: "my-awesome-app", path: "<modified_file>" })
398
+ ```
399
+
400
+ ## 🎯 Casos de Uso
401
+
402
+ ### 1. Primera Indexación
403
+
404
+ ```
405
+ Usuario: Hola, quiero que me ayudes con mi proyecto. El projectId es "my-app"
406
+ Claude: [ejecuta memorybank_get_stats]
407
+ Veo que no hay código indexado aún.
408
+ ¿Deseas que indexe el proyecto para poder ayudarte mejor?
409
+
410
+ Usuario:
411
+ Claude: [ejecuta memorybank_index_code({ projectId: "my-app" })]
412
+ He indexado 145 archivos (1,234 chunks) en 45 segundos.
413
+ ¿En qué puedo ayudarte?
414
+ ```
415
+
416
+ ### 2. Búsqueda de Código
417
+
418
+ ```
419
+ Usuario: ¿Cómo funciona la autenticación en este proyecto?
420
+ Claude: [ejecuta memorybank_search({ projectId: "my-app", query: "autenticación login usuarios" })]
421
+
422
+ La autenticación se implementa en src/auth/authService.ts (líneas 23-87):
423
+
424
+ [Código encontrado]
425
+
426
+ El sistema usa JWT tokens con refresh token rotation.
427
+ La validación se hace en el middleware src/middleware/auth.ts.
428
+ ```
429
+
430
+ ### 3. Modificación de Código
431
+
432
+ ```
433
+ Usuario: Añade validación de email al formulario de registro
434
+ Claude: [busca formulario de registro con projectId]
435
+ [busca validadores existentes con projectId]
436
+ [lee archivo actual]
437
+ [genera código respetando estilo del proyecto]
438
+ [escribe archivo con memorybank_write_file({ projectId: "my-app", ... })]
439
+
440
+ He añadido la validación de email en src/forms/RegisterForm.tsx línea 45.
441
+ Usa el validador existente de emailValidator.ts para mantener consistencia.
442
+ El archivo ha sido reindexado automáticamente.
443
+ ```
444
+
445
+ ## 🔧 Archivos de Configuración
446
+
447
+ ### `.memoryignore`
448
+
449
+ Similar a `.gitignore`, especifica patrones a excluir de indexación:
450
+
451
+ ```bash
452
+ # Dependencias
453
+ node_modules/
454
+ vendor/
455
+
456
+ # Build outputs
457
+ dist/
458
+ build/
459
+ *.min.js
460
+
461
+ # Memory Bank storage
462
+ .memorybank/
463
+
464
+ # Large data files
465
+ *.csv
466
+ *.log
467
+ *.db
468
+
469
+ # Binary and media
470
+ *.exe
471
+ *.pdf
472
+ *.jpg
473
+ *.png
474
+ *.mp4
475
+ ```
476
+
477
+ **Copia el ejemplo**:
478
+ ```bash
479
+ cp .memoryignore.example .memoryignore
480
+ ```
481
+
482
+ ### Respeto de `.gitignore`
483
+
484
+ Memory Bank **respeta automáticamente** los patrones de `.gitignore` en tu proyecto, además de los de `.memoryignore`.
485
+
486
+ ## 💰 Costos de OpenAI
487
+
488
+ Memory Bank usa `text-embedding-3-small` que es muy económico:
489
+
490
+ - **Precio**: ~$0.00002 por 1K tokens
491
+ - **Ejemplo**: 10,000 archivos × 1,000 tokens promedio = **~$0.20**
492
+ - **Cache**: Los embeddings se cachean, solo se regeneran si el código cambia
493
+ - **Incremental**: Solo se reindexan archivos modificados
494
+
495
+ **Búsquedas son extremadamente baratas** (solo 1 embedding por query).
496
+
497
+ ## 🧪 Testing
498
+
499
+ ```bash
500
+ # Ejecutar tests
501
+ npm test
502
+
503
+ # Tests con cobertura
504
+ npm test -- --coverage
505
+ ```
506
+
507
+ ## 🔐 Seguridad y Privacidad
508
+
509
+ - ✅ **Vector store local**: LanceDB corre en tu máquina
510
+ - ✅ **Sin telemetría**: No enviamos datos a servidores externos
511
+ - ✅ **Solo embeddings**: OpenAI solo ve el texto del código, no metadata sensible
512
+ - ✅ **Respeta .gitignore**: Archivos ignorados no se indexan
513
+ - ✅ **API key segura**: Se lee de variables de entorno, nunca se hardcodea
514
+
515
+ ### Recomendaciones
516
+
517
+ 1. **No subas `.memorybank/` a git** (ya está en .gitignore)
518
+ 2. **Usa `.memoryignore`** para excluir archivos sensibles
519
+ 3. **API keys en variables de entorno**, nunca en código
520
+ 4. **Revisa que `.env` esté en .gitignore**
521
+
522
+ ## 🐛 Solución de Problemas
523
+
524
+ ### Error: "OPENAI_API_KEY is required"
525
+
526
+ **Solución**: Configura tu API key en las variables de entorno.
527
+
528
+ ```bash
529
+ # En .env
530
+ OPENAI_API_KEY=sk-your-key-here
531
+
532
+ # O en la configuración de Claude Desktop (ver arriba)
533
+ ```
534
+
535
+ ### Error: "No files found to index"
536
+
537
+ **Causas posibles**:
538
+ 1. El directorio está vacío
539
+ 2. Todos los archivos están en .gitignore/.memoryignore
540
+ 3. No hay archivos de código reconocidos
541
+
542
+ **Solución**: Verifica que haya archivos .ts, .js, .py, etc. en el directorio.
543
+
544
+ ### Búsquedas retornan resultados irrelevantes
545
+
546
+ **Soluciones**:
547
+ 1. **Aumenta `minScore`**: Usa 0.8 o 0.9 para resultados más precisos
548
+ 2. **Usa filtros**: `filterByFile` o `filterByLanguage`
549
+ 3. **Reformula la query**: Sé más específico y descriptivo
550
+ 4. **Reindexa**: Puede que el índice esté desactualizado
551
+
552
+ ```
553
+ memorybank_index_code({ forceReindex: true })
554
+ ```
555
+
556
+ ### Rate limit de OpenAI
557
+
558
+ El sistema maneja automáticamente rate limits con exponential backoff, pero si tienes proyectos muy grandes:
559
+
560
+ 1. **Indexa en partes**: Indexa directorios individuales
561
+ 2. **Aumenta límites**: Usa una API key con tier más alto
562
+ 3. **Reduce batch size**: Ajusta en código (default: 100)
563
+
564
+ ### Índice desactualizado
565
+
566
+ ```json
567
+ memorybank_get_stats({})
568
+ ```
569
+
570
+ Si `pendingFiles` muestra archivos pendientes:
571
+
572
+ ```json
573
+ {
574
+ "projectId": "my-project",
575
+ "forceReindex": true
576
+ }
577
+ ```
578
+
579
+ ### Error: "projectId is required"
580
+
581
+ **Solución**: Todas las herramientas requieren `projectId`. Asegúrate de incluirlo en cada llamada:
582
+
583
+ ```json
584
+ {
585
+ "projectId": "my-project",
586
+ "query": "..."
587
+ }
588
+ ```
589
+
590
+ Tip: Define el `projectId` en tu archivo `AGENTS.md` para que el agente lo use consistentemente.
591
+
592
+ ## 🤝 Contribución
593
+
594
+ ¡Contribuciones son bienvenidas!
595
+
596
+ 1. Fork el proyecto
597
+ 2. Crea tu feature branch (`git checkout -b feature/AmazingFeature`)
598
+ 3. Commit cambios (`git commit -m 'Add some AmazingFeature'`)
599
+ 4. Push al branch (`git push origin feature/AmazingFeature`)
600
+ 5. Abre un Pull Request
601
+
602
+ ## 📖 Documentación Adicional
603
+
604
+ - [templates/](templates/): Plantillas de instrucciones para agentes
605
+ - **Formato AGENTS.md** (estándar multi-agente):
606
+ - `AGENTS.basic.md`: Modo básico (indexación manual)
607
+ - `AGENTS.auto-index.md`: Modo auto-indexación
608
+ - `AGENTS.sandboxed.md`: Modo sin acceso directo a archivos
609
+ - **Formato VS Code** (`templates/vscode/`):
610
+ - `copilot-instructions.basic.md`: Modo básico para Copilot
611
+ - `copilot-instructions.auto-index.md`: Modo auto-indexación para Copilot
612
+ - `copilot-instructions.sandboxed.md`: Modo sandboxed para Copilot
613
+ - `memory-bank.instructions.md`: Instrucciones con aplicación condicional
614
+ - [wiki/Developer-Guide.md](wiki/Developer-Guide.md): Guía para desarrolladores
615
+ - [wiki/API-Reference.md](wiki/API-Reference.md): Referencia completa de API
616
+
617
+ ## 🎓 Inspiración
618
+
619
+ Este proyecto está inspirado en el sistema de Memory Bank de Cursor IDE, tal como se describe en:
620
+
621
+ - [Advanced Cursor: Use the Memory Bank](https://medium.com/codetodeploy/advanced-cursor-use-the-memory-bank-to-eliminate-hallucination-affd3fbeefa3)
622
+ - [How Cursor Indexes Codebases Fast](https://read.engineerscodex.com/p/how-cursor-indexes-codebases-fast)
623
+ - [Cursor Security](https://simonwillison.net/2025/May/11/cursor-security/)
624
+
625
+ ## 📜 Licencia
626
+
627
+ Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para detalles.
628
+
629
+ ## 🆘 Soporte
630
+
631
+ - **Issues**: [GitHub Issues](https://github.com/grec0/memory-bank-mcp/issues)
632
+ - **Documentación**: [Wiki del Proyecto](https://github.com/grec0/memory-bank-mcp/wiki)
633
+ - **OpenAI API**: [Documentación Oficial](https://platform.openai.com/docs)
634
+ - **LanceDB**: [Documentación](https://lancedb.github.io/lancedb/)
635
+
636
+ ## ⭐ Star History
637
+
638
+ Si este proyecto te resulta útil, ¡considera darle una estrella! ⭐
639
+
640
+ ---
641
+
642
+ **Hecho con ❤️ para la comunidad de AI coding assistants**