Skip to main content
Glama

par5-mcp

An MCP (Model Context Protocol) server that runs shell commands and AI coding agents across lists of items in parallel. Use it to process files in batches, run linters across targets, or delegate work to multiple agents.

Features

  • List Management: Create, update, delete, and inspect lists of items such as file paths, URLs, and identifiers

  • Parallel Shell Execution: Run shell commands across all items in a list with batched parallelism

  • Multi-Agent Orchestration: Spawn Claude, Gemini, or Codex agents in parallel to process items

  • Streaming Output: Results stream to files in real-time for monitoring progress

  • Batched Processing: Commands and agents run in batches of 10 to avoid overwhelming the system

Related MCP server: Claude Parallel Tasks MCP Server

Installation

npm install par5-mcp

Or install globally:

npm install -g par5-mcp

Usage

As an MCP Server

Add to your MCP client configuration:

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

Or if installed globally:

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

Available Tools

List Management

create_list

Creates a named list of items for parallel processing.

Parameters:

  • items (string[]): Array of items to store in the list

Returns: A unique list ID to use with other tools

Example:

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

get_list

Retrieves the items in an existing list by its ID.

Parameters:

  • list_id (string): The list ID returned by create_list

update_list

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

Parameters:

  • list_id (string): The list ID to update

  • items (string[]): The new array of items

delete_list

Deletes an existing list by its ID.

Parameters:

  • list_id (string): The list ID to delete

list_all_lists

Lists all existing lists and their item counts.

Parameters: None


Parallel Execution

run_shell_across_list

Executes a shell command for each item in a list. Commands run in batches of 10 parallel processes.

Parameters:

  • list_id (string): The list ID to iterate over

  • command (string): Shell command with $item placeholder

Variable Substitution:

  • Use $item in your command. It will be replaced with each list item and shell-escaped.

Example:

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

This runs wc -l 'src/a.ts', wc -l 'src/b.ts', etc. in parallel.

Output:

  • Standard output and standard error are streamed to separate files per item

  • File paths are returned for you to read the results

run_agent_across_list

Spawns an AI coding agent for each item in a list. Agents run in batches of 10 with a 5-minute timeout per agent.

Parameters:

  • list_id (string): The list ID to iterate over

  • agent (enum): "claude", "gemini", or "codex"

  • prompt (string): Prompt with {{item}} placeholder

Available Agents:

Agent

CLI

Auto-Accept Flag

claude

Claude Code CLI

--dangerously-skip-permissions

gemini

Google Gemini CLI

--yolo

codex

OpenAI Codex CLI

--dangerously-bypass-approvals-and-sandbox

Variable Substitution:

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

Example:

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

Output:

  • Standard output and standard error are streamed to separate files per item

  • File paths are returned for you to read the agent outputs

Workflow Example

Here's a typical workflow for processing multiple files:

  1. Create a list of files to process:

    create_list(items: ["src/auth.ts", "src/api.ts", "src/utils.ts"])
  2. Run a shell command across all files:

    run_shell_across_list(
      list_id: "<returned-id>",
      command: "cat $item | grep -n 'TODO'"
    )
  3. Or delegate to AI agents:

    run_agent_across_list(
      list_id: "<returned-id>",
      agent: "claude",
      prompt: "Add comprehensive JSDoc comments to all exported functions in {{item}}"
    )
  4. Read the output files to check results

  5. Clean up:

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

Configuration

The following environment variables can be used to configure par5-mcp:

Variable

Description

Default

PAR5_BATCH_SIZE

Number of parallel processes per batch

10

PAR5_AGENT_ARGS

Additional arguments passed to all agents

(none)

PAR5_CLAUDE_ARGS

Additional arguments passed to Claude CLI

(none)

PAR5_GEMINI_ARGS

Additional arguments passed to Gemini CLI

(none)

PAR5_CODEX_ARGS

Additional arguments passed to Codex CLI

(none)

PAR5_DISABLE_CLAUDE

Set to any value to disable the Claude agent

(none)

PAR5_DISABLE_GEMINI

Set to any value to disable the Gemini agent

(none)

PAR5_DISABLE_CODEX

Set to any value to disable the Codex agent

(none)

Example:

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

Output Files

Results are written to temporary files in the system temp directory under 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
  └── ...

File names are derived from the item value (sanitized for filesystem safety).

Contributing

Please start a Discussion before proposing a change. If we accept the proposal, a Mathematic maintainer or AI agent will implement it and open a pull request. We will link that pull request to the Discussion and credit the proposal's original author. GitHub restricts pull request creation to Mathematic maintainers, repository collaborators with write, maintain, or admin access, and authorized maintenance agents. See CONTRIBUTING.md for the full process.

Development

Building from Source

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

Running Locally

mise exec -- pnpm start

Requirements

License

Apache-2.0

This project is free and open-source work by a 501(c)(3) non-profit. If you find it useful, please consider donating.

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