README.mdβ’3.33 kB
# GitHub MCP Server
A FastMCP server that provides access to GitHub repositories and data for Poke integration.
## π Features
- **get_repos**: Get repositories for a GitHub user
- **get_issues**: Get issues for a repository
- **get_pull_requests**: Get pull requests for a repository
- **search_code**: Search for code on GitHub
## π GitHub Token Setup
This server requires a GitHub personal access token for API access:
1. Go to [GitHub Settings > Personal Access Tokens](https://github.com/settings/tokens)
2. Generate a new token with `repo` and `public_repo` scopes
3. Set the environment variable: `export GITHUB_TOKEN=your_token_here`
## π οΈ Local Development
```bash
# Install dependencies
pip install -r requirements.txt
# Set GitHub token
export GITHUB_TOKEN=your_token_here
# Run the server
python src/server.py
```
## π’ Deployment
### Deploy to Render
[](https://render.com/deploy)
**Steps:**
1. **Click the "Deploy to Render" button above** or go to [render.com](https://render.com)
2. **Connect your GitHub account to Render** (if you haven't already)
3. **Create a new Web Service:**
   - Connect this repository
   - **Name**: `github-mcp`
   - **Environment**: `Python 3`
   - **Plan**: `Free`
   - **Build Command**: `pip install -r requirements.txt`
   - **Start Command**: `python src/server.py`
4. **Set environment variable:**
   - Go to your Render service dashboard
   - Click on "Environment" tab
   - Add environment variable: `GITHUB_TOKEN` = `your_github_token_here`
   - Click "Save Changes"
5. **Deploy!**
> Note: On Render's free tier, services go idle after ~15 minutes of inactivity and may require a manual "Deploy" to wake or to pick up the latest commit. Unlike Vercel, pushes do not auto-deploy by default.
Your server will be available at `https://github-mcp.onrender.com/mcp`
## π― Poke Integration
1. Go to [poke.com/settings/connections](https://poke.com/settings/connections)
2. Add the MCP URL: `https://github-mcp.onrender.com/mcp`
3. Give it a name like "GitHub"
4. Try: "Can you use the GitHub MCP to list my repos?"
## References
- Based on the Interaction MCP server template: [MCP Server Template](https://github.com/InteractionCo/mcp-server-template/tree/main)
- Discovered via Interactionβs HackMIT challenge: [Interaction HackMIT Challenge](https://interaction.co/HackMIT)
## π§ Available Tools
- `get_repos(username, limit=10)`: Get repositories for a user
- `get_issues(owner, repo, state="open", limit=10)`: Get issues for a repository
- `get_pull_requests(owner, repo, state="open", limit=10)`: Get PRs for a repository
- `search_code(query, language="", limit=10)`: Search for code
## π Example Usage
```python
# Get user's repositories
get_repos(username="octocat", limit=5)
# Get open issues
get_issues(owner="microsoft", repo="vscode", state="open", limit=10)
# Get pull requests
get_pull_requests(owner="facebook", repo="react", state="open", limit=5)
# Search for Python code
search_code(query="machine learning", language="python", limit=10)
```
## β οΈ Rate Limits
GitHub API has rate limits:
- **With token**: 5,000 requests per hour
- **Without token**: 60 requests per hour
The server will return an error if rate limits are exceeded.