Untuk menambahkan GitHub MCP server ke Claude Code, arahkan ke endpoint hosted milik GitHub dan kirim personal access token (PAT). Jalankan ini di terminal, bukan di dalam sesi Claude Code:
Command cepat
export GITHUB_PAT=ghp_your_token_here
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}'
Aliasnya github. Nama itu yang nanti muncul di claude mcp list dan /mcp.
Pakai kutip tunggal supaya ${GITHUB_PAT} tetap tersimpan sebagai placeholder di config. Claude Code mengisinya dari environment kamu setiap kali server dijalankan. Token aslinya tidak pernah ditulis ke ~/.claude.json.
Panduan install dari GitHub menyusun JSON dengan token yang sudah langsung disisipkan. Cara itu juga jalan, tapi token mentahnya jadi tersimpan di file config Claude Code.
Kenapa pakai token, bukan OAuth?
Server hosted di api.githubcopilot.com/mcp/ hanya mendukung OAuth untuk aplikasi host yang sudah mendaftarkan GitHub App atau OAuth App ke GitHub. Untuk Claude Code, panduan install GitHub memakai header PAT. Login OAuth di panduan itu hanya untuk server lokal lewat Docker.
Buat token di github.com/settings/personal-access-tokens/new. Fine-grained token memungkinkan kamu memilih repository mana saja yang boleh disentuh Claude Code. Untuk tool default, beri akses ke Contents, Issues, dan Pull requests. Pakai akses read-only kecuali kamu memang mau Claude membuka issue atau PR.
Kalau pakai classic token, README GitHub menyebut repo untuk operasi repository dan read:org untuk data organisasi dan team.
Verifikasi setup
claude mcp list
Harusnya muncul baris seperti ini:
github: https://api.githubcopilot.com/mcp/ (HTTP) - ✓ Connected
Kamu juga bisa cek config yang tersimpan:
claude mcp get github
Header Authorization harus tetap terlihat Bearer ${GITHUB_PAT}, bukan token asli kamu.
Di dalam Claude Code, jalankan /mcp untuk melihat server dan tool-nya, lalu tanya hal kecil:
List my open pull requests on GitHub.
Kesalahan yang sering terjadi
Missing environment variables: GITHUB_PAT
claude mcp list menampilkan warning ini kalau variable tersebut belum di-set di shell yang menjalankan Claude Code. Export di satu tab terminal tidak membantu sesi Claude Code yang jalan di tab lain. Taruh export di ~/.zshrc atau ~/.bashrc, atau jalankan Claude Code dari shell yang sama.
Memakai kutip ganda di JSON
Dengan kutip ganda, shell mengganti ${GITHUB_PAT} sebelum Claude Code melihatnya, jadi token masuk ke file config. Kalau variable-nya belum di-set saat itu, yang tersimpan malah header kosong. Pakai kutip tunggal.
Install @modelcontextprotocol/server-github
Banyak tutorial lama memakai npx @modelcontextprotocol/server-github. Package npm itu sudah deprecated, dan rilis terakhirnya 2025.4.8. Penggantinya adalah server resmi GitHub di github/github-mcp-server, dan endpoint hosted di atas menjalankan kode itu.
URL salah
Endpoint-nya https://api.githubcopilot.com/mcp/. Bukan di api.github.com, walaupun ada panduan yang menulis begitu.
Invalid input di Windows
Panduan install GitHub mencatat bahwa claude mcp add-json bisa gagal dengan Invalid input untuk HTTP server di Windows. Pakai bentuk add dengan header:
claude mcp add github --transport http https://api.githubcopilot.com/mcp/ -H "Authorization: Bearer $env:GITHUB_PAT"
Cara ini menyimpan token yang sudah di-expand ke config, jadi jaga file itu tetap privat.
Buat jadi read-only
Tambahkan /readonly di URL untuk menyembunyikan semua tool yang menulis ke GitHub:
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp/readonly","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}'
Token read-only melakukan hal yang sama dari sisi GitHub. Kalau dua-duanya dipakai, kesalahan di satu lapisan tidak membuat Claude bisa push atau comment.
Pilih toolsets
Toolsets default-nya context, repos, issues, pull_requests, dan users. Untuk memuat set lain, kirim header X-MCP-Toolsets:
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_PAT}","X-MCP-Toolsets":"repos,issues,pull_requests,actions"}}'
Makin sedikit toolsets, makin sedikit definisi tool yang masuk ke context Claude. Nama toolset yang tidak dikenal diabaikan tanpa error, jadi cek daftarnya di /mcp setelah diubah.
X-MCP-Readonly: true juga bisa dipakai sebagai header kalau kamu tidak mau mengubah URL.
Pakai di semua project, atau bagikan ke tim
Command di atas memakai scope local, jadi server hanya dimuat di direktori tempat kamu menjalankannya. Tambahkan --scope user supaya dimuat di semua project:
claude mcp add-json --scope user github '{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}'
--scope project menulis server ke .mcp.json di root repo, dan file itu boleh di-commit. Isinya hanya ${GITHUB_PAT}, jadi tiap anggota tim memakai token masing-masing dan tidak ada rahasia yang masuk ke git. Claude Code meminta tiap orang menyetujui server project-scoped saat pertama kali dimuat.
Referensi
- GitHub MCP server: install di Claude
- GitHub remote MCP server: toolsets, header, path URL
- Dokumentasi Claude Code MCP
Setup MCP lain di blog ini: Datadog, PagerDuty, dan Context7.
Cek terakhir
Export GITHUB_PAT, jalankan claude mcp add-json dengan placeholder ${GITHUB_PAT} di dalam kutip tunggal, lalu konfirmasi lewat claude mcp list. Ganti URL ke /mcp/readonly kalau Claude Code tidak boleh menulis ke GitHub.