An MCP (Model Context Protocol) server that provides access to GitHub repository contents. This server allows AI assistants to browse and read files from specified GitHub repositories.
- Access any file in a GitHub repository via URI
- List repository contents and navigate directories
- Support for branch-specific file access
- File contents are served as plain text
- Base URL format:
https://api.github.com/repos/{owner}/{repo}/contents/{path}
- Supports both files and directories
- Files are served with
text/plain
MIME type - Directories are served with
application/x-directory
MIME type
The server requires the following environment variables:
GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token
GITHUB_OWNER=repository_owner
GITHUB_REPO=repository_name
GITHUB_BRANCH=branch_name # Optional
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
To use with Claude Desktop, add the server configuration:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-server-github-repo": {
"command": "/path/to/mcp-server-github-repo/build/index.js"
}
}
}
The server implements three main MCP endpoints:
ListResources
- Lists files and directories in the repositoryReadResource
- Retrieves contents of a specific file
The server uses GitHub Personal Access Token for authentication. Make sure your token has appropriate permissions to access the repository contents.
The server includes error handling for:
- Missing environment variables
- GitHub API errors
- Invalid paths (e.g., trying to read a directory as a file)
- Authentication failures
Since MCP servers communicate over stdio, debugging can be challenging. Use the MCP Inspector for debugging:
npm run inspector
This will provide a URL to access debugging tools in your browser.
- Keep your GitHub Personal Access Token secure
- Consider using tokens with minimal required permissions
- Be aware of repository size limitations when accessing large repositories
MIT