GitHub Enterprise Integration
STDIOMCP Server for GitHub API, enabling file operations, repository management and search functionality.
MCP Server for GitHub API, enabling file operations, repository management and search functionality.
MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.
This guide will help you install and configure the GitHub Enterprise MCP server in Cline, enabling you to use GitHub API functionality directly through Cline.
git clone https://github.com/yourusername/github-enterprise-mcp.git cd github-enterprise-mcp
npm install npm run build
This will create a dist
directory with the compiled JavaScript files.
repo
scope ("Full control of private repositories")
public_repo
scopeOpen VS Code
Locate the Cline MCP settings file at:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Add the GitHub Enterprise MCP server configuration to the mcpServers
object:
{ "mcpServers": { "github-enterprise": { "command": "node", "args": [ "/absolute/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-personal-access-token", "GITHUB_API_URL": "https://api.github.com" // For GitHub.com // For GitHub Enterprise, use your instance URL, e.g., "https://github.yourdomain.com/api/v3" }, "disabled": false, "autoApprove": [] } } }
Replace /absolute/path/to/github-enterprise-mcp/dist/index.js
with the absolute path to the built index.js file.
Locate the Claude Desktop configuration file at:
%APPDATA%\Claude\claude_desktop_config.json
~/Library/Application Support/Claude/claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
Add the GitHub Enterprise MCP server configuration to the mcpServers
object:
{ "mcpServers": { "github-enterprise": { "command": "node", "args": [ "/absolute/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-personal-access-token", "GITHUB_API_URL": "https://api.github.com" // For GitHub.com // For GitHub Enterprise, use your instance URL, e.g., "https://github.yourdomain.com/api/v3" }, "disabled": false, "autoApprove": [] } } }
After configuring the MCP settings, restart Cline (VS Code or Claude Desktop) to apply the changes.
To verify that the GitHub Enterprise MCP server is properly installed and configured, you can ask Cline to use one of the GitHub tools:
Can you search for repositories with the keyword "react" using the GitHub Enterprise MCP server?
Cline should be able to use the search_repositories
tool to search for repositories with the keyword "react".
For an interactive installation experience, copy and paste the following text into Cline, and it will guide you through the installation process:
I want you to help me install the GitHub Enterprise MCP server. Here's what I need you to do:
1. First, explain what the GitHub Enterprise MCP server is and what capabilities it will give you.
2. Guide me through the installation process:
- Help me clone the repository (if I haven't already)
- Help me install dependencies and build the project
- Guide me through creating a GitHub Personal Access Token if I don't have one
- Help me configure the MCP settings in either VS Code or Claude Desktop
- Verify the installation is working
3. Show me some examples of how I can use the GitHub Enterprise MCP server once it's installed.
Please start by explaining what the GitHub Enterprise MCP server is and what it will allow you to do for me.
After installation, you can ask Cline to perform GitHub operations directly, such as:
If you encounter issues with the GitHub Enterprise MCP server:
You can specify a GitHub API version by adding the GITHUB_API_VERSION
environment variable:
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-personal-access-token", "GITHUB_API_URL": "https://api.github.com", "GITHUB_API_VERSION": "2022-11-28" }
For GitHub Enterprise instances that use different authentication methods, you may need to provide additional configuration. Refer to the Octokit documentation for more information.
create_or_update_file
owner
(string): Repository owner (username or organization)repo
(string): Repository namepath
(string): Path where to create/update the filecontent
(string): Content of the filemessage
(string): Commit messagebranch
(string): Branch to create/update the file insha
(optional string): SHA of file being replaced (for updates)push_files
owner
(string): Repository ownerrepo
(string): Repository namebranch
(string): Branch to push tofiles
(array): Files to push, each with path
and content
message
(string): Commit messagesearch_repositories
query
(string): Search querypage
(optional number): Page number for paginationperPage
(optional number): Results per page (max 100)create_repository
name
(string): Repository namedescription
(optional string): Repository descriptionprivate
(optional boolean): Whether repo should be privateautoInit
(optional boolean): Initialize with READMEget_file_contents
owner
(string): Repository ownerrepo
(string): Repository namepath
(string): Path to file/directorybranch
(optional string): Branch to get contents fromcreate_issue
owner
(string): Repository ownerrepo
(string): Repository nametitle
(string): Issue titlebody
(optional string): Issue descriptionassignees
(optional string[]): Usernames to assignlabels
(optional string[]): Labels to addmilestone
(optional number): Milestone numbercreate_pull_request
owner
(string): Repository ownerrepo
(string): Repository nametitle
(string): PR titlebody
(optional string): PR descriptionhead
(string): Branch containing changesbase
(string): Branch to merge intodraft
(optional boolean): Create as draft PRmaintainer_can_modify
(optional boolean): Allow maintainer editsfork_repository
owner
(string): Repository ownerrepo
(string): Repository nameorganization
(optional string): Organization to fork tocreate_branch
owner
(string): Repository ownerrepo
(string): Repository namebranch
(string): Name for new branchfrom_branch
(optional string): Source branch (defaults to repo default)list_issues
owner
(string): Repository ownerrepo
(string): Repository namestate
(optional string): Filter by state ('open', 'closed', 'all')labels
(optional string[]): Filter by labelssort
(optional string): Sort by ('created', 'updated', 'comments')direction
(optional string): Sort direction ('asc', 'desc')since
(optional string): Filter by date (ISO 8601 timestamp)page
(optional number): Page numberper_page
(optional number): Results per pageupdate_issue
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to updatetitle
(optional string): New titlebody
(optional string): New descriptionstate
(optional string): New state ('open' or 'closed')labels
(optional string[]): New labelsassignees
(optional string[]): New assigneesmilestone
(optional number): New milestone numberadd_issue_comment
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to comment onbody
(string): Comment textsearch_code
q
(string): Search query using GitHub code search syntaxsort
(optional string): Sort field ('indexed' only)order
(optional string): Sort order ('asc' or 'desc')per_page
(optional number): Results per page (max 100)page
(optional number): Page numbersearch_issues
q
(string): Search query using GitHub issues search syntaxsort
(optional string): Sort field (comments, reactions, created, etc.)order
(optional string): Sort order ('asc' or 'desc')per_page
(optional number): Results per page (max 100)page
(optional number): Page numbersearch_users
q
(string): Search query using GitHub users search syntaxsort
(optional string): Sort field (followers, repositories, joined)order
(optional string): Sort order ('asc' or 'desc')per_page
(optional number): Results per page (max 100)page
(optional number): Page numberlist_commits
owner
(string): Repository ownerrepo
(string): Repository namepage
(optional string): page numberper_page
(optional string): number of record per pagesha
(optional string): branch nameget_issue
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to retrieveget_pull_request
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberlist_pull_requests
owner
(string): Repository ownerrepo
(string): Repository namestate
(optional string): Filter by state ('open', 'closed', 'all')head
(optional string): Filter by head user/org and branchbase
(optional string): Filter by base branchsort
(optional string): Sort by ('created', 'updated', 'popularity', 'long-running')direction
(optional string): Sort direction ('asc', 'desc')per_page
(optional number): Results per page (max 100)page
(optional number): Page numbercreate_pull_request_review
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberbody
(string): Review comment textevent
(string): Review action ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id
(optional string): SHA of commit to reviewcomments
(optional array): Line-specific comments, each with:
path
(string): File pathposition
(number): Line position in diffbody
(string): Comment textmerge_pull_request
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numbercommit_title
(optional string): Title for merge commitcommit_message
(optional string): Extra detail for merge commitmerge_method
(optional string): Merge method ('merge', 'squash', 'rebase')get_pull_request_files
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberget_pull_request_status
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberupdate_pull_request_branch
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberexpected_head_sha
(optional string): The expected SHA of the pull request's HEAD refget_pull_request_comments
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberget_pull_request_reviews
owner
(string): Repository ownerrepo
(string): Repository namepull_number
(number): Pull request numberlanguage:javascript
: Search by programming languagerepo:owner/name
: Search in specific repositorypath:app/src
: Search in specific pathextension:js
: Search by file extensionq: "import express" language:typescript path:src/
is:issue
or is:pr
: Filter by typeis:open
or is:closed
: Filter by statelabel:bug
: Search by labelauthor:username
: Search by authorq: "memory leak" is:issue is:open label:bug
type:user
or type:org
: Filter by account typefollowers:>1000
: Filter by followerslocation:London
: Search by locationq: "fullstack developer" location:London followers:>100
For detailed search syntax, see GitHub's searching documentation.
Create a GitHub Personal Access Token with appropriate permissions:
repo
scope ("Full control of private repositories")
public_repo
scopeTo use this with Claude Desktop, add the following to your claude_desktop_config.json
:
{ "mcpServers": { "github": { "command": "node", "args": [ "/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }
# Install dependencies npm install # Build the project npm run build # Start the server npm start
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.