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.
shell
git clone https://github.com/ddukbg/github-enterprise-mcp.git
cd github-enterprise-mcp
npm install
shell
npm run build
chmod +x dist/index.js
shell
export GITHUB_TOKEN="your_github_token"
export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
node dist/index.js --transport http --debug
Add the following to your Cursor's .cursor/mcp.json
file:
json
{
"mcpServers": {
"github-enterprise": {
"url": "http://localhost:3000/sse"
}
}
}
# 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 --debug
npx @ddukbg/github-enterprise-mcp --token=your_github_token --github-enterprise-url=https://github.your-company.com/api/v3
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.
shell
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:
Open Cursor and go to Settings
.cursor/mcp.json
file:json
{
"mcpServers": {
"github-enterprise": {
"url": "http://localhost:3000/sse",
"env": {
"GITHUB_ENTERPRISE_URL": "https://github.your-company.com/api/v3",
"GITHUB_TOKEN": "your_github_token"
}
}
}
}
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"
}
}
}
}
--debug
: Enable debug logging--github-enterprise-url <URL>
: Set GitHub Enterprise API URL--token <TOKEN>
: Set GitHub Personal Access TokenTool Name | Description | Parameters | Required PAT Permissions |
---|---|---|---|
list-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 |
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 Classic PAT) | - | admin:enterprise |
get-enterprise-stats |
Get GitHub Enterprise system statistics (Requires Classic PAT) | - | admin:enterprise |
Note: For Enterprise-specific tools (
get-license-info
andget-enterprise-stats
), a Classic Personal Access Token withadmin:enterprise
scope is required. Fine-grained tokens do 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")
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)
# 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"]
)
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
)
Contributions are welcome! Please feel free to submit a Pull Request.
ISC
github-enterprise-mcp
No packages published