Content-Length: 939625 | pFad | http://github.com/festion/github-mcp-server/commit/1cf7ef5c6eebac8e22eea552b4b64e521f0c4724

AF feat: Add GitHub Project Board Support (Phase 1) · festion/github-mcp-server@1cf7ef5 · GitHub
Skip to content

Commit 1cf7ef5

Browse files
festionclaude
andcommitted
feat: Add GitHub Project Board Support (Phase 1)
Implements 18 new MCP tools for managing GitHub Projects API v2: Project Board Management (5 tools): - create_project_board: Create new project boards with templates - update_project_board: Update board settings and metadata - delete_project_board: Delete/archive project boards - list_project_boards: List accessible project boards - get_project_board: Get detailed board info and statistics Column Management (6 tools): - create_project_column: Create new columns (as Status field options) - update_project_column: Update column properties - delete_project_column: Delete columns with card archival - reorder_project_columns: Change column order - list_project_columns: List all columns in a board - get_project_column: Get column details and statistics Card Operations (7 tools): - add_card_to_project: Add issues/PRs to project boards - move_project_card: Move cards between columns - update_project_card: Update card custom fields - remove_card_from_project: Remove/archive cards - bulk_move_cards: Bulk card operations - list_project_cards: List cards with filtering (Phase 2) - get_project_card: Get card details (Phase 2) Technical details: - Uses GitHub GraphQL API v4 for all operations - Follows existing patterns with proper error handling - Includes snapshot tests for all tool definitions - Maintains read/write tool separation for permissions Resolves #12 (Phase 1) Related to Epic #8 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ea73047 commit 1cf7ef5

21 files changed

+2014
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"annotations": {
3+
"title": "Add card to project",
4+
"readOnlyHint": false
5+
},
6+
"description": "Add an existing issue or pull request to a project board",
7+
"inputSchema": {
8+
"properties": {
9+
"board_id": {
10+
"description": "ID of the project board",
11+
"type": "string"
12+
},
13+
"column_id": {
14+
"description": "ID of the column to add the card to (optional)",
15+
"type": "string"
16+
},
17+
"content_id": {
18+
"description": "ID of the issue or pull request to add",
19+
"type": "string"
20+
}
21+
},
22+
"required": [
23+
"board_id",
24+
"content_id"
25+
],
26+
"type": "object"
27+
},
28+
"name": "add_card_to_project"
29+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"annotations": {
3+
"title": "Bulk move cards",
4+
"readOnlyHint": false
5+
},
6+
"description": "Move multiple cards between columns in bulk",
7+
"inputSchema": {
8+
"properties": {
9+
"card_ids": {
10+
"description": "Array of card IDs to move",
11+
"items": {
12+
"type": "string"
13+
},
14+
"type": "array"
15+
},
16+
"target_column_id": {
17+
"description": "ID of the target column",
18+
"type": "string"
19+
}
20+
},
21+
"required": [
22+
"card_ids",
23+
"target_column_id"
24+
],
25+
"type": "object"
26+
},
27+
"name": "bulk_move_cards"
28+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"annotations": {
3+
"title": "Create project board",
4+
"readOnlyHint": false
5+
},
6+
"description": "Create a new GitHub project board with customizable settings",
7+
"inputSchema": {
8+
"properties": {
9+
"description": {
10+
"description": "Description of the project board",
11+
"type": "string"
12+
},
13+
"name": {
14+
"description": "Name of the project board",
15+
"type": "string"
16+
},
17+
"owner": {
18+
"description": "Repository owner or organization login",
19+
"type": "string"
20+
},
21+
"public": {
22+
"description": "Whether the project should be public (default: false)",
23+
"type": "boolean"
24+
},
25+
"repository": {
26+
"description": "Repository name (for repository-level projects)",
27+
"type": "string"
28+
},
29+
"template": {
30+
"description": "Template to use (kanban, scrum, bug_triage)",
31+
"enum": [
32+
"kanban",
33+
"scrum",
34+
"bug_triage",
35+
"none"
36+
],
37+
"type": "string"
38+
}
39+
},
40+
"required": [
41+
"name",
42+
"owner"
43+
],
44+
"type": "object"
45+
},
46+
"name": "create_project_board"
47+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"annotations": {
3+
"title": "Create project column",
4+
"readOnlyHint": false
5+
},
6+
"description": "Create a new column in a project board with customizable settings",
7+
"inputSchema": {
8+
"properties": {
9+
"board_id": {
10+
"description": "ID of the project board",
11+
"type": "string"
12+
},
13+
"color": {
14+
"description": "Color for the column (hex format)",
15+
"type": "string"
16+
},
17+
"description": {
18+
"description": "Description of the column",
19+
"type": "string"
20+
},
21+
"limit": {
22+
"description": "Work in progress (WIP) limit for the column",
23+
"type": "number"
24+
},
25+
"name": {
26+
"description": "Name of the column",
27+
"type": "string"
28+
}
29+
},
30+
"required": [
31+
"board_id",
32+
"name"
33+
],
34+
"type": "object"
35+
},
36+
"name": "create_project_column"
37+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"annotations": {
3+
"title": "Delete project board",
4+
"readOnlyHint": false
5+
},
6+
"description": "Delete or archive a project board",
7+
"inputSchema": {
8+
"properties": {
9+
"board_id": {
10+
"description": "ID of the project board to delete",
11+
"type": "string"
12+
},
13+
"confirm": {
14+
"description": "Confirmation flag to prevent accidental deletion",
15+
"type": "boolean"
16+
}
17+
},
18+
"required": [
19+
"board_id",
20+
"confirm"
21+
],
22+
"type": "object"
23+
},
24+
"name": "delete_project_board"
25+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"annotations": {
3+
"title": "Delete project column",
4+
"readOnlyHint": false
5+
},
6+
"description": "Delete a column from a project board with proper validation",
7+
"inputSchema": {
8+
"properties": {
9+
"archive_cards": {
10+
"description": "Whether to archive cards in the column (default: true)",
11+
"type": "boolean"
12+
},
13+
"column_id": {
14+
"description": "ID of the column to delete",
15+
"type": "string"
16+
}
17+
},
18+
"required": [
19+
"column_id"
20+
],
21+
"type": "object"
22+
},
23+
"name": "delete_project_column"
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"annotations": {
3+
"title": "Get project board details",
4+
"readOnlyHint": true
5+
},
6+
"description": "Get detailed information and statistics for a specific project board",
7+
"inputSchema": {
8+
"properties": {
9+
"board_id": {
10+
"description": "ID of the project board",
11+
"type": "string"
12+
},
13+
"include_fields": {
14+
"description": "Include field definitions (default: true)",
15+
"type": "boolean"
16+
},
17+
"include_stats": {
18+
"description": "Include item statistics (default: true)",
19+
"type": "boolean"
20+
}
21+
},
22+
"required": [
23+
"board_id"
24+
],
25+
"type": "object"
26+
},
27+
"name": "get_project_board"
28+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"annotations": {
3+
"title": "Get project column details",
4+
"readOnlyHint": true
5+
},
6+
"description": "Get detailed column information and statistics",
7+
"inputSchema": {
8+
"properties": {
9+
"column_id": {
10+
"description": "ID of the column",
11+
"type": "string"
12+
}
13+
},
14+
"required": [
15+
"column_id"
16+
],
17+
"type": "object"
18+
},
19+
"name": "get_project_column"
20+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"annotations": {
3+
"title": "List project boards",
4+
"readOnlyHint": true
5+
},
6+
"description": "List all accessible project boards for a user or organization",
7+
"inputSchema": {
8+
"properties": {
9+
"include_closed": {
10+
"description": "Include closed project boards (default: false)",
11+
"type": "boolean"
12+
},
13+
"limit": {
14+
"description": "Maximum number of boards to return (default: 20, max: 100)",
15+
"type": "number"
16+
},
17+
"owner": {
18+
"description": "User or organization login",
19+
"type": "string"
20+
},
21+
"type": {
22+
"description": "Filter by owner type (user or organization)",
23+
"enum": [
24+
"user",
25+
"organization",
26+
"all"
27+
],
28+
"type": "string"
29+
}
30+
},
31+
"required": [
32+
"owner"
33+
],
34+
"type": "object"
35+
},
36+
"name": "list_project_boards"
37+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"annotations": {
3+
"title": "List project columns",
4+
"readOnlyHint": true
5+
},
6+
"description": "List all columns for a specific project board",
7+
"inputSchema": {
8+
"properties": {
9+
"board_id": {
10+
"description": "ID of the project board",
11+
"type": "string"
12+
}
13+
},
14+
"required": [
15+
"board_id"
16+
],
17+
"type": "object"
18+
},
19+
"name": "list_project_columns"
20+
}

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/festion/github-mcp-server/commit/1cf7ef5c6eebac8e22eea552b4b64e521f0c4724

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy