Skip to content

Feature Request: list_project_items tool for reading board state #2

@joaodotwork

Description

@joaodotwork

Problem

The server currently has excellent tools for writing to project boards (create issues, assign iterations, update status) and reading metadata (get_project_info, get_repository_info). But there's no tool for reading the actual board items — the issues/PRs on a project with their current field values (status, iteration, custom fields).

This means AI agents can set up a project beautifully but can't inspect its current state without falling back to gh project item-list CLI or raw GraphQL queries — which defeats the purpose of the MCP abstraction.

Use Case

When planning work, an agent needs to answer: "What's on the board right now, what sprint is each item in, and what's its status?" This is the most common read operation for project management and currently requires dropping out of MCP tools.

Suggested Tool

list_project_items

List items on a ProjectV2 board with their field values.

Parameters:

  • owner (string, required): Project owner
  • projectNumber (number, required): Project number
  • status (string, optional): Filter by status ("Todo", "In Progress", "Done")
  • iterationId (string, optional): Filter by iteration
  • limit (number, optional): Max items to return (default: 50)

Returns: Array of items with:

  • itemId: Project item node ID
  • content: Issue/PR number, title, state
  • status: Current status field value
  • iteration: Current iteration/sprint title
  • labels: Label names
  • milestone: Milestone title

Example response:

[
  {
    "itemId": "PVTI_...",
    "content": { "number": 132, "title": "Camera framing for spatial views", "state": "OPEN", "type": "Issue" },
    "status": "Todo",
    "iteration": "Sprint 4 (Week 4)",
    "labels": ["bug", "astro"],
    "milestone": "Phase 11: Semantic Space & Arkivathon"
  }
]

Implementation Notes

The GraphQL query would use ProjectV2.items with field value introspection — similar to what get_project_info already does for fields, but extended to items:

query($projectId: ID!, $first: Int!) {
  node(id: $projectId) {
    ... on ProjectV2 {
      items(first: $first) {
        nodes {
          id
          content {
            ... on Issue { number title state }
            ... on PullRequest { number title state }
          }
          fieldValues(first: 10) {
            nodes {
              ... on ProjectV2ItemFieldSingleSelectValue { name field { ... on ProjectV2SingleSelectField { name } } }
              ... on ProjectV2ItemFieldIterationValue { title field { ... on ProjectV2IterationField { name } } }
            }
          }
        }
      }
    }
  }
}

This would complete the read/write symmetry of the server and make it fully self-sufficient for project management workflows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions