Skip to main content
Glama
lyderdev

GitHub MCP Server

by lyderdev
README.md
# GitHub MCP Server

A Model Context Protocol server for interacting with the GitHub API.

## Features

### Tools

- `list_user_repos`: List repositories for the authenticated user

  - Parameters:
    - `type` (optional): "owner", "all", or "member" (default: "owner")
    - `sort` (optional): "created", "updated", "pushed", or "full_name" (default: "full_name")
    - `direction` (optional): "asc" or "desc" (default: "asc")
    - `per_page` (optional): Number of results per page (default: 30, max: 100)
    - `page` (optional): Page number (default: 1)

- `get_repo`: Get details about a specific repository

  - Parameters:
    - `repo` (required): The name of the repository
    - `owner` (optional): The account owner. If not provided, uses authenticated user.

- `create_repo`: Create a new repository

  - Parameters:
    - `name` (required): The name of the repository
    - `description` (optional): A short description
    - `private` (optional): Whether the repository is private (default: false)
    - `auto_init` (optional): Create initial commit with empty README (default: false)

- `create_commit`: Create a new commit with file changes

  - Parameters:
    - `repo` (required): The name of the repository
    - `owner` (optional): The account owner. If not provided, uses authenticated user.
    - `branch` (optional): The branch name (default: "main")
    - `message` (required): The commit message
    - `files` (required): Array of files to include in commit
      - Each file requires:
        - `path`: File path relative to repository root
        - `content`: File content

- `push`: Push changes to a remote repository

  - Parameters:
    - `repo` (required): The name of the repository
    - `owner` (optional): The account owner. If not provided, uses authenticated user.
    - `branch` (optional): The branch name (default: "main")

- `pull`: Pull changes from a remote repository
  - Parameters:
    - `repo` (required): The name of the repository
    - `owner` (optional): The account owner. If not provided, uses authenticated user.
    - `branch` (required): The branch name

## Requirements

- Node.js 18+
- GitHub personal access token with appropriate permissions
- Set `GITHUB_TOKEN` environment variable

## Installation

```bash
npm install
npm run build
```

## Configuration

Set your GitHub token as an environment variable:

```bash
export GITHUB_TOKEN=your_token_here
```

## Usage

Run the server:

```bash
npm start
```

## Development

For development with auto-rebuild:

```bash
npm run watch
```

## Debugging

Use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):

```bash
npm run inspector
```