create_issueLABSCO SUMMARY
Deep on issues, and everything else is opt-in.
The modular grouping is what makes this worth choosing over a general GitHub server: you can hand an agent issue management and nothing else, which is a far smaller blast radius than a token that can also push code. Read the project's own note about failing tests before you rely on it inside an automated loop.
What it is
A Python server built on PyGithub. The issue surface is complete: creating and updating issues, reading and listing them, and managing their comments and labels. Other domains ship as tool groups that are off by default.
What you get
- Issues created and updated with title, body, assignees, labels, milestone and state —
create_issue,update_issue - One issue fetched by number, and a repository's issues listed with pagination —
get_issue,list_issues - Comments added, listed, updated and deleted —
add_issue_comment,list_issue_comments,update_issue_comment,delete_issue_comment - Labels added to and removed from an issue —
add_issue_labels,remove_issue_label - Optional parameters handled properly: only what you pass is sent to GitHub, and primitives are converted to GitHub objects, such as a milestone number becoming a Milestone
Requirements
A GitHub personal access token in GITHUB_PERSONAL_ACCESS_TOKEN. Create the environment with uv venv and install with uv pip install -e ., then point the client at the venv's Python running the pygithub_mcp_server module. Only the issues tool group is enabled by default — turn others on through a JSON file named by PYGITHUB_MCP_CONFIG, or with PYGITHUB_ENABLE_ISSUES, PYGITHUB_ENABLE_REPOSITORIES and PYGITHUB_ENABLE_PULL_REQUESTS. The project notes that many of its tests are currently failing and under investigation.
Setup effort
Build from source — git clone https://github.com/AstroMined/pygithub-mcp-server.git
USE CASES
Triaging a backlog
List the repository's open issues with pagination and read the ones that need a decision.
Filing an issue from a conversation
Create it with the title, body, assignees, labels and milestone already filled in.
Keeping a thread current
Add a comment, or edit the one you left earlier, without switching to the browser.
Relabelling after a triage pass
Add and remove labels on the issues you just went through, and close what is done.
19 tools
Listed in project docs. Your client may show a different list.
get_issueupdate_issuelist_issuesadd_issue_commentlist_issue_commentsupdate_issue_commentdelete_issue_commentadd_issue_labelsremove_issue_labelget_repositorycreate_repositoryfork_repositorysearch_repositoriesget_file_contentscreate_or_update_filepush_filescreate_branchlist_commitsBEFORE YOU INSTALL
What to know first
Tools you get
19 tools named in the project's documentation. By default only the issues group (10 tools) is enabled; the 9 repository tools need PYGITHUB_ENABLE_REPOSITORIES=true and may not be implemented.
Requires
- Python 3.10+
- uv on PATH
- GITHUB_PERSONAL_ACCESS_TOKEN in your environment
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/AstroMined/pygithub-mcp-server.git
cd pygithub-mcp-server
uv venv
source .venv/bin/activate
uv pip install -e .MCP Clients
Claude Desktop
Add this to your claude_desktop_config.json, with /path/to/repo set to your checkout:
{
"mcpServers": {
"github": {
"command": "/path/to/repo/.venv/bin/python",
"args": [
"-m",
"pygithub_mcp_server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here"
}
}
}
}Cline
Add this to your cline_mcp_settings.json, with /path/to/repo set to your checkout:
{
"mcpServers": {
"github": {
"command": "/path/to/repo/.venv/bin/python",
"args": [
"-m",
"pygithub_mcp_server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here"
}
}
}
}Tool groups — config file
Optional. Save this as a JSON file, for example pygithub_mcp_config.json:
{
"tool_groups": {
"issues": {
"enabled": true
},
"repositories": {
"enabled": true
},
"pull_requests": {
"enabled": false
},
"discussions": {
"enabled": false
},
"search": {
"enabled": true
}
}
}Then point PYGITHUB_MCP_CONFIG at it:
export PYGITHUB_MCP_CONFIG=/path/to/pygithub_mcp_config.jsonTool groups — env variables
Optional. Or turn tool groups on and off with environment variables instead:
export PYGITHUB_ENABLE_ISSUES=true
export PYGITHUB_ENABLE_REPOSITORIES=true
export PYGITHUB_ENABLE_PULL_REQUESTS=falseMCP Inspector (test)
To try the tools before adding them to a client, run this from the checkout with the virtual environment active:
npx @modelcontextprotocol/inspector -e GITHUB_PERSONAL_ACCESS_TOKEN=your-token-here uv run pygithub-mcp-server