Skip to content

Add bulk/batch issue label operations #2412

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions