Skip to main content
Glama
README.md
# mcp-github-pm

MCP server for GitHub project management. Create issues, auto-label, track milestones, and generate changelogs — all from Claude.

Built by [THRYXAGI](https://github.com/lordbasilaiassistant-sudo).

## Install

```bash
npx -y mcp-github-pm
```

Or install globally:

```bash
npm install -g mcp-github-pm
```

## Configuration

Set the `GITHUB_TOKEN` environment variable with a GitHub personal access token that has `repo` scope.

```bash
export GITHUB_TOKEN=ghp_your_token_here
```

### Claude Desktop / Claude Code

Add to your MCP config:

```json
{
  "mcpServers": {
    "github-pm": {
      "command": "npx",
      "args": ["-y", "mcp-github-pm"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

## Tools (8)

### `create_issue`
Create a GitHub issue.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **title** (string, required) — Issue title
- **body** (string, optional) — Issue body/description
- **labels** (string[], optional) — Labels to apply
- **assignees** (string[], optional) — Users to assign
- **milestone** (number, optional) — Milestone ID

### `list_issues`
List issues with filters.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **state** (string, optional) — `open`, `closed`, or `all` (default: `open`)
- **labels** (string, optional) — Comma-separated label names
- **assignee** (string, optional) — Filter by assignee username
- **sort** (string, optional) — `created`, `updated`, or `comments`
- **direction** (string, optional) — `asc` or `desc`
- **limit** (number, optional) — Max results (default: 30)

### `update_issue`
Update an existing issue.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **issue_number** (number, required) — Issue number
- **title** (string, optional) — New title
- **body** (string, optional) — New body
- **state** (string, optional) — `open` or `closed`
- **labels** (string[], optional) — Replace labels
- **assignees** (string[], optional) — Replace assignees

### `create_milestone`
Create a milestone.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **title** (string, required) — Milestone title
- **description** (string, optional) — Milestone description
- **due_on** (string, optional) — Due date (ISO 8601 format)

### `list_milestones`
List milestones.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **state** (string, optional) — `open`, `closed`, or `all` (default: `open`)

### `get_repo_stats`
Get repository overview stats (stars, forks, open issues, language, description, last push).
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name

### `generate_changelog`
Generate a markdown changelog from merged PRs between two dates.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **since** (string, required) — Start date (ISO 8601)
- **until** (string, optional) — End date (ISO 8601, defaults to now)

### `add_labels`
Add labels to an issue.
- **owner** (string, required) — Repository owner
- **repo** (string, required) — Repository name
- **issue_number** (number, required) — Issue number
- **labels** (string[], required) — Labels to add

## Examples

```
"Create an issue in my-org/my-repo titled 'Fix login bug' with label 'bug'"
"List all open issues in my-org/my-repo assigned to alice"
"Generate a changelog for my-org/my-repo since 2026-01-01"
"Create a milestone called 'v2.0' with due date 2026-06-01"
```

## License

MIT

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct aspect of GitHub project management: issues, milestones, labels, stats, and changelog. Even where functionality overlaps (e.g., add_labels vs update_issue), the descriptions clarify the specific purpose, leaving no ambiguity.

Naming Consistency4/5

Tools follow a verb_noun pattern with snake_case, but there is a minor inconsistency: create_milestone uses singular noun while list_milestones uses plural. Additionally, get_repo_stats uses 'get' where others use 'list', but the pattern is still recognizable and predictable.

Tool Count5/5

With 8 tools, the server is well-scoped for GitHub project management. Each tool earns its place by covering essential operations on issues, milestones, labels, repository stats, and changelog generation.

Completeness4/5

The tool set covers core operations: create, update, list for issues; create and list milestones; add labels. Minor gaps exist, such as no dedicated update or delete for milestones, but most workflows are supported and agents can work around these gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues