Skip to main content
Glama

GitHub Projects V2 MCP Server

A Model Context Protocol (MCP) server that provides tools for managing GitHub Projects V2 through Claude and other MCP clients. This server uses the GitHub GraphQL API for interacting with GitHub Projects V2.

Features

  • List and view GitHub Projects V2 for users and organizations

  • Get project fields and items (issues, PRs, draft issues)

  • Create issues and add them to projects

  • Create draft issues directly in projects

  • Update project item field values

  • Delete items from projects

Related MCP server: GitHub Projects MCP Server

Usage

This server can be used with any MCP client, such as Claude Desktop. Add it to your MCP client configuration (e.g., claude_desktop_config.json).

Option 1: Using Published Package

Here's an example configuration using uvx as the command runner:

{
  "mcpServers": {
    "github-projects": {
      "command": "uvx",
      "args": [
        "mcp-github-projects"
      ],
      "env": {
        "GITHUB_TOKEN": "your_pat_here"
      }
    }
  }
}

Make sure to replace your_pat_here with your actual GitHub Personal Access Token.

Option 2: From Source Code

To run the project directly from source code, follow these steps:

Setup

  1. Clone the repository:

    git clone git@github.com:Arclio/github-projects-mcp.git
    cd github-projects-mcp
  2. Create and activate a virtual environment:

    uv venv
    source venv/bin/activate
  3. Install dependencies:

    uv pip install -e .
  4. Set your GitHub token as an environment variable:

    Create a GitHub Personal Access Token and give it the necessary permissions. The required permissions are: repo, project, and read:org.

    Add the token to your .env file after running this command:

    cp .env.example .env

    Then add the following to your .env file:

    export GITHUB_TOKEN=your_personal_access_token

Usage from source code

When using from source code, configure your MCP client as follows:

{
  "mcpServers": {
    "github-projects": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/github-projects-mcp",
        "run",
        "mcp-github-projects"
      ],
      "env": {
        "GITHUB_TOKEN": "your_pat_here"
      }
    }
  }
}

Make sure to replace /path/to/github-projects-mcp and your_pat_here with your actual repository path and GitHub Personal Access Token.

Available Tools

  • list_projects: List GitHub Projects V2 for a given organization or user

  • get_project_fields: Get fields available in a GitHub Project V2

  • get_project_items: Get items in a GitHub Project V2 (supports filtering by state or custom single-select fields)

  • create_issue: Create a new GitHub issue

  • add_issue_to_project: Add an existing GitHub issue to a Project V2

  • update_project_item_field: Update a field value for a project item

  • create_draft_issue: Create a draft issue directly in a GitHub Project V2

  • delete_project_item: Delete an item from a GitHub Project V2

See tool documentation in the server code for detailed usage information.

Development

The project is structured as follows:

  • src/github_projects_mcp/: Main package directory

    • server.py: MCP server implementation with tool definitions

    • github_client.py: GraphQL client for GitHub API interactions

To contribute, make sure to:

  1. Add proper error handling for all GraphQL operations

  2. Add type annotations for all functions and parameters

  3. Update documentation when adding new tools or features

Available Tools

8 tools
add_issue_to_projectC

Add an existing GitHub issue to a Project V2.

Args:
    owner: The GitHub organization or user name that owns the project
    project_number: The project number
    issue_owner: The owner of the repository containing the issue
    issue_repo: The repository name containing the issue
    issue_number: The issue number

Returns:
    A formatted string confirming the addition

Inputs: owner (required), project_number (required), issue_owner (required), issue_repo (required), +1 more.

create_draft_issueC

Create a draft issue directly in a GitHub Project V2.

Args:
    owner: The GitHub organization or user name
    project_number: The project number
    title: The draft issue title
    body: The draft issue body (optional)

Returns:
    A confirmation message with the new draft issue details

Inputs: owner (required), project_number (required), title (required), body.

create_issueA

Create a new GitHub issue.

Args:
    owner: The GitHub organization or user name
    repo: The repository name
    title: The issue title
    body: The issue body (optional)

Returns:
    A formatted string with the created issue details

Inputs: owner (required), repo (required), title (required), body.

delete_project_itemB

Delete an item from a GitHub Project V2.

Args:
    owner: The GitHub organization or user name
    project_number: The project number
    item_id: The ID of the item to delete

Returns:
    A confirmation message

Inputs: owner (required), project_number (required), item_id (required).

get_project_fieldsB

Get fields available in a GitHub Project V2, including options for SingleSelect fields.

Args:
    owner: The GitHub organization or user name
    project_number: The project number

Returns:
    A formatted string with field details.

Inputs: owner (required), project_number (required).

get_project_itemsA

Get items in a GitHub Project V2. Can filter by state OR a single custom field=value.

Args:
    owner: The GitHub organization or user name
    project_number: The project number
    limit: Maximum number of items to return (default: 50). When filtering, the system automatically fetches more items to improve efficiency.
    state: Optional state filter (e.g., "OPEN", "CLOSED"). Applies to Issues/PRs.
    filter_field_name: Optional custom field name to filter by (e.g., "Status"). Currently supports SingleSelect and Iteration fields.
    filter_field_value: Optional custom field value to filter by (e.g., "In Development"). Uses case-insensitive matching.
    cursor: Optional cursor for pagination. Use value from previous results to get next page.

Returns:
    A formatted string with item details.

Inputs: owner (required), project_number (required), limit, state, +3 more.

list_projectsC

List GitHub Projects V2 for a given organization or user.

Args:
    owner: The GitHub organization or user name

Returns:
    A formatted string with project details

Inputs: owner (required).

update_project_item_fieldB

Update a field value for a project item.

Args:
    owner: The GitHub organization or user name
    project_number: The project number
    item_id: The ID of the item to update
    field_id: The ID of the field to update
    field_value: The new value for the field (text, date, or option ID for single select)

Returns:
    A confirmation message

Inputs: owner (required), project_number (required), item_id (required), field_id (required), +1 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 8 tools

    Disambiguation4/5

    Most tools have distinct purposes targeting different aspects of GitHub Projects V2 management, with clear separation between project-level operations (list_projects, get_project_fields) and item-level operations (add_issue_to_project, update_project_item_field). However, create_issue and create_draft_issue could potentially cause confusion as both create issues, though in different contexts (repository vs. project).

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with snake_case throughout (e.g., add_issue_to_project, create_draft_issue, get_project_items). The naming is predictable and follows logical conventions, making it easy to understand each tool's function from its name alone.

    Tool Count5/5

    With 8 tools, this server is well-scoped for GitHub Projects V2 management. The count provides comprehensive coverage without being overwhelming, including essential operations for listing, creating, updating, and deleting project items, as well as project-level metadata retrieval.

    Completeness4/5

    The tool set covers most core GitHub Projects V2 workflows effectively, including project listing, item management, field operations, and issue integration. A minor gap exists in the lack of a tool to remove issues from projects (only delete_project_item for general items), but agents can work around this using existing tools for most scenarios.

    Related MCP Connectors

    Related MCP Servers

    Appeared in Searches