Skip to main content
Glama
GitHub Projects MCP Server

GitHub Projects MCP Server

by Lexmata

GitHub Projects MCP Server

npm version License: MIT TypeScript Test Coverage

A Model Context Protocol (MCP) server for GitHub Projects V2. Enables AI assistants to manage GitHub Projects, items, fields, and views through a standardized interface.

Features

  • Full GitHub Projects V2 Support: Complete CRUD operations for projects, items, fields, and views

  • Dual Authentication: Support for both Personal Access Tokens (PAT) and GitHub App authentication

  • User & Organization Projects: Manage projects for both individual users and organizations

  • 17 Specialized Tools: Comprehensive toolset for all project management operations

  • Type-Safe: Built with TypeScript for complete type safety

  • Well Tested: 100% unit test coverage

Related MCP server: GitHub Projects MCP Server

Quick Start

Installation

npm install @lexmata/github-projects-mcp

Configuration

Set your GitHub token as an environment variable:

export GITHUB_TOKEN=ghp_your_personal_access_token

Or configure GitHub App authentication:

export GITHUB_APP_ID=123456
export GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----..."
export GITHUB_APP_INSTALLATION_ID=12345678

Usage with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "github-projects": {
      "command": "npx",
      "args": ["@lexmata/github-projects-mcp"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Running Directly

npx @lexmata/github-projects-mcp

Available Tools

Project Management

Tool

Description

list_projects

List projects for a user or organization

get_project

Get detailed project information

create_project

Create a new project

update_project

Update project settings

delete_project

Delete a project

Item Management

Tool

Description

list_project_items

List all items in a project

get_project_item

Get item details

add_draft_issue

Add a draft issue to project

add_existing_issue

Add existing issue/PR to project

update_item_field

Update a field value on an item

remove_project_item

Remove an item from project

Field Management

Tool

Description

list_project_fields

List all fields in a project

create_field

Create a custom field

update_field

Update field settings

delete_field

Delete a custom field

View Management

Tool

Description

list_project_views

List all views in a project

get_project_view

Get view details

Documentation

Required GitHub Permissions

For Personal Access Tokens (Classic)

  • repo - Full control of private repositories

  • project - Full control of projects

For Fine-grained Personal Access Tokens

  • Repository permissions:

    • Issues: Read and write

    • Pull requests: Read and write

  • Organization permissions:

    • Projects: Read and write

For GitHub Apps

  • Repository permissions:

    • Issues: Read and write

    • Pull requests: Read and write

  • Organization permissions:

    • Projects: Read and write

Development

Prerequisites

  • Node.js 18+

  • pnpm 9+

Setup

# Clone the repository
git clone https://github.com/Lexmata/github-projects-mcp.git
cd github-projects-mcp

# Install dependencies
pnpm install

# Run tests
pnpm test

# Run tests with coverage
pnpm test:coverage

# Build
pnpm build

# Run in development mode
pnpm dev

Project Structure

src/
├── index.ts          # Entry point
├── server.ts         # MCP server setup
├── config.ts         # Configuration handling
├── auth/             # Authentication providers
├── graphql/          # GraphQL client and queries
├── tools/            # Tool implementations
└── types/            # TypeScript types

Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

17 tools
add_draft_issueB

Add a new draft issue to a GitHub Project V2

Inputs: projectId (required), title (required), body, assigneeIds.

add_existing_issueB

Add an existing issue or pull request to a GitHub Project V2

Inputs: projectId (required), contentId (required).

create_fieldB

Create a new custom field in a GitHub Project V2

Inputs: projectId (required), name (required), dataType (required), singleSelectOptions.

create_projectC

Create a new GitHub Project V2

Inputs: owner (required), ownerType (required), title (required).

delete_fieldB

Delete a custom field from a GitHub Project V2

Inputs: fieldId (required).

delete_projectB

Delete a GitHub Project V2

Inputs: projectId (required).

get_projectB

Get detailed information about a specific GitHub Project V2

Inputs: owner (required), ownerType (required), projectNumber (required).

get_project_itemB

Get detailed information about a specific item in a GitHub Project V2

Inputs: projectId (required), itemId (required).

get_project_viewB

Get detailed information about a specific view in a GitHub Project V2

Inputs: projectId (required), viewNumber (required).

list_project_fieldsB

List all fields in a GitHub Project V2

Inputs: projectId (required), first, after.

list_project_itemsB

List all items (issues, pull requests, draft issues) in a GitHub Project V2

Inputs: projectId (required), first, after.

list_projectsA

List GitHub Projects V2 for a user or organization

Inputs: owner (required), ownerType (required), first, after.

list_project_viewsB

List all views in a GitHub Project V2

Inputs: projectId (required), first, after.

remove_project_itemB

Remove an item from a GitHub Project V2

Inputs: projectId (required), itemId (required).

update_fieldC

Update a field in a GitHub Project V2

Inputs: fieldId (required), name (required).

update_item_fieldB

Update a field value on an item in a GitHub Project V2

Inputs: projectId (required), itemId (required), fieldId (required), value (required).

update_projectB

Update a GitHub Project V2 (title, description, readme, visibility, or closed status)

Inputs: projectId (required), title, shortDescription, readme, +2 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 17 tools

    Disambiguation5/5

    Each tool targets a distinct resource or action within GitHub Projects V2, with clear boundaries. For example, adding draft issues and adding existing issues are clearly differentiated by description, and all other tools have unique purposes.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case, such as create_project, list_project_items, and update_item_field. The use of 'add' for issues vs 'create' for fields and projects is a minor convention shift but still logically consistent.

    Tool Count5/5

    17 tools is appropriate for a comprehensive GitHub Projects V2 management server. The tool count covers all major CRUD operations for projects, fields, items, and views without being excessive.

    Completeness4/5

    The tool set covers most important workflows: creating, reading, updating, and deleting projects, fields, and items. However, it lacks tools for creating, updating, or deleting views, and there is no dedicated tool to get a specific field by ID (only list). These are minor gaps but do not severely hinder core functionality.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers