MCP derin — Allow list, registry, GitHub remote server
MCP deep dive — Allow list, registry, GitHub remote server
Bu derste neler öğreneceksin
- MCP'nin agent'a tool sunma modelini iç işleyişiyle anlamak
- Allow list ve registry'i ayrı kontroller olarak ezberlemek
- GitHub remote MCP server'ı nasıl yapılandırılır öğrenmek
- Sınavda en sık karıştırılan trap'leri (allow list = registry ezberi) elemek
Domain 2’nin en kavramsal dersi. MCP yapılandırma soruları sınavın en sık tekrar eden konularıdır.
MCP nedir, neden var?
Model Context Protocol (MCP) = agent’ların dış tool/veri’ye standart arayüzle bağlanması için Anthropic’in başlattığı, GitHub’ın da benimsediği açık protokol.
Sınav perspektifinden iki temel rol:
- MCP server = tool’ları sunan taraf
- MCP client = tool’u kullanan agent
Bir agent farklı server’lara bağlanabilir; bir server farklı agent’lara hizmet edebilir. Aralarında standart JSON-RPC mesajları akar.
Agent → MCP server akışı (basitleştirilmiş)
1. Agent başlatma:
client = MCPClient(server_url, transport=stdio|http|sse)
tools = client.list_tools()
2. Tool çağrı:
result = client.call_tool("github:create_issue", {"title": "Bug 123"})
3. Sonuç:
agent kararını result üzerinden verir
GitHub Copilot SDK ile custom agent yazarken bu akış zaten paketli geliyor.
Sınav MCPClient API’sini sormaz; kavramsal akışı ve kontrol noktalarını
sorar.
Üç bağımsız kontrol katmanı
GH-600’ün ezberlenmesi gereken üçlüsü:
| Kontrol | Soru | Konum |
|---|---|---|
| Registry | Hangi server’lar keşfedilebilir? | Org/repo MCP registry config |
| Allow list | Hangi server/tool’lara erişim izinli? | Agent başına allow list |
| Tool permissions | Tool ne yapabilir? | Server tarafı + token scope |
Bu üçü bağımsızdır. Registry’ye eklemek allow list’e otomatik eklemez; allow list’e koymak tool izni vermez.
Trap: “Registry’ye ekleyince agent kullanır” — YANLIŞ
Bir MCP server’ı org registry’sine eklersin → keşfedilebilir olur. Ama agent henüz erişemez — agent’ın allow list’inde de olması gerekir.
Trap: “Allow list global mi?” — HAYIR
Allow list agent başına yapılandırılır. İki ayrı agent aynı server’a farklı subset erişebilir.
GitHub remote MCP server
Bu, GitHub’ın resmi olarak host ettiği bir MCP server. Agent’a GitHub repo/issue/PR/Actions operasyonlarını standart MCP tool olarak sunar.
Avantajları
- Self-host etmen gerekmez
- GitHub auth zaten entegre (token üstünden)
- Resmi tool katalog’u (güncel)
- Audit log ile entegre
Konfigürasyon (örnek YAML — Copilot custom agent ayarı)
agent:
name: pr-reviewer
mcp:
servers:
- id: github-remote
type: remote
url: https://api.github.com/mcp
auth:
token_source: GITHUB_TOKEN
allow_list:
- "github-remote:list_pull_requests"
- "github-remote:get_pull_request"
- "github-remote:create_pull_request_review"
# explicit allow — diğer tools default-deny
allow_listyazılınca deny-by-default uygulanır. Yazmayan tool’lar erişilemez. Bu least-privilege uygulamasıdır.
Self-host MCP server
Bazen GitHub remote’ta olmayan bir tool gerekir (örn. iç database, özel API). Self-host yöntemleri:
| Transport | Ne zaman |
|---|---|
| stdio | Aynı process içinde — IDE’de local server |
| HTTP | Network üstünden — Actions runner içinde, dış server |
| SSE (Server-Sent Events) | HTTP + uzun-süreli streaming |
Sınav transport detayını sormaz; konfigürasyon bullet’larını sorar (“Add an MCP server as a tool to an agent”).
Registry yapılandırması
Org seviyesinde MCP registry = kataloglanmış server listesi. Geliştiriciler ve agent’lar buradan keşfeder.
# .github/mcp-registry.yaml (org veya repo seviyesi)
registry:
servers:
- id: github-remote
url: https://api.github.com/mcp
description: "Official GitHub remote MCP"
tags: [official, github]
- id: internal-db
url: https://mcp.internal.company.com
description: "Internal database operations"
tags: [internal, db]
Registry’ye eklemek keşif’i sağlar; kullanım için allow list gerekir.
Sınav favorisi sorular
Q1: “MCP allow list vs registry farkı?” A: Allow list = güvenlik sınırı (kim erişebilir); registry = keşif mekanizması (hangi server’lar var).
Q2: “GitHub remote MCP server’ı yapılandır” — hangi bullet? A: Study guide’da birebir bullet: “Configure a GitHub remote MCP server”. Resmi terim ezbere bilinmeli.
Q3: “Agent’a iki MCP server’da farklı subset tool’a erişim — nasıl?” A: Server’ları registry’ye ekle + her agent için ayrı allow list yapılandır.
Mini quiz — MCP derin (3 soru)
Sırada ne var?
Bir sonraki derste tool permissions + GitHub’da GITHUB_TOKEN ve
fine-grained PAT ile least-privilege uygulamayı derinleştireceğiz.