Labsco
MCP SERVER

PyGithub MCP Server

by AstroMined

GitHub issue management through PyGithub — create, update, comment and label, with other domains switched on individually.

Git Hosting & Code Review
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.