Loop MCP Server

Permite que los LLMs procesen elementos de array secuencialmente con una tarea específica.

Documentación

Loop MCP Server

Un servidor MCP (Model Context Protocol) que permite a los LLM procesar arreglos elemento por elemento con una tarea específica.

Descripción general

Este servidor MCP proporciona herramientas para:

  • Inicializar un arreglo con una descripción de tarea
  • Obtener elementos uno por uno o en lotes para procesamiento
  • Almacenar resultados para cada elemento o lote procesado
  • Recuperar todos los resultados (solo después de que todos los elementos estén procesados)
  • Resumen opcional de resultados
  • Tamaño de lote configurable para un procesamiento eficiente

Instalación

npm install

Uso

Ejecutando el servidor

npm start

Herramientas disponibles

  1. initialize_array - Configurar el arreglo y la tarea

    • array: El arreglo de elementos a procesar
    • task: Descripción de qué hacer con cada elemento
    • batchSize (opcional): Número de elementos a procesar en cada lote (predeterminado: 1)
  2. get_next_item - Obtener el siguiente elemento a procesar

    • Devuelve: Elemento actual, índice, tarea y cantidad restante
  3. get_next_batch - Obtener el siguiente lote de elementos según el tamaño del lote

    • Devuelve: Arreglo de elementos, índices, tarea y cantidad restante
  4. store_result - Almacenar el resultado del procesamiento

    • result: El resultado del procesamiento (valor único o arreglo para procesamiento por lotes)
  5. get_all_results - Obtener todos los resultados al finalizar

    • summarize (opcional): Incluir un resumen
    • Nota: Esto generará un error si el procesamiento no está completo
  6. reset - Limpiar el estado de procesamiento actual

Flujos de trabajo de ejemplo

Procesamiento de un solo elemento

// 1. Initialize
await callTool('initialize_array', {
  array: [1, 2, 3, 4, 5],
  task: 'Square each number'
});

// 2. Process each item
while (true) {
  const item = await callTool('get_next_item');
  if (item.text === 'All items have been processed.') break;
  
  // Process the item (e.g., square it)
  const result = item.value * item.value;
  
  await callTool('store_result', { result });
}

// 3. Get final results
const results = await callTool('get_all_results', { summarize: true });

Procesamiento por lotes

// 1. Initialize with batch size
await callTool('initialize_array', {
  array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  task: 'Double each number',
  batchSize: 3
});

// 2. Process in batches
while (true) {
  const batch = await callTool('get_next_batch');
  if (batch.text === 'All items have been processed.') break;
  
  // Process the batch
  const results = batch.items.map(item => item * 2);
  
  await callTool('store_result', { result: results });
}

// 3. Get final results
const results = await callTool('get_all_results', { summarize: true });

Ejecutando el ejemplo

node example-client.js

Integración con Claude Desktop

Agregue a su configuración de Claude Desktop:

{
  "mcpServers": {
    "loop-processor": {
      "command": "node",
      "args": ["/path/to/loop_mcp/server.js"]
    }
  }
}