MCP server for GitHub API with Agile project management features
This server provides 25 well-structured GitHub Projects tools with consistent naming patterns and explicit input schemas. Tool definitions are above-average in schema completeness and description consistency, but descriptions are generic and lack LLM-optimized guidance. Most parameters have type definitions and descriptions, reducing confusion. However, output schemas are not explicitly documented in the visible code, and error handling guidance is absent. The server demonstrates good engineering practices (explicit GraphQL operations, Zod validation) but falls short of production-grade LLM tooling patterns around description depth, output documentation, and recovery guidance.
Add a draft issue to a GitHub Project
Add an issue or pull request to a GitHub Project
Archive a project item
Update a field value for multiple project items
Clear the value of a field for a project item
Convert a draft issue to a regular GitHub issue
Copy a GitHub Project
Descriptions are generic and brief (mostly 50-70 chars); lack LLM-optimized context about WHEN and WHY to call each tool, and what distinguishes similar tools. E.g., 'Get fields for a GitHub Project' does not explain how get-project-fields differs from get-project, or why an agent would call it.
Output schemas are not explicitly documented in the visible source code. The GraphQL operations are imported but their return types are not described in tool registrations. LLMs cannot plan downstream calls or extract required fields without documented response structures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Create a new GitHub Project
Create a new custom field in a GitHub Project
Delete a GitHub Project
Delete a custom field from a GitHub Project
Delete a project item
Get a GitHub Project by ID
Get status columns for a GitHub Project
Get fields for a GitHub Project
Get items (issues) from a GitHub Project
List GitHub Projects for a user
Mark a GitHub Project as a template
Unarchive a project item
Unmark a GitHub Project as a template
Update an existing GitHub Project
Update a custom field in a GitHub Project
Update a field value for a project item
Update the position of a project item
Update the status of a GitHub Project
No error handling or recovery guidance visible in tool descriptions. When a tool fails (e.g., 'Project not found', 'Invalid field type'), there is no documented guidance on whether to retry, what to do next, or how to fix the input.
Parameters like 'value' in update-project-item-field are typed as 'object' with minimal documentation. The description states 'Only 1 value can be updated at a time' but does not specify the valid object structure, enum keys, or constraints. This forces LLMs to guess at the payload format.
Destructive operations (delete-project, delete-project-item, delete-project-field) lack confirmation or dry-run support. No tool description mentions the irreversible nature or suggests a confirmation step.
Parameter descriptions do not include format constraints, examples, or validation rules. E.g., 'fieldType' in create-project-field lacks clarity on valid field types (text, number, date, single_select, etc.).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible in the tool definitions. This forces LLMs to infer operation safety from names alone, increasing reasoning overhead and error risk.
Pagination is supported (first, after parameters) but not documented in descriptions. Tools like list-projects do not explain how to iterate through large result sets or what the cursor semantics are.