The GitHub Projects MCP Server allows you to programmatically manage GitHub Projects, Issues, and Repositories using the GitHub Projects v2 API. With this server, you can:
GitHub Projects Management: Create, read, update, delete, copy, and manage projects including updating status and marking as templates
Project Structure: Manage columns/status and fields, including creating, updating, and deleting fields and single-select options
Project Items: Add, update, position, archive, unarchive, and delete items (Issues/PRs/Drafts) within projects
GitHub Issues: Create, get, list, update issues and add them to projects
Draft Issues: Add draft issues to projects and convert them to regular issues
Repositories: Fetch repository details and list repositories for a user
Field Values: Update and clear field values for project items
The server is built with TypeScript for type safety and requires a GitHub Personal Access Token with appropriate permissions.
Provides integration with GitHub's Projects v2 API for Agile project management, allowing for managing GitHub Projects, Issues, and Repositories through a Model Context Protocol server.
Utilizes GraphQL for interacting with GitHub's Projects v2 API, supporting queries and mutations for projects, fields, items and other GitHub resources.
GitHub Projects MCP Server
An MCP (Model Context Protocol) server that enables AI agents to create and manage Agile Sprint-based projects using GitHub Projects.
Features
GitHub Projects v2 API: Full support for GitHub's GraphQL Projects v2 API
GitHub Issues: Create, read, and update GitHub issues
GitHub Repositories: Fetch repository details
Type Safety: Built with TypeScript for maximum type safety
Related MCP server: GitHub MCP Server
Project Structure
This MCP server is built with a layered architecture that separates concerns and promotes maintainability. The codebase provides typed access to GitHub's GraphQL API with comprehensive error handling and security features.
Directory Overview
Key Components
MCP Server Layer (src/index.ts)
The main entry point that configures and starts the MCP server. Registers all available tools with their schemas and handlers, defines reusable prompts for Agile workflows, and manages communication with MCP clients.
Business Logic Layer (src/operations/)
Contains the core business logic that bridges the MCP server interface with GitHub's APIs. Each file focuses on a specific GitHub domain with comprehensive error handling and security through repository allowlisting.
github-client.ts: Centralized GitHub API client using Octokit with GraphQL and REST supportissues.ts: Issue management operations with CRUD functionalityprojects.ts: Comprehensive GitHub Projects v2 operations with full lifecycle managementrepositories.ts: Repository information retrieval operations
GraphQL Layer (src/graphql/)
Organizes GraphQL queries and mutations by feature domain, following GitHub's GraphQL API structure. Each .graphql file corresponds to a specific operation, with index files providing clean imports.
Type System (src/types/)
Ensures type safety throughout the application using a hybrid approach:
Auto-generated types: Created from GitHub's GraphQL schema using GraphQL Code Generator
Manual declarations: Enable importing
.graphqlfiles as TypeScript modules
Configuration Files
Essential configuration files that control the build process and project setup:
package.json: Project metadata, dependencies, and build scriptstsconfig.json: TypeScript compiler settings for ES2022 target with NodeNext modulescodegen.ts: GraphQL Code Generator configuration for auto-generating types from GitHub's schemabuild.ts: Custom esbuild configuration with GraphQL file handling pluginsmithery.yaml: Package configuration for Smithery MCP server registryschema.docs.graphql: GitHub's GraphQL schema used for type generation.env.example: Template showing required environment variables
Architectural Flow
The system follows a clear request-response pattern with validation gates at each layer, ensuring type safety from the MCP interface through to the GitHub API while maintaining security through repository allowlisting and comprehensive error handling.
Installation
Installing via Smithery
To install GitHub Projects MCP Server for Claude Desktop automatically via Smithery:
Usage
Manual Installation
Clone this repository:
git clone https://github.com/taylor-lindores-reeves/mcp-github-projects.git cd mcp-github-projectsInstall dependencies:
bun installCreate a
.envfile with your GitHub token:GITHUB_TOKEN=your_github_personal_access_token GITHUB_OWNER=your_github_username GITHUB_OWNER_TYPE=org ALLOWED_REPOS=owner/repo,another/repoBuild the server:
bun run buildConfigure your MCP client with the following settings:
Environment Variables
GITHUB_TOKEN: GitHub Personal Access Token with appropriate permissionsGITHUB_OWNER: GitHub username or organization nameGITHUB_OWNER_TYPE: (Optional) Set touser(default) ororg. Controls whether project listing and management is done for a user or an organization. Set toorgif your projects live in a GitHub organization.ALLOWED_REPOS: (Optional) Comma-separated list of allowed repository slugs (e.g.owner/repo,another/repo). All write operations (creating/updating issues, adding items to projects, etc.) are restricted to these repositories. If not set or empty, all repositories are allowed by default.
Example:
If you try to perform a write operation on a repository not in this list, the server will throw an error and block the action.
GitHub Token Permissions
This MCP server requires a GitHub Personal Access Token (classic) with the following permissions:
project- Full control of projectsread:project- Read access of projectsrepo- Full control of private repositoriesrepo:status- Access commit statusrepo_deployment- Access deployment statuspublic_repo- Access public repositoriesrepo:invite- Access repository invitationssecurity_events- Read and write security events
Development
Commands
Build:
bun run buildGenerate GraphQL types:
bun run graphql-codegen
Available Operations
Projects
Create, read, update, and delete GitHub Projects
Manage project fields, items, and status updates
Convert draft issues to actual issues
Archive and unarchive project items
Issues
Get issue details
Add issues to projects
Repositories
Get repository information