Skip to main content
Glama

par5-mcp

MCP-сервер (Model Context Protocol), который выполняет shell-команды и запускает ИИ-агентов для написания кода параллельно по спискам элементов. Используйте его для пакетной обработки файлов, запуска линтеров по целевым объектам или делегирования работы нескольким агентам.

Возможности

  • Управление списками: создавайте, обновляйте, удаляйте и просматривайте списки элементов, таких как пути к файлам, URL-адреса и идентификаторы

  • Параллельное выполнение shell-команд: запускайте shell-команды для всех элементов списка с пакетным параллелизмом

  • Мультиагентная оркестрация: запускайте агентов Claude, Gemini или Codex параллельно для обработки элементов

  • Потоковый вывод: результаты в реальном времени записываются в файлы для отслеживания прогресса

  • Пакетная обработка: команды и агенты запускаются пакетами по 10, чтобы не перегружать систему

Related MCP server: Claude Parallel Tasks MCP Server

Установка

npm install par5-mcp

Или установите глобально:

npm install -g par5-mcp

Использование

В качестве MCP-сервера

Добавьте в конфигурацию вашего MCP-клиента:

{
  "mcpServers": {
    "par5": {
      "command": "npx",
      "args": ["par5-mcp"]
    }
  }
}

Или если установлено глобально:

{
  "mcpServers": {
    "par5": {
      "command": "par5-mcp"
    }
  }
}

Доступные инструменты

Управление списками

create_list

Создаёт именованный список элементов для параллельной обработки.

Параметры:

  • items (string[]): массив элементов для хранения в списке

Возвращает: уникальный идентификатор списка для использования с другими инструментами

Пример:

create_list(items: ["src/a.ts", "src/b.ts", "src/c.ts"])
// Returns: list_id = "abc-123-..."

get_list

Возвращает элементы существующего списка по его идентификатору.

Параметры:

  • list_id (string): идентификатор списка, возвращённый create_list

update_list

Обновляет существующий список, заменяя его элементы новым массивом.

Параметры:

  • list_id (string): идентификатор списка для обновления

  • items (string[]): новый массив элементов

delete_list

Удаляет существующий список по его идентификатору.

Параметры:

  • list_id (string): идентификатор списка для удаления

list_all_lists

Перечисляет все существующие списки и количество элементов в них.

Параметры: нет


Параллельное выполнение

run_shell_across_list

Выполняет shell-команду для каждого элемента списка. Команды запускаются пакетами по 10 параллельных процессов.

Параметры:

  • list_id (string): идентификатор списка для перебора

  • command (string): shell-команда с заполнителем $item

Подстановка переменных:

  • Используйте $item в вашей команде. Он будет заменён на каждый элемент списка и экранирован для shell.

Пример:

run_shell_across_list(
  list_id: "abc-123",
  command: "wc -l $item"
)

Это запускает wc -l 'src/a.ts', wc -l 'src/b.ts' и т. д. параллельно.

Вывод:

  • Стандартный вывод и стандартная ошибка записываются в отдельные файлы для каждого элемента

  • Возвращаются пути к файлам, чтобы вы могли прочитать результаты

run_agent_across_list

Запускает ИИ-агента для написания кода для каждого элемента списка. Агенты работают пакетами по 10 с таймаутом 5 минут на агента.

Параметры:

  • list_id (string): идентификатор списка для перебора

  • agent (enum): "claude", "gemini" или "codex"

  • prompt (string): промпт с заполнителем {{item}}

Доступные агенты:

Агент

CLI

Флаг автоматического принятия

claude

Claude Code CLI

--dangerously-skip-permissions

gemini

Google Gemini CLI

--yolo

codex

OpenAI Codex CLI

--dangerously-bypass-approvals-and-sandbox

Подстановка переменных:

  • Используйте {{item}} в вашем промпте — он будет заменён на каждый элемент списка.

Пример:

run_agent_across_list(
  list_id: "abc-123",
  agent: "claude",
  prompt: "Review {{item}} for security vulnerabilities and suggest fixes"
)

Вывод:

  • Стандартный вывод и стандартная ошибка записываются в отдельные файлы для каждого элемента

  • Возвращаются пути к файлам, чтобы вы могли прочитать результаты работы агентов

Пример рабочего процесса

Вот типичный рабочий процесс для обработки нескольких файлов:

  1. Создайте список файлов для обработки:

    create_list(items: ["src/auth.ts", "src/api.ts", "src/utils.ts"])
  2. Выполните shell-команду для всех файлов:

    run_shell_across_list(
      list_id: "<returned-id>",
      command: "cat $item | grep -n 'TODO'"
    )
  3. Или делегируйте задачу ИИ-агентам:

    run_agent_across_list(
      list_id: "<returned-id>",
      agent: "claude",
      prompt: "Add comprehensive JSDoc comments to all exported functions in {{item}}"
    )
  4. Прочитайте выходные файлы, чтобы проверить результаты

  5. Очистите:

    delete_list(list_id: "<returned-id>")

Конфигурация

Следующие переменные окружения можно использовать для настройки par5-mcp:

Переменная

Описание

По умолчанию

PAR5_BATCH_SIZE

Количество параллельных процессов в пакете

10

PAR5_AGENT_ARGS

Дополнительные аргументы, передаваемые всем агентам

(нет)

PAR5_CLAUDE_ARGS

Дополнительные аргументы, передаваемые Claude CLI

(нет)

PAR5_GEMINI_ARGS

Дополнительные аргументы, передаваемые Gemini CLI

(нет)

PAR5_CODEX_ARGS

Дополнительные аргументы, передаваемые Codex CLI

(нет)

PAR5_DISABLE_CLAUDE

Установите любое значение, чтобы отключить агента Claude

(нет)

PAR5_DISABLE_GEMINI

Установите любое значение, чтобы отключить агента Gemini

(нет)

PAR5_DISABLE_CODEX

Установите любое значение, чтобы отключить агента Codex

(нет)

Пример:

{
  "mcpServers": {
    "par5": {
      "command": "npx",
      "args": ["par5-mcp"],
      "env": {
        "PAR5_BATCH_SIZE": "20",
        "PAR5_CLAUDE_ARGS": "--model claude-sonnet-4-20250514"
      }
    }
  }
}

Выходные файлы

Результаты записываются во временные файлы в системной временной директории в папке par5-mcp-results/:

/tmp/par5-mcp-results/<run-id>/
  ├── auth.ts.stdout.txt
  ├── auth.ts.stderr.txt
  ├── api.ts.stdout.txt
  ├── api.ts.stderr.txt
  └── ...

Имена файлов формируются на основе значения элемента (очищенного для безопасности файловой системы).

Участие в разработке

Пожалуйста, начните обсуждение перед тем, как предложить изменение. Если мы примем предложение, мейнтейнер Mathematic или ИИ-агент реализует его и откроет pull request. Мы свяжем этот pull request с обсуждением и укажем автора исходного предложения. GitHub ограничивает создание pull request только для мейнтейнеров Mathematic, соавторов репозитория с правами на запись, поддержку или администрирование, а также авторизованных агентов обслуживания. Полный процесс описан в CONTRIBUTING.md.

Разработка

Сборка из исходников

git clone https://github.com/mathematic-inc/par5-mcp.git
cd par5-mcp
mise install
mise exec -- pnpm install --frozen-lockfile
mise exec -- hk install
mise exec -- pnpm build

Локальный запуск

mise exec -- pnpm start

Требования

  • Node.js 20+

  • Для run_agent_across_list:

    • для агента claude требуется установленный Claude Code CLI

    • для агента gemini требуется установленный Gemini CLI

    • для агента codex требуется установленный Codex CLI

Лицензия

Apache-2.0

Этот проект — бесплатная работа с открытым исходным кодом, созданная некоммерческой организацией 501(c)(3). Если вы находите его полезным, пожалуйста, рассмотрите возможность пожертвования.

Available Tools

8 tools
create_listA

Creates a named list of items for parallel processing. Use this tool when you need to perform the same operation across multiple files, URLs, or any collection of items.

WHEN TO USE:

  • Before running shell commands or AI agents across multiple items

  • When you have a collection of file paths, URLs, identifiers, or any strings to process in parallel

WORKFLOW:

  1. Call create_list with your array of items

  2. Use the returned list_id with run_shell_across_list or run_agent_across_list

  3. The list persists for the duration of the session

EXAMPLE: To process files ["src/a.ts", "src/b.ts", "src/c.ts"], first create a list, then use run_shell_across_list or run_agent_across_list with the returned id.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of items to store in the list. Each item can be a file path, URL, identifier, or any string that will be substituted into commands or prompts.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the list persists for the session duration, items can be file paths, URLs, identifiers, or strings, and the workflow involves using the returned list_id with other tools. However, it doesn't mention potential errors, rate limits, or specific constraints beyond persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage, workflow, example) and front-loaded key information. It's appropriately sized, but the example section is somewhat detailed, which slightly reduces conciseness while adding clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 100% schema coverage, no output schema, and moderate complexity, the description is mostly complete. It covers purpose, usage, workflow, and parameters well, but lacks details on error handling or output specifics (e.g., format of list_id), which would enhance completeness for a tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the baseline is 3. The description adds value by elaborating on the 'items' parameter semantics: it specifies that items can be 'file paths, URLs, identifiers, or any strings' and explains their purpose ('substituted into commands or prompts'), providing context beyond the schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Creates a named list of items for parallel processing.' It specifies the verb ('creates'), resource ('named list of items'), and distinguishes from siblings by focusing on creation rather than deletion, retrieval, or usage of lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidelines with a 'WHEN TO USE' section, listing specific scenarios like before running shell commands or AI agents across multiple items. It also references sibling tools (run_shell_across_list, run_agent_across_list) as alternatives for subsequent steps, clearly differentiating when to use this tool versus others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_list_from_shellA

Creates a list by running a shell command and parsing its newline-delimited output.

WHEN TO USE:

  • When you need to create a list from command output (e.g., find, ls, grep, git ls-files)

  • When the list of items to process is determined by a shell command

  • As an alternative to manually specifying items in create_list

EXAMPLES:

  • "find src -name '*.ts'" to get all TypeScript files

  • "git ls-files '*.tsx'" to get all tracked TSX files

  • "ls *.json" to get all JSON files in current directory

  • "grep -l 'TODO' src/**/*.ts" to get files containing TODO

WORKFLOW:

  1. Call create_list_from_shell with your command

  2. The command's stdout is split by newlines to create list items

  3. Empty lines are filtered out

  4. Use the returned list_id with run_shell_across_list or run_agent_across_list

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to run. Its stdout will be split by newlines to create list items. Example: 'find src -name "*.ts"' or 'git ls-files'

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it runs a shell command, splits stdout by newlines to create list items, filters out empty lines, and returns a list_id for use with other tools. However, it lacks details on error handling, timeouts, or security implications (e.g., command injection risks), which would be needed for a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (description, WHEN TO USE, EXAMPLES, WORKFLOW), each sentence adds value, and it avoids redundancy. It's appropriately sized for a tool with one parameter and no annotations, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (one parameter, no annotations, no output schema), the description is largely complete. It covers purpose, usage, examples, and workflow. However, it doesn't specify the return value format (e.g., what list_id is or how to use it), which is a minor gap since there's no output schema to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that the command's stdout is split by newlines to create list items, which clarifies the parameter's purpose beyond the schema's example. However, it doesn't provide additional syntax or format details, keeping it slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Creates a list by running a shell command and parsing its newline-delimited output.' It specifies the verb ('creates'), resource ('list'), and mechanism ('shell command'), distinguishing it from sibling tools like create_list (manual specification) and run_shell_across_list (operates on existing lists).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section explicitly lists three scenarios for usage, including 'As an alternative to manually specifying items in create_list,' which directly compares it to a sibling tool. This provides clear guidance on when to choose this tool over alternatives, fulfilling the highest scoring criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_listA

Deletes an existing list by its ID.

WHEN TO USE:

  • To clean up lists that are no longer needed

  • To free up memory after processing is complete

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesThe list ID returned by create_list.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly indicates this is a destructive operation ('Deletes'), which is critical information. However, it lacks details on permissions required, whether deletion is reversible, error handling (e.g., what happens if the list doesn't exist), or confirmation prompts. The memory-freeing note adds some context but doesn't fully cover behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the core purpose stated first ('Deletes an existing list by its ID.'), followed by a structured 'WHEN TO USE' section. Every sentence earns its place by providing essential guidance without unnecessary details, making it highly efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a destructive operation with no annotations and no output schema), the description is fairly complete. It covers the purpose, usage guidelines, and implies behavioral traits (destructive). However, it lacks details on return values, error cases, or side effects, which would be beneficial for a deletion tool. The high schema coverage helps compensate, but some gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'list_id' parameter well-documented as 'The list ID returned by create_list.' The description doesn't add any additional parameter semantics beyond what the schema provides, but with high schema coverage, the baseline is 3. The description's clarity about deletion purpose slightly enhances understanding, warranting a score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Deletes') and resource ('an existing list by its ID'), making the purpose unambiguous. It distinguishes itself from siblings like 'create_list', 'get_list', and 'update_list' by focusing on deletion rather than creation, retrieval, or modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section explicitly provides guidance on when to use this tool ('To clean up lists that are no longer needed' and 'To free up memory after processing is complete'). This helps differentiate it from alternatives like 'update_list' for modifications or 'list_all_lists' for viewing, though it doesn't explicitly name those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listA

Retrieves the items in an existing list by its ID.

WHEN TO USE:

  • To inspect the contents of a list before processing

  • To verify which items are in a list

  • To check if a list exists

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesThe list ID returned by create_list.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states this is a retrieval operation ('Retrieves'), implying it's likely read-only, but doesn't explicitly confirm safety or mention potential errors (e.g., if list_id is invalid). It adds some context about checking existence, but lacks details on return format, pagination, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by a bulleted 'WHEN TO USE' section. Every sentence earns its place by providing actionable guidance without redundancy. It's appropriately sized for a simple retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is reasonably complete. It covers purpose, usage guidelines, and parameter context. However, without annotations or output schema, it could better address behavioral aspects like error handling or return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the schema fully documenting the single parameter list_id. The description adds minimal value beyond the schema, only implying that list_id comes from create_list. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieves the items in an existing list') and resource ('by its ID'), distinguishing it from siblings like create_list, delete_list, and list_all_lists. It explicitly mentions retrieving items rather than metadata or performing operations on the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section provides explicit guidance with three bullet points: inspecting contents before processing, verifying items, and checking existence. This clearly indicates when to use this tool versus alternatives like list_all_lists (for listing lists) or run_agent_across_list (for processing items).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_all_listsA

Lists all existing lists and their item counts.

WHEN TO USE:

  • To see all available lists in the current session

  • To find a list ID you may have forgotten

  • To check how many lists exist

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes what the tool returns (lists with item counts) but doesn't disclose behavioral aspects like whether results are paginated, sorted, or filtered. The description doesn't contradict any annotations since none exist, but leaves operational details unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by a bulleted 'WHEN TO USE' section. Every sentence earns its place by providing distinct value - first stating what the tool does, then providing concrete usage scenarios. No wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with no output schema, the description provides good coverage of purpose and usage scenarios. However, it doesn't describe the return format (e.g., structure of list objects, what fields are included beyond ID and item count) which would be helpful given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters (schema coverage 100%), so no parameter documentation is needed. The description appropriately focuses on the tool's purpose and usage rather than parameter details, which aligns with the zero-parameter baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Lists') and resource ('all existing lists and their item counts'). It distinguishes from siblings like 'get_list' (which retrieves a specific list) by emphasizing comprehensive listing of all lists with metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section provides explicit guidance with three concrete scenarios: seeing all available lists, finding forgotten list IDs, and checking list counts. This clearly communicates when this tool is appropriate versus alternatives like 'get_list' for specific list retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_agent_across_listA

Spawns an AI coding agent for each item in a previously created list. Agents run in batches of 10 parallel processes with automatic permission skipping enabled.

WHEN TO USE:

  • Performing complex code analysis, refactoring, or generation across multiple files

  • Tasks that require AI reasoning rather than simple shell commands

  • When you need to delegate work to multiple AI agents working in parallel

AVAILABLE AGENTS:

  • claude: Claude Code CLI (uses --dangerously-skip-permissions for autonomous operation)

  • gemini: Google Gemini CLI (uses --yolo for auto-accept)

  • codex: OpenAI Codex CLI (uses --dangerously-bypass-approvals-and-sandbox for autonomous operation)

  • opencode: OpenCode CLI (uses run command for non-interactive autonomous operation)

HOW IT WORKS:

  1. Each item in the list is substituted into the prompt where {{item}} appears

  2. Agents run in batches of 10 at a time to avoid overwhelming the system

  3. Output streams directly to files as the agents work

  4. This tool waits for all agents to complete before returning

AFTER COMPLETION:

  • Read the stdout files to check the results from each agent

  • Check stderr files if you encounter errors

  • Files are named based on the item (e.g., "myfile.ts.stdout.txt")

VARIABLE SUBSTITUTION:

  • Use {{item}} in your prompt - it will be replaced with each list item

  • Example: "Review {{item}} for bugs" becomes "Review src/file.ts for bugs" for item "src/file.ts"

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesWhich AI agent to use: 'claude', 'gemini', 'codex', 'opencode'. All agents run with permission-skipping flags for autonomous operation.
modelNoOptional model to use. Passed as --model to the agent CLI. Examples: 'claude-opus-4-6', 'claude-sonnet-4-6' for Claude; 'gemini-2.5-pro' for Gemini; 'o3' for Codex.
promptYesThe prompt to send to each agent. Use {{item}} as a placeholder - it will be replaced with the current item value. Example: 'Review {{item}} and suggest improvements' or 'Add error handling to {{item}}'
list_idYesThe list ID returned by create_list. This identifies which list of items to iterate over.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: batching of 10, automatic permission skipping, agent-specific flags, streaming output to files, and blocking until all agents finish. It falls just short of explicitly warning about potential filesystem modifications from autonomous agents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-organized with clear sections and front-loaded purpose. Some redundancy exists between HOW IT WORKS and VARIABLE SUBSTITUTION, but each section is otherwise purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with no output schema or annotations, the description covers the input lifecycle, concurrency behavior, output file naming, and post-completion steps. It does not describe failure handling or partial-failure behavior, but the provided details are sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful context: how list_id connects to create_list, how {{item}} substitution works, and how agent choices map to CLI flags. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a precise verb, resource, and scope: it spawns an AI coding agent for each item in a previously created list. It also differentiates itself from the shell-based sibling by emphasizing AI reasoning and parallel agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated WHEN TO USE section gives concrete contexts: complex analysis, refactoring, generation, and tasks needing AI rather than simple shell commands. It does not include explicit when-not-to-use or name the sibling tool, but the contrast with shell commands provides clear routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_shell_across_listA

Executes a shell command for each item in a previously created list. Commands run in batches of 10 parallel processes, with stdout and stderr streamed to separate files.

WHEN TO USE:

  • Running the same shell command across multiple files (e.g., linting, formatting, compiling)

  • Batch processing with command-line tools

  • Any operation where you need to execute shell commands on a collection of items

HOW IT WORKS:

  1. Each item in the list is substituted into the command where $item appears

  2. Commands run in batches of 10 at a time to avoid overwhelming the system

  3. Output streams directly to files as the commands execute

  4. This tool waits for all commands to complete before returning

AFTER COMPLETION:

  • Read the stdout files to check results

  • Check stderr files if you encounter errors or unexpected output

  • Files are named based on the item (e.g., "myfile.ts.stdout.txt")

VARIABLE SUBSTITUTION:

  • Use $item in your command - it will be replaced with each list item (properly shell-escaped)

  • Example: "cat $item" becomes "cat 'src/file.ts'" for item "src/file.ts"

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to execute for each item. Use $item as a placeholder - it will be replaced with the current item value (properly escaped). Example: 'wc -l $item' or 'cat $item | grep TODO'
list_idYesThe list ID returned by create_list. This identifies which list of items to iterate over.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels by disclosing key behavioral traits: it runs commands in batches of 10 parallel processes, streams output to files, waits for completion, and handles variable substitution with proper escaping. It also explains post-execution steps like reading stdout/stderr files, adding valuable context beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (e.g., WHEN TO USE, HOW IT WORKS) and front-loaded key information. While slightly verbose, each sentence earns its place by adding necessary details like batch size and file naming, making it efficient for understanding without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (parallel execution, file output) and lack of annotations/output schema, the description is highly complete. It covers purpose, usage, behavior, parameters, and post-execution steps, providing all needed context for an AI agent to invoke it correctly without gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining variable substitution with $item, providing examples (e.g., 'cat $item'), and detailing how items are shell-escaped, which clarifies semantics beyond the schema's basic parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('executes a shell command for each item in a previously created list') and distinguishes it from siblings by specifying it operates on lists created by other tools (like create_list) and differs from run_agent_across_list. It explicitly mentions batch processing with parallel execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section provides explicit guidance on when to use this tool (e.g., running same command across multiple files, batch processing) and implies alternatives by referencing sibling tools like create_list for list creation. It clearly sets the context for usage with shell commands on collections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_listA

Updates an existing list by replacing its items with a new array.

