Bu makale, GitHub’ın barındırdığı MCP sunucusunu kendi anahtarı olmadan, bir kez kaydeder ve herkesin kendi özel depolarına, kendi GitHub belirteciyle ulaşmasını sağlar. Aynı yöntem, her çalışanın kendi kimlik bilgisine sahip olduğu her servise uyar: bir kod barındırma servisi, bir destek talebi sistemi, bir SaaS API’si.
Çalışan ürün üzerinde 25 Eylül 2026’da uçtan uca doğrulandı. Bir kişi sohbet çalışma alanından kendi özel depolarını listeledi ve içlerindeki dosyaları okudu; denetim izi her çağrıda değişkenin adını kaydetti, belirteci ise hiçbir yerde.
Ne elde edersiniz
- Araç kaydında, ekip kapsamındaki herkese açık tek bir GitHub girdisi.
- Her kişinin çağrısı o kişinin belirtecini taşır. Alice, Alice’in belirtecinin gördüğünü görür; Bob, Bob’unkinin gördüğünü. Kimse bir başkasının erişimini ödünç almaz.
- Belirteç bir kez, konsolun kişisel My variables sayfasına yazılır; hiçbir zaman bir sohbete değil. Şifreli saklanır, yalnızca o kişinin o sunucuya yaptığı çağrılarda gönderilir ve modele, yöneticilere ya da denetim izine hiç gösterilmez; denetim izi yalnızca değişkenin adını kaydeder.
Başlamadan önce
- Sunucuyu kaydetmek ve değişkeni tanımlamak için konsolda yönetici erişimi gerekir. Diğer herkese olağan oturum açmaları yeter.
- Konsolda oturum açma etkin olmalıdır: My variables kişisel bir sayfadır ve kimsenin oturum açmadığı bir kurulumda kapalı kalır.
- Kişiler aracı sohbet çalışma alanından (aimo), düzenleyici eklentisinden ya da kendi ajanlarından kullanır. Üçü de aynı yönetişimli aktarıcı üzerinden ulaşır.
Adım 1: sunucuyu kaydedin (yönetici)
Konsolun /mcp sayfasında Register a server bölümünü açın ve şunları girin:
| Alan | Değer |
|---|---|
| Name | GitHub |
| URL (streamable HTTP endpoint) | https://api.githubcopilot.com/mcp/x/repos/readonly |
| Description | Your own GitHub repositories, read-only |
| Auth | none; Secret boş bırakılır |
| Identity | require user (signed assertion) işaretli |
Ardından Register & sync düğmesine basın.
Bu adres, GitHub’ın depo araçlarını salt okunur kipte seçer. Aynı sunucu başka seçenekler de sunar:
| Adres sonu | Modelin elde ettiği |
|---|---|
…/mcp/x/repos/readonly |
yalnızca depolar, salt okunur (burada kullanılan yalın seçim) |
…/mcp/readonly |
GitHub’ın varsayılan araç takımları (profil, depolar, kayıtlar, çekme istekleri, kullanıcılar), salt okunur |
…/mcp/x/all/readonly |
tüm araç takımları, salt okunur; büyüktür ve etkin her araç her turda istem tokeni harcar |
/readonly ekini yalnızca kişilerin kendi belirteçleriyle yazabilmesini istiyorsanız
kaldırın.
Bu ilk eşitlemenin başarısız olmasını bekleyin. GitHub, belirteç olmadan MCP el
sıkışmasını bile reddeder ve bu sunucunun henüz belirteci yoktur; satır error
durumunu şu iletiyle gösterir:
mcp http 401 on initialize — this server has no shared key: declare a per-person variable on the Variables tab, set your own value on /vault, then Sync tools
Bu aşamada beklenen durum budur.
Adım 2: değişkeni tanımlayın (yönetici)
/mcp sayfasının Variables sekmesinde şunu tanımlayın:
| Alan | Değer |
|---|---|
| Server | GitHub (github) |
| Variable | GITHUB_API_KEY |
| Delivery | header (third-party server) |
| Header | Authorization |
| Template | Bearer ${value} |
| Required | işaretli |
| Secret | işaretli |
| Description | Your GitHub personal access token (read-only is enough) |
Tek satırda, ağ geçidinin her kişinin çağrılarında yapacağı şey:
GITHUB_API_KEY -> Authorization: Bearer ${value}
Required, belirtecini girmemiş bir kişinin başarısız bir çağrı yerine kendi sayfasına bağlantı veren açık bir ileti alması ve GitHub’a hiçbir şey gönderilmemesi demektir.
Adım 3: bir GitHub belirteci oluşturun (herkes)
GitHub’da Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token yolunu izleyin (GitHub’ın kendi yönergeleri):
- Resource owner: kendiniz ya da kuruluşunuz.
- Expiration: olabildiğince kısa; örneğin 90 gün.
- Repository access: tüm depolar ya da yalnızca seçtikleriniz.
- Repository permissions: Contents: Read-only. Metadata: Read-only kendiliğinden eklenir.
İnce ayarlı bir belirteç tek bir kaynak sahibine aittir. Hem kendi özel depolarınıza
hem de bir kuruluşunkilere ulaşmak için belirteci ihtiyacınız olan sahip adına
oluşturun ya da repo kapsamlı klasik bir belirteç kullanın. Klasik belirteç yazabilir
de; /readonly sunucu adresi yazmayı yine engeller, ama ince ayarlı salt okunur bir
belirteç daha güvenli seçimdir. Bir kuruluş, ince ayarlı belirteçlerin çalışmadan önce
yöneticilerince onaylanmasını şart koşabilir.
Adım 4: My variables sayfasına kaydedin (herkes)
Konsolda oturum açın ve My variables (/vault) sayfasını açın. GitHub başlığı
altında belirteci GITHUB_API_KEY alanına yapıştırıp Save düğmesine basın. Sayfa
kısa bir parmak iziyle onaylar. Değer bir daha hiçbir zaman gösterilmez, size bile.
Belirteci kaydetmeden araçtan bir şey isterseniz, yanıtı bu sayfaya doğrudan bir bağlantı içerir.
Adım 5: araç listesini eşitleyin (yönetici)
Adım 4’te kendi belirtecinizi kaydettikten sonra /mcp sayfasına dönün ve GitHub
satırında Sync tools düğmesine basın. Keşif artık sizin belirtecinizle çalışır:
durum ok olur ve araç listesi düzenleyici eklentisi ile ajanlar için önbelleğe alınır.
Önbellekteki liste sizin belirtecinizin gördüğüdür; diğer herkesin çağrıları yine kendi
belirtecini kullanır. Sohbet çalışma alanı bu adıma bağlı değildir, çünkü araçları her
kişi adına canlı listeler.
Adım 6: kullanın
Sohbet çalışma alanında bir sohbette GitHub aracını etkinleştirin ve örneğin şunu sorun:
- Şu GitHub kullanıcısının özel depolarını listele: ardından GitHub kullanıcı adınız.
- Özel depolarınızdan birinin README dosyasını göster.
- O depoda main dalındaki son beş commit’te ne değişti?
VS Code için aimo düzenleyici eklentisinde model GitHub
araçlarını ihtiyaç duyduğunda kendisi bulur. github sunucusunu AIMO: Choose Tool
Servers ile sabitlerseniz araçlar doğrudan mcp__github__<tool> adıyla yüklenir.
Bir şey eksik olduğunda
| Durum | Ne olur |
|---|---|
| Belirteç kaydetmediniz | Araç This tool needs your own GITHUB_API_KEY … Set it once at …/vault?server=github yanıtını verir ve GitHub’a hiçbir şey ulaşmaz. MCP bağlantı istemini destekleyen bir istemci bağlantıyı bir istem olarak gösterir. |
| Belirtecinizin süresi doldu ya da iptal edildi | GitHub Bad credentials yanıtını verir. Yeni bir belirteç oluşturup My variables sayfasındaki değeri değiştirin. |
| Bir depo “yok” görünüyor | Belirtecinize o depo için izin verilmemiş ya da kuruluşunuz belirteci henüz onaylamamıştır. |
| Düzenleyici eklentisi hiç GitHub aracı göstermiyor | Önbellekteki liste hiç keşfedilmemiştir. Bir yönetici kendi belirtecini kaydeder ve Sync tools düğmesine basar (adım 5). |
| Biri ayrılıyor | Kişinin kendisi ya da Variables sekmesinde bir yönetici değerlerini siler. Yöneticiler bir kişinin değerlerini silebilir ama asla okuyamaz. Belirteci GitHub’da da iptal edin. |
Tek ortak sunucu burada neden güvenli
- Kişi başına, sunucu başına. Bir değer tek bir kişiye ve tek bir sunucuya aittir.
Kurulum OpenBao çalıştırıyorsa o kişinin kendi klasöründe,
kv/users/<email>/mcp/githubyolunda durur; aksi halde mühürlenir, bu yüzden başka bir kişinin kaydına taşınan bir kopya çözülmez ve o çağrı girilmemiş sayılır. - Sohbette hiçbir şey yok. Belirteç modelden hiç geçmez; bu yüzden tekrarlanamaz,
özetlenemez ya da bir döküme sızamaz. Bir araç sonucu onu geri yansıtırsa denetimde
saklanan kopyada onun yerine
[uservar:GITHUB_API_KEY]görünür. - Neyin görüneceğine GitHub karar verir. Platform kendi başına hiçbir erişim eklemez: bir çağrı, kişinin belirtecinin ulaşabildiği yere tam olarak ulaşır; salt okunurluk da iki kez zorlanır, sunucu adresiyle ve belirtecin izinleriyle.
- Yalnızca oturum açmış kişiler. require user işaretliyken, arkasında bir kişi olmayan ortak bir servis anahtarı hiçbir şey gönderilmeden reddedilir.
Bu makalenin başındaki anlatım ve alındığı araç kataloğu, aynı akışı adım adım gösterir.