github-projects-mcp
Provides tools for managing GitHub Projects V2, including listing projects, viewing and updating project fields, adding issues to projects, creating draft issues, and managing project items through the GitHub GraphQL API.
Uses the GitHub GraphQL API for all interactions with GitHub Projects V2, enabling querying and mutating project data with precise control.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-projects-mcp list projects for my organization and show me the items in the first one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Clone the repository:
git clone git@github.com:Arclio/github-projects-mcp.git cd github-projects-mcpCreate and activate a virtual environment:
uv venv source venv/bin/activateInstall dependencies:
uv pip install -e .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, andread:org.Add the token to your
.envfile after running this command:cp .env.example .envThen add the following to your
.envfile: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 userget_project_fields: Get fields available in a GitHub Project V2get_project_items: Get items in a GitHub Project V2 (supports filtering by state or custom single-select fields)create_issue: Create a new GitHub issueadd_issue_to_project: Add an existing GitHub issue to a Project V2update_project_item_field: Update a field value for a project itemcreate_draft_issue: Create a draft issue directly in a GitHub Project V2delete_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 directoryserver.py: MCP server implementation with tool definitionsgithub_client.py: GraphQL client for GitHub API interactions
To contribute, make sure to:
Add proper error handling for all GraphQL operations
Add type annotations for all functions and parameters
Update documentation when adding new tools or features
Available Tools
8 toolsadd_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
Scored across 8 tools
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).
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.
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.
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
A MCP server built for developers enabling Git based project management with project and personal…
Create, deploy, and operate MCP servers directly from your GitHub repositories.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP Server for JFrog, providing tools for development and artifact management.
Related MCP Servers
- -licenseNot gradedqualityBmaintenanceMCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.127,455 npm91,952MIT
- FlicenseNot gradedqualityDmaintenanceProvides an MCP server for scraping and retrieving data from GitHub Projects, including issues, pull requests, and organizational metadata. It enables natural language interaction with project boards and repository contents using GitHub Personal Access Tokens.1-
- AlicenseCqualityDmaintenanceA production-ready MCP server for GitHub operations, providing tools for repository management, issues, pull requests, and more via both MCP stdio and REST API.27MIT
- AlicenseAqualityCmaintenanceAn MCP server that reads public GitHub Projects v2 boards (including item-level data like status and custom fields) without authentication, using official APIs and fallback methods for user-owned projects.554 npmMIT