WHEN TO USE:

  • To modify the contents of an existing list

  • To add or remove items from a list

  • To reorder items in a list

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesThe new array of items to replace the existing list contents.
list_idYesThe list ID returned by create_list.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that this is a mutation tool ('updates,' 'replacing'), which implies it modifies data. However, it lacks details on behavioral traits like permissions needed, whether changes are reversible, error handling, or rate limits. The description adds some value by clarifying the replacement behavior but doesn't fully compensate for the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a bulleted 'WHEN TO USE' section. Each sentence earns its place by providing clear guidance. However, the bullet points could be slightly more concise, and there's minor redundancy (e.g., 'modify the contents' overlaps with 'add or remove items'), preventing a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a mutation tool with no annotations and no output schema), the description is somewhat complete but has gaps. It explains the purpose and usage well, but lacks details on behavioral aspects like side effects, return values, or error conditions. With no output schema, it doesn't describe what the tool returns, which is a significant omission for a mutation operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both parameters: 'list_id' as 'The list ID returned by create_list' and 'items' as 'The new array of items to replace the existing list contents.' The description doesn't add meaning beyond this, as it only mentions 'replacing its items with a new array,' which aligns with the schema. With high coverage, the baseline is 3, and the description doesn't enhance it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Updates an existing list by replacing its items with a new array.' This specifies the verb ('updates'), resource ('existing list'), and scope ('replacing its items with a new array'). However, it doesn't explicitly differentiate from siblings like 'create_list' or 'delete_list' beyond the 'existing list' qualifier, which is why it doesn't reach a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO USE' section provides clear context: 'To modify the contents of an existing list,' 'To add or remove items from a list,' and 'To reorder items in a list.' This gives explicit guidance on when to use this tool. However, it doesn't mention when not to use it or name alternatives (e.g., using 'create_list' for new lists instead), so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.2.7
    • Changedrun_agent_across_list1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "description": "Optional model to use. Passed as --model to the agent CLI. Examples: 'claude-opus-4-6', 'claude-sonnet-4-6' for Claude; 'gemini-2.5-pro' for Gemini; 'o3' for Codex.",
        +  "type": "string"
        +}
  2. 1 tool updatev1.0.0
    • Changedrun_agent_across_list2 fields changed
      • changedInput schema / properties / agent / description
        Previous value: -"Which AI agent to use: 'claude', 'gemini', 'codex'. All agents run with permission-skipping flags for autonomous operation."New value: +"Which AI agent to use: 'claude', 'gemini', 'codex', 'opencode'. All agents run with permission-skipping flags for autonomous operation."
      • changedInput schema / properties / agent / enum
        Previous value: -[
        -  "claude",
        -  "gemini",
        -  "codex"
        -]New value: +[
        +  "claude",
        +  "gemini",
        +  "codex",
        +  "opencode"
        +]
  3. 8 tool updates
    • First observedcreate_list
    • First observedcreate_list_from_shell
    • First observeddelete_list
    • First observedget_list
    • First observedlist_all_lists
    • First observedrun_agent_across_list
    • First observedrun_shell_across_list
    • First observedupdate_list

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. The tools cover list creation (from manual input or shell output), list management (get, update, delete, list all), and parallel execution (shell or AI agent). The two execution tools are clearly differentiated by their target (shell commands vs AI agents).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with perfect regularity. The naming convention is uniformly descriptive: create_list, create_list_from_shell, delete_list, get_list, list_all_lists, run_agent_across_list, run_shell_across_list, update_list. No mixing of conventions or styles.

Tool Count5/5

With 8 tools, this server is well-scoped for its parallel processing domain. Each tool earns its place, covering the complete lifecycle of list management and parallel execution. The count is neither too sparse nor bloated, providing comprehensive functionality without redundancy.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for parallel processing workflows. It covers list creation (manual and shell-based), retrieval, updating, deletion, listing all lists, and both shell and AI agent execution across lists. No obvious gaps exist for the stated purpose of batch processing collections.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Transform your local machine into a powerful code command center. Automate file handling, run terminal commands, and leverage AI to enhance your development workflows—all securely and instantly, without cloud latency.
    14
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables LLMs to create and manage persistent, interactive shell sessions with full terminal emulation and PTY support. It allows for sequential command execution and supports interactive programs like vim or htop through specialized streaming and snapshot output modes.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mathematic-inc/par5-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server