GitHub Enterprise MCP Server

by ddukbg

29 403 downloads Not rated yet

About

Integrate with the GitHub Enterprise API to access repositories, issues, pull requests, and workflows.

Explore

- Retrieve repository list from GitHub Enterprise instances
- Get detailed repository information
- List repository branches
- View file and directory contents
- Manage issues and pull requests
- Repository management (create, update, delete)
- GitHub Actions workflows management
- User management (list, create, update, delete, suspend/unsuspend users)
- Access enterprise statistics
- Enhanced error handling and user-friendly response formatting

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name GitHub Enterprise MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

- Node.js 18 or higher
- Access to a GitHub Enterprise instance
- Personal Access Token (PAT)

1. Build the Docker image:

    docker build -t github-enterprise-mcp .
    

2. Run the Docker container with environment variables:

    docker run -p 3000:3000 \
      -e GITHUB_TOKEN="your_github_token" \
      -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
      -e DEBUG=true \
      github-enterprise-mcp
    

> Note: The Dockerfile is configured to run with --transport http by default. If you need to change this, you can override the command:

docker run -p 3000:3000 \
  -e GITHUB_TOKEN="your_github_token" \
  -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
  -e DEBUG=true \
  github-enterprise-mcp node dist/index.js --transport http --debug

This method is useful for local development:


npm install

This MCP server supports both English and Korean languages. You can configure the language using:

bash

mcp_github_enterprise_get_repository(owner="octocat", repo="hello-world")

list-repositories

Retrieve repository list for a user or organization

get-repository

Get detailed repository information

list-branches

List branches of a repository

get-content

Retrieve file or directory contents

list-pull-requests

List pull requests in a repository

get-pull-request

Get pull request details

create-pull-request

Create a new pull request

merge-pull-request

Merge a pull request

list-issues

List issues in a repository

get-issue

Get issue details

list-issue-comments

List comments on an issue or pull request

create-issue

Create a new issue

create-repository

Create a new repository

update-repository

Update repository settings

delete-repository

Delete a repository

list-workflows

List GitHub Actions workflows

list-workflow-runs

List workflow runs

trigger-workflow

Trigger a workflow

get-license-info

Get GitHub Enterprise license information

get-enterprise-stats

Get GitHub Enterprise system statistics

This MCP server provides the following tools:

| Tool Name | Description | Parameters | Required PAT Permissions |
|---|---|---|---|
| list-repositories | Retrieve repository list for a user or organization | owner: Username/org name<br>isOrg: Whether it's an organization<br>type: Repository type<br>sort: Sort criteria<br>page: Page number<br>perPage: Items per page | repo |
| get-repository | Get detailed repository information | owner: Repository owner<br>repo: Repository name | repo |
| list-branches | List branches of a repository | owner: Repository owner<br>repo: Repository name<br>protected_only: Whether to show only protected branches<br>page: Page number<br>perPage: Items per page | repo |
| get-content | Retrieve file or directory contents | owner: Repository owner<br>repo: Repository name<br>path: File/directory path<br>ref: Branch/commit (optional) | repo |
| list-pull-requests | List pull requests in a repository | owner: Repository owner<br>repo: Repository name<br>state: PR state filter<br>sort: Sort criteria<br>direction: Sort direction<br>page: Page number<br>per_page: Items per page | repo |
| get-pull-request | Get pull request details | owner: Repository owner<br>repo: Repository name<br>pull_number: Pull request number | repo |
| create-pull-request | Create a new pull request | owner: Repository owner<br>repo: Repository name<br>title: PR title<br>head: Head branch<br>base: Base branch<br>body: PR description<br>draft: Create as draft PR | repo |
| merge-pull-request | Merge a pull request | owner: Repository owner<br>repo: Repository name<br>pull_number: Pull request number<br>merge_method: Merge method<br>commit_title: Commit title<br>commit_message: Commit message | repo |
| list-issues | List issues in a repository | owner: Repository owner<br>repo: Repository name<br>state: Issue state filter<br>sort: Sort criteria<br>direction: Sort direction<br>page: Page number<br>per_page: Items per page | repo |
| get-issue | Get issue details | owner: Repository owner<br>repo: Repository name<br>issue_number: Issue number | repo |
| list-issue-comments | List comments on an issue or pull request | owner: Repository owner<br>repo: Repository name<br>issue_number: Issue/PR number<br>page: Page number<br>per_page: Items per page | repo |
| create-issue | Create a new issue | owner: Repository owner<br>repo: Repository name<br>title: Issue title<br>body: Issue body content<br>labels: Array of label names<br>assignees: Array of user logins<br>milestone: Milestone ID | repo |
| create-repository | Create a new repository | name: Repository name<br>description: Repository description<br>private: Whether private<br>auto_init: Initialize with README<br>gitignore_template: Add .gitignore<br>license_template: Add license<br>org: Organization name | repo |
| update-repository | Update repository settings | owner: Repository owner<br>repo: Repository name<br>description: New description<br>private: Change privacy<br>default_branch: Change default branch<br>has_issues: Enable/disable issues<br>has_projects: Enable/disable projects<br>has_wiki: Enable/disable wiki<br>archived: Archive/unarchive | repo |
| delete-repository | Delete a repository | owner: Repository owner<br>repo: Repository name<br>confirm: Confirmation (must be true) | delete_repo |
| list-workflows | List GitHub Actions workflows | owner: Repository owner<br>repo: Repository name<br>page: Page number<br>perPage: Items per page | actions:read |
| list-workflow-runs | List workflow runs | owner: Repository owner<br>repo: Repository name<br>workflow_id: Workflow ID/filename<br>branch: Filter by branch<br>status: Filter by status<br>page: Page number<br>perPage: Items per page | actions:read |
| trigger-workflow | Trigger a workflow | owner: Repository owner<br>repo: Repository name<br>workflow_id: Workflow ID/filename<br>ref: Git reference<br>inputs: Workflow inputs | actions:write |
| get-license-info | Get GitHub Enterprise license information | - | Requires site_admin (Administrator) account |
| get-enterprise-stats | Get GitHub Enterprise system statistics | - | Requires site_admin (Administrator) account |

> Note: For Enterprise-specific tools (get-license-info and get-enterprise-stats), a user with site administrator privileges is required. A Classic Personal Access Token is recommended, as Fine-grained tokens may not support these Enterprise-level permissions.

Once you have set up the MCP server and configured Cursor to connect to it, you can use the GitHub Enterprise tools directly in Cursor's AI chat. Here are some examples:

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "github enterprise mcp server": {
            "github-enterprise": {
                "command": "npx",
                "args": [
                    "@ddukbg/github-enterprise-mcp"
                ],
                "env": {
                    "GITHUB_ENTERPRISE_URL": "https://github.your-company.com/api/v3",
                    "GITHUB_TOKEN": "your_github_token"
                }
            }
        }
    }
}

McpServers

{
    "github-enterprise": {
        "command": "npx",
        "args": [
            "@ddukbg/github-enterprise-mcp"
        ],
        "env": {
            "GITHUB_ENTERPRISE_URL": "https://github.your-company.com/api/v3",
            "GITHUB_TOKEN": "your_github_token"
        }
    }
}

image

An MCP (Model Context Protocol) server for integration with GitHub Enterprise API. This server provides an MCP interface to easily access repository information, issues, PRs, and more from GitHub Enterprise in Cursor.

Compatibility

This project is primarily designed for GitHub Enterprise Server environments, but it also works with:

- GitHub.com
- GitHub Enterprise Cloud

> Note: Some enterprise-specific features (like license information and enterprise statistics) will not work with GitHub.com or GitHub Enterprise Cloud.

Key Features

- Retrieve repository list from GitHub Enterprise instances
- Get detailed repository information
- List repository branches
- View file and directory contents
- Manage issues and pull requests
- Repository management (create, update, delete)
- GitHub Actions workflows management
- User management (list, create, update, delete, suspend/unsuspend users)
- Access enterprise statistics
- Enhanced error handling and user-friendly response formatting

Getting Started

Prerequisites

- Node.js 18 or higher
- Access to a GitHub Enterprise instance
- Personal Access Token (PAT)

Docker Installation and Setup

Option 1: Running with Docker

1. Build the Docker image:

    docker build -t github-enterprise-mcp .
    

2. Run the Docker container with environment variables:

    docker run -p 3000:3000 \
      -e GITHUB_TOKEN="your_github_token" \
      -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
      -e DEBUG=true \
      github-enterprise-mcp
    

> Note: The Dockerfile is configured to run with --transport http by default. If you need to change this, you can override the command:

docker run -p 3000:3000 \
  -e GITHUB_TOKEN="your_github_token" \
  -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
  -e DEBUG=true \
  github-enterprise-mcp node dist/index.js --transport http --debug
Option 2: Using Docker Compose

1. Create a .env file in the project root with the required environment variables:

    GITHUB_ENTERPRISE_URL=https://github.your-company.com/api/v3
    GITHUB_TOKEN=your_github_token
    DEBUG=true
    

2. Start the container with Docker Compose:

    docker-compose up -d
    

3. Check the logs:

    docker-compose logs -f
    

4. Stop the container:

    docker-compose down
    

Installation and Setup

Local Development (Using Concurrent Mode)

This method is recommended for active development with automatic recompilation and server restarts:

1. Clone the repository and install required packages:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    

2. Run the development server:

    export GITHUB_TOKEN="your_github_token"
    export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
    npm run dev
    

This will:
- Compile TypeScript code automatically when files change
- Restart the server when compiled files are updated
- Run the server in HTTP mode for URL-based connections

3. Connect to Cursor using URL mode as described below

Installation and Setup for Production

Option 1: Using URL Mode (Recommended for Local Development)

This method is the most stable and recommended for local development or testing:

1. Clone the repository and install required packages:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    

2. Build the project:

    npm run build
    chmod +x dist/index.js
    

3. Run the server:

    export GITHUB_TOKEN="your_github_token"
    export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
    node dist/index.js --transport http --debug
    

4. Connect to Cursor using URL mode:
- Add the following to your Cursor's .cursor/mcp.json file:

   {
     "mcpServers": {
       "github-enterprise": {
         "url": "http://localhost:3000/sse"
       }
     }
   }
   
Option 2: Install as a Global Command (npm link)

This method is useful for local development:

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.

Videos about GitHub Enterprise MCP Server

Relevant YouTube tutorials, setups, and demos