Skip to main content
Glama
README.md
# GitHub MCP Server (Node + TypeScript)

Docker-friendly Model Context Protocol server that lets Codex create and manage GitHub repositories with a single personal access token (PAT).

## Features

- `create_repository`: create a repo under the authenticated user or a given org.
- `upsert_file`: create/update files with commit messages on a branch.
- `create_branch`: branch off any ref (defaults from `main`).
- `whoami`: show the PAT identity.

## Requirements

- Node 20+ (or Docker).
- GitHub PAT in `GITHUB_TOKEN` with at least `repo` scope (or `public_repo` if you only touch public repos).
- For org repos, ensure the token can create repos in that org and that SSO/org policies allow it.

## Local dev

```bash
npm install
npm run dev
```

## Docker build and run

```bash
docker build -t github-mcp .
docker run -i --rm -e GITHUB_TOKEN=... github-mcp
```

## Wire up to Codex (VS Code)

The server speaks MCP over stdio. Configure Codex to start it with:

```json
{
  "mcpServers": {
    "github-mcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "GITHUB_TOKEN", "github-mcp"]
    }
  }
}
```

```toml
[mcp_servers.github-mcp]
command = "docker"
args = ["run", "-i", "--rm", "--env-file", "pathToEnv", "github-mcp"]
```

Important: use `"-e", "GITHUB_TOKEN"` (without `=${GITHUB_TOKEN}`) when the command is launched directly (non-shell), so Docker forwards the host `GITHUB_TOKEN` value correctly.

## Notes and safety

- The server uses your PAT directly; treat it like a password.
- Actions are direct commits; there is no local clone.
- If you need organization SAML, approve the PAT for that org first.

## Extending

- Add tools via `server.tool(name, { description, inputSchema }, handler)` in `src/index.ts`.