Skip to content

Add bulk/batch issue label operations #2412

@kaovilai

Description

@kaovilai

Note

Responses generated with Claude

Describe the feature or problem you'd like to solve

There is no way to add labels to multiple issues in a single MCP tool call. The current issue_write tool supports labeling one issue at a time, but common workflows require labeling dozens of issues matching a search query (e.g., "label all issues from milestone X as priority/high").

This forces MCP clients to either:

  1. Make N sequential issue_write calls (slow, noisy)
  2. Fall back to gh CLI with scripting (breaks MCP-first pattern)

Proposed solution

Add a batch labeling capability — either as:

Option A: A new batch_update_issues tool that accepts a list of issue numbers and label operations:

{
  "owner": "org",
  "repo": "repo",
  "issue_numbers": [1, 2, 3, 4, 5],
  "add_labels": ["priority/high"],
  "remove_labels": ["needs-triage"]
}

Option B: Extend issue_write with a batch method that accepts multiple issue numbers.

Example prompts or workflows

  1. "Add the stale label to all issues that haven't been updated in 90 days"
  2. "Label issues chore: remove deprecated func #10, add iologger for debugging purposes #15, Dockerize server #20, feat: add a framework for translations #25 as sprint-42"
  3. "Move all needs-triage issues to triaged after review"
  4. "Add breaking-change label to all issues in the v3.0 milestone"

Additional context

The GitHub REST API supports adding labels to individual issues via POST /repos/{owner}/{repo}/issues/{issue_number}/labels. A batch tool would simply iterate internally, but having it as a single MCP call reduces round-trips and permission prompts for MCP clients like Claude Code.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions