Skip to main content
Glama
README.md
# GitHub MCP Server

A Model Context Protocol (MCP) server implementation for GitHub integration. This server provides tools for interacting with GitHub's API through the MCP protocol.

## Features

- Create GitHub repositories
- Push content to repositories
- Get user information
- Proper error handling and TypeScript type safety
- Automatic installation script

## Prerequisites

- Node.js (v18 or higher)
- npm (v8 or higher)
- PowerShell (for Windows installation)
- GitHub Personal Access Token with repo scope

## Installation

### Windows

1. Clone this repository:
```powershell
git clone https://github.com/oghenetejiriorukpegmail/github-mcp.git
```

2. Run the installation script:
```powershell
.\install.ps1
```

The script will:
- Create the necessary directories
- Install dependencies
- Build the TypeScript code
- Configure the MCP settings

### Manual Installation

1. Create the MCP directory:
```powershell
mkdir -p "$env:APPDATA\Roo-Code\MCP\github-mcp"
```

2. Clone this repository into that directory:
```powershell
git clone https://github.com/oghenetejiriorukpegmail/github-mcp.git "$env:APPDATA\Roo-Code\MCP\github-mcp"
```

3. Install dependencies:
```powershell
cd "$env:APPDATA\Roo-Code\MCP\github-mcp"
npm install
```

4. Build the TypeScript code:
```powershell
npm run build
```

5. Add the server configuration to your MCP settings file at:
`%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json`

```json
{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": [
        "%APPDATA%\Roo-Code\MCP\github-mcp\build\index.js"
      ],
      "env": {
        "GITHUB_TOKEN": "your-github-token-here"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}
```

## Available Tools

### get_user
Get GitHub user information.

```json
{
  "username": "octocat"
}
```

### create_repo
Create a new GitHub repository.

```json
{
  "repo_name": "my-new-repo",
  "description": "A new repository",
  "private": false
}
```

### push_to_repo
Push content to a GitHub repository.

```json
{
  "repo_name": "my-repo",
  "file_path": "docs/README.md",
  "content": "# My Project\nThis is a test file.",
  "message": "Add README file"
}
```

## Development

1. Clone the repository
2. Install dependencies: `npm install`
3. Make changes to `src/index.ts`
4. Build: `npm run build`
5. Test your changes

## Contributing

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## License

MIT

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: create_repo handles repository creation, get_user retrieves user information, and push_to_repo manages content pushes to repositories. There is no overlap in functionality, making it easy for an agent to select the correct tool for each task.

Naming Consistency4/5

The tools follow a consistent verb_noun pattern (create_repo, get_user, push_to_repo), which is predictable and readable. The minor deviation is that 'push_to_repo' includes a preposition, but this does not significantly impact consistency or clarity.

Tool Count3/5

With only 3 tools, the server feels thin for a GitHub domain, which typically involves more operations like listing repositories, managing issues, or handling pull requests. While the tools are well-scoped, the count is borderline low for comprehensive GitHub functionality.

Completeness2/5

The tool surface has significant gaps for a GitHub server. It lacks core operations such as listing repositories, updating or deleting repositories, managing issues or pull requests, and searching code. This incomplete coverage will likely cause agent failures when trying to perform common GitHub workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues