Phase 13: Tools & Protocols

Kap taşı: İnsansız Alet Ekosistemi

Bir üretim ajanı sistemi, bir özellik kümesi değil, bir sınır kümesi. Bu kapak taşı, gerçek bir dağıtım için hala gerekli olan protokol müşterilerinden, yetki sunucularından, kum kutularından ve telemetri ihracatçılarından okunur bir süreç simülasyonunu ayırır.

Type: Build

Languages: Python (stdlib, in-process simulation)

Prerequisites: Phase 13 · 01 through 22, using MCP revision 2026-07-28

Time: ~120 minutes

Öğrenme Hedefleri

  • Araç çağrılarını, görev şeklinde sonuçları, devredilen iş, UI kaynakları, yetki politikalarını ve izleme kayıtlarını tek akışta oluşturun.
  • Bir bağlantı oturumuna güvenmek yerine, her MCP talebinde protokol versiyonu, istemci kimliği ve özellikleri taşıyın.
  • Kullanmadan önce bir sunucu keşfedin ve resmi Görevler uzantısı üzerinden uzun çalışmalar sürün.
  • Bir protokol şeklinde simülasyonun MCP, A2A, OAuth veya OpenTelemetry uygulamasından ayırt edilmesi.
  • Her simülasyon sınırını, onu değiştirmesi gereken üretim bileşenine harekete geçirin.
  • - Tutun .AGENTS.md, bir ajan yeteneği, çalıştırma zaman adaptörleri, araçlar ve güvenlik politikası doğru rollerinde.
  • Hangi iddiaların yerel çıkışlardan doğrulanabileceğini ve hangilarının canlı entegrasyon testlerine ihtiyaç duyduğunu açıklayın.

Sorun

Araştırma ve raporlama sistemi tasarlayın. Bir kullanıcı ajan protokolleri üzerine makaleler istiyor. Sistem bir kağıt katalogunu arıyor, özetlemeyi delegeler ediyor, bir rapor oluşturur, bir UI kaynağı gönderir ve sistemi geçiş yolunu kaydeder.

Bu cümle birkaç bağımsız sözleşmeyi gizler:

  • model açısından bir araç şeması;
  • Devletsiz bir talep zarfı ve sunucu keşif sözleşmesi;
  • aktör, kapsam ve araç kimliği için bir geçit kararı;
  • Uzun süreli bir operasyon sözleşmesi;
  • bir delegasyon protokolü;
  • host ile uygulama arasında bir köprü;
  • izler yayılması ve ihracatı;
  • tekrar kullanılabilir bir işletim prosedürü.

code/main.pyBu sistem, normal Python fonksiyonları ve sözlüklerle bu sınırları görünür tutmaktadır. Bir taşımacılığı açmaz, arXiv ile iletişime geçmez, OAuth yapmaz, A2A sunucusu aramaz, bir MCP uygulamasını oluşturmaz veya uzaktan ölçümler çıkarmaz. Bu, kontrol akışını uyumlu bir hizmet olarak simülasyon sunmadan denetmeyi kolaylaştırır.

Anlaşım

Hedef mimarisi

flowchart LR
  U[User] --> C[Agent client]
  C --> G[Authorization gateway]
  G --> M[Research MCP server]
  M --> T[Search and report tools]
  M --> R[Resources and prompts]
  M --> Q[Task store]
  M --> A[A2A client]
  A --> W[Writer agent]
  M --> UI[MCP App resource]
  C --> O[Telemetry exporter]
  G --> O
  M --> O
  A --> O

Mimarlık, kamu protokol modellerinin kavramsal bir bileşimi.

Hedef izleri

