GitHub
About
Interact with the GitHub API for file operations, repository management, and search.
Details
- Author
- alexkissijr
- Downloads
- 282
- Categories
- Developer Tools, Other, Search, Knowledge Base
- Tags
- #git
Jump to
- Automatic branch creation when creating/updating files
- Comprehensive error handling with clear messages
- Git history preservation without force pushing
- Batch operations for single and multi-file commits
- Advanced search for code, issues/PRs, and users
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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
GitHubCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
—
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"github": {
"unreal-mcp-server": {
"command": "docker",
"args": [
"build",
"-t",
"mcp/github",
"-f",
"src/github/Dockerfile",
"."
]
}
}
}
}
McpServers
{
"unreal-mcp-server": {
"command": "docker",
"args": [
"build",
"-t",
"mcp/github",
"-f",
"src/github/Dockerfile",
"."
]
}
}
MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.
- Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist
- Comprehensive Error Handling: Clear error messages for common issues
- Git History Preservation: Operations maintain proper Git history without force pushing
- Batch Operations: Support for both single-file and multi-file operations
- Advanced Search: Support for searching code, issues/PRs, and users
- Create or update a single file in a repository
- Inputs:
- owner(string): Repository owner (username or organization)
- repo(string): Repository name
- path(string): Path where to create/update the file
- content(string): Content of the file
- message(string): Commit message
- branch(string): Branch to create/update the file in
- sha(optional string): SHA of file being replaced (for updates)
- Push multiple files in a single commit
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- branch(string): Branch to push to
- files(array): Files to push, each withpathandcontent
- message(string): Commit message
- Search for GitHub repositories
- Inputs:
- query(string): Search query
- page(optional number): Page number for pagination
- perPage(optional number): Results per page (max 100)
- Create a new GitHub repository
- Inputs:
- name(string): Repository name
- description(optional string): Repository description
- private(optional boolean): Whether repo should be private
- autoInit(optional boolean): Initialize with README
- Get contents of a file or directory
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- path(string): Path to file/directory
- branch(optional string): Branch to get contents from
- Create a new issue
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- title(string): Issue title
- body(optional string): Issue description
- assignees(optional string[]): Usernames to assign
- labels(optional string[]): Labels to add
- milestone(optional number): Milestone number
- Create a new pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- title(string): PR title
- body(optional string): PR description
- head(string): Branch containing changes
- base(string): Branch to merge into
- draft(optional boolean): Create as draft PR
- maintainer_can_modify(optional boolean): Allow maintainer edits
- Fork a repository
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- organization(optional string): Organization to fork to
- Create a new branch
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- branch(string): Name for new branch
- from_branch(optional string): Source branch (defaults to repo default)
- List and filter repository issues
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- state(optional string): Filter by state ('open', 'closed', 'all')
- labels(optional string[]): Filter by labels
- sort(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 number
- per_page(optional number): Results per page
- Update an existing issue
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- issue_number(number): Issue number to update
- title(optional string): New title
- body(optional string): New description
- state(optional string): New state ('open' or 'closed')
- labels(optional string[]): New labels
- assignees(optional string[]): New assignees
- milestone(optional number): New milestone number
- Add a comment to an issue
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- issue_number(number): Issue number to comment on
- body(string): Comment text
- Search for code across GitHub repositories
- Inputs:
- q(string): Search query using GitHub code search syntax
- sort(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 number
- Search for issues and pull requests
- Inputs:
- q(string): Search query using GitHub issues search syntax
- sort(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 number
- Search for GitHub users
- Inputs:
- q(string): Search query using GitHub users search syntax
- sort(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 number
- Gets commits of a branch in a repository
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- page(optional string): page number
- per_page(optional string): number of record per page
- sha(optional string): branch name
- Gets the contents of an issue within a repository
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- issue_number(number): Issue number to retrieve
- Get details of a specific pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- List and filter repository pull requests
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- state(optional string): Filter by state ('open', 'closed', 'all')
- head(optional string): Filter by head user/org and branch
- base(optional string): Filter by base branch
- sort(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 number
- Create a review on a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- body(string): Review comment text
- event(string): Review action ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
- commit_id(optional string): SHA of commit to review
- comments(optional array): Line-specific comments, each with:
- path(string): File path
- position(number): Line position in diff
- body(string): Comment text
- Merge a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- commit_title(optional string): Title for merge commit
- commit_message(optional string): Extra detail for merge commit
- merge_method(optional string): Merge method ('merge', 'squash', 'rebase')
- Get the list of files changed in a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- Get the combined status of all status checks for a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- Update a pull request branch with the latest changes from the base branch (equivalent to GitHub's "Update branch" button)
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- expected_head_sha(optional string): The expected SHA of the pull request's HEAD ref
- Get the review comments on a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- Get the reviews on a pull request
- Inputs:
- owner(string): Repository owner
- repo(string): Repository name
- pull_number(number): Pull request number
- language:javascript: Search by programming language
- repo:owner/name: Search in specific repository
- path:app/src: Search in specific path
- extension:js: Search by file extension
- Example:q: "import express" language:typescript path:src/
- is:issueoris:pr: Filter by type
- is:openoris:closed: Filter by state
- label:bug: Search by label
- author:username: Search by author
- Example:q: "memory leak" is:issue is:open label:bug
- type:userortype:org: Filter by account type
- followers:>1000: Filter by followers
- location:London: Search by location
- Example:q: "fullstack developer" location:London followers:>100
For detailed search syntax, seeGitHub's searching documentation.
Create a GitHub Personal Access Tokenwith appropriate permissions:
- Alternatively, if working only with public repositories, select only thepublic_reposcope
To use this with Claude Desktop, add the following to yourclaude_desktop_config.json:
{ "mcpServers": { "github": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "mcp/github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }
{ "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }
docker build -t mcp/github -f src/github/Dockerfile .
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.
An MCP (Model Context Protocol) server providing tools to query Gravitational Wave (GW) data from GraceDB and GWOSC.
searchcode.com — Code Intelligence for LLMs
Structured access to code analysis, search, and retrieval for any public git repository—purpose-built for large language models.
Anchor is local repo and org memory for AI coding agents. It indexes GitHub PR history, current code, tests, regressions, architecture, and cross-repo impact locally, then exposes concise cited context through MCP and CLI workflows. Local-first. Read-only GitHub access. No CLI telemetry. No SaaS. No remote LLM calls.
An MCP server that makes documentation and codebases searchable for AI assistants, supporting local directories and Git repositories.
Creates commit messages from staged files in a local git repository.
An MCP server for interacting with the AtomGit API for version control and code hosting.
A portable MCP server for performing various GitHub operations on any repository.
Manage Forgejo repositories and execute commands through an MCP-compatible chat interface.
Integrates with the Gerrit code review system to review code changes and details.
Make git commits on behalf of AI to track AI contributions in your codebase.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




