techybiky

GitHub MCP Server

Community techybiky
Updated

GitHub MCP Server

Connect Claude directly to your GitHub repositories as an intelligent copilot for code changes, commits, and PRs.

Use Claude to:

  • ✅ Read & explore code
  • ✅ Update files with auto-commits
  • ✅ Create branches & manage PRs
  • ✅ Commit multiple files at once
  • ✅ Search & analyze code patterns
  • ✅ All with proper git messages & co-author attribution

Works anywhere: Claude DesktopWeb DashboardMobileLocal VPS

🎯 What This Does

Before (Manual)

"Claude, how do I fix this error?"
→ Claude explains in chat
→ You manually edit files
→ You manually commit & push

After (GitHub MCP)

"Claude, fix the MACD signal calculation and commit"
→ Claude reads the code
→ Makes the fix
→ Commits with a proper message
→ Shows you the commit link

🚀 Quick Start

1. One-Time Setup (5 min)

# Clone the MCP server
git clone https://github.com/techybiky/github-mcp.git
cd github-mcp

# Install dependencies
npm install

# Build for production
npm run build

2. Get GitHub Token

  1. Go to https://github.com/settings/tokens/new
  2. Create "Personal Access Token (Classic)"
  3. Select scopes: repo, read:user, workflow
  4. Copy the token (you won't see it again)

3. Configure Claude Desktop

macOS/Linux:

cat > ~/.config/Claude/claude_desktop_config.json << 'EOF'
{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/github-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_paste_your_token",
        "GITHUB_OWNER": "techybiky",
        "GITHUB_REPO": "niftybot"
      }
    }
  }
}
EOF

Windows:Create %APPDATA%\Claude\claude_desktop_config.json with the same content above.

4. Restart Claude Desktop

Close and reopen Claude. GitHub tools appear in the sidebar.

💡 Usage Examples

Read Code

YOU:     "Show me the current trading signal logic"
CLAUDE:  ✓ Fetches src/signals.js
         ✓ Explains the MACD/RSI calculation
         ✓ Points out potential improvements

Update & Commit

YOU:     "Update MACD threshold to 0.35 and commit"
CLAUDE:  ✓ Reads current file (gets SHA)
         ✓ Updates the threshold
         ✓ Commits with message: "refactor: adjust MACD threshold to 0.35"
         ✓ Shows commit link

Create Feature Branch

YOU:     "Create a branch for fixing the Groww API symbol mapping"
CLAUDE:  ✓ Creates branch: feature/groww-symbol-fix
         ✓ Switches you there
         ✓ Ready to make changes

Batch Commit

YOU:     "Add error handling to both index.js and api.js"
CLAUDE:  ✓ Reads both files
         ✓ Adds error handling to both
         ✓ Single commit: "feat: add comprehensive error handling"

Create PR

YOU:     "Create a PR for the telegram-alerts branch"
CLAUDE:  ✓ Opens PR with auto-generated title & description
         ✓ Links to Telegram implementation details
         ✓ Shows PR URL

🛠 Tools Available

Tool Purpose
read_file Read file contents (get SHA for editing)
write_file Create/update file (auto-commits)
delete_file Delete file (auto-commits)
list_files Browse repo structure
create_branch Create new branch from main/other
list_branches List all branches
get_branch_info Branch details & protection status
commit_multiple Batch commit multiple files
create_pull_request Open PR (auto-description)
list_commits View commit history
get_repo_info Repo metadata (stars, language, etc)
search_files Find files by pattern/name

📋 Multi-Repo Setup

Manage multiple repos in one Claude instance:

{
  "mcpServers": {
    "github-niftybot": {
      "command": "node",
      "args": ["/path/to/github-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxx",
        "GITHUB_REPO": "niftybot"
      }
    },
    "github-coexist": {
      "command": "node",
      "args": ["/path/to/github-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxx",
        "GITHUB_REPO": "coexist"
      }
    }
  }
}

Then in Claude: "Switch to github-coexist and show me the migrations"

🐳 Deployment

Docker

docker build -t github-mcp .
docker run -e GITHUB_TOKEN=ghp_xxx \
           -e GITHUB_REPO=niftybot \
           -e GITHUB_OWNER=techybiky \
           github-mcp

Vercel

vercel --env GITHUB_TOKEN=ghp_xxx --env GITHUB_REPO=niftybot

Railway

railway link
railway up

Local VPS

git clone https://github.com/techybiky/github-mcp.git
cd github-mcp
npm install && npm run build
GITHUB_TOKEN=ghp_xxx GITHUB_REPO=niftybot npm start

🌐 HTTP Server (Optional)

If you want to access this from web/mobile (not just Claude):

npm run http
# Runs on http://localhost:3000
# API Key printed to console

Example API call:

curl -X POST http://localhost:3000/api/call \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "read_file",
    "params": {"path": "package.json"}
  }'

🔐 Security

Token Management

  1. Create token: https://github.com/settings/tokens/new
  2. Scopes needed: repo, read:user, workflow
  3. Storage: Keep in ~/.config/Claude/ (not committed to git)
  4. Rotation: Regenerate monthly in Settings

Best Practices

  • ✅ Use environment variables (never hardcode)
  • ✅ Store config in ~/.config/ (local machine only)
  • ✅ Use fine-grained tokens for enterprise
  • ✅ Rotate tokens regularly
  • ✅ Never commit claude_desktop_config.json with real tokens

🚨 Troubleshooting

GitHub tools not showing in Claude

Solution 1: Check config file syntax

# macOS/Linux
cat ~/.config/Claude/claude_desktop_config.json | jq .

# Windows - open in text editor and validate JSON

Solution 2: Verify node path

which node  # macOS/Linux
where node  # Windows
# Use full path in config: /usr/bin/node or /opt/homebrew/bin/node

Solution 3: Restart Claude Desktop

  • Close completely
  • Reopen
  • Check sidebar for tools

"401 Unauthorized"

"404 Not Found"

  • Wrong repo name → Check GITHUB_REPO in config
  • Wrong owner → Check GITHUB_OWNER in config (default: techybiky)
  • Token can't access repo → Must have repo scope

"409 Conflict"

  • File SHA is stale → Claude auto-retries by re-reading file
  • Branch was updated → Try again

📦 Project Structure

github-mcp/
├── src/
│   ├── index.js           # MCP server entry (stdio transport)
│   ├── mcp-server.js      # Tool definitions & handlers
│   ├── github.js          # GitHub REST API wrapper
│   └── http-server.js     # Optional HTTP server
├── dist/                  # Built files (generated)
├── package.json
├── Dockerfile             # For containerized deployment
├── .env.example           # Environment variables template
├── claude_desktop_config.template.json
├── SETUP.md               # Detailed setup instructions
└── README.md              # This file

🎓 How It Works

  1. You talk to Claude in Claude Desktop
  2. Claude calls tools from this MCP server (via stdio)
  3. MCP server calls GitHub API to read/write code
  4. Results come back as text to Claude
  5. Claude shows you what was changed + commit links
Claude Desktop
    ↓ (stdio)
GitHub MCP Server (this repo)
    ↓ (HTTP)
GitHub REST API

📚 Learning Resources

💬 Support & Feedback

📄 License

MIT

🙏 Thanks

Built for KK Das (@techybiky) — SDET, Test Automation Architect, Open Source Builder

Your repos made easier: niftybot • coexist • youtube-bot • job-tracker

Ready to get started? → SETUP.md 🚀

MCP Server · Populars

MCP Server · New

    ronak-create

    FableCut

    Zero-dependency browser video editor that AI agents can drive — JSON timeline, MCP + REST, live-reloading UI

    Community ronak-create
    runesleo

    Polymarket Toolkit

    CLI + AI Skills workflow for profiling Polymarket traders from an address

    Community runesleo
    ohad6k

    Emulo

    Mine your Claude Code and Codex logs into a local you.md agent profile.

    Community ohad6k
    vshulcz

    deja-vu

    Memory layer for coding agents: search, MCP recall, auto-context, secret redaction, stats, share and sync over the session logs Claude Code, Codex and opencode already write. One zero-dep binary.

    Community vshulcz
    Wh1isper

    mcp-email-server

    IMAP and SMTP via MCP Server

    Community Wh1isper