GitHub MCP TypeScript SDK Server

GitHub MCP TypeScript SDK Server

Provides comprehensive access to GitHub repositories, issues, pull requests, commits, user profiles, and statistics through 10 tools with natural language query support and advanced search capabilities.

Category
Visit Server

README

GitHub MCP TypeScript SDK Server

A comprehensive Model Context Protocol (MCP) server for GitHub that provides access to repositories, issues, pull requests, commits, and user information through a standardized interface. Built with TypeScript and the official MCP SDK.

šŸš€ Features

šŸ“‹ Available Tools (10 Total)

  • get_my_info - Get information about the authenticated GitHub user
  • get_repo_info - Get detailed information about a GitHub repository
  • list_repo_issues - List issues in a repository (with state filtering)
  • list_repo_prs - List pull requests in a repository
  • list_repo_commits - List recent commits in a repository
  • search_repositories - Search for repositories on GitHub
  • get_user_info - Get information about any GitHub user
  • list_user_repos - List repositories belonging to a user
  • get_my_repos - List repositories belonging to the authenticated user
  • get_github_stats - Get comprehensive GitHub statistics for a user

šŸ”§ Capabilities

  • āœ… Repository Information - Name, description, stars, forks, language, visibility
  • āœ… Issue Management - List, filter, and view issue details
  • āœ… Pull Request Tracking - View PR status, authors, and details
  • āœ… Commit History - Browse recent commits with author and message info
  • āœ… User Profiles - Access user information and statistics
  • āœ… Repository Search - Advanced search with filters and sorting
  • āœ… Statistics & Analytics - Comprehensive user and repository metrics
  • āœ… Error Handling - Robust error handling with descriptive messages
  • āœ… Natural Language Queries - Ask questions in plain English

šŸ“¦ Installation

Prerequisites

  • Node.js 18+
  • npm or yarn
  • GitHub Personal Access Token

Setup

  1. Clone the repository:

    git clone <your-repo-url>
    cd github-mcp-ts-sdk
    
  2. Install dependencies:

    npm install
    
  3. Set up environment variables:

    cp env.example .env
    # Edit .env and add your GitHub token
    
  4. Build the project:

    npm run build
    

šŸ”‘ GitHub Token Setup

  1. Go to GitHub Settings > Personal Access Tokens
  2. Click "Generate new token (classic)"
  3. Select the following scopes:
    • repo (Full control of private repositories)
    • user (Read all user profile data)
    • read:org (Read org and team membership)
  4. Copy the generated token and add it to your .env file:
GITHUB_TOKEN=your_github_token_here
GITHUB_USERNAME=your_username_here  # Optional

šŸš€ Usage

Development Mode

npm run dev

Production Mode

npm run build
npm start

Watch Mode (for development)

npm run build:watch

Test the Server

npm test
npm run simple-test
npm run interactive-test
npm run demo

šŸ›  Tool Examples

User Information

Get Your GitHub Profile

{
  "tool": "get_my_info",
  "arguments": {}
}

Response:

šŸ‘¤ **My GitHub Profile**

**Username:** Om-Shree-0709
**Name:** Om Shree
**Bio:** Full Stack Developer
**Followers:** 25
**Following:** 50
**Public Repositories:** 15
**Profile URL:** https://github.com/Om-Shree-0709

Get User Information

{
  "tool": "get_user_info",
  "arguments": {
    "username": "microsoft"
  }
}

Repository Information

Get Repository Details

{
  "tool": "get_repo_info",
  "arguments": {
    "owner": "microsoft",
    "repo": "vscode"
  }
}

Response:

šŸ“ **Repository: microsoft/vscode**

**Description:** Visual Studio Code
**Language:** TypeScript
**Visibility:** public
**Stars:** ⭐ 150000
**Forks:** šŸ“ 25000
**Watchers:** šŸ‘€ 5000
**Created:** 1/1/2015
**Updated:** 12/15/2024
**URL:** https://github.com/microsoft/vscode

Search Repositories

{
  "tool": "search_repositories",
  "arguments": {
    "query": "language:typescript stars:>1000",
    "limit": 10
  }
}

Advanced search examples:

  • language:javascript - Search by programming language
  • stars:>5000 - Filter by minimum stars
  • user:octocat - Search within a specific user's repositories
  • language:python stars:>1000 forks:>100 - Combined filters
  • created:>2023-01-01 - Filter by creation date
  • topic:react - Search by topic tags

Issues and Pull Requests

List Repository Issues

{
  "tool": "list_repo_issues",
  "arguments": {
    "owner": "facebook",
    "repo": "react",
    "state": "open"
  }
}

List Pull Requests

{
  "tool": "list_repo_prs",
  "arguments": {
    "owner": "microsoft",
    "repo": "vscode",
    "state": "open"
  }
}

Commit History

List Recent Commits

{
  "tool": "list_repo_commits",
  "arguments": {
    "owner": "nodejs",
    "repo": "node",
    "limit": 20
  }
}

Statistics

Get User Statistics

{
  "tool": "get_github_stats",
  "arguments": {
    "username": "torvalds"
  }
}

Response:

šŸ“Š **GitHub Statistics for torvalds**

**User Info:**
• Followers: 50000
• Following: 0
• Public Repos: 1

**Repository Stats:**
• Total Repositories: 1
• Total Stars Received: ⭐ 200000
• Total Forks: šŸ“ 80000
• Average Stars per Repo: 200000.0

**Top Languages:**
C: 1

šŸ“š Resources

Repository Resource

Access repository data via URI: github://repository/{owner}/{repo}

Examples:

  • github://repository/microsoft/vscode
  • github://repository/facebook/react

User Resource

Access user data via URI: github://user/{username}

Examples:

  • github://user/octocat
  • github://user/Om-Shree-0709

šŸ’¬ Prompts

Natural Language Queries

Ask questions in natural language about GitHub data:

{
  "prompt": "github_query",
  "arguments": {
    "query": "Show me my most starred repositories"
  }
}

Supported queries:

  • "Show me my most starred repositories"
  • "Search for TypeScript repositories"
  • "What are the open issues in microsoft/vscode?"
  • "List my repositories"
  • "Get statistics for user octocat"

šŸ”§ Configuration

Environment Variables

Create a .env file with:

# Required
GITHUB_TOKEN=your_github_token_here

# Optional
GITHUB_USERNAME=your_username_here

GitHub Token Scopes

Your GitHub token needs these scopes:

  • repo - Full control of private repositories
  • user - Read all user profile data
  • read:org - Read org and team membership

šŸ— Architecture

The server is built using:

  • TypeScript - Type-safe development
  • MCP SDK - Model Context Protocol framework
  • Octokit - Official GitHub API client
  • Zod - Schema validation
  • Stdio Transport - Standard input/output communication

Project Structure

src/
ā”œā”€ā”€ server.ts          # Main server implementation with all tools and resources

dist/                  # Compiled JavaScript
node_modules/          # Dependencies

šŸ”— Integration

With Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/your/github-mcp-server/dist/server.js"],
      "env": {
        "GITHUB_TOKEN": "your_token_here"
      }
    }
  }
}

With Other MCP Clients

The server communicates via stdio and follows the MCP protocol specification. It works with any MCP-compatible client that can send JSON-RPC requests.

Direct JSON-RPC Usage

Send JSON-RPC 2.0 requests to your server:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_repo_info",
    "arguments": {
      "owner": "microsoft",
      "repo": "vscode"
    }
  }
}

šŸ›” Error Handling

The server includes comprehensive error handling:

  • āœ… Authentication errors - Clear messages for invalid tokens
  • āœ… Rate limiting - Handles GitHub API rate limits gracefully
  • āœ… Network errors - Robust handling of connection issues
  • āœ… Validation errors - Input validation with helpful error messages
  • āœ… GitHub API errors - Detailed error reporting from GitHub

šŸ“ˆ Performance Features

  • Efficient API usage - Optimized requests with proper pagination
  • Caching-friendly - Responses designed for easy caching
  • Rate limit aware - Respects GitHub API rate limits
  • Batch operations - Efficient handling of multiple requests

šŸŽÆ Practical Use Cases

1. Repository Research

{"tool": "get_repo_info", "arguments": {"owner": "microsoft", "repo": "vscode"}}
{"tool": "list_repo_issues", "arguments": {"owner": "microsoft", "repo": "vscode", "state": "open"}}
{"tool": "list_repo_prs", "arguments": {"owner": "microsoft", "repo": "vscode", "state": "open"}}

2. User Analysis

{"tool": "get_user_info", "arguments": {"username": "torvalds"}}
{"tool": "get_github_stats", "arguments": {"username": "torvalds"}}
{"tool": "list_user_repos", "arguments": {"username": "torvalds", "type": "all"}}

3. Project Discovery

{"tool": "search_repositories", "arguments": {"query": "language:typescript stars:>1000"}}
{"tool": "search_repositories", "arguments": {"query": "topic:machine-learning created:>2023-01-01"}}

4. Your Own Data

{"tool": "get_my_info", "arguments": {}}
{"tool": "get_my_repos", "arguments": {"type": "all"}}
{"tool": "get_github_stats", "arguments": {"username": "Om-Shree-0709"}}

šŸ“ Development

Available Scripts

  • npm run build - Build the TypeScript project
  • npm run build:watch - Build with file watching
  • npm run dev - Run in development mode
  • npm start - Run the compiled server
  • npm test - Test the server
  • npm run setup - Run setup script
  • npm run demo - Run demo script
  • npm run interactive-test - Run interactive tests

Adding New Tools

  1. Create a new function in src/server.ts
  2. Register the tool with server.registerTool()
  3. Add proper error handling
  4. Update this README

Testing

# Build and test
npm run build
npm start

# Test with various scripts
npm test
npm run simple-test
npm run interactive-test
npm run demo

🚨 Troubleshooting

Common Issues

  1. "Cannot find module" errors

    • Run npm install to install dependencies
    • Run npm run build to compile TypeScript
  2. Authentication failures

    • Check your GitHub token is valid
    • Ensure token has required scopes
    • Verify .env file exists and is readable
  3. Rate limit errors

    • Wait before making more requests
    • Consider using a token with higher rate limits
  4. Repository not found

    • Check owner and repository names are correct
    • Ensure repository is public or you have access

Debug Mode

Run in development mode for detailed logging:

npm run dev

šŸ“Š Response Format

All tools return responses in the MCP standard format with content arrays containing text blocks:

{
  "content": [
    {
      "type": "text",
      "text": "šŸ“ **Repository: microsoft/vscode**\n\n**Description:** Visual Studio Code\n**Stars:** ⭐ 150000\n..."
    }
  ]
}

šŸ¤ Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add your changes
  4. Test thoroughly
  5. Submit a pull request

šŸ“„ License

MIT License - see LICENSE file for details

šŸ†˜ Support

  • Issues: Report bugs and feature requests via GitHub Issues
  • Documentation: Check the MCP specification for protocol details
  • GitHub API: Refer to GitHub's API documentation

šŸ”— Related Links


Happy coding! šŸš€

Your GitHub MCP Server is ready with 10 powerful tools! You can:

  • āœ… Get any repository information
  • āœ… Search repositories with advanced filters
  • āœ… List issues and pull requests
  • āœ… Browse commit history
  • āœ… Get user profiles and statistics
  • āœ… Access your own GitHub data
  • āœ… Use natural language queries

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
Qdrant Server

Qdrant Server

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

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

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
E2B

E2B

Using MCP to run code via e2b.

Official
Featured