Summary
GitHub's native issue-dependencies API (GA Aug 2025) exposes addBlockedBy / removeBlockedBy GraphQL mutations to set/unset hard-block edges between issues: https://github.blog/changelog/2025-08-21-dependencies-on-issues/
The MCP server currently exposes:
sub_issue_write — parent/child sub-issue relationships
issue_write — issue CRUD
It does NOT expose the blockedBy / blocking mutation pair, and there is no generic GraphQL passthrough that would let a client invoke them.
Impact
Clients restricted to MCP (e.g., Claude Code's web sandbox) cannot set blockedBy edges, while clients with raw gh api graphql access can. The same agent acting from a CLI session can write the edge; from the web sandbox, it cannot. Any "agent, file this issue and link it as blockedBy #N" workflow has to be punted to a CLI session.
Use case
A personal-knowledge-base repo (https://github.com/karyandrew/second-brain) uses native issue dependencies as the canonical edge model for a work-tracking DAG. The agent's "ready set" query depends on issueDependenciesSummary.blockedBy == 0. Web-sandbox sessions can read the edges but not write them.
Asks (any one closes)
- Add
addBlockedBy / removeBlockedBy to the MCP server, paralleling the existing sub_issue_write shape.
- Add a generic GraphQL passthrough (e.g.,
graphql_query) so clients can invoke arbitrary mutations against authenticated repos.
Verified upstream
From a gh api graphql shell:
gh api graphql -f query='mutation { addBlockedBy(input: {issueId: "...", blockingIssueId: "..."}) { issue { number issueDependenciesSummary { blockedBy } } } }'
Works. Pure tool-surface gap.
Summary
GitHub's native issue-dependencies API (GA Aug 2025) exposes
addBlockedBy/removeBlockedByGraphQL mutations to set/unset hard-block edges between issues: https://github.blog/changelog/2025-08-21-dependencies-on-issues/The MCP server currently exposes:
sub_issue_write— parent/child sub-issue relationshipsissue_write— issue CRUDIt does NOT expose the
blockedBy/blockingmutation pair, and there is no generic GraphQL passthrough that would let a client invoke them.Impact
Clients restricted to MCP (e.g., Claude Code's web sandbox) cannot set
blockedByedges, while clients with rawgh api graphqlaccess can. The same agent acting from a CLI session can write the edge; from the web sandbox, it cannot. Any "agent, file this issue and link it as blockedBy #N" workflow has to be punted to a CLI session.Use case
A personal-knowledge-base repo (https://github.com/karyandrew/second-brain) uses native issue dependencies as the canonical edge model for a work-tracking DAG. The agent's "ready set" query depends on
issueDependenciesSummary.blockedBy == 0. Web-sandbox sessions can read the edges but not write them.Asks (any one closes)
addBlockedBy/removeBlockedByto the MCP server, paralleling the existingsub_issue_writeshape.graphql_query) so clients can invoke arbitrary mutations against authenticated repos.Verified upstream
From a
gh api graphqlshell:Works. Pure tool-surface gap.