@grec0/memory-bank-mcp 0.0.3 → 0.0.4

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,494 @@
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: Sí
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**: Sé 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
+ ### `memorybank_index_code`
157
+
158
+ Indexa código semánticamente para permitir búsquedas.
159
+
160
+ **Parámetros:**
161
+ - `path` (opcional): Ruta relativa o absoluta (default: raíz del workspace)
162
+ - `recursive` (opcional): Indexar subdirectorios (default: true)
163
+ - `forceReindex` (opcional): Forzar reindexación completa (default: false)
164
+
165
+ **Ejemplo:**
166
+ ```
167
+ memorybank_index_code({ path: "src/auth", recursive: true })
168
+ ```
169
+
170
+ ### `memorybank_search`
171
+
172
+ Busca código por similitud semántica.
173
+
174
+ **Parámetros:**
175
+ - `query` (requerido): Consulta en lenguaje natural
176
+ - `topK` (opcional): Número de resultados (default: 10)
177
+ - `minScore` (opcional): Score mínimo 0-1 (default: 0.4)
178
+ - `filterByFile` (opcional): Filtrar por patrón de archivo
179
+ - `filterByLanguage` (opcional): Filtrar por lenguaje
180
+
181
+ **Ejemplo:**
182
+ ```
183
+ memorybank_search({
184
+ query: "función que autentica usuarios con JWT",
185
+ topK: 5,
186
+ minScore: 0.8
187
+ })
188
+ ```
189
+
190
+ ### `memorybank_read_file`
191
+
192
+ Lee contenido de un archivo.
193
+
194
+ **Parámetros:**
195
+ - `path` (requerido): Ruta del archivo
196
+ - `startLine` (opcional): Línea inicial
197
+ - `endLine` (opcional): Línea final
198
+
199
+ **Ejemplo:**
200
+ ```
201
+ memorybank_read_file({ path: "src/auth/service.ts", startLine: 50, endLine: 100 })
202
+ ```
203
+
204
+ ### `memorybank_write_file`
205
+
206
+ Escribe un archivo y lo reindexa automáticamente.
207
+
208
+ **Parámetros:**
209
+ - `path` (requerido): Ruta del archivo
210
+ - `content` (requerido): Contenido del archivo
211
+ - `autoReindex` (opcional): Auto-reindexar (default: true)
212
+
213
+ **Ejemplo:**
214
+ ```
215
+ memorybank_write_file({
216
+ path: "src/utils/validator.ts",
217
+ content: "export function validateEmail(email: string) { ... }"
218
+ })
219
+ ```
220
+
221
+ ### `memorybank_get_stats`
222
+
223
+ Obtiene estadísticas del Memory Bank.
224
+
225
+ **Ejemplo:**
226
+ ```
227
+ memorybank_get_stats({})
228
+ ```
229
+
230
+ ### `memorybank_analyze_coverage`
231
+
232
+ Analiza la cobertura de indexación del proyecto.
233
+
234
+ **Ejemplo:**
235
+ ```
236
+ memorybank_analyze_coverage({})
237
+ ```
238
+
239
+ ### `memorybank_generate_project_docs` 🆕
240
+
241
+ Genera documentación estructurada del proyecto usando IA con razonamiento (gpt-5-mini).
242
+
243
+ **Parámetros:**
244
+ - `projectId` (opcional): ID del proyecto
245
+ - `force` (opcional): Forzar regeneración (default: false)
246
+
247
+ **Ejemplo:**
248
+ ```
249
+ memorybank_generate_project_docs({ force: true })
250
+ ```
251
+
252
+ Genera 6 documentos markdown:
253
+ - `projectBrief.md`: Descripción general
254
+ - `productContext.md`: Perspectiva de negocio
255
+ - `systemPatterns.md`: Patrones de arquitectura
256
+ - `techContext.md`: Stack tecnológico
257
+ - `activeContext.md`: Estado actual
258
+ - `progress.md`: Seguimiento
259
+
260
+ ### `memorybank_get_project_docs` 🆕
261
+
262
+ Lee la documentación del proyecto generada por IA.
263
+
264
+ **Parámetros:**
265
+ - `document` (opcional): Documento específico o "all"/"summary" (default: "summary")
266
+ - `format` (opcional): "full" o "summary" (default: "full")
267
+
268
+ **Ejemplo:**
269
+ ```
270
+ // Obtener resumen de todos los docs
271
+ memorybank_get_project_docs({ document: "summary" })
272
+
273
+ // Obtener documento específico
274
+ memorybank_get_project_docs({ document: "systemPatterns" })
275
+ ```
276
+
277
+ ## 🎯 Casos de Uso
278
+
279
+ ### 1. Primera Indexación
280
+
281
+ ```
282
+ Usuario: Hola, quiero que me ayudes con mi proyecto
283
+ Claude: [ejecuta memorybank_get_stats]
284
+ Veo que no hay código indexado aún.
285
+ ¿Deseas que indexe el proyecto para poder ayudarte mejor?
286
+
287
+ Usuario:
288
+ Claude: [ejecuta memorybank_index_code({})]
289
+ He indexado 145 archivos (1,234 chunks) en 45 segundos.
290
+ ¿En qué puedo ayudarte?
291
+ ```
292
+
293
+ ### 2. Búsqueda de Código
294
+
295
+ ```
296
+ Usuario: ¿Cómo funciona la autenticación en este proyecto?
297
+ Claude: [ejecuta memorybank_search({ query: "autenticación login usuarios" })]
298
+
299
+ La autenticación se implementa en src/auth/authService.ts (líneas 23-87):
300
+
301
+ [Código encontrado]
302
+
303
+ El sistema usa JWT tokens con refresh token rotation.
304
+ La validación se hace en el middleware src/middleware/auth.ts.
305
+ ```
306
+
307
+ ### 3. Modificación de Código
308
+
309
+ ```
310
+ Usuario: Añade validación de email al formulario de registro
311
+ Claude: [busca formulario de registro]
312
+ [busca validadores existentes]
313
+ [lee archivo actual]
314
+ [genera código respetando estilo del proyecto]
315
+ [escribe archivo con memorybank_write_file]
316
+
317
+ He añadido la validación de email en src/forms/RegisterForm.tsx línea 45.
318
+ Usa el validador existente de emailValidator.ts para mantener consistencia.
319
+ El archivo ha sido reindexado automáticamente.
320
+ ```
321
+
322
+ ## 🔧 Archivos de Configuración
323
+
324
+ ### `.memoryignore`
325
+
326
+ Similar a `.gitignore`, especifica patrones a excluir de indexación:
327
+
328
+ ```bash
329
+ # Dependencias
330
+ node_modules/
331
+ vendor/
332
+
333
+ # Build outputs
334
+ dist/
335
+ build/
336
+ *.min.js
337
+
338
+ # Memory Bank storage
339
+ .memorybank/
340
+
341
+ # Large data files
342
+ *.csv
343
+ *.log
344
+ *.db
345
+
346
+ # Binary and media
347
+ *.exe
348
+ *.pdf
349
+ *.jpg
350
+ *.png
351
+ *.mp4
352
+ ```
353
+
354
+ **Copia el ejemplo**:
355
+ ```bash
356
+ cp .memoryignore.example .memoryignore
357
+ ```
358
+
359
+ ### Respeto de `.gitignore`
360
+
361
+ Memory Bank **respeta automáticamente** los patrones de `.gitignore` en tu proyecto, además de los de `.memoryignore`.
362
+
363
+ ## 💰 Costos de OpenAI
364
+
365
+ Memory Bank usa `text-embedding-3-small` que es muy económico:
366
+
367
+ - **Precio**: ~$0.00002 por 1K tokens
368
+ - **Ejemplo**: 10,000 archivos × 1,000 tokens promedio = **~$0.20**
369
+ - **Cache**: Los embeddings se cachean, solo se regeneran si el código cambia
370
+ - **Incremental**: Solo se reindexan archivos modificados
371
+
372
+ **Búsquedas son extremadamente baratas** (solo 1 embedding por query).
373
+
374
+ ## 🧪 Testing
375
+
376
+ ```bash
377
+ # Ejecutar tests
378
+ npm test
379
+
380
+ # Tests con cobertura
381
+ npm test -- --coverage
382
+ ```
383
+
384
+ ## 🔐 Seguridad y Privacidad
385
+
386
+ - **Vector store local**: LanceDB corre en tu máquina
387
+ - ✅ **Sin telemetría**: No enviamos datos a servidores externos
388
+ - **Solo embeddings**: OpenAI solo ve el texto del código, no metadata sensible
389
+ - **Respeta .gitignore**: Archivos ignorados no se indexan
390
+ - **API key segura**: Se lee de variables de entorno, nunca se hardcodea
391
+
392
+ ### Recomendaciones
393
+
394
+ 1. **No subas `.memorybank/` a git** (ya está en .gitignore)
395
+ 2. **Usa `.memoryignore`** para excluir archivos sensibles
396
+ 3. **API keys en variables de entorno**, nunca en código
397
+ 4. **Revisa que `.env` esté en .gitignore**
398
+
399
+ ## 🐛 Solución de Problemas
400
+
401
+ ### Error: "OPENAI_API_KEY is required"
402
+
403
+ **Solución**: Configura tu API key en las variables de entorno.
404
+
405
+ ```bash
406
+ # En .env
407
+ OPENAI_API_KEY=sk-your-key-here
408
+
409
+ # O en la configuración de Claude Desktop (ver arriba)
410
+ ```
411
+
412
+ ### Error: "No files found to index"
413
+
414
+ **Causas posibles**:
415
+ 1. El directorio está vacío
416
+ 2. Todos los archivos están en .gitignore/.memoryignore
417
+ 3. No hay archivos de código reconocidos
418
+
419
+ **Solución**: Verifica que haya archivos .ts, .js, .py, etc. en el directorio.
420
+
421
+ ### Búsquedas retornan resultados irrelevantes
422
+
423
+ **Soluciones**:
424
+ 1. **Aumenta `minScore`**: Usa 0.8 o 0.9 para resultados más precisos
425
+ 2. **Usa filtros**: `filterByFile` o `filterByLanguage`
426
+ 3. **Reformula la query**: Sé más específico y descriptivo
427
+ 4. **Reindexa**: Puede que el índice esté desactualizado
428
+
429
+ ```
430
+ memorybank_index_code({ forceReindex: true })
431
+ ```
432
+
433
+ ### Rate limit de OpenAI
434
+
435
+ El sistema maneja automáticamente rate limits con exponential backoff, pero si tienes proyectos muy grandes:
436
+
437
+ 1. **Indexa en partes**: Indexa directorios individuales
438
+ 2. **Aumenta límites**: Usa una API key con tier más alto
439
+ 3. **Reduce batch size**: Ajusta en código (default: 100)
440
+
441
+ ### Índice desactualizado
442
+
443
+ ```
444
+ memorybank_get_stats({})
445
+ ```
446
+
447
+ Si `pendingFiles` muestra archivos pendientes:
448
+
449
+ ```
450
+ memorybank_index_code({ forceReindex: true })
451
+ ```
452
+
453
+ ## 🤝 Contribución
454
+
455
+ ¡Contribuciones son bienvenidas!
456
+
457
+ 1. Fork el proyecto
458
+ 2. Crea tu feature branch (`git checkout -b feature/AmazingFeature`)
459
+ 3. Commit cambios (`git commit -m 'Add some AmazingFeature'`)
460
+ 4. Push al branch (`git push origin feature/AmazingFeature`)
461
+ 5. Abre un Pull Request
462
+
463
+ ## 📖 Documentación Adicional
464
+
465
+ - [AGENT_INSTRUCTIONS.md](AGENT_INSTRUCTIONS.md): Guía completa para agentes de IA
466
+ - [wiki/Developer-Guide.md](wiki/Developer-Guide.md): Guía para desarrolladores
467
+ - [wiki/API-Reference.md](wiki/API-Reference.md): Referencia completa de API
468
+
469
+ ## 🎓 Inspiración
470
+
471
+ Este proyecto está inspirado en el sistema de Memory Bank de Cursor IDE, tal como se describe en:
472
+
473
+ - [Advanced Cursor: Use the Memory Bank](https://medium.com/codetodeploy/advanced-cursor-use-the-memory-bank-to-eliminate-hallucination-affd3fbeefa3)
474
+ - [How Cursor Indexes Codebases Fast](https://read.engineerscodex.com/p/how-cursor-indexes-codebases-fast)
475
+ - [Cursor Security](https://simonwillison.net/2025/May/11/cursor-security/)
476
+
477
+ ## 📜 Licencia
478
+
479
+ Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para detalles.
480
+
481
+ ## 🆘 Soporte
482
+
483
+ - **Issues**: [GitHub Issues](https://github.com/grec0/memory-bank-mcp/issues)
484
+ - **Documentación**: [Wiki del Proyecto](https://github.com/grec0/memory-bank-mcp/wiki)
485
+ - **OpenAI API**: [Documentación Oficial](https://platform.openai.com/docs)
486
+ - **LanceDB**: [Documentación](https://lancedb.github.io/lancedb/)
487
+
488
+ ## ⭐ Star History
489
+
490
+ Si este proyecto te resulta útil, ¡considera darle una estrella! ⭐
491
+
492
+ ---
493
+
494
+ **Hecho con ❤️ para la comunidad de AI coding assistants**