A MCP (Model Context Protocol) server for interacting with GitHub. https://techmavie.digital/mcp-github
Find a file
2025-12-25 18:02:15 +08:00
.github/workflows first commit 2025-12-15 10:26:24 +08:00
deploy first commit 2025-12-15 10:26:24 +08:00
src feat: add persistent analytics, clients breakdown, and dashboard improvements 2025-12-15 12:41:23 +08:00
.gitignore first commit 2025-12-15 10:26:24 +08:00
docker-compose.yml Fix healthcheck configuration and increase start period in docker-compose 2025-12-25 18:02:15 +08:00
Dockerfile first commit 2025-12-15 10:26:24 +08:00
LICENSE first commit 2025-12-15 10:26:24 +08:00
package-lock.json first commit 2025-12-15 10:26:24 +08:00
package.json first commit 2025-12-15 10:26:24 +08:00
README.md first commit 2025-12-15 10:26:24 +08:00
smithery.yaml first commit 2025-12-15 10:26:24 +08:00
tsconfig.json first commit 2025-12-15 10:26:24 +08:00

GitHub MCP Server

MCP (Model Context Protocol) server for interacting with GitHub.

Note: This is a fork of smithery-ai/mcp-servers/github.

What's Changed in This Fork

  • Self-hosted VPS deployment - Added Streamable HTTP transport for hosting on your own server
  • Docker support - Dockerfile and docker-compose.yml for containerized deployment
  • Nginx reverse proxy config - Ready-to-use nginx location block
  • GitHub Actions auto-deploy - Automatic deployment on push to main
  • Analytics dashboard - Built-in usage tracking and visual dashboard
  • Flexible authentication - Support for token via query param, header, or environment variable

MCP Endpoint: https://mcp.techmavie.digital/github/mcp

Analytics Dashboard: https://mcp.techmavie.digital/github/analytics/dashboard

Quick Start (Hosted Server)

The easiest way to use this MCP server is via the hosted endpoint. No installation required!

Client Configuration

For Claude Desktop / Cursor / Windsurf, add to your MCP configuration:

{
  "mcpServers": {
    "github": {
      "transport": "streamable-http",
      "url": "https://mcp.techmavie.digital/github/mcp?token=YOUR_GITHUB_TOKEN"
    }
  }
}

Note: Replace YOUR_GITHUB_TOKEN with your GitHub Personal Access Token.

Test with MCP Inspector

npx @modelcontextprotocol/inspector
# Select "Streamable HTTP"
# Enter URL: https://mcp.techmavie.digital/github/mcp?token=YOUR_GITHUB_TOKEN

Test with curl

# List all available tools
curl -X POST "https://mcp.techmavie.digital/github/mcp?token=YOUR_GITHUB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# Call the hello tool
curl -X POST "https://mcp.techmavie.digital/github/mcp?token=YOUR_GITHUB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hello","arguments":{}}}'

Authentication

The server supports three ways to provide a GitHub token:

  1. Query Parameter (recommended): ?token=YOUR_TOKEN
  2. Header: X-GitHub-Token: YOUR_TOKEN
  3. Environment Variable: GITHUB_PERSONAL_ACCESS_TOKEN (server default)

Available Tools

Repository Tools

Tools for managing GitHub repositories:

  • get_commit: Get details for a specific commit
  • list_commits: Get list of commits in a branch
  • list_branches: List branches in a repository
  • create_or_update_file: Create or update a file in a repository
  • create_repository: Create a new GitHub repository
  • get_file_contents: Get contents of a file or directory
  • fork_repository: Fork a repository to your account or organization

Search Tools

Tools for searching GitHub:

  • search_repositories: Search for GitHub repositories
  • search_code: Search for code across GitHub repositories
  • search_users: Search for GitHub users

Issue Tools

Tools for managing GitHub issues:

  • get_issue: Get details of a specific issue
  • add_issue_comment: Add a comment to an issue
  • search_issues: Search for issues across repositories
  • create_issue: Create a new issue
  • list_issues: List issues in a repository
  • update_issue: Update an existing issue

Pull Request Tools

Tools for managing pull requests:

  • get_pull_request: Get details of a specific pull request
  • update_pull_request: Update an existing pull request
  • list_pull_requests: List pull requests in a repository
  • merge_pull_request: Merge a pull request
  • get_pull_request_files: Get files changed in a pull request
  • get_pull_request_status: Get the status of a pull request
  • get_pull_request_review_comments: Get review comments (line-by-line code comments) for a pull request
  • create_pull_request_review_comment: Create a review comment on a pull request

Self-Hosting (VPS)

If you prefer to run your own instance, see deploy/DEPLOYMENT.md for detailed VPS deployment instructions with Docker and Nginx.

# Using Docker
docker compose up -d --build

# Or run directly
npm run build:tsc
npm run start:http

Local Development

# Install dependencies
npm install

# Run HTTP server in development mode
npm run dev:http

# Or build and run production version
npm run build:tsc
npm run start:http

# Test health endpoint
curl http://localhost:8080/health

Project Structure

├── src/
│   ├── index.ts              # Main MCP server entry point (Smithery)
│   ├── http-server.ts        # Streamable HTTP server for VPS
│   └── tools/
│       ├── issues.ts         # Issue management tools
│       ├── pullrequests.ts   # Pull request tools
│       ├── repositories.ts   # Repository tools
│       └── search.ts         # Search tools
├── deploy/
│   ├── DEPLOYMENT.md         # VPS deployment guide
│   └── nginx-mcp.conf        # Nginx reverse proxy config
├── .github/
│   └── workflows/
│       └── deploy-vps.yml    # GitHub Actions auto-deploy
├── docker-compose.yml        # Docker deployment config
├── Dockerfile                # Container build config
├── package.json              # Project dependencies
├── tsconfig.json             # TypeScript configuration
└── README.md                 # This file

License

MIT