-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Description
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.