Provides comprehensive access to GitHub's API, enabling management of repositories, issues, pull requests, commits, user profiles, and statistics. Supports repository search with advanced filters, issue and PR tracking, commit history browsing, and user analytics.
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 userget_repo_info- Get detailed information about a GitHub repositorylist_repo_issues- List issues in a repository (with state filtering)list_repo_prs- List pull requests in a repositorylist_repo_commits- List recent commits in a repositorysearch_repositories- Search for repositories on GitHubget_user_info- Get information about any GitHub userlist_user_repos- List repositories belonging to a userget_my_repos- List repositories belonging to the authenticated userget_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
Clone the repository:
git clone <your-repo-url> cd github-mcp-ts-sdkInstall dependencies:
npm installSet up environment variables:
cp env.example .env # Edit .env and add your GitHub tokenBuild the project:
npm run build
š GitHub Token Setup
Click "Generate new token (classic)"
Select the following scopes:
repo(Full control of private repositories)user(Read all user profile data)read:org(Read org and team membership)
Copy the generated token and add it to your
.envfile:
š Usage
Development Mode
Production Mode
Watch Mode (for development)
Test the Server
š Tool Examples
User Information
Get Your GitHub Profile
Response:
Get User Information
Repository Information
Get Repository Details
Response:
Search Repositories
Advanced search examples:
language:javascript- Search by programming languagestars:>5000- Filter by minimum starsuser:octocat- Search within a specific user's repositorieslanguage:python stars:>1000 forks:>100- Combined filterscreated:>2023-01-01- Filter by creation datetopic:react- Search by topic tags
Issues and Pull Requests
List Repository Issues
List Pull Requests
Commit History
List Recent Commits
Statistics
Get User Statistics
Response:
š Resources
Repository Resource
Access repository data via URI: github://repository/{owner}/{repo}
Examples:
github://repository/microsoft/vscodegithub://repository/facebook/react
User Resource
Access user data via URI: github://user/{username}
Examples:
github://user/octocatgithub://user/Om-Shree-0709
š¬ Prompts
Natural Language Queries
Ask questions in natural language about GitHub data:
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:
GitHub Token Scopes
Your GitHub token needs these scopes:
repo- Full control of private repositoriesuser- Read all user profile dataread: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
š Integration
With Claude Desktop
Add to your Claude Desktop configuration:
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:
š” 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
2. User Analysis
3. Project Discovery
4. Your Own Data
š Development
Available Scripts
npm run build- Build the TypeScript projectnpm run build:watch- Build with file watchingnpm run dev- Run in development modenpm start- Run the compiled servernpm test- Test the servernpm run setup- Run setup scriptnpm run demo- Run demo scriptnpm run interactive-test- Run interactive tests
Adding New Tools
Create a new function in
src/server.tsRegister the tool with
server.registerTool()Add proper error handling
Update this README
Testing
šØ Troubleshooting
Common Issues
"Cannot find module" errors
Run
npm installto install dependenciesRun
npm run buildto compile TypeScript
Authentication failures
Check your GitHub token is valid
Ensure token has required scopes
Verify
.envfile exists and is readable
Rate limit errors
Wait before making more requests
Consider using a token with higher rate limits
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:
š Response Format
All tools return responses in the MCP standard format with content arrays containing text blocks:
š¤ Contributing
Fork the repository
Create a feature branch
Add your changes
Test thoroughly
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