github-mcp-server
The GitHub MCP Server for Cursor IDE is an integration server that allows for efficient management of GitHub repositories via RESTful API directly from Cursor IDE. It emphasizes security, error handling, and logging functionalities, offering various features like repository creation and listing, with plans for webhook support.
GitHub MCP Server for Cursor IDE
A powerful GitHub integration server that allows you to manage your GitHub repositories directly from Cursor IDE. This server provides a RESTful API to interact with GitHub's API, making it easier to create and manage repositories.
Features
- Create new GitHub repositories
- List existing repositories
- Secure token-based authentication
- Rate limiting protection
- Comprehensive error handling
- Detailed logging
- Webhook support (coming soon)
Prerequisites
- Node.js (v14 or higher)
- npm (v6 or higher)
- A GitHub account with a Personal Access Token
- Cursor IDE
Setup
- Clone this repository:
git clone <your-repo-url>
cd github-mcp-server
- Install dependencies:
npm install
- Create a
.env
file in the root directory:
cp .env.example .env
- Configure your environment variables in
.env
:
# Server Configuration
PORT=3000
NODE_ENV=development
# GitHub Configuration
GITHUB_TOKEN=your_github_token_here
GITHUB_WEBHOOK_SECRET=your_webhook_secret_here
# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000 # 15 minutes
RATE_LIMIT_MAX_REQUESTS=100
-
Generate a GitHub Personal Access Token:
- Go to GitHub.com → Settings → Developer Settings → Personal Access Tokens → Tokens (classic)
- Click "Generate new token" → "Generate new token (classic)"
- Give your token a descriptive name (e.g., "MCP Server Integration")
- Select these permissions:
repo
(Full control of private repositories)read:org
(Read organization data)admin:repo_hook
(Full control of repository hooks)
- Copy the generated token and paste it in your
.env
file
-
Start the server:
npm run dev
Using with Cursor IDE
- Open Cursor IDE
- The MCP server will run on
http://localhost:3000
by default - You can use the following endpoints:
Create a New Repository
curl -X POST http://localhost:3000/api/github/repos \
-H "Content-Type: application/json" \
-d '{
"name": "my-new-repo",
"description": "A new repository created via MCP",
"private": false,
"auto_init": true
}'
List Your Repositories
curl http://localhost:3000/api/github/repos
API Endpoints
GET /health
Health check endpoint to verify server status.
GET /api/github/repos
Lists all repositories accessible to the authenticated user.
POST /api/github/repos
Creates a new repository.
Request body:
{
"name": "repository-name",
"description": "Repository description",
"private": false,
"auto_init": true
}
Error Handling
The server includes comprehensive error handling for:
- Invalid GitHub tokens
- Rate limiting
- Validation errors
- GitHub API errors
- Server errors
All errors are logged and returned with appropriate HTTP status codes.
Security Features
- Token-based authentication
- Rate limiting protection
- Input validation
- Secure environment variable handling
- CORS protection
- Helmet security headers
Development
To run the server in development mode with auto-reload:
npm run dev
To run tests:
npm test
Logging
Logs are stored in:
error.log
: Error-level logscombined.log
: All logs
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.