- OpenAI Codex (MCP-enabled) installed / available
- A GitHub Personal Access Token
The remote GitHub MCP server is hosted by GitHub at
https://api.githubcopilot.com/mcp/and supports Streamable HTTP.
Edit ~/.codex/config.toml (shared by CLI and IDE extension) and add:
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
# Replace with your real PAT (least-privilege scopes). Do NOT commit this.
bearer_token_env_var = "GITHUB_PAT_TOKEN"You can also add it via the Codex CLI:
codex mcp add github --url https://api.githubcopilot.com/mcp/
Storing Your PAT Securely
For security, avoid hardcoding your token. One common approach:
- Store your token in
.envfile
GITHUB_PAT_TOKEN=ghp_your_token_here
- Add to .gitignore
echo -e ".env" >> .gitignoreUse this if you prefer a local, self-hosted instance instead of the remote HTTP server, please refer to the OpenAI documentation for configuration.
After starting Codex (CLI or IDE):
- Run
/mcpin the TUI or use the IDE MCP panel; confirmgithubshows tools. - Ask: "List my GitHub repositories".
- If tools are missing:
- Check token validity & scopes.
- Confirm correct table name:
[mcp_servers.github].
After setup, Codex can interact with GitHub directly. It will use the default tool set automatically but can be configured. Try these example prompts:
Repository Operations:
- "List my GitHub repositories"
- "Show me recent issues in [owner/repo]"
- "Create a new issue in [owner/repo] titled 'Bug: fix login'"
Pull Requests:
- "List open pull requests in [owner/repo]"
- "Show me the diff for PR #123"
- "Add a comment to PR #123: 'LGTM, approved'"
Actions & Workflows:
- "Show me recent workflow runs in [owner/repo]"
- "Trigger the 'deploy' workflow in [owner/repo]"
Gists:
- "Create a gist with this code snippet"
- "List my gists"
Tip: Use
/mcpin the Codex UI to see all available GitHub tools and their descriptions.
Minimal useful scopes (adjust as needed):
repo(general repository operations)workflow(if you want Actions workflow access)read:org(if accessing org-level resources)project(for classic project boards)gist(if using gist tools)
Use the principle of least privilege: add scopes only when a tool request fails due to permission.
| Issue | Possible Cause | Fix |
|---|---|---|
| Authentication failed | Missing/incorrect PAT scope | Regenerate PAT; ensure repo scope present |
| 401 Unauthorized (remote) | Token expired/revoked | Create new PAT; update bearer_token_env_var |
| Server not listed | Wrong table name or syntax error | Use [mcp_servers.github]; validate TOML |
| Tools missing / zero tools | Insufficient PAT scopes | Add needed scopes (workflow, gist, etc.) |
| Token in file risks leakage | Committed accidentally | Rotate token; add file to .gitignore |
- Never commit tokens into version control
- Rotate tokens periodically
- Restrict scopes up front; expand only when required
- Remove unused PATs from your GitHub account
- Remote server URL:
https://api.githubcopilot.com/mcp/ - Release binaries: GitHub Releases
- OpenAI Codex MCP docs: https://developers.openai.com/codex/mcp
- Main project README: Advanced configuration options