@grec0/memory-bank-mcp 0.1.2 → 0.1.3

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
@@ -905,7 +905,7 @@ npm test -- --coverage
905
905
  1. **Aumenta `minScore`**: Usa 0.8 o 0.9 para resultados más precisos
906
906
  2. **Usa filtros**: `filterByFile` o `filterByLanguage`
907
907
  3. **Reformula la query**: Sé más específico y descriptivo
908
- 4. **Reindexa**: `memorybank_index_code({ forceReindex: true })`
908
+ 4. **Reindexa**: `memorybank_index_code({ path: "..." })` (detecta cambios automáticamente por hash)
909
909
 
910
910
  ### Error: "projectId is required"
911
911
 
@@ -917,15 +917,17 @@ npm test -- --coverage
917
917
  memorybank_get_stats({})
918
918
  ```
919
919
 
920
- Si `pendingFiles` muestra archivos pendientes:
920
+ Si `pendingFiles` muestra archivos pendientes, reindexa el directorio:
921
921
 
922
922
  ```json
923
923
  {
924
924
  "projectId": "my-project",
925
- "forceReindex": true
925
+ "path": "C:/workspaces/mi-proyecto/src"
926
926
  }
927
927
  ```
928
928
 
929
+ El sistema detecta cambios por hash automáticamente. Solo usa `forceReindex: true` si necesitas regenerar embeddings aunque no haya cambios.
930
+
929
931
  ---
930
932
 
931
933
  ## 📖 Documentación Adicional
package/dist/index.js CHANGED
@@ -38,24 +38,31 @@ const server = new McpServer({
38
38
  version: VERSION,
39
39
  });
40
40
  // Tool: Index Code
41
- server.tool("memorybank_index_code", "Indexa semánticamente código de un directorio o archivo específico para permitir búsquedas semánticas. El projectId es OBLIGATORIO y debe coincidir con el definido en AGENTS.md", {
41
+ server.tool("memorybank_index_code", `Indexa semánticamente código de un DIRECTORIO para búsquedas semánticas.
42
+
43
+ ⚠️ IMPORTANTE:
44
+ - El path debe ser una RUTA ABSOLUTA a un DIRECTORIO (no archivo)
45
+ - Ejemplo correcto: "C:/workspaces/mi-proyecto/src/components"
46
+ - Ejemplo incorrecto: "src/components" (ruta relativa)
47
+ - Ejemplo incorrecto: "C:/workspaces/mi-proyecto/src/file.ts" (archivo, no directorio)
48
+
49
+ Si quieres indexar un archivo específico, usa el directorio que lo contiene.`, {
42
50
  projectId: z
43
51
  .string()
44
- .describe("Identificador único del proyecto (OBLIGATORIO). Debe coincidir con el definido en AGENTS.md del proyecto"),
52
+ .describe("Identificador único del proyecto (OBLIGATORIO). Debe coincidir con el definido en AGENTS.md"),
45
53
  path: z
46
54
  .string()
47
- .optional()
48
- .describe("Ruta relativa o absoluta del directorio/archivo a indexar (por defecto: raíz del workspace)"),
55
+ .describe("RUTA ABSOLUTA al DIRECTORIO a indexar. Ejemplo: 'C:/workspaces/proyecto/src'. NO usar rutas relativas. NO usar rutas a archivos."),
49
56
  recursive: z
50
57
  .boolean()
51
58
  .optional()
52
59
  .default(true)
53
- .describe("Indexar recursivamente subdirectorios"),
60
+ .describe("Indexar recursivamente subdirectorios (default: true)"),
54
61
  forceReindex: z
55
62
  .boolean()
56
63
  .optional()
57
64
  .default(false)
58
- .describe("Forzar reindexación completa aunque no haya cambios"),
65
+ .describe("RARAMENTE NECESARIO. El sistema detecta cambios por hash automáticamente. Solo usa true si necesitas regenerar embeddings sin cambios en archivos."),
59
66
  }, async (args) => {
60
67
  const result = await indexCode({
61
68
  projectId: args.projectId,
@@ -107,18 +114,21 @@ server.tool("memorybank_search", "Busca código relevante mediante búsqueda sem
107
114
  };
108
115
  });
109
116
  // Tool: Read File
110
- server.tool("memorybank_read_file", "Lee el contenido de un archivo específico del workspace. Usa esta herramienta para obtener contexto adicional cuando los fragmentos de búsqueda no son suficientes", {
117
+ server.tool("memorybank_read_file", `Lee el contenido de un archivo específico. Usa para obtener contexto adicional.
118
+
119
+ ⚠️ Preferir RUTA ABSOLUTA para evitar errores.
120
+ Ejemplo: "C:/workspaces/proyecto/src/index.ts"`, {
111
121
  path: z
112
122
  .string()
113
- .describe("Ruta relativa o absoluta del archivo a leer"),
123
+ .describe("Ruta al archivo. Preferir ABSOLUTA: 'C:/workspaces/proyecto/src/file.ts'"),
114
124
  startLine: z
115
125
  .number()
116
126
  .optional()
117
- .describe("Línea inicial para leer un rango específico (opcional)"),
127
+ .describe("Línea inicial (opcional)"),
118
128
  endLine: z
119
129
  .number()
120
130
  .optional()
121
- .describe("Línea final para leer un rango específico (opcional)"),
131
+ .describe("Línea final (opcional)"),
122
132
  }, async (args) => {
123
133
  const result = await readFile({
124
134
  path: args.path,
@@ -130,21 +140,24 @@ server.tool("memorybank_read_file", "Lee el contenido de un archivo específico
130
140
  };
131
141
  });
132
142
  // Tool: Write File
133
- server.tool("memorybank_write_file", "Escribe o modifica un archivo y automáticamente lo reindexa en el Memory Bank para mantener la consistencia. El projectId es OBLIGATORIO para la reindexación correcta", {
143
+ server.tool("memorybank_write_file", `Escribe un archivo y automáticamente lo reindexa en el Memory Bank.
144
+
145
+ ⚠️ Preferir RUTA ABSOLUTA para evitar errores.
146
+ Ejemplo path: "C:/workspaces/proyecto/src/nuevo.ts"`, {
134
147
  projectId: z
135
148
  .string()
136
- .describe("Identificador del proyecto (OBLIGATORIO). Necesario para la auto-reindexación correcta"),
149
+ .describe("Identificador del proyecto (OBLIGATORIO)"),
137
150
  path: z
138
151
  .string()
139
- .describe("Ruta relativa o absoluta del archivo a escribir"),
152
+ .describe("Ruta al archivo. Preferir ABSOLUTA: 'C:/workspaces/proyecto/src/file.ts'"),
140
153
  content: z
141
154
  .string()
142
- .describe("Contenido completo del archivo a escribir"),
155
+ .describe("Contenido COMPLETO del archivo"),
143
156
  autoReindex: z
144
157
  .boolean()
145
158
  .optional()
146
159
  .default(true)
147
- .describe("Reindexar automáticamente el archivo después de escribirlo"),
160
+ .describe("Auto-reindexar después de escribir (default: true)"),
148
161
  }, async (args) => {
149
162
  const result = await writeFile({
150
163
  projectId: args.projectId,
@@ -164,13 +177,18 @@ server.tool("memorybank_get_stats", "Obtiene estadísticas del Memory Bank: arch
164
177
  };
165
178
  });
166
179
  // Tool: Analyze Coverage
167
- server.tool("memorybank_analyze_coverage", "Analiza la cobertura de indexación del proyecto. Muestra qué carpetas/archivos están indexados, cuáles no, y cuáles tienen cambios pendientes. OBLIGATORIO: projectId y path (ruta absoluta del workspace). NOTA: Puede tardar en workspaces grandes", {
180
+ server.tool("memorybank_analyze_coverage", `Analiza la cobertura de indexación del proyecto.
181
+
182
+ ⚠️ IMPORTANTE:
183
+ - path debe ser RUTA ABSOLUTA al DIRECTORIO raíz del workspace
184
+ - Ejemplo: "C:/workspaces/mi-proyecto" (NO rutas relativas)
185
+ - Puede tardar en workspaces grandes`, {
168
186
  projectId: z
169
187
  .string()
170
- .describe("Identificador del proyecto a analizar (OBLIGATORIO)"),
188
+ .describe("Identificador del proyecto (OBLIGATORIO)"),
171
189
  path: z
172
190
  .string()
173
- .describe("Ruta absoluta del workspace a analizar (OBLIGATORIO). Ejemplo: 'C:/workspaces/mi-proyecto'"),
191
+ .describe("RUTA ABSOLUTA al directorio raíz del workspace. Ejemplo: 'C:/workspaces/mi-proyecto'"),
174
192
  }, async (args) => {
175
193
  try {
176
194
  const targetPath = args.path;
@@ -261,13 +279,15 @@ server.tool(getProjectDocsToolDefinition.name, getProjectDocsToolDefinition.desc
261
279
  // Context Management Tools (Cline-style)
262
280
  // ==========================================
263
281
  // Tool: Initialize Memory Bank
264
- server.tool(initializeMemoryBankToolDefinition.name, initializeMemoryBankToolDefinition.description, {
282
+ server.tool(initializeMemoryBankToolDefinition.name, initializeMemoryBankToolDefinition.description + `
283
+
284
+ ⚠️ projectPath debe ser RUTA ABSOLUTA. Ejemplo: "C:/workspaces/mi-proyecto"`, {
265
285
  projectId: z
266
286
  .string()
267
287
  .describe("Identificador único del proyecto (OBLIGATORIO)"),
268
288
  projectPath: z
269
289
  .string()
270
- .describe("Ruta absoluta del proyecto"),
290
+ .describe("RUTA ABSOLUTA al proyecto. Ejemplo: 'C:/workspaces/mi-proyecto'"),
271
291
  projectName: z
272
292
  .string()
273
293
  .optional()
@@ -177,7 +177,7 @@ function generateRecommendations(stats, tree) {
177
177
  }
178
178
  // Pending reindex
179
179
  if (stats.pendingReindexFiles > 0) {
180
- recommendations.push(`🔄 Hay ${stats.pendingReindexFiles} archivo(s) con cambios pendientes de reindexación. Ejecuta memorybank_index_code({ forceReindex: true })`);
180
+ recommendations.push(`🔄 Hay ${stats.pendingReindexFiles} archivo(s) con cambios pendientes. Ejecuta memorybank_index_code con el path del directorio - los cambios se detectan automáticamente por hash.`);
181
181
  }
182
182
  // Language-specific recommendations
183
183
  const unindexedLanguages = Object.entries(stats.languageBreakdown)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grec0/memory-bank-mcp",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "MCP server for semantic code indexing with Memory Bank - AI-powered codebase understanding",
5
5
  "license": "MIT",
6
6
  "author": "@grec0",