flowchart TD
  I[agent.invoke_agent] --> SD[server/discover]
  I --> L1[llm.chat]
  I --> S[tools/call: arxiv_search]
  I --> D[A2A SendMessage]
  D --> X[Opaque writer-agent execution]
  I --> G[tools/call: generate_report]
  G --> K[tasks/get polling]
  K --> V[completed Task with final result]
  V --> UI[ui:// report resource]
  I --> L2[llm.chat final synthesis]

Gerçek bir uygulamada, her hop iz bağlamını yayar. İsim ve özellikler seçilen aletleme sürümü tarafından desteklenen OpenTelemetry semantik sözleşmelerini takip etmelidir. Paylaşılan iz tanımlayıcısı tek başına doğru bir ebeveynlik, ihracat veya arka uç alımını kanıtlamaz.

Geçerli protokol yüzeyleri

Geçerli protokol tarafından tanımlanan yöntem isimlerini kullanın, eski bir taslaktaki hatırlanan isimleri kullanmayın:

BoundaryCurrent surfaceWhat the capstone simulates
MCP discoveryMandatory server/discoverA direct function returning versions, capabilities, and server identity
MCP request contextVersion, capabilities, and client identity in every params._metaFresh request metadata passed to every simulated call
MCP tool calltools/callDirect Python function dispatch
MCP task pollingio.modelcontextprotocol/tasks with tasks/getA working handle followed by a completed task carrying its final result
A2A delegationSendMessage in gRPC and JSON-RPC; POST /message:send in HTTP+JSONOne nested span with no remote call or artificial delay
MCP App calling a server toolapp.callServerTool({ name, arguments })An HTML string with no live bridge
OAuth authorizationAuthorization server, protected-resource metadata, audience and scope validationStatic token lookup and scope membership
OpenTelemetrySDK, propagator, exporter, and collector or backendIn-memory span dictionaries

Protokol isimleri sadece ilk katmandır. Üretim testleri gerçek tel boyunca serileşme, kimlik doğrulama hataları, iptal, zaman çıkışı, tekrar deneme ve sürüm uyumluluğunu uygulamalıdır.

İttifaksiz MCP entegrasyon sınırını değiştirir

Dönüşüm2026-07-28protokol seanslarını ve initialize- Ne ?notifications/initializedEl sıkışması.Mcp-Session-IdHer talepte bu isim boşluğu vardır ._metaalanlar:

json{
  "io.modelcontextprotocol/protocolVersion": "2026-07-28",
  "io.modelcontextprotocol/clientCapabilities": {
    "extensions": {
      "io.modelcontextprotocol/tasks": {}
    }
  },
  "io.modelcontextprotocol/clientInfo": {
    "name": "capstone-client",
    "version": "1.0.0"
  }
}

Sunucu uygulamalıdır server/discover. Sıradan sonuçlar kullanımı resultType: "complete"; görev elini kullanır resultType: "task". Her sonuç , sunucuyu _meta.io.modelcontextprotocol/serverInfo- Evet .

Görev uzatılması tasks/get- Evet .tasks/updatevetasks/cancelBir alet önce dönebilir .resultType: "task"- ...tasks/getKendisi döner.resultType: "complete", ve tamamlanmıştır .TaskSon sonuç içerir.tasks/resultve tasks/listBu yöntemler mevcut uzantı için geçerli değildir.io.modelcontextprotocol/tasksBu işlem, görev eleştiriciyi aynı talepte alabilir.-32021- Evet .requiredCapabilitiesKlantı yeteneği nesnesi şeklinde şekillendirilen, dahilextensions.io.modelcontextprotocol/tasks- Evet .

Güvenlik duruşu

Planlanan yerleşim, derin savunma kullanıyor:

  • Müşteri türünün gerektirdiği PKCE ile OAuth yetkisi;
  • İletişim tokenleri için kaynak ve kitle bağlanması;
  • talep edilen araç ve kapsamı kontrol eden RBAC geçit sistemi;
  • Modelle görebilen bağlamın dışında bulunan yukarıdaki kimlikler;
  • Dökme veya inceleme yapılmış bir araç tanımlama manifisti;
  • Güvenilmeyen girişler, hassas veriler ve sonuçta uygulanan eylemler için ikinci kural değerlendirilmesi;
  • Dosya sistemi, işlem, ağ, yetenek ve kaynak sınırlarının yetkinliğinden dışarı uygulanması gereken bir yürütme kum kutusu.

Demo sadece statik tokenler, kapsam kontrolleri ve açıklama hashleri uyguluyor.

Bilgiler, yolculuk değil, prosedürdür.

Bir Ajan Yetenekli, araştırma iş akışını nasıl gerçekleştirilmesi gerektiğini, hangi araç kontratlarını bekleyeceğini, hangi kanıtları kaydetmesi gerektiğini ve ne zaman durması gerektiğini çalıştırma süresine söyleyebilir.

flowchart TD
  RI[Repository instructions] --> H[Host runtime]
  SK[Agent Skill procedure] --> H
  H --> P[Invocation and permission policy]
  P --> MCP[MCP client adapter]
  P --> A2A[A2A client adapter]
  P --> EX[Sandboxed executor]

Bu eski kap taşındaki düz eser, bir ev sahibi'nin taşınabilir bir paket koruduğunu kanıtlayan bir ders planı değildir. 24 ila 27 dersleri, tüm paket yaşam döngüsünü oluşturur ve test eder.

Kurs artifekti metadataları yerel bir adaptördür

Kurs katalogu ve kurulum cihazı , skill-*.mdBu ders, taşınabilir kimlik alanlarını ve ders katalog alanlarını aynı seviyede tutar:

yaml---
name: ecosystem-blueprint
description: Produce a full Phase 13 ecosystem architecture for a product need.
version: "1.0.0"
phase: "13"
lesson: "23"
tags: [mcp, capstone, ecosystem, architecture, a2a, otel]
---

nameve descriptiontaşınabilir kimlik alanları. version- Evet .phase- Evet .lessonvetagsKurs analizörü için gerekli olan ders özel katalog uzantılarıdır.tagsBir çizgi listesi olarak.--tag capstone- Ben de eşleşebilirim.

Uygulanabilir bir dizin yeteneği seçeneği kullanabilir metadataİpucu değerli uzatma verileri için haritaya.metadataBu dosya yuvaları varsa, bu depoya göre bir kataloğu var.versionveya tagsAşağıdametadataBu nedenle, YAML'nin en küçük analizörü bu açarları atlıyor, katalog boş bir sürüm kaydediyor ve etiket filtresi eseri bulamıyor.

Simülasyon ile üretim

Layercode/main.pyProduction replacementRequired evidence
Discoveryserver_discover() plus static TOOLSserver/discover followed by cache-aware tools/listWire transcript, deterministic order, and schema validation
AuthenticationToken-keyed dictionaryOAuth authorization and resource server validationIssuer, audience, scope, expiry, and failure tests
AuthorizationScope membershipGateway policy bound to actor, tool, target, and tenantAllow and deny audit cases
SearchStatic paper fixturesSearch API or MCP serverSource provenance, ranking, and error tests
TasksLocal handle plus immediate tasks/getDurable io.modelcontextprotocol/tasks store with tasks/get, tasks/update, tasks/cancel, and TTLState-transition, input, cancellation, and recovery tests
DelegationSleep plus nested spanA2A client and remote Agent CardContract, timeout, retry, and opacity tests
AppHTML string and URIMCP Apps resource and App bridgeCSP, permissions, tool-call, and browser tests
TelemetryIn-memory listOTel SDK and exporterCollector receipt and trace-parent assertions
SandboxNoneHost-enforced isolated executorEscape, egress, secret, and resource-limit tests

Bu tablo, teslimat sınırı. Yeşil yerel bir koşuş sadece simülasyonu onaylar.

13. aşama haritası

LessonsContribution
01-05Tool interfaces, calls, schemas, structured results, and deterministic validation
06-14Stateless MCP request envelopes, discovery, transports, resources, prompts, extensions, and Apps
15-18Poisoning defenses, OAuth, gateways, registries, and production authentication
19A2A message and task delegation
20OpenTelemetry GenAI trace design
21Model-provider routing
22Portable skill contract and runtime boundary

Yapın

İşlem sırasında harman çalıştır:

bashcd phases/13-tools-and-protocols/23-capstone-tool-ecosystem
python3 code/main.py

Beş şeyi kontrol et:

  1. server/discoverreklamlar revisyon 2026-07-28Ve Görevler uzantısı.
  2. Alice bir rapor okuyabilir ve oluşturabilirken Bob'un yazılı çağrısı reddedilmiştir.
  3. Bir orkestratör çalışmasında her yerel uzantı bir iz kimliği paylaşır ve ana uzantı kimlikleri kaydeder.
  4. Rapor görevden başlıyor.tasks/getsonuç sonuçta metin ve bir ui://referans.
  5. Görevli yazar, orkeströrün sadece sınır aralığını kaydetmesi için açık değildir.
  6. Hiçbir çıkış ağ bağlantısı, OAuth değişimi, kolektor ihracatı, tarayıcı gösterimi veya kum kutu icrası meydana geldiğini iddia etmiyor.

Senaryo iki kez çalışır, bu yüzden iki kök iz üretir. Denetim girişleri süreç-yerel ve bir sonraki çalışmada yeniden ayarlanır.

Kullan

Bir katman bir seferde destekleyin:

  1. Değiştir server_discover()ve real ile statik araç listesiserver/discoverve tools/listHer istek için versiyon, kimlik ve özellikleri gönderin.
  2. Statik tokenleri yetki sunucusu ve korunan kaynak doğrulama ile değiştirin.
  3. io.modelcontextprotocol/tasksUzatma ve testtasks/get- Evet .tasks/update- Evet .tasks/cancel, Timeout, TTL ve Recovery'ı yeniden başlat.tasks/resultveya tasks/list- Evet .
  4. Delegasyon çubuğunu A2A istemcisiyle değiştirin. Bu bir ajan kartını çözer ve bir mesaj gönderir.
  5. Uygulama resmi SDK ile oluşturun ve sunucu araçlarını üzerinden arayınapp.callServerTool- Evet .
  6. Test toplayıcıya ihracat süreleri ve alıcıda aileyi belirten.
  7. Ders 26'dan Sandbox sözleşmesinin içinde araç ve senaryo çalıştırma.
  8. Proseduru tam bir dizin paketine birleştirin ve Ders 27'nin çıkış kapısını geçin.

Her promosyon yeni sınırları geçen bir entegrasyon testi gerektirir.

Gönder

Bu ders bize çok yararlı .outputs/skill-ecosystem-blueprint.mdBu, primitifleri, güvenlik, delegasyon, telemetri, ambalaj ve en zor işletim riskini kapsayan bir sayfa mimarisi için talep eder.

Bu bir dizin paket olmadığı için referansları, senaryoları, varlıkları veya değerlendirme ayarlarını taşıyamıyor. Bu kurs dışında tekrar kullanılabilir bir beceri yayınlarken Ders 22 ve 24 ila 27'den paket biçimini kullanın.

Egzersizler

  1. Çık .code/main.py. İsteğe bağlı kanıtlara ihtiyaç duyan üretim iddialarından elde edilen üretim ile kanıtlanmış ayrı gerçekler.
  2. İkinci bir statik arka uç ekleyin ve aynı isimli iki araç için çarpışma kuralını tanımlayın.tools/list- Çağrılar.
  3. Yazarı A2A test sunucusu ile değiştirin.
  4. Bir işlem yeniden başlatılmasından sonra hayatta kalan bir görev deposu ekleyin.tasks/getSaygı .pollIntervalMs, ve tamamlanmış görevin son sonuçlarını okumadan tasks/result- Evet .
  5. En az bir MCP uygulaması oluşturun ve doğrulayın app.callServerToolkısıtlayıcı bir CSP ve açık izinler olan bir tarayıcıda.
  6. Simülasyonu bir OTel SDK üzerinden yerel bir koleksiyoncuya aktarın.
  7. Yazmın .AGENTS.mdDeğişken araştırma prosedürü için deposu genelinde bakım kuralları ve ayrı bir beceri paketi için.

Anahtar Terimler

TermWhat people sayWhat it actually means
Capstone"Everything wired together"A staged integration whose simulated and live boundaries remain explicit
Protocol-shaped simulation"It is basically MCP"Local data and calls that resemble a protocol without implementing its wire contract
Tasks extension"Long tool call"An optional io.modelcontextprotocol/tasks lifecycle with durable identity, polling, client input, final result, and cancellation semantics
Opacity boundary"The other agent handles it"The caller sees the declared interface and artifacts, not private reasoning or internal state
Runtime adapter"Skill integration"Host code that maps portable procedure to discovery, invocation, tools, policy, and context
Integration evidence"It passed"A transcript, artifact, or receiver-side observation proving the real boundary was crossed

Daha Fazla Okumak

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.