@grec0/memory-bank-mcp 0.0.2

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.
@@ -0,0 +1,76 @@
1
+ # Memory Bank Ignore File
2
+ # Similar to .gitignore, this file specifies patterns to exclude from indexing
3
+ # Patterns are applied in addition to .gitignore rules
4
+
5
+ # Dependencies
6
+ node_modules/
7
+ vendor/
8
+ bower_components/
9
+
10
+ # Build outputs
11
+ dist/
12
+ build/
13
+ out/
14
+ target/
15
+ *.min.js
16
+ *.bundle.js
17
+
18
+ # Memory Bank storage itself
19
+ .memorybank/
20
+
21
+ # Large data files
22
+ *.csv
23
+ *.dat
24
+ *.log
25
+ *.db
26
+ *.sqlite
27
+ *.sqlite3
28
+
29
+ # Binary and media files
30
+ *.exe
31
+ *.dll
32
+ *.so
33
+ *.dylib
34
+ *.bin
35
+ *.pdf
36
+ *.jpg
37
+ *.jpeg
38
+ *.png
39
+ *.gif
40
+ *.svg
41
+ *.ico
42
+ *.mp3
43
+ *.mp4
44
+ *.avi
45
+ *.mov
46
+ *.zip
47
+ *.tar
48
+ *.gz
49
+ *.rar
50
+
51
+ # Documentation that doesn't need indexing
52
+ CHANGELOG.md
53
+ LICENSE
54
+ *.lock
55
+
56
+ # Test fixtures and mocks
57
+ __snapshots__/
58
+ fixtures/
59
+ mocks/
60
+
61
+ # IDE and editor files
62
+ .vscode/
63
+ .idea/
64
+ *.swp
65
+ *.swo
66
+ *~
67
+
68
+ # OS files
69
+ .DS_Store
70
+ Thumbs.db
71
+ desktop.ini
72
+
73
+ # Temporary files
74
+ *.tmp
75
+ *.temp
76
+ *.cache
package/README.md ADDED
@@ -0,0 +1,425 @@
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
+ ## 📖 Documentación Adicional
395
+
396
+ - [AGENT_INSTRUCTIONS.md](AGENT_INSTRUCTIONS.md): Guía completa para agentes de IA
397
+ - [wiki/Developer-Guide.md](wiki/Developer-Guide.md): Guía para desarrolladores
398
+ - [wiki/API-Reference.md](wiki/API-Reference.md): Referencia completa de API
399
+
400
+ ## 🎓 Inspiración
401
+
402
+ Este proyecto está inspirado en el sistema de Memory Bank de Cursor IDE, tal como se describe en:
403
+
404
+ - [Advanced Cursor: Use the Memory Bank](https://medium.com/codetodeploy/advanced-cursor-use-the-memory-bank-to-eliminate-hallucination-affd3fbeefa3)
405
+ - [How Cursor Indexes Codebases Fast](https://read.engineerscodex.com/p/how-cursor-indexes-codebases-fast)
406
+ - [Cursor Security](https://simonwillison.net/2025/May/11/cursor-security/)
407
+
408
+ ## 📜 Licencia
409
+
410
+ Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para detalles.
411
+
412
+ ## 🆘 Soporte
413
+
414
+ - **Issues**: [GitHub Issues](https://github.com/grec0/memory-bank-mcp/issues)
415
+ - **Documentación**: [Wiki del Proyecto](https://github.com/grec0/memory-bank-mcp/wiki)
416
+ - **OpenAI API**: [Documentación Oficial](https://platform.openai.com/docs)
417
+ - **LanceDB**: [Documentación](https://lancedb.github.io/lancedb/)
418
+
419
+ ## ⭐ Star History
420
+
421
+ Si este proyecto te resulta útil, ¡considera darle una estrella! ⭐
422
+
423
+ ---
424
+
425
+ **Hecho con ❤️ para la comunidad de AI coding assistants**