{"_id":"github-mcp","_rev":"7-391b68dfc7a6a2f431ca8b1856d65e17","name":"github-mcp","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"github-mcp","version":"0.0.1","keywords":["mcp","github","oauth","issues","model-context-protocol"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.1","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"c8d217f4daf70293eca1138992086a32be685a0b","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.1.tgz","fileCount":11,"integrity":"sha512-rvvEkaitFom2eAteCpYuJoNTjHzTbyokv5wrf2AenzAlc6F2GkBYU0bZ2Kf4kTULAMnamKBJ+Z7N/rNuLmvOBQ==","signatures":[{"sig":"MEUCIQDriRxlhxb0U441n1bWHzKf12HqS0foilxXo/rvIcZirAIgUbq31xtesPnav5tBNT/q6uRTAsdbmgaQAtXE/3/GqkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29800},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eae42652ee7d225b74efd51e7d74a570d8336ce3","scripts":{"dev":"tsc && node dist/index.js","build":"tsc","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"_npmVersion":"11.6.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.25.76","dotenv":"^16.3.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.1_1763437335311_0.43686003076916147","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"github-mcp","version":"0.0.2","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.2","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"homepage":"https://github.com/Seey215/github-mcp#readme","bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"e9198bda88881e7be79eef4369d8f94e29f5b7fc","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.2.tgz","fileCount":15,"integrity":"sha512-qVEPIO7gJGgo2AqzTEkbYjx92atmlqPmn2gkZGOwyejBY2SJqUh2632Dg6crz1z6FEheObO5WxTZxhebq8W2JA==","signatures":[{"sig":"MEYCIQDjdbprES86Y7THVOFBPal6J4ZywU6yO6hTtqUuUVU5aAIhAO25Gfkh2wLrjXocX9O6c7umZ6e+VSv9L3bUrK45uSde","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40989},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ea68eb90d9532b23408210684b522c289702852b","scripts":{"dev":"tsc && node dist/index.js","build":"tsc","start":"node dist/index.js","watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"repository":{"url":"git+https://github.com/Seey215/github-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.25.76","dotenv":"^16.3.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.2_1763448969883_0.6584395054880505","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"github-mcp","version":"0.0.3","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.3","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"homepage":"https://github.com/Seey215/github-mcp#readme","bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"acfcb1314730c2a3c31ddeea3b11ff47e2988639","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.3.tgz","fileCount":15,"integrity":"sha512-FH3m2T4XXnqDCDkyWRO6Kqr93NFJlKM1tmIXRmMIIR+V+nNA0lWk6EkBuNt0A0qVBcB5HK6FNvKGZVzhRzPmnA==","signatures":[{"sig":"MEUCID4kS/Q33+HdeIbFwyRGNqN+A/zhPH21G163oLiurWiIAiEAqR190iC11IP0IJAgWrCaWHs73iYVsgKQ/T9vokxDkng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41015},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ea68eb90d9532b23408210684b522c289702852b","scripts":{"dev":"tsc && node dist/index.js","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"repository":{"url":"git+https://github.com/Seey215/github-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.25.76","dotenv":"^16.3.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.3_1763449380774_0.8007368741761169","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"github-mcp","version":"0.0.4","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.4","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"homepage":"https://github.com/Seey215/github-mcp#readme","bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"8776795cdbe664ca7174b83271b439599163facb","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.4.tgz","fileCount":19,"integrity":"sha512-ISFGIqBlObokoyKCeZnno9UmSrYOkY6QHw60joIJfv3wTYtX45XPGc/PHx/n8DdlMCM/yOpHCN7G40k9Q1jCTw==","signatures":[{"sig":"MEUCIQCEiTrOJyNylbVPx2V0x4EJlV3tfmkAaT2xgEU/QyRBYQIgDuG/6mK40vKfe/QsIn6jJ/T1IUgh4tpa/iI+/7+Q9q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58612},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"264df5f0a77917dfdd3bc097bf5e3ecd4d251dea","scripts":{"dev":"tsc && node dist/index.js","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"repository":{"url":"git+https://github.com/Seey215/github-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.25.76","hono":"^4.10.6","dotenv":"^16.3.1","@hono/node-server":"^1.19.6","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.4_1763483375528_0.5412729864303114","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"github-mcp","version":"0.0.5","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.5","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"homepage":"https://github.com/Seey215/github-mcp#readme","bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"a7e9b60f51e71d22252b4db6eee1abc4b0c03146","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.5.tgz","fileCount":19,"integrity":"sha512-GwuU0oDbBrS+F10FhXJJnypiHexZkrw7qIQGw1AwnjrH11Kk22KtekcHFikaeQvIbImkscZpS2wYx0t779uQjQ==","signatures":[{"sig":"MEYCIQDPLAv8kNujM856fMJBrvnP9JJii6S+c+GFtL3UKLx7UwIhAJPjUylUYJc31p4lt6B5DQ0zH3iz/fr7jET8uMPSpA8s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61690},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e4fdf0be87568286d2cf7a98b5a715a3a0e8ea8a","scripts":{"dev":"tsc && node dist/index.js","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","inspector":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","start-http":"node dist/index.js http","prepublishOnly":"npm run build"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"repository":{"url":"git+https://github.com/Seey215/github-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.76","hono":"^4.10.6","dotenv":"^16.3.1","@hono/node-server":"^1.19.6","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.5_1763715633064_0.5814023036576663","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"github-mcp","version":"0.0.6","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","_id":"github-mcp@0.0.6","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"homepage":"https://github.com/Seey215/github-mcp#readme","bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"bin":{"github-mcp":"dist/index.js"},"dist":{"shasum":"3ff55cf2de19b96c453aae93218aca4c20613cad","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.6.tgz","fileCount":19,"integrity":"sha512-I1stA+wobDJydhMvRgplGZWN7U0v70ytU5OiTdQ+bZ+5LHe5knVFqZuaHjD7Wj59WXE4xbPWM5MWOEtGF7+6nw==","signatures":[{"sig":"MEUCIFkrPQUGeG2rTNlUO1Ujb3Kd4Mrj4A0R28sPtlkhEhm8AiEAyR0KGEyapwAjVXbKMZkMyXphU7tws1mF0pBuO7kbnuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75900},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b2eca3d5bb1dd355064ed6e6b8644d0fec732f84","scripts":{"dev":"tsc && node dist/index.js","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","inspector":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","start-http":"node dist/index.js http","prepublishOnly":"npm run build"},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"repository":{"url":"git+https://github.com/Seey215/github-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"GitHub MCP Server with OAuth support for Issue management","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.76","hono":"^4.10.6","dotenv":"^16.3.1","@hono/node-server":"^1.19.6","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/github-mcp_0.0.6_1764051231094_0.21388576789090274","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"github-mcp","version":"0.0.7","description":"GitHub MCP Server with OAuth support for Issue management","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"github-mcp":"dist/index.js"},"scripts":{"build":"tsc && chmod +x dist/index.js","watch":"tsc --watch","start":"node dist/index.js","start-http":"node dist/index.js http","dev":"tsc && node dist/index.js","inspector":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepublishOnly":"npm run build"},"keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"author":{"name":"Seey215"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Seey215/github-mcp.git"},"bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"homepage":"https://github.com/Seey215/github-mcp#readme","dependencies":{"@hono/node-server":"^1.19.6","@modelcontextprotocol/sdk":"^1.0.4","dotenv":"^16.3.1","hono":"^4.10.6","zod":"^3.25.76"},"devDependencies":{"@types/node":"^20.10.0","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"_id":"github-mcp@0.0.7","gitHead":"d5258cf22160fe8834c66871c17495e836bf5e38","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-bHkXQonefvlw40jkyvMeLleANtxX40nwe7cU0M6OIoVVFs2Tfw7Fm8I7qNXT4GRNHrx2davBaRuTY4iTV+GoSA==","shasum":"4242cb1fcff79269d9c3aeaf6d536a665965e9d6","tarball":"https://registry.npmjs.org/github-mcp/-/github-mcp-0.0.7.tgz","fileCount":19,"unpackedSize":75419,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFdHdcxFqH+hBhcuxwTF+JhPEOjYf2MCWrXM5iUuYmtMAiAsjA60FtyQKJi79HA7wDQgbZg03NnrmgHCPrJ5eXG42Q=="}]},"_npmUser":{"name":"seeygo","email":"seey0107@gmail.com"},"directories":{},"maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/github-mcp_0.0.7_1764328199850_0.6892627245830145"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-18T03:42:15.310Z","modified":"2025-11-28T11:10:00.230Z","0.0.1":"2025-11-18T03:42:15.513Z","0.0.2":"2025-11-18T06:56:10.123Z","0.0.3":"2025-11-18T07:03:00.965Z","0.0.4":"2025-11-18T16:29:35.878Z","0.0.5":"2025-11-21T09:00:33.252Z","0.0.6":"2025-11-25T06:13:51.286Z","0.0.7":"2025-11-28T11:10:00.026Z"},"bugs":{"url":"https://github.com/Seey215/github-mcp/issues"},"author":{"name":"Seey215"},"license":"MIT","homepage":"https://github.com/Seey215/github-mcp#readme","keywords":["mcp","github","oauth","issues","model-context-protocol","github-api","mcp-server","typescript"],"repository":{"type":"git","url":"git+https://github.com/Seey215/github-mcp.git"},"description":"GitHub MCP Server with OAuth support for Issue management","maintainers":[{"name":"seeygo","email":"seey0107@gmail.com"}],"readme":"<div align=\"center\">\n\n![GitHub MCP Server](./logo.svg)\n\n<h1>🚀 Let AI Control Your GitHub</h1>\n\n<p>\n  <strong>A powerful GitHub automation tool that seamlessly connects AI assistants to your GitHub repositories</strong>\n</p>\n\n<p>\n  <a href=\"https://github.com/Seey215/github-mcp/stargazers\"><img src=\"https://img.shields.io/github/stars/Seey215/github-mcp?style=social\" alt=\"GitHub stars\"></a>\n  <a href=\"https://github.com/Seey215/github-mcp/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"></a>\n  <a href=\"https://www.npmjs.com/package/github-mcp\"><img src=\"https://img.shields.io/npm/v/github-mcp.svg\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/Seey215/github-mcp/issues\"><img src=\"https://img.shields.io/github/issues/Seey215/github-mcp.svg\" alt=\"GitHub issues\"></a>\n</p>\n\n</div>\n\n---\n\n## 💡 Why GitHub MCP?\n\nHave you ever faced these challenges?\n\n- ❌ **Repetitive Work**: Manually checking, creating, and updating Issues and Pull Requests every day\n- ❌ **Low Efficiency**: Constantly switching between command line and browser\n- ❌ **Collaboration Difficulties**: Team members need a unified way to operate GitHub\n\n**GitHub MCP solves all of this!**\n\n✅ Let Claude, ChatGPT and other AI assistants **directly operate** GitHub  \n✅ No need to leave the conversation interface, **complete tasks with one sentence**  \n✅ Based on Model Context Protocol, **secure and reliable**  \n✅ Fully open source, **easily extensible** with new features\n\n---\n\n## ⚡️ Quick Start (3 Steps)\n\n### Step 1: Install\n\n```bash\nnpm install github-mcp\n```\n\nOr install globally:\n\n```bash\nnpm install -g github-mcp\n```\n\n### Step 2: Get GitHub Token\n\n1. Visit [GitHub Settings > Personal Access Tokens](https://github.com/settings/tokens)\n2. Click \"Generate new token (classic)\"\n3. Check `repo` permission (for accessing repository information)\n4. Copy the generated Token\n\n### Step 3: Start the Server\n\n```bash\n# Set environment variable\nexport GITHUB_ACCESS_TOKEN=\"your_github_token_here\"\n\n# Start the server\nnpx github-mcp\n```\n\n🎉 **Done!** Now your AI assistant can operate GitHub!\n\n### Alternative Transport: Streamable HTTP (Hono)\n\nNeed an HTTP/SSE endpoint instead of STDIO? Start the Hono-powered Streamable HTTP server:\n\n```bash\nnpx github-mcp streamableHttp\n```\n\nOr enable it via environment variables:\n\n```bash\nMCP_TRANSPORT=streamableHttp STREAMABLE_HTTP_PORT=3001 npx github-mcp\n```\n\nThe Hono server exposes `/mcp` for POST/GET/DELETE requests, automatically handles CORS, and keeps SSE streams open for real-time messaging. It still reuses the same `GitHubMCPServer` logic from STDIO, so your tools and configuration behave identically.\n\n> **Tip**: You can start the server even without a Token, authentication is only required when calling GitHub APIs.\n\n---\n\n## 🎯 Use Cases\n\n### Scenario 1: Quickly View Issue List\n\n**Traditional Way**:\n1. Open browser\n2. Log in to GitHub\n3. Find the repository\n4. Click Issues tab\n5. Manually filter and view\n\n**With GitHub MCP**:\n```\nYou: Help me check what unresolved Issues are in Seey215/github-mcp repository\nAI:  Querying... Found 3 unresolved Issues:\n     1. #12 - Add Pull Request management feature\n     2. #10 - Support GitHub Actions trigger\n     3. #8 - Optimize error messages\n```\n\n### Scenario 2: Batch Process Issues\n\n```\nYou: Mark all Issues with \"bug\" in the title as high priority\nAI:  Added high priority label to 5 Issues\n```\n\n### Scenario 3: Automated Workflows\n\n```\nYou: Summarize new Issues from yesterday every morning at 9 AM\nAI:  Scheduled task created, will send daily report via email\n```\n\n---\n\n## 🛠️ Core Features\n\n### ✅ Currently Available\n\n| Feature | Description | Status |\n|---------|-------------|--------|\n| 🔍 **List Issues** | Query Issues list for any repository | ✅ Available |\n| 📊 **Issue Details** | Get complete information for a single Issue | ✅ Available |\n| 🔐 **Secure Authentication** | Safe access based on GitHub Token | ✅ Available |\n| ⚙️ **Flexible Configuration** | Support environment variables and code configuration | ✅ Available |\n| 🎨 **Object-Oriented Design** | Clear class structure, easy to extend | ✅ Available |\n\n### 🚧 Coming Soon\n\n| Feature | Description | Estimated Time |\n|---------|-------------|----------------|\n| ✏️ **Create Issue** | Quickly create Issues through AI | Q1 2026 |\n| 🏷️ **Label Management** | Add, delete, modify Issue labels | Q1 2026 |\n| 💬 **Comment Feature** | Comment on Issues and PRs | Q1 2026 |\n| 🔀 **Pull Request** | Complete PR management functionality | Q2 2026 |\n| 🤖 **GitHub Actions** | Trigger and monitor workflows | Q2 2026 |\n| 📈 **Data Analytics** | Issue trends and statistical analysis | Q2 2026 |\n\n---\n\n## 📚 Detailed Usage Guide\n\n### Running as MCP Server (Recommended)\n\nThis is the most common usage, suitable for integration with AI tools like Claude Desktop, Continue, etc.\n\n**Configure Claude Desktop**:\n\nEdit the configuration file `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"github-mcp\"],\n      \"env\": {\n        \"GITHUB_ACCESS_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop, and you can use GitHub features in conversations!\n\n### Using as Node.js Library\n\nIf you want to use it in your own project:\n\n```typescript\nimport { GitHubMCPServer } from 'github-mcp';\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\n\n// Create server instance\nconst server = new GitHubMCPServer({\n  token: 'your_github_token',\n  serverName: 'my-custom-server',\n  serverVersion: '1.0.0'\n});\n\n// Connect transport layer\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n\nconsole.log('GitHub MCP Server started!');\n```\n\n### Configuration Options\n\n`GitHubMCPServer` supports the following configuration:\n\n```typescript\ninterface GitHubConfig {\n  token?: string;           // GitHub Personal Access Token\n  apiBase?: string;         // API base URL (default: https://api.github.com)\n  apiVersion?: string;      // API version (default: 2022-11-28)\n  serverName?: string;      // Server name (default: github-mcp-server)\n  serverVersion?: string;   // Server version (default: 1.0.0)\n}\n```\n\n**Configuration Priority**: Constructor parameters > Environment variables > Default values\n\n---\n\n## 🔧 API Reference\n\n### Tool: list_issues\n\nList Issues in a specified repository\n\n**Input Parameters**:\n```typescript\n{\n  owner: string;    // Repository owner, e.g., \"Seey215\"\n  repo: string;     // Repository name, e.g., \"github-mcp\"\n  state?: 'open' | 'closed';  // Issue state (optional, default 'open')\n}\n```\n\n**Return Data**:\n```typescript\n{\n  issues: Array<{\n    number: number;        // Issue number\n    title: string;         // Title\n    body: string | null;   // Description content\n    state: 'open' | 'closed';\n    user: string;          // Creator\n    created_at: string;    // Creation time\n    updated_at: string;    // Update time\n    html_url: string;      // GitHub page link\n  }>\n}\n```\n\n**Usage Example**:\n```typescript\n// In AI conversation\n\"Help me check all Issues in Seey215/github-mcp repository\"\n\n// Underlying call\nawait server.callTool('list_issues', {\n  owner: 'Seey215',\n  repo: 'github-mcp'\n});\n```\n\n---\n\n## 🏗️ Architecture Design\n\n### Object-Oriented Architecture\n\n```\n┌─────────────────────────────────────┐\n│   GitHubMCPServer (Core Class)      │\n├─────────────────────────────────────┤\n│ - config: GitHubConfig              │\n│ - server: McpServer                 │\n├─────────────────────────────────────┤\n│ + constructor(config?)              │\n│ + connect(transport)                │\n│ - registerTools()                   │\n│ - githubApiRequest(endpoint)        │\n└─────────────────────────────────────┘\n         │\n         │ uses\n         ▼\n┌─────────────────────────────────────┐\n│   MCP SDK (Communication Protocol)  │\n│   - StdioServerTransport            │\n│   - Tool Registration & Invocation  │\n└─────────────────────────────────────┘\n         │\n         │ calls\n         ▼\n┌─────────────────────────────────────┐\n│   GitHub REST API                   │\n│   - Issues                          │\n│   - Pull Requests (coming soon)     │\n│   - Actions (planned)               │\n└─────────────────────────────────────┘\n```\n\n### Design Principles\n\n- **Single Responsibility**: `GitHubMCPServer` focuses on GitHub API integration\n- **Encapsulation**: Private methods hide implementation details\n- **Configurability**: Flexible constructor supports multiple configuration methods\n- **Extensibility**: Clear structure makes it easy to add new tools\n- **Lazy Validation**: Token is only validated when using API, improving user experience\n\n---\n\n## 🤝 Contributing\n\nWe warmly welcome community contributions! Whether it's:\n\n- 🐛 **Report Bugs**: Found an issue? Submit an [Issue](https://github.com/Seey215/github-mcp/issues)\n- 💡 **Suggest Features**: Have a great idea? Tell us!\n- 🔨 **Submit Code**: Fork the project, submit a Pull Request\n- 📖 **Improve Documentation**: Help improve docs and examples\n\n### Development Environment Setup\n\n```bash\n# 1. Fork and clone repository\ngit clone https://github.com/your-username/github-mcp.git\ncd github-mcp\n\n# 2. Install dependencies\nnpm install\n\n# 3. Build project\nnpm run build\n\n# 4. Start development mode (auto-recompile)\nnpm run watch\n\n# 5. Run tests\nnpx tsx demo.ts\n```\n\n### Project Structure\n\n```\ngithub-mcp/\n├── src/\n│   ├── types.ts              # TypeScript type definitions\n│   ├── server.ts             # GitHubMCPServer main class\n│   └── index.ts              # Entry file\n├── dist/                     # Compiled output directory\n├── demo.ts                   # Example and test file\n├── package.json              # Project configuration\n├── tsconfig.json             # TypeScript configuration\n└── README.md                 # Project documentation\n```\n\n### Adding New Tools\n\n1. Add a new private method in `src/server.ts`\n2. Register the tool in `registerTools()`\n3. Update README documentation\n4. Submit a Pull Request\n\nExample code:\n\n```typescript\nprivate registerCreateIssueTool(): void {\n  this.server.registerTool(\n    'create_issue',\n    {\n      title: 'Create Issue',\n      description: 'Create a new issue in a GitHub repository',\n      inputSchema: {\n        owner: z.string(),\n        repo: z.string(),\n        title: z.string(),\n        body: z.string().optional()\n      },\n      outputSchema: {\n        issue: z.object({\n          number: z.number(),\n          html_url: z.string()\n        })\n      }\n    },\n    async ({ owner, repo, title, body }) => {\n      const endpoint = `/repos/${owner}/${repo}/issues`;\n      const data = await this.githubApiRequest(endpoint, {\n        method: 'POST',\n        body: JSON.stringify({ title, body })\n      });\n      \n      return {\n        content: [],\n        structuredContent: { issue: data }\n      };\n    }\n  );\n}\n```\n\n---\n\n## ❓ FAQ\n\n### Q: Why not validate Token at startup?\n\n**A**: For better user experience! Even without a Token, you can:\n- View all available tools\n- Understand each tool's functionality\n- Use them when Token is ready\n\n### Q: Is the Token secure?\n\n**A**: Yes! The Token is only stored in local environment variables and is never uploaded or shared. Recommendations:\n- Use Fine-grained tokens to limit permission scope\n- Rotate Token regularly\n- Never hardcode Token in public code\n\n### Q: Does it support GitHub Enterprise?\n\n**A**: Yes! Just configure a custom API address:\n\n```typescript\nconst server = new GitHubMCPServer({\n  apiBase: 'https://github.your-company.com/api/v3',\n  token: 'your_token'\n});\n```\n\n### Q: How to debug?\n\n**A**: Use the demo file for testing:\n\n```bash\n# Set Token\nexport GITHUB_ACCESS_TOKEN=\"your_token\"\n\n# Run test\nnpx tsx demo.ts\n```\n\n### Q: What about API rate limiting?\n\n**A**: GitHub API has rate limits:\n- Unauthenticated: 60 requests/hour\n- Authenticated: 5000 requests/hour\n\nRecommended to use Token for higher quota.\n\n---\n\n## 📊 Roadmap\n\n### v0.1.0 - Current Version ✅\n- [x] Basic MCP server framework\n- [x] GitHub Issues list query\n- [x] Object-oriented architecture design\n- [x] TypeScript type support\n\n### v0.2.0 - Next Version 🚧\n- [ ] Create and update Issues\n- [ ] Issue comment functionality\n- [ ] Label management\n- [ ] Search functionality optimization\n\n### v0.3.0 - Future Plans 📋\n- [ ] Full Pull Request support\n- [ ] GitHub Actions integration\n- [ ] Webhook support\n- [ ] Batch operation functionality\n\n### v1.0.0 - Long-term Goals 🎯\n- [ ] Complete GitHub API coverage\n- [ ] Graphical management interface\n- [ ] Plugin system\n- [ ] Multi-account management\n\n**Want to participate in development?** Check [Issues](https://github.com/Seey215/github-mcp/issues) for pending tasks!\n\n---\n\n## 🌟 Acknowledgments\n\nThanks to the following projects and communities:\n\n- [Model Context Protocol](https://modelcontextprotocol.io/) - Powerful AI integration protocol\n- [GitHub REST API](https://docs.github.com/rest) - Comprehensive API documentation\n- [Anthropic Claude](https://www.anthropic.com/) - Excellent AI assistant\n- All contributors and users ❤️\n\n---\n\n## 📞 Contact\n\n- **GitHub**: [@Seey215](https://github.com/Seey215)\n- **Issues**: [Submit Issues](https://github.com/Seey215/github-mcp/issues)\n- **Discussions**: [Join Discussion](https://github.com/Seey215/github-mcp/issues)\n\n---\n\n## 📄 License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n```\nMIT License\n\nCopyright (c) 2025 Seey215\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction...\n```\n\n---\n\n<div align=\"center\">\n\n**If this project helps you, please give it a ⭐️ Star!**\n\nMade with ❤️ by [Seey215](https://github.com/Seey215)\n\n</div>\n","readmeFilename":"README.md"}