Modül 3 · Domain 2 — Tool & MCP (%20-25, EN AĞIR) · ⏱ 16 dakika

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ü:

KontrolSoruKonum
RegistryHangi server’lar keşfedilebilir?Org/repo MCP registry config
Allow listHangi server/tool’lara erişim izinli?Agent başına allow list
Tool permissionsTool 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_list yazı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:

TransportNe zaman
stdioAynı process içinde — IDE’de local server
HTTPNetwork ü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)

MCP allow list ile MCP registry arasındaki ilişki nedir?

GitHub remote MCP server kullanmanın self-host'a göre avantajı hangisi DEĞİLDİR?

Allow list YAZILMAYAN tool için ne olur?

Sırada ne var?

Bir sonraki derste tool permissions + GitHub’da GITHUB_TOKEN ve fine-grained PAT ile least-privilege uygulamayı derinleştireceğiz.