gh-board-mcp
gh-board-mcp
MCP server for managing GitHub Projects v2 as a personal kanban board. Create activities (draft items), move them between columns, track priority — without linking to real issues.
Requirements
Node.js >= 18
A GitHub Personal Access Token with the project scope (fine-grained: Projects read/write)
Usage
The package is published on npm — any MCP client can launch it with npx gh-board-mcp:
GITHUB_TOKEN=ghp_xxx npx -y gh-board-mcpClaude Code
Register it globally (available in all projects):
claude mcp add gh-board-mcp -s user -e GITHUB_TOKEN=ghp_xxx -- npx -y gh-board-mcp-s user→ global config (all projects); use-s projectto scope it to a single repo.-e GITHUB_TOKEN=...sets the token env var; the--separates the server command.Verify with
claude mcp list→gh-board-mcpshould showConnected.
OpenCode
Add it to the global config at ~/.config/opencode/opencode.json (or .jsonc):
{
"mcp": {
"gh-board-mcp": {
"type": "local",
"command": ["npx", "-y", "gh-board-mcp"],
"enabled": true,
"environment": {
"GITHUB_TOKEN": "ghp_xxx"
}
}
}
}Verify with opencode mcp list → gh-board-mcp should show connected.
Tools
Tool | Description |
| List your GitHub Projects v2 boards |
| Create a new board (default Status + Priority fields, opens with a board view) |
| List activities (draft items), filter by status/priority |
| Create an activity with optional status/priority |
| Move an activity to another status (and set priority) |
| Edit an activity's title/description |
| Delete an activity (permanent) |
| Archive an activity (hidden from lists, reversible) |
| Restore an archived activity |
Status & Priority
create_projectcreates a new board with Status = Todo / In Progress / Done, Priority = Urgent / High / Medium / Low, and a board (kanban) view as its default view.Boards created from a GitHub template keep their own Status/Priority options — pass values that exist on the board.
create_activity,move_activity, andlist_activitiesreport the valid options when given an unknown value.Custom columns are not supported via the API (configure them in the GitHub UI).
Notes
Read cap:
list_activitiesandlist_projectsread up to 100 items / projects in one call; larger boards are truncated.Archive ≠ delete:
archive_activityhides an item fromlist_activitiesbut keeps it (restorable viaunarchive_activity);delete_activityremoves it permanently.Eventual consistency: GitHub Projects v2 writes can take a moment to appear in reads — a
list_activitiesimmediately aftercreate_activitymay briefly miss the new item.Create is not atomic:
create_activityvalidates the status/priority options before creating, so a bad option leaves nothing behind; a transient network error mid-create can still leave a draft without its field values.
Development
npm install
npm test
npm run build
npm run devLicense
MIT