Loop MCP Server

Permite que LLMs processem itens de array sequencialmente com uma tarefa específica.

Documentação

Loop MCP Server

Um servidor MCP (Model Context Protocol) que permite que LLMs processem arrays item por item com uma tarefa específica.

Visão Geral

Este servidor MCP fornece ferramentas para:

  • Inicializar um array com uma descrição de tarefa
  • Buscar itens um a um ou em lotes para processamento
  • Armazenar resultados para cada item ou lote processado
  • Recuperar todos os resultados (somente após todos os itens serem processados)
  • Resumo opcional de resultados
  • Tamanho de lote configurável para processamento eficiente

Instalação

npm install

Uso

Executando o Servidor

npm start

Ferramentas Disponíveis

  1. initialize_array - Configurar o array e a tarefa

    • array: O array de itens a processar
    • task: Descrição do que fazer com cada item
    • batchSize (opcional): Número de itens a processar em cada lote (padrão: 1)
  2. get_next_item - Obter o próximo item a processar

    • Retorna: Item atual, índice, tarefa e contagem restante
  3. get_next_batch - Obter o próximo lote de itens com base no tamanho do lote

    • Retorna: Array de itens, índices, tarefa e contagem restante
  4. store_result - Armazenar o resultado do processamento

    • result: O resultado do processamento (valor único ou array para processamento em lote)
  5. get_all_results - Obter todos os resultados após a conclusão

    • summarize (opcional): Incluir um resumo
    • Nota: Isso gerará erro se o processamento não estiver completo
  6. reset - Limpar o estado atual de processamento

Exemplos de Fluxos de Trabalho

Processamento de Item Único

// 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 });

Processamento em Lote

// 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 });

Executando o Exemplo

node example-client.js

Integração com Claude Desktop

Adicione à sua configuração do Claude Desktop:

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