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.
This project is primarily designed for GitHub Enterprise Server environments, but it also works with:
Note: Some enterprise-specific features (like license information and enterprise statistics) will not work with GitHub.com or GitHub Enterprise Cloud.
Build the Docker image:
docker build -t github-enterprise-mcp .
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 --debugOption 2: Using Docker Compose
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
Start the container with Docker Compose:
Check the logs:
Stop the container:
This method is recommended for active development with automatic recompilation and server restarts:
Clone the repository and install required packages:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install
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:
Connect to Cursor using URL mode as described below
This method is the most stable and recommended for local development or testing:
Clone the repository and install required packages:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install
Build the project:
npm run build chmod +x dist/index.js
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
Connect to Cursor using URL mode:
.cursor/mcp.json
file:{ "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } }
This method is useful for local development:
# After cloning the repository git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp # Install required packages npm install # Build npm run build chmod +x dist/index.js # Link globally npm link # Run as a global command export GITHUB_TOKEN="your_github_token" export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" github-enterprise-mcp --transport=http --debugOption 3: Using npx (When Package is Published)
If the package is published to the public npm registry:
npx @ddukbg/github-enterprise-mcp --token=your_github_token --github-enterprise-url=https://github.your-company.com/api/v3Integration with AI Tools
Add the following to your claude_desktop_config.json
:
{ "mcpServers": { "github-enterprise": { "command": "npx", "args": ["-y", "@ddukbg/github-enterprise-mcp", "--token=YOUR_GITHUB_TOKEN", "--github-enterprise-url=YOUR_GITHUB_ENTERPRISE_URL"] } } }
Replace YOUR_GITHUB_TOKEN
and YOUR_GITHUB_ENTERPRISE_URL
with your actual values.
For the most reliable operation in Cursor, using URL mode is recommended:
Start the server in a separate terminal window:
cd /path/to/github-enterprise-mcp GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" GITHUB_TOKEN="your_github_token" node dist/index.js --transport http
Configure Cursor's MCP settings:
.cursor/mcp.json
file:{ "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } }
Restart Cursor to apply the changes
Alternatively, you can configure Cursor to use the command mode, although URL mode is more reliable:
npx
@ddukbg/github-enterprise-mcp
GITHUB_ENTERPRISE_URL
: Your GitHub Enterprise API URLGITHUB_TOKEN
: Your GitHub personal access tokenAlternatively, you can manually edit your .cursor/mcp.json
file to include:
{ "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" } } } }
This MCP server supports both English and Korean languages. You can configure the language using:
# Set language to Korean export LANGUAGE=ko # Or in .env file LANGUAGE=ko
# Set language to Korean node dist/index.js --language ko
The default language is English if not specified.
Additional Options in HTTP Mode--debug
: Enable debug logging--github-enterprise-url <URL>
: Set GitHub Enterprise API URL--token <TOKEN>
: Set GitHub Personal Access Token--language <LANG>
: Set language (en or ko, default: en)This MCP server provides the following tools:
Tool Name Description Parameters Required PAT Permissionslist-repositories
Retrieve repository list for a user or organization owner
: Username/org name
isOrg
: Whether it's an organization
type
: Repository type
sort
: Sort criteria
page
: Page number
perPage
: Items per page repo
get-repository
Get detailed repository information owner
: Repository owner
repo
: Repository name repo
list-branches
List branches of a repository owner
: Repository owner
repo
: Repository name
protected_only
: Whether to show only protected branches
page
: Page number
perPage
: Items per page repo
get-content
Retrieve file or directory contents owner
: Repository owner
repo
: Repository name
path
: File/directory path
ref
: Branch/commit (optional) repo
list-pull-requests
List pull requests in a repository owner
: Repository owner
repo
: Repository name
state
: PR state filter
sort
: Sort criteria
direction
: Sort direction
page
: Page number
per_page
: Items per page repo
get-pull-request
Get pull request details owner
: Repository owner
repo
: Repository name
pull_number
: Pull request number repo
create-pull-request
Create a new pull request owner
: Repository owner
repo
: Repository name
title
: PR title
head
: Head branch
base
: Base branch
body
: PR description
draft
: Create as draft PR repo
merge-pull-request
Merge a pull request owner
: Repository owner
repo
: Repository name
pull_number
: Pull request number
merge_method
: Merge method
commit_title
: Commit title
commit_message
: Commit message repo
list-issues
List issues in a repository owner
: Repository owner
repo
: Repository name
state
: Issue state filter
sort
: Sort criteria
direction
: Sort direction
page
: Page number
per_page
: Items per page repo
get-issue
Get issue details owner
: Repository owner
repo
: Repository name
issue_number
: Issue number repo
list-issue-comments
List comments on an issue or pull request owner
: Repository owner
repo
: Repository name
issue_number
: Issue/PR number
page
: Page number
per_page
: Items per page repo
create-issue
Create a new issue owner
: Repository owner
repo
: Repository name
title
: Issue title
body
: Issue body content
labels
: Array of label names
assignees
: Array of user logins
milestone
: Milestone ID repo
create-repository
Create a new repository name
: Repository name
description
: Repository description
private
: Whether private
auto_init
: Initialize with README
gitignore_template
: Add .gitignore
license_template
: Add license
org
: Organization name repo
update-repository
Update repository settings owner
: Repository owner
repo
: Repository name
description
: New description
private
: Change privacy
default_branch
: Change default branch
has_issues
: Enable/disable issues
has_projects
: Enable/disable projects
has_wiki
: Enable/disable wiki
archived
: Archive/unarchive repo
delete-repository
Delete a repository owner
: Repository owner
repo
: Repository name
confirm
: Confirmation (must be true) delete_repo
list-workflows
List GitHub Actions workflows owner
: Repository owner
repo
: Repository name
page
: Page number
perPage
: Items per page actions:read
list-workflow-runs
List workflow runs owner
: Repository owner
repo
: Repository name
workflow_id
: Workflow ID/filename
branch
: Filter by branch
status
: Filter by status
page
: Page number
perPage
: Items per page actions:read
trigger-workflow
Trigger a workflow owner
: Repository owner
repo
: Repository name
workflow_id
: Workflow ID/filename
ref
: Git reference
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
Using the Tools in CursorNote: For Enterprise-specific tools (
get-license-info
andget-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:
mcp_github_enterprise_list_repositories(owner="octocat")Getting Repository Information
mcp_github_enterprise_get_repository(owner="octocat", repo="hello-world")
mcp_github_enterprise_list_pull_requests(owner="octocat", repo="hello-world", state="open")
# List issues mcp_github_enterprise_list_issues(owner="octocat", repo="hello-world", state="all") # Get issue details mcp_github_enterprise_get_issue(owner="octocat", repo="hello-world", issue_number=1) # Get issue/PR comments mcp_github_enterprise_list_issue_comments(owner="octocat", repo="hello-world", issue_number=1) # Create a new issue mcp_github_enterprise_create_issue( owner="octocat", repo="hello-world", title="Found a bug", body="Here is a description of the bug", labels=["bug", "important"] )Working with Repository Content
mcp_github_enterprise_get_content(owner="octocat", repo="hello-world", path="README.md")
# Create a new repository
mcp_github_enterprise_create_repository(
name="new-project",
description="This is a new project",
private=true,
auto_init=true
)
# Update repository settings
mcp_github_enterprise_update_repository(
owner="octocat",
repo="hello-world",
description="Updated description",
has_issues=true
)
User Management (Enterprise Only)
These features are specifically designed for GitHub Enterprise Server environments and require administrative permissions:
# List all users in the GitHub Enterprise instance mcp_github_enterprise_list_users(filter="active", per_page=100) # Get a specific user's details mcp_github_enterprise_get_user(username="octocat") # Create a new user (Enterprise only) mcp_github_enterprise_create_user( login="newuser", email="newuser@example.com", name="New User", company="ACME Inc." ) # Update a user's information (Enterprise only) mcp_github_enterprise_update_user( username="octocat", email="updated-email@example.com", location="San Francisco" ) # Suspend a user (Enterprise only) mcp_github_enterprise_suspend_user( username="octocat", reason="Violation of terms of service" ) # Unsuspend a user (Enterprise only) mcp_github_enterprise_unsuspend_user(username="octocat") # List organizations a user belongs to mcp_github_enterprise_list_user_orgs(username="octocat")
Contributions are welcome! Please feel free to submit a Pull Request.
ISC
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4