Skip to content

Add read and write tools for ProjectV2 status updates to the projects toolset #1963

@e-straight

Description

@e-straight

Status updates are a primitive in ProjectsV2 that allow contributors to post progress notes on a project.

The projects toolset provides tools for projects, items, and fields (list_projects, get_project, list_project_items, get_project_field, etc.) but has no way to read ProjectV2StatusUpdate objects.

The GitHub GraphQL API fully supports querying status updates via the statusUpdates connection on ProjectV2:

query {
  user(login: "octocat") {
    projectV2(number: 2) {
      statusUpdates(first: 50, orderBy: {field: CREATED_AT, direction: DESC}) {
        nodes {
          id
          body
          status
          createdAt
          startDate
          targetDate
          creator { login }
        }
      }
    }
  }
}

ProjectV2StatusUpdate also implements the Node interface, so individual updates can be fetched by global ID.

Why this matters

Project status updates are a first-class feature of GitHub Projects V2, they let maintainers post periodic summaries of project health, progress, and blockers. Without read access through the MCP server, agents cannot:

  • Summarize recent status updates for a project
  • Build workflows that roll up individual status updates into periodic reports
  • Reference prior status updates when composing new ones
  • Use status updates as context for triaging or prioritizing work

This is especially impactful for agents running in sandboxed environments (e.g., GitHub Actions and Github Agentic Workflows) that rely on the MCP server as their sole interface to the GitHub API.

Proposed tools

Two new read-only tools and one write tool, consistent with existing patterns:

  • list_project_status_updates — List recent status updates for a project, with pagination support. Parameters: owner, owner_type, project_number, per_page, after.
  • get_project_status_update — Get a single status update by node ID. Parameters: status_update_id.
  • create_project_status_update — Post a new status update to a project. Parameters: owner, owner_type, project_number, status (e.g. ON_TRACK, AT_RISK, OFF_TRACK, COMPLETE), body (Markdown-formatted message), start_date, target_date.

The read tools would use scopes.ReadProject and set ReadOnlyHint: true. The write tool would use scopes.WriteProject and set ReadOnlyHint: false.

The consolidated tools (projects_list, projects_get) would also gain corresponding method entries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions