@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 +642 -420
- package/dist/common/chunker.js +166 -534
- package/dist/common/embeddingService.js +39 -51
- package/dist/common/fileScanner.js +123 -58
- package/dist/common/indexManager.js +185 -108
- package/dist/common/projectKnowledgeService.js +627 -0
- package/dist/common/setup.js +49 -0
- package/dist/common/utils.js +215 -0
- package/dist/common/vectorStore.js +80 -67
- package/dist/index.js +106 -14
- package/dist/operations/boardMemberships.js +186 -0
- package/dist/operations/boards.js +268 -0
- package/dist/operations/cards.js +426 -0
- package/dist/operations/comments.js +249 -0
- package/dist/operations/labels.js +258 -0
- package/dist/operations/lists.js +157 -0
- package/dist/operations/projects.js +102 -0
- package/dist/operations/tasks.js +238 -0
- package/dist/tools/analyzeCoverage.js +50 -67
- package/dist/tools/board-summary.js +151 -0
- package/dist/tools/card-details.js +106 -0
- package/dist/tools/create-card-with-tasks.js +81 -0
- package/dist/tools/generateProjectDocs.js +133 -0
- package/dist/tools/getProjectDocs.js +126 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/indexCode.js +4 -2
- package/dist/tools/searchMemory.js +4 -2
- package/dist/tools/workflow-actions.js +145 -0
- package/dist/tools/writeFile.js +2 -2
- package/package.json +2 -2
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
|
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
#
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
###
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Configuración
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- `
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### `
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
**
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
**
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
###
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
**
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
3.
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
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: Sí
|
|
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**
|