loading…
Search for a command to run...
loading…
Enables AI assistants to manage GitHub issues using deterministic priority scoring and concurrency-safe locking. It supports a structured eight-phase workflow f
Enables AI assistants to manage GitHub issues using deterministic priority scoring and concurrency-safe locking. It supports a structured eight-phase workflow from issue selection through pull request review to ensure consistent prioritization and progress tracking.
A Model Context Protocol (MCP) server that enables AI assistants to manage GitHub issues with deterministic priority scoring and concurrency-safe selection.
# 1. Install from npm (recommended)
npm install -g mcp-git-issue-priority
# 2. Authenticate (if not already using GitHub CLI)
gh auth login
# 3. Add to Claude Code (~/.claude.json)
{
"mcpServers": {
"github-issue-priority": {
"command": "mcp-git-issue-priority"
}
}
}
# 4. Restart Claude Code and verify
# The MCP tools should appear when you run /mcp
P0-P3), type (bug, feature, chore, docs), and status labelsgh auth loginrepo scopenpm install -g mcp-git-issue-priority
npm install -g [email protected]
git clone https://github.com/steiner385/mcp-git-issue-priority.git
cd mcp-git-issue-priority
npm install && npm link
| Issue | Solution |
|---|---|
command not found: mcp-git-issue-priority |
Ensure npm global bin is in your PATH: npm bin -g |
GitHub authentication required |
Run gh auth login or set GITHUB_TOKEN |
| Build errors during install | Ensure Node.js 20+ is installed: node --version |
The server supports two authentication methods:
If you have GitHub CLI installed and authenticated, the server automatically retrieves your token:
# One-time setup
gh auth login
This is the recommended approach - no manual token management required.
Set GITHUB_TOKEN with a personal access token that has repo scope:
export GITHUB_TOKEN="ghp_your_personal_access_token"
Or configure it in your MCP settings (see below).
Add to ~/.claude.json (global) or .claude/settings.json (project):
{
"mcpServers": {
"github-issue-priority": {
"command": "mcp-git-issue-priority"
}
}
}
Using a personal access token instead of GitHub CLI? Add the token to the config:
{
"mcpServers": {
"github-issue-priority": {
"command": "mcp-git-issue-priority",
"env": {
"GITHUB_TOKEN": "ghp_your_personal_access_token"
}
}
}
}
After restarting Claude Code:
/mcp to see available MCP serversgithub-issue-priority server should be listed with 13 toolslist_backlog on any repository to confirm it's workingcreate_issueCreate a new GitHub issue with mandatory priority and type labels.
Arguments:
- title (required): Issue title
- body (optional): Issue description
- priority (required): P0 (critical) | P1 (high) | P2 (medium) | P3 (low)
- type (required): bug | feature | chore | docs
- repository (required): "owner/repo" format
select_next_issueSelect and lock the highest-priority issue from the backlog. Uses deterministic scoring to ensure consistent selection.
Arguments:
- repository (required): "owner/repo" format
- type (optional): Filter by issue type
- maxPriority (optional): Only consider issues at or above this priority
list_backlogList all open issues in priority order without acquiring locks (read-only).
Arguments:
- repository (required): "owner/repo" format
- type (optional): Filter by issue type
- limit (optional): Maximum issues to return (default: 20)
advance_workflowAdvance the workflow to the next phase for a locked issue.
Arguments:
- issueNumber (required): Issue number to advance
- targetPhase (required): research | branch | implementation | testing | commit | pr | review
- repository (required): "owner/repo" format
- testsPassed (optional): Required when advancing to 'commit' phase
- prTitle (optional): Required for 'pr' phase
- prBody (optional): Required for 'pr' phase
- skipJustification (optional): Required if skipping phases
get_workflow_statusGet the current workflow status for locked issues.
Arguments:
- issueNumber (optional): Specific issue number
- repository (optional): "owner/repo" format
release_lockRelease lock on an issue (on completion, abandonment, or merge).
Arguments:
- issueNumber (required): Issue number
- reason (required): completed | abandoned | merged
- repository (required): "owner/repo" format
force_claimForce claim an issue locked by another session (requires confirmation).
Arguments:
- issueNumber (required): Issue number to claim
- confirmation (required): Must be exactly "I understand this may cause conflicts"
- repository (required): "owner/repo" format
sync_backlog_labelsDetect and optionally fix issues missing required priority/type/status labels.
Arguments:
- repository (required): "owner/repo" format
- mode (optional): "report" (default) to list issues, "update" to apply labels
- defaultPriority (optional): P0 | P1 | P2 | P3 (defaults to P2)
- defaultType (optional): bug | feature | chore | docs (defaults to feature)
In report mode, returns a list of all issues missing labels with details about what's missing.
In update mode, applies default labels to issues:
priority:P2 (or specified default)type:feature (or specified default)status:backlogget_pr_statusCheck CI status, approval state, and merge state of a pull request.
Arguments:
- repository (required): "owner/repo" format
- prNumber (required): Pull request number to check
bulk_update_issuesAdd/remove labels and close/reopen multiple issues at once.
Arguments:
- repository (required): "owner/repo" format
- issues (required): Array of issue numbers (1-50)
- addLabels (optional): Labels to add
- removeLabels (optional): Labels to remove
- state (optional): "open" | "closed"
implement_batchStart implementing a batch of N issues in priority order. Returns the first issue to implement.
Arguments:
- repository (required): "owner/repo" format
- count (required): Number of issues to implement (1-10)
- includeTypes (optional): Only include these issue types
- excludeTypes (optional): Exclude these issue types
- maxPriority (optional): Only P0, P1, etc.
batch_continueContinue batch implementation. Polls for PR merge, then returns next issue or completion.
Arguments:
- batchId (required): Batch ID from implement_batch
- prNumber (optional): PR number for current issue
get_workflow_analyticsGet time-based workflow analytics: cycle time, phase breakdown, aging reports.
Arguments:
- repository (required): "owner/repo" format
- period (optional): "7d" | "30d" | "90d" | "all" (default: 30d)
Issues are scored using a deterministic formula:
score = (basePoints + ageBonus) * blockingMultiplier * blockedPenalty
Issues with open parent issues (using GitHub's sub-issues feature) are automatically deprioritized with a 0.1x penalty. This ensures that blocked work sinks to the bottom of the backlog until its dependencies are resolved. Once a parent issue is closed, the child issue's priority returns to normal.
All data is stored locally in ~/.mcp-git-issue-priority/:
~/.mcp-git-issue-priority/
├── locks/ # Active lock files (.lockdata)
├── workflow/ # Workflow state files (.json)
└── logs/ # Audit logs (JSON Lines format)
npm run build
npm test
npm run lint
npm run typecheck
NPM_TOKEN# Patch release (bug fixes): 1.0.0 → 1.0.1
npm version patch -m "Release v%s"
git push && git push --tags
# Minor release (new features): 1.0.0 → 1.1.0
npm version minor -m "Release v%s"
git push && git push --tags
# Major release (breaking changes): 1.0.0 → 2.0.0
npm version major -m "Release v%s"
git push && git push --tags
Pushing a tag triggers the release workflow which:
.tgz assetMIT License - see LICENSE for details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
We'd love to hear from you! Your feedback helps improve this tool for everyone.
[Feature] in the titlemcp-git-issue-priority --feedback to open the feedback pageCheck existing issues before creating new ones.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mcp-github-issue-priority-server": {
"command": "npx",
"args": []
}
}
}