GitHub MCP Server

GitHub MCP Server

Enables AI agents to manage GitHub repositories, branches, issues, pull requests, releases, and actions through natural language.

Category
Visit Server

README

๐Ÿ™ GitHub MCP Server

Version Node.js TypeScript Express MongoDB License MCP GitHub OAuth

An MCP-compliant server built with TypeScript to extend Claude and other AI agents with superpowers for GitHub Repositories, Branches, Commits, Issues, Pull Requests, Releases, and Actions. Pre-built executables available for macOS, Windows, and Linux for easy end-user installation without Node.js dependencies.


<img src="https://raw.githubusercontent.com/chayan-1906/GitHub-MCP/master/github.png" alt="logo" width="150"/>

โš™๏ธ Quick Start

Option 1: Use Pre-built Package

1. Install Claude Desktop:

Download from https://claude.ai/download

2. Download the Executable:

macOS: ๐Ÿ“ฆ Download macOS Executable

Windows: ๐Ÿ“ฆ Download Windows Executable

3. Run the Executable:

  • For macOS users:
    chmod +x github
    ./github
    
  • For Windows users: Double-click the file, or run via terminal: .\github.exe

Note:

  1. No need to run the executable repeatedly
  2. Do NOT delete the executable after running
  3. If you rename, move, or modify the executable, you must run it again (Step 3) to restart it properly

4. ๐ŸŒ Explore Available Tools (Optional)

Visit the homepage to browse all available tools:

  • Homepage: http://localhost:20253/
  • See all 44+ GitHub tools with user-friendly descriptions
  • Great for understanding what the server can do

5. (Optional) Stop the Server:

You can stop the server if needed (launching Claude will automatically stop the currently running instance/port)

6. Launch Claude Desktop

Start Claude Desktop application

7. Start Asking Tasks:

Claude will now recognize the available tools with descriptions

Important: When prompting Claude, include "use available GitHub tools" in your prompts to ensure the LLM utilizes the GitHub MCP tools instead of defaulting to web search

Option 2: Build from Source

1. ๐Ÿ“ Clone the repo

git clone https://github.com/chayan-1906/GitHub-MCP.git
cd GitHub-MCP

2. ๐Ÿ“ฆ Install dependencies

npm install

3. ๐Ÿ”ง Setup Configuration

Configure your credentials in src/config/config.ts:

export const PORT = 20253
export const DB_NAME = "github";
export const CLIENT_ID = "your_github_client_id"
export const CLIENT_SECRET = "your_github_client_secret"
export const GITHUB_CALLBACK_URL = `http://localhost:${PORT}/github/oauth/callback`
export const MONGODB_URI = "your_mongodb_connection_string"
export const TOKEN_SECRET = "your_token_secret"

Replace placeholder values with your actual GitHub OAuth app credentials and MongoDB connection string.

Generate a secure token secret:

openssl rand -hex 32

4. ๐ŸŒ Explore Available Tools

Visit the homepage to see all available tools with user-friendly descriptions:

  • Homepage: http://localhost:20253/
  • Browse all 44+ GitHub tools organized by category
  • View user-friendly descriptions and use cases
  • Perfect for understanding the server's capabilities

5. ๐Ÿ”ง Switch GitHub Accounts

To authenticate with a different GitHub account or refresh your session:

  • Visit: http://localhost:20253/auth
  • Complete OAuth flow with desired GitHub account

6. ๐Ÿงช Run the MCP Server

npm run dev

Or compile and run:

npm run build
npm run bundle
npm run package

๐Ÿ“– User Guide

Detailed documentation: GitHub MCP User Guide


๐Ÿงฐ Available Tools

Tool Name Category Description
my-github-account Profile Retrieves details of the authenticated GitHub user, including username, display name, email (if available), avatar URL, and profile link
list-repositories Repositories Fetches repositories user has access to. Calls repeatedly with increasing currentPage until result is empty
get-repository-details Repositories Fetches metadata of a GitHub repository (e.g., default branch, visibility, description, etc.). Useful before accessing files or commits from a repo
create-repository Repositories Creates a new GitHub repository for the authenticated user with optional description, visibility, and initialization
update-repository Repositories Updates repository description and/or tags (topics) of a GitHub repository
rename-repository Repositories Renames a GitHub repository owned by the authenticated user
delete-repository Repositories Deletes a GitHub repository owned by the authenticated user. This action is irreversible
modify-repository-visibility Repositories Modifies a GitHub repository visibility (private/public/internal)
list-collaborators Repositories Returns a combined list of accepted collaborators and pending invitations for a GitHub Repository, each marked with their status
add-remove-collaborators Repositories Adds or removes a collaborator from a GitHub repository
list-branches Branches Fetches branches of the authenticated user's repository. Calls repeatedly with increasing currentPage until the result is empty
get-branch-details Branches Fetches details of a specific branch in a GitHub repository
create-branch Branches Creates a new branch from a given commit SHA (usually the latest commit of an existing branch)
set-default-branch Branches Sets the default branch in a GitHub repository
delete-branch Branches Deletes a branch from a GitHub repository. Cannot delete the default branch
repository-tree Files Displays the hierarchical tree structure of a GitHub repository branch with ASCII tree formatting. Shows files and directories in a visual tree layout with filtering and pagination support.
get-file-content Files Reads and returns the raw content of a specific file from a GitHub repository branch
commit-remote-file Files Commits a file to a GitHub Repository using GitHub API. This does not use the local file system. โ€ข parentCommitSha & baseTreeSha: must be real SHAs. โ€ข If the repository is empty, omit these fields (don't pass 000โ€ฆ000).
list-commits Commits Fetches commits in a branch of a GitHub repository, page by page
get-commit-modifications Commits Returns the list of files modified in a specific GitHub commit
list-issues Issues Fetches issues from a GitHub repository, page by page. Calls repeatedly with increasing currentPage until result is empty
get-issue-details Issues Fetches detailed information about a specific GitHub issue by issue number
get-issue-comments Issues Fetches all comments for a GitHub issue, including the original issue, all comments, and participant details. Automatically fetches all pages of comments
create-issue Issues Creates a new issue in a GitHub repository. Including body and labels is optional
update-issue Issues Updates the title, body, and/or labels of an existing GitHub issue. Also works for pull requests since PRs are treated as issues for label management.
update-issue-state Issues Updates the state of a GitHub issue (open or closed) by issue number
assign-issue Issues Assigns one or more GitHub users to a GitHub issue
list-pull-requests Pull Requests Fetches all pull requests from a GitHub repository, page by page. Filter by state and sort options available
get-pull-request-details Pull Requests Fetches detailed information about a specific GitHub pull request by PR number
create-pull-request Pull Requests Creates a new pull request in a GitHub repository. Compares changes between two branches and creates a PR for review
update-pull-request Pull Requests Updates title, body, state, and base branch of an existing pull request
list-pull-request-commits Pull Requests Lists all commits in a specific pull request with pagination support
list-pull-request-files Pull Requests Lists all files changed in a specific pull request with diff information
update-pull-request-state Pull Requests Updates the state of a pull request (open or closed)
merge-pull-request Pull Requests Merges a GitHub pull request only if PR is open, not draft, and has no conflicts
get-pull-request-reviews Pull Requests Lists all reviews for a specific GitHub pull request, page by page
create-pull-request-review Pull Requests Creates a review for a GitHub pull request. Can approve, request changes, or add comments
request-pull-request-review Pull Requests Requests reviews from users and/or teams for a GitHub pull request
dismiss-pull-request-review Pull Requests Dismisses a pull request review with a message explaining why it was dismissed
mark-pull-request-review Pull Requests Submits a pending pull request review by marking it with APPROVE, REQUEST_CHANGES, or COMMENT
list-releases Releases Fetches all releases in a GitHub repository, page by page
create-release Releases Creates a GitHub release from an existing tag or creates a new tag and release
update-release Releases Updates an existing GitHub release by release ID with new information
delete-release Releases Deletes a GitHub release by release ID. This action is irreversible

๐Ÿ“‹ Changelog

v1.3.0 (2025-09-17)

๐Ÿ”„ Changes

  • Routing System: Separated system and authentication routes for better code organization
    • Created dedicated SystemRoutes.ts for homepage functionality
    • Moved authentication endpoints to /auth prefix for cleaner URL structure
  • Error Handling: Improved error reporting across all GitHub tool integrations
  • Type Safety: Added ToolsMap interface for better TypeScript type definitions

๐Ÿ“ฆ Dependencies

  • axios: Updated from ^1.11.0 to ^1.12.2
  • mongodb: Updated from ^6.18.0 to ^6.19.0
  • uuid: Updated from ^11.1.0 to ^13.0.0
  • @modelcontextprotocol/sdk: Updated from ^1.17.4 to ^1.18.0
  • typescript: Updated from ^5.8.3 to ^5.9.2

๐Ÿงน Code Quality

  • Removed Legacy Code: Eliminated toolHelpers.ts in favor of mcp-utils package integration
  • Centralized Configuration: All tool definitions now use dynamic parameter descriptions
  • Improved Maintainability: Better separation of concerns between system and authentication logic

v1.2.0 (2025-09-14)

โœจ New Features

  • Interactive Homepage: Complete tool browser at http://localhost:20253/ showcasing all 44+ GitHub MCP tools
  • Tool Categorization: Organized tools by categories (Profile, Repositories, Branches, Issues, PRs, etc.) with modern glassmorphism UI
  • Statistics Dashboard: Real-time stats showing tool counts, categories, and flexibility metrics
  • Enhanced Authentication Flow: Redesigned success page with improved GitHub branding and mobile responsiveness

๐Ÿ”„ Changes

  • Tool Architecture: Refactored tool constants to include structured metadata and categorization
  • Parameter Descriptions: Enhanced user-friendly descriptions for better tool understanding
  • Renamed tools: Renamed get-all-collaborators โ†’ list-collaborators, list-files-in-repository โ†’ repository-tree, get-all-releases โ†’ list-releases for consistency

๐Ÿ“Š Statistics

  • Total Tools: 44+ (organized across 9 categories)
  • New Routes: Homepage (/) with comprehensive tool browser
  • UI/UX: Modern responsive design with glassmorphism styling

v1.1.0 (2025-07-29)

โœจ New Features

  • Release Management Tools: Added complete GitHub release lifecycle management
    • list-releases - Paginated release listing with full metadata
    • create-release - Create releases from existing tags or new tags
    • update-release - Modify existing release information
    • delete-release - Remove releases (irreversible action)

๐Ÿ”„ Changes

  • Renamed my-details โ†’ my-github-account for consistency

๐Ÿ“Š Statistics

  • Total Tools: 29 (increased from 25 in v1.0.0)
  • New Category: Release management operations
  • API Coverage: Extended GitHub REST API v4 support

v1.0.0 (2025-07-19)

๐Ÿš€ Initial Release

  • 25 GitHub API Tools for AI agents
  • OAuth 2.0 Authentication with GitHub
  • Repository Management - CRUD operations, visibility, collaboration
  • Branch Operations - Create, delete, list, set default
  • Issue Management - Create, update, assign, state changes
  • File Operations - Read content, commit files, list repository tree
  • Commit History - List commits, get modifications

๐Ÿ”ง Features

  • ๐Ÿ” OAuth Authentication: Secure GitHub OAuth integration
  • ๐Ÿ“Š Repository Management: Complete CRUD operations for repositories
  • ๐ŸŒณ Branch Operations: Create, list, and manage branches
  • ๐Ÿ“ Issue Tracking: Full issue lifecycle management
  • ๐Ÿ”€ Pull Request Management: Create, review, merge, and manage pull requests
  • ๐Ÿ‘ฅ Collaboration: Manage collaborators and permissions
  • ๐Ÿ“ File Operations: Read, write, and commit files
  • ๐Ÿ”„ Commit History: Access and analyze commit data
  • ๐Ÿš€ Release Management: Create and update releases
  • โšก Real-time Updates: Live synchronization with GitHub API

๐Ÿ› ๏ธ Architecture

The server is structured with:

  • Tools: Individual GitHub operation handlers
  • Services: OAuth and API management
  • Utils: Helper functions and constants
  • Types: TypeScript type definitions
  • Config: Environment and configuration management

๐Ÿ” API Coverage

This MCP server provides comprehensive coverage of GitHub's REST API v4, including:

  • Repository operations
  • Branch management
  • Issue tracking
  • Pull request management
  • File operations
  • Collaboration features
  • Commit history
  • Release management
  • User profile management

๐Ÿ‘จโ€๐Ÿ’ป Tech Stack

  • ๐ŸŸฆ TypeScript โ€“ Type-safe application development
  • ๐Ÿ“„ GitHub API โ€“ GitHub integration and data access
  • ๐Ÿง  MCP SDK โ€“ Model Context Protocol server framework
  • โœ… Zod โ€“ Schema-based input validation
  • ๐Ÿ” OAuth 2.0 โ€“ Secure authentication
  • ๐Ÿ“Š MongoDB โ€“ Data persistence
  • ๐Ÿš€ Express.js โ€“ Web server framework

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/add-github-discussions or git checkout -b fix/oauth-callback-error)
  3. Commit your changes (git commit -m 'Add GitHub Discussions API support' or git commit -m 'Fix OAuth callback redirect issue')
  4. Push to the branch (git push origin feature/add-github-discussions)
  5. Open a Pull Request

๐Ÿ‘จโ€๐Ÿ’ป Author

Padmanabha Das

๐ŸŒŸ Show Your Support

If this project helped you, please give it a โญ๏ธ!

๐Ÿ“ฑ Connect With Me

LinkedIn GitHub

๐Ÿ’ก Need More Tools?

If you need additional GitHub tools or features that aren't currently available, please let me know! I'm happy to extend the functionality based on your requirements

๐Ÿ”— License

ISC


<div align="center"> <p>Made with โค๏ธ by Padmanabha Das</p> <p>โญ Star this repo if you found it helpful!</p> <p><strong>Note:</strong> This server requires GitHub OAuth authentication. Please ensure you have proper credentials configured before running.</p> </div>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured