{"id":30064628,"url":"https://github.com/chayan-1906/github-mcp","last_synced_at":"2025-08-21T06:38:43.746Z","repository":{"id":305351401,"uuid":"1001360281","full_name":"chayan-1906/GitHub-MCP","owner":"chayan-1906","description":"🧠🤖 MCP-compliant AI agent server in TypeScript 🚀 — Extend Claude \u0026 others with 🐙 GitHub Repos, Issues, Pull Requests \u0026 Actions superpowers!","archived":false,"fork":false,"pushed_at":"2025-07-31T15:20:18.000Z","size":211,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-08T05:26:20.344Z","etag":null,"topics":["claude-ai","claude-desktop","demo-guide-user-guide","featured","github-oauth","llm-integration","mcp-server","model-context-protocol","mongodb","nodejs","portfolio","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chayan-1906.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-13T08:45:46.000Z","updated_at":"2025-07-31T15:20:21.000Z","dependencies_parsed_at":"2025-08-08T05:37:22.434Z","dependency_job_id":null,"html_url":"https://github.com/chayan-1906/GitHub-MCP","commit_stats":null,"previous_names":["chayan-1906/github-mcp"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/chayan-1906/GitHub-MCP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chayan-1906%2FGitHub-MCP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chayan-1906%2FGitHub-MCP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chayan-1906%2FGitHub-MCP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chayan-1906%2FGitHub-MCP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chayan-1906","download_url":"https://codeload.github.com/chayan-1906/GitHub-MCP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chayan-1906%2FGitHub-MCP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271436394,"owners_count":24759332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-ai","claude-desktop","demo-guide-user-guide","featured","github-oauth","llm-integration","mcp-server","model-context-protocol","mongodb","nodejs","portfolio","typescript"],"created_at":"2025-08-08T05:16:58.454Z","updated_at":"2025-08-21T06:38:43.726Z","avatar_url":"https://github.com/chayan-1906.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 GitHub MCP Server\n\n[![Version](https://img.shields.io/badge/version-1.1.0-blue.svg)](https://github.com/chayan-1906/GitHub-MCP)\n[![Node.js](https://img.shields.io/badge/node.js-16.x+-green.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/typescript-5.8.3-blue.svg)](https://www.typescriptlang.org/)\n[![Express](https://img.shields.io/badge/express-5.1.0-black.svg)](https://expressjs.com/)\n[![MongoDB](https://img.shields.io/badge/mongodb-6.17.0-green.svg)](https://www.mongodb.com/)\n[![License](https://img.shields.io/badge/license-ISC-yellow.svg)](https://opensource.org/licenses/ISC)\n[![MCP](https://img.shields.io/badge/model_context_protocol-compliant-purple.svg)](https://modelcontextprotocol.io/)\n[![GitHub OAuth](https://img.shields.io/badge/github-oauth-black.svg)](https://docs.github.com/en/developers/apps/building-oauth-apps)\n\nAn MCP-compliant server built with TypeScript to extend Claude and other AI agents with superpowers for GitHub\nRepositories, Branches, Commits, Issues, Releases, and Actions.\n\n---\n\n![logo](https://raw.githubusercontent.com/chayan-1906/GitHub-MCP/master/github.png)\n\n## ⚙️ Quick Start\n\n### Option 1: Use Pre-built Package\n\n#### 1. Install Claude Desktop:\n\nDownload from [https://claude.ai/download](https://claude.ai/download)\n\n#### 2. Download the Executable:\n\n**macOS:**\n📦 [Download macOS Executable](https://github.com/chayan-1906/GitHub-MCP/releases/download/v1.1.0/github)\n\n**Windows:**\n📦 [Download Windows Executable](https://github.com/chayan-1906/GitHub-MCP/releases/download/v1.1.0/github.exe)\n\n#### 3. Run the Executable:\n\n- **For macOS users**:\n  ```bash\n  chmod +x github\n  ./github\n  ```\n- **For Windows users**:\n  Double-click the file, or run via terminal: `.\\github.exe`\n\n**Note**:\n\n1. No need to run the executable repeatedly\n2. Do NOT delete the executable after running\n3. If you rename, move, or modify the executable, you must run it again (Step 3) to restart it properly\n\n#### 4. (Optional) Stop the Server:\n\nYou can stop the server if needed (launching Claude will automatically stop the currently running instance/port)\n\n#### 5. Launch Claude Desktop\n\nStart Claude Desktop application\n\n#### 6. Start Asking Tasks:\n\nClaude will now recognize the available tools with descriptions\n\n**Important**: When prompting Claude, include \"use available GitHub tools\" in your prompts to ensure the LLM utilizes\nthe GitHub MCP tools instead of defaulting to web search\n\n### Option 2: Build from Source\n\n#### 1. 📁 Clone the repo\n\n```bash\ngit clone https://github.com/chayan-1906/GitHub-MCP.git\ncd GitHub-MCP\n```\n\n#### 2. 📦 Install dependencies\n\n```bash\nnpm install\n```\n\n#### 3. 🔧 Setup Configuration\n\nConfigure your credentials in `src/config/config.ts`:\n\n```typescript\nexport const PORT = 20253\nexport const DB_NAME = \"github\";\nexport const CLIENT_ID = \"your_github_client_id\"\nexport const CLIENT_SECRET = \"your_github_client_secret\"\nexport const GITHUB_CALLBACK_URL = `http://localhost:${PORT}/github/oauth/callback`\nexport const MONGODB_URI = \"your_mongodb_connection_string\"\nexport const TOKEN_SECRET = \"your_token_secret\"\n```\n\nReplace placeholder values with your actual GitHub OAuth app credentials and MongoDB connection string.\n\n**Generate a secure token secret:**\n\n```bash\nopenssl rand -hex 32\n```\n\n#### 4. 🔧 Switch GitHub Accounts\n\nTo authenticate with a different GitHub account or refresh your session:\n\n- Visit: **http://localhost:20253/auth**\n- Complete OAuth flow with desired GitHub account\n\n#### 5. 🧪 Run the MCP Server\n\n```bash\nnpm run dev\n```\n\nOr compile and run:\n\n```bash\nnpm run build\nnpm run bundle\nnpm run package\n```\n\n## 📖 User Guide\n\nDetailed\ndocumentation: [GitHub MCP User Guide](https://versed-blinker-33e.notion.site/GitHub-MCP-User-Guide-2120c027172280fb81ccda9b88b8e265)\n\n---\n\n## 🧰 Available Tools\n\n| Tool Name                      | Category      | Description                                                                                                                                         |\n|--------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|\n| `my-github-account`            | Profile       | Retrieves details of the authenticated GitHub user, including username, display name, email (if available), avatar URL, and profile link            |\n|                                |               |                                                                                                                                                     |\n| `list-repositories`            | Repository    | Fetches repositories user has access to. Calls repeatedly with increasing currentPage until result is empty                                         |\n| `get-repository-details`       | Repository    | Fetches metadata of a GitHub repository (e.g., default branch, visibility, description, etc.). Useful before accessing files or commits from a repo |\n| `create-repository`            | Repository    | Creates a new GitHub repository for the authenticated user with optional description, visibility, and initialization                                |\n| `update-repository`            | Repository    | Updates repository description and/or tags (topics) of a GitHub repository                                                                          |\n| `rename-repository`            | Repository    | Renames a GitHub repository owned by the authenticated user                                                                                         |\n| `delete-repository`            | Repository    | Deletes a GitHub repository owned by the authenticated user. This action is irreversible                                                            |\n| `modify-repository-visibility` | Repository    | Modifies a GitHub repository visibility (private/public/internal)                                                                                   |\n|                                |               |                                                                                                                                                     |\n| `get-all-collaborators`        | Collaboration | Returns a combined list of accepted collaborators and pending invitations for a GitHub Repository, each marked with their status                    |\n| `add-remove-collaborators`     | Collaboration | Adds or removes a collaborator from a GitHub repository                                                                                             |\n|                                |               |                                                                                                                                                     |\n| `list-branches`                | Branch        | Fetches branches of the authenticated user's repository. Calls repeatedly with increasing currentPage until the result is empty                     |\n| `get-branch-details`           | Branch        | Fetches details of a specific branch in a GitHub repository                                                                                         |\n| `create-branch`                | Branch        | Creates a new branch from a given commit SHA (usually the latest commit of an existing branch)                                                      |\n| `set-default-branch`           | Branch        | Sets the default branch in a GitHub repository                                                                                                      |\n| `delete-branch`                | Branch        | Deletes a branch from a GitHub repository. Cannot delete the default branch                                                                         |\n|                                |               |                                                                                                                                                     |\n| `list-files-in-repository`     | File          | Fetches the recursive file structure (tree) of a specified GitHub repository branch. Requires repository and branch name                            |\n| `get-file-content`             | File          | Reads and returns the raw content of a specific file from a GitHub repository branch                                                                |\n| `commit-remote-file`           | File          | Commits a file to a GitHub Repository using GitHub API. This does not use the local file system                                                     |                                |               |                                                                                                                                                     |\n|                                |               |                                                                                                                                                     |\n| `list-commits`                 | Commit        | Fetches commits in a branch of a GitHub repository, page by page                                                                                    |\n| `get-commit-modifications`     | Commit        | Returns the list of files modified in a specific GitHub commit                                                                                      |\n|                                |               |                                                                                                                                                     |\n| `create-issue`                 | Issue         | Creates a new issue in a GitHub repository. Including body and labels is optional                                                                   |\n| `update-issue`                 | Issue         | Updates the title and/or body of an existing GitHub issue                                                                                           |\n| `update-issue-state`           | Issue         | Updates the state of a GitHub issue (open or closed) by issue number                                                                                |\n| `assign-issue`                 | Issue         | Assigns one or more GitHub users to a GitHub issue                                                                                                  |\n|                                |               |                                                                                                                                                     |\n| `get-all-releases`             | Release       | Fetches all releases in a GitHub repository, page by page                                                                                           |\n| `create-release`               | Release       | Creates a GitHub release from an existing tag or creates a new tag and release                                                                      |\n| `update-release`               | Release       | Updates an existing GitHub release by release ID with new information                                                                               |\n| `delete-release`               | Release       | Deletes a GitHub release by release ID. This action is irreversible                                                                                 |\n\n---\n\n## 📋 Changelog\n\n### v1.1.0 (2025-07-29)\n\n#### ✨ New Features\n\n- **Release Management Tools**: Added complete GitHub release lifecycle management\n    - `get-all-releases` - Paginated release listing with full metadata\n    - `create-release` - Create releases from existing tags or new tags\n    - `update-release` - Modify existing release information\n    - `delete-release` - Remove releases (irreversible action)\n\n#### 🔄 Changes\n\n- Renamed `my-details` → `my-github-account` for consistency\n\n#### 📊 Statistics\n\n- **Total Tools**: 29 (increased from 25 in v1.0.0)\n- **New Category**: Release management operations\n- **API Coverage**: Extended GitHub REST API v4 support\n\n### v1.0.0 (2025-07-19)\n\n#### 🚀 Initial Release\n\n- **25 GitHub API Tools** for AI agents\n- **OAuth 2.0 Authentication** with GitHub\n- **Repository Management** - CRUD operations, visibility, collaboration\n- **Branch Operations** - Create, delete, list, set default\n- **Issue Management** - Create, update, assign, state changes\n- **File Operations** - Read content, commit files, list repository tree\n- **Commit History** - List commits, get modifications\n\n---\n\n## 🔧 Features\n\n- **🔐 OAuth Authentication**: Secure GitHub OAuth integration\n- **📊 Repository Management**: Complete CRUD operations for repositories\n- **🌳 Branch Operations**: Create, list, and manage branches\n- **📝 Issue Tracking**: Full issue lifecycle management\n- **👥 Collaboration**: Manage collaborators and permissions\n- **📁 File Operations**: Read, write, and commit files\n- **🔄 Commit History**: Access and analyze commit data\n- **🚀 Release Management**: Create and update releases\n- **⚡ Real-time Updates**: Live synchronization with GitHub API\n\n## 🛠️ Architecture\n\nThe server is structured with:\n\n- **Tools**: Individual GitHub operation handlers\n- **Services**: OAuth and API management\n- **Utils**: Helper functions and constants\n- **Types**: TypeScript type definitions\n- **Config**: Environment and configuration management\n\n## 🔍 API Coverage\n\nThis MCP server provides comprehensive coverage of GitHub's REST API v4, including:\n\n- Repository operations\n- Branch management\n- Issue tracking\n- File operations\n- Collaboration features\n- Commit history\n- Release management\n- User profile management\n\n## 👨‍💻 Tech Stack\n\n- 🟦 **TypeScript** – Type-safe application development\n- 📄 **GitHub API** – GitHub integration and data access\n- 🧠 **MCP SDK** – Model Context Protocol server framework\n- ✅ **Zod** – Schema-based input validation\n- 🔐 **OAuth 2.0** – Secure authentication\n- 📊 **MongoDB** – Data persistence\n- 🚀 **Express.js** – Web server framework\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the project\n2. Create your feature branch (`git checkout -b feature/add-github-discussions` or\n   `git checkout -b fix/oauth-callback-error`)\n3. Commit your changes (`git commit -m 'Add GitHub Discussions API support'` or\n   `git commit -m 'Fix OAuth callback redirect issue'`)\n4. Push to the branch (`git push origin feature/add-github-discussions`)\n5. Open a Pull Request\n\n## 👨‍💻 Author\n\n**Padmanabha Das**\n\n- GitHub: [@chayan-1906](https://github.com/chayan-1906)\n- LinkedIn: [Padmanabha Das](https://www.linkedin.com/in/padmanabha-das-59bb2019b/)\n- Email: padmanabhadas9647@gmail.com\n\n## 🌟 Show Your Support\n\nIf this project helped you, please give it a ⭐️!\n\n## 📱 Connect With Me\n\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue)](https://www.linkedin.com/in/chayan-ranjan-das/)\n[![GitHub](https://img.shields.io/badge/GitHub-Follow-black)](https://github.com/chayan-1906)\n\n## 💡 Need More Tools?\n\nIf you need additional GitHub tools or features that aren't currently available, please let me know! I'm happy to extend\nthe functionality based on your requirements\n\n## 🔗 License\n\nISC\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eMade with ❤️ by Padmanabha Das\u003c/p\u003e\n  \u003cp\u003e⭐ Star this repo if you found it helpful!\u003c/p\u003e\n  \u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e This server requires GitHub OAuth authentication. Please ensure you have proper credentials configured before running.\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchayan-1906%2Fgithub-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchayan-1906%2Fgithub-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchayan-1906%2Fgithub-mcp/lists"}