Skip to main content
Glama
GitHub Projects MCP

GitHub Projects MCP

GitHub Projects MCP

A small MCP server for GitHub Projects v2.

Issues and pull requests live in separate repositories. GitHub Projects brings them together. This server will let AI agents read that shared board and coordinate work without scanning every repository.

Status: Read-only by default; Projects v2 write tools are explicitly gated.

Uses the official MCP TypeScript SDK over stdio and GitHub Projects v2 GraphQL. Set GITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY, and GITHUB_INSTALLATION_ID; the installation token is minted at runtime and never logged. Reads remain available by default. Writes additionally require GITHUB_PROJECTS_V2_WRITE_ENABLED=true and GITHUB_PROJECTS_V2_WRITE_ALLOWLIST as a JSON array of exact organization/project pairs, for example [{"organization":"acme","projectId":"PVT_1"}]. Invalid or missing write configuration fails closed. Write tools are add_project_v2_item_by_id, update_project_v2_item_field_value, and delete_project_v2_item. Add checks current project items and returns the existing item instead of creating a duplicate; delete checks membership and treats an absent item as a safe no-op.

Tools: list_projects(organization, cursor?), get_project(organization, number), and list_project_items(organization, number, cursor?). Responses include pageInfo; inaccessible/redacted content remains null and GraphQL permission/errors are returned as MCP errors.

Run locally: npm install && npm test && npm run build && npm start. A real read requires an existing installation with the GitHub Projects permission; this repository does not change app permissions or include credentials. Tests use mocks only; no live write tests are included. The write runtime is not validated against live GitHub.

MIT licensed. See LICENSE.

Available Tools

3 tools
get_projectC

Read one visible GitHub Project v2 and its fields.

NameRequiredDescriptionDefault
numberYes
organizationYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Read' and 'visible' usefully imply a non-mutating, permission-scoped operation, but there is no statement of auth requirements, what 'fields' are returned, or behavior for a nonexistent/inaccessible project number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the resource front-loaded. Nothing is wasted, though there is very little content to structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should convey what is returned, yet 'and its fields' is the only hint. For a lookup tool whose whole value is the returned project representation, that omission is significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never references the two required parameters (organization, number). The meanings are largely inferable from the names, but the description adds no semantics such as whether 'number' is the project's global number or its position.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('one visible GitHub Project v2 and its fields'), which is clearly distinct from the plural list_projects. It does not explicitly name the siblings, so an agent must infer that the singular/plural distinction is the routing rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the alternatives (list_projects, list_project_items). The singular 'one' implies retrieval of a single project by identifier, but the agent must infer that from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_itemsC

List visible Project v2 items, content and field values.

NameRequiredDescriptionDefault
cursorNo
numberYes
organizationYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Visible' hints at permission-based filtering, but it never states the auth requirements, whether the result is paginated despite the cursor parameter, or how many items are returned per page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no wasted words and the core action front-loaded. It is terse to the point of under-specification rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter documentation, the description is far too thin for a paginated list tool with two required parameters. An agent cannot determine return shape, pagination behavior, or permission scoping from it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters (cursor, number, organization). The description only alludes to 'Project v2' and 'visible', which loosely implies organization scoping and project numbering but gives no formats, constraints, or cursor semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (Project v2 items, content and field values), so an agent can tell it apart from list_projects and get_project. The trailing phrase 'content and field values' is vague about what is actually returned, and 'visible' is undefined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_projects or get_project, and no prerequisites or context for the required organization/number pair. Usage is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsC

List visible GitHub Projects v2 for an organization.

NameRequiredDescriptionDefault
cursorNo
organizationYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. The word "visible" hints that results are permission-scoped, which is a small but real disclosure. However, nothing is said about pagination behavior despite the cursor parameter, rate limits, auth requirements, or what a Project record contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the resource and scope front-loaded and no wasted words. It is terse to the point of under-specification, but structurally sound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations means the description must explain return shape and pagination, and it does neither. For a paginated list tool with an undocumented cursor parameter, the description is too thin to let an agent call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters. The description implies organization scopes the listing, but adds nothing about its format (login vs ID) and says nothing at all about the cursor parameter or how paging works, leaving the semantics undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("List") and resource ("GitHub Projects v2") scoped to an organization, which is clearer than a bare name restatement. It does not explicitly distinguish itself from siblings get_project or list_project_items, though the plural "Projects" and org scope imply the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus get_project or list_project_items, no mention of prerequisites (auth scopes, org membership), and no exclusions. The agent must infer the routing from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_project
    • First observedlist_project_items
    • First observedlist_projects

TDQS

B3/5.0

Scored across 3 tools

Disambiguation4/5

Each tool targets a distinct level: list_projects (org collection), get_project (single project with fields), and list_project_items (items within a project). The boundaries are clear from the descriptions, though list_projects vs get_project could momentarily blur since both concern projects.

Naming Consistency5/5

All three tools follow a consistent list_/get_ verb_noun snake_case convention. The pattern is predictable and immediately readable.

Tool Count3/5

Three tools is thin for a Projects domain, and the surface is entirely read-only. It is coherent for a minimal read scope, but feels under-scoped for a server named 'GitHub Projects MCP'.

Completeness3/5

List and read operations are covered at the organization, project, and item levels, giving a reasonable read surface. However, no create/update/delete operations exist for projects, items, or field values, leaving write workflows unserved.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers