İçeriğe geç

Embassy (MCP Base)

Embassy ("elçilik"; uygulamada MCP Bases), müşterinin kendi ağında bir projenin yanında çalışan tek bir sunucudur (cmd/mcpbase). Projenin OpenAPI ile tanımlanmış HTTP API'sini MCP araçlarına çevirir ve POST /mcp adresinde sunar. İsteğe bağlı runner modu açıldığında, platformda bu elçiliğe atanmış agent'ları yine müşterinin ağında çalıştırır: model olarak yerel bir model (Ollama gibi OpenAI uyumlu bir uç nokta) veya yapılandırılmışsa bir bulut sağlayıcı kullanılır. Her koşunun raporu elçilikte operatör onayını bekler; varsayılan yapılandırmada operatör onaylamadan hiçbir rapor platforma iletilmez.

Akış

sequenceDiagram
    autonumber
    participant P as Agent Tale platformu
    participant E as Embassy (müşteri ağı)
    participant A as Proje API
    participant O as Operatör (TUI)
    P->>P: MCP Base kaydı (Settings, MCP Bases)
    P->>E: Check (MCP initialize + tools/list)
    P->>P: Agent ata (prompt kopyası, cron, max turns)
    E->>P: Sync, GET /api/v1/embassy/sync (API anahtarı)
    P-->>E: Assignment listesi (prompt kopyalarıyla)
    E->>A: Model ile tool-use koşusu (araç çağrıları)
    E->>E: Rapor kaydedilir (pending_approval)
    O->>E: approve_report (POST /admin/mcp)
    E->>P: POST /api/v1/embassy/reports (yalnız onaylı)
    P-->>E: Kabul (aynı rapor tekrar gelirse dedupe)

İki yön, iki ihtiyaç

Check, Tools ekranı ve Case koşuları platformun elçiliğin /mcp adresine ulaşabilmesini gerektirir. Runner akışı (adım 4–10) ise yalnızca elçilikten platforma giden bağlantıyla çalışır; kayıt anında erişim denenmez.

Kurulum

Elçilik veritabanı kullanmayan tek bir statik binary'dir (services/mcpbase-service/cmd/mcpbase; Docker imajı services/mcpbase-service/Dockerfile). Runner durumu düz JSON dosyalarında tutulur (STATE_DIR altında assignments.json ve reports/<uid>.json); operatör tüm durumu okuyup yedekleyebilir. GET /health proje adını ve araç sayısını döner.

Temel

Env Varsayılan Amaç
PROJECT_NAME spec başlığı Yerleşik describe_project aracının döndürdüğü ad
UPSTREAM_BASE_URL — Sunulacak yerel API. Bir PATHFINDER_* kaynağı açık değilse zorunlu
SPEC_FILE — OpenAPI JSON/YAML dosya yolu (önce bu denenir)
SPEC_URL — Spec adresi; ikisi de yoksa UPSTREAM_BASE_URL'in well-known yolları yoklanır
MCP_TOKEN — Platformun /mcp çağrılarında sunması gereken bearer token (platform kaydındaki Auth token)
PORT 8090 Dinleme portu

tools/list spec'teki işlemlerden üretilir, tools/call upstream API'ye iletilir (yanıt en çok 256 KiB).

Keşif (isteğe bağlı)

PATHFINDER_DOCKER · PATHFINDER_DOCKER_HOST · PATHFINDER_DOCKER_HOST_GATEWAY · PATHFINDER_SCAN_CIDRS (yalnız kendi ağınız) · PATHFINDER_SCAN_PORTS · PATHFINDER_PROJECT_DIR · PATHFINDER_ALLOW_CIDRS · PATHFINDER_CONCURRENCY (varsayılan 32). Eski DISCOVER_* adları hâlâ okunur (önce PATHFINDER_* denenir). Biri açıksa pathfinder_discover aracı görünür (eski adı discover_services): Docker konteynerlerini, proje dizinindeki spec dosyalarını ve izin verilen ağ aralıklarını tarar. Platformdaki POST /api/v1/mcp-bases/:id/discover yalnızca aday listesi döner; hiçbir şeyi kendiliğinden kaydetmez.

Runner (isteğe bağlı)

Runner yalnızca üç PLATFORM_* değişkeninin hepsi doluysa başlar; aksi halde elçilik platforma hiç bağlantı açmaz ve yalnızca /mcp ile /health sunar.

Env Varsayılan Amaç
PLATFORM_BASE_URL — Platform API kökü
PLATFORM_API_KEY — read:assignments + submit:report scope'lu agst_ anahtarı
PLATFORM_BASE_ID — Bu elçiliğin platformdaki MCP Base kimliği
STATE_DIR ./mcpbase-state Assignment ve rapor dosyaları
SYNC_INTERVAL 5m Assignment senkron aralığı
SCHEDULE_TICK 30s Zamanı gelen assignment taraması
LLM_PROVIDER boş (otomatik) openai (OpenAI uyumlu) veya anthropic. Boşsa LLM_BASE_URL doluysa OpenAI uyumlu, değilse Anthropic anahtarı aranır
LLM_BASE_URL — OpenAI uyumlu uç nokta, ör. Ollama için http://localhost:11434/v1
LLM_MODEL — Model kimliği (ör. qwen2.5:14b); Anthropic için haiku / sonnet / opus (varsayılan sonnet)
LLM_API_KEY — Sağlayıcı anahtarı; OpenAI uyumlu uç noktada boş bırakılabilir (boşsa Authorization başlığı gönderilmez). Anthropic için yoksa CLAUDE_API_KEY, sonra ANTHROPIC_API_KEY okunur
MAX_TOOL_TURNS 5 Assignment tur sayısı taşımıyorsa kullanılan varsayılan
MCP_ADMIN_TOKEN — Yerel onay yüzeyi POST /admin/mcp için ayrı bearer token. Boşsa rota hiç açılmaz ve raporlar pending_approval'da kalır
RUNNER_AUTO_APPROVE false true yerel onayı atlar. Tehlikelidir, bilerek kapalıdır

PLATFORM_API_KEY, MCP Base kaydının sahibi olan cüzdanla oluşturulmalıdır. Bu iki scope web'deki New key diyaloğunda listelenmez; anahtar oturum açıkken POST /api/v1/user/api-keys ile {"name": "...", "scopes": ["read:assignments", "submit:report"]} gövdesiyle oluşturulur. Platform, bir MCP Base'i rapor gönderen ilk anahtara bağlar; başka bir anahtarla gelen rapor reddedilir.

Model seçimi veri yolunu belirler

Koşu sırasında agent prompt'u ve araç sonuçları modele gönderilir. Yerel bir model (ör. Ollama) bu trafiği ağınızda tutar. Anthropic veya uzak bir OpenAI uyumlu uç nokta seçerseniz bu içerik o sağlayıcıya gider. Runner açıkken hiçbir model yapılandırılmamışsa elçilik başlamaz.

Platform tarafı

Web: Settings → Developer → MCP Bridge → Go to MCP Bases → (/settings/projects). TUI: MCP Bases sekmesi (n yeni kayıt, s assignment'lar, p raporlar, l yerel onay yüzeyi).

İşlem Açıklama
Add MCP Base Ad, MCP endpoint URL (ör. http://host:8090/mcp), isteğe bağlı OpenAPI yedeği için base URL, auth header ve auth token (şifreli saklanır)
Check Platform elçiliğe MCP initialize + tools/list ile bağlanır, olmazsa well-known OpenAPI yollarını dener; sonuç online / offline. Elle tetiklenir
Tools Elçiliğin araçlarını listeler ve bir aracı sunucu tarafı proxy üzerinden çağırır; auth token tarayıcıya gelmez
Assignments Bir agent'ı elçiliğe bağlar (aşağıda)
Reports Yalnız onaylanıp teslim edilmiş raporlar: durum (success/failed), özet, araç çağrıları, onaylayan, alınma zamanı. Web'de salt okunur
Runner göstergesi Son senkron 10 dakikadan yeniyse Runner connected, daha eskiyse Runner stale, hiç yoksa No runner

Assignment

  • Yalnızca sahibi olduğunuz veya satın aldığınız bir agent atanabilir. Web formu agent kimliği ve isteğe bağlı cron ister.
  • Agent'ın prompt'u atama anında kopyalanır (prompt v1). Agent sonradan düzenlenirse elçilikte çalışan metin değişmez; güncel prompt'a geçmek açık bir işlemdir (PUT /api/v1/mcp-bases/:id/assignments/:aid, resync_prompt: true) ve sürüm artar.
  • Schedule: 5 alanlı, saniyesiz cron, UTC. Boş bırakılırsa yalnız elle tetiklenir. Geçersiz ifade platformda reddedilir.
  • Max turns: varsayılan 5, en çok 20. Web formu varsayılanı kullanır; farklı değer API ile verilir.
  • Lore servisi bağlı kurulumlarda platform, senkronda agent'ın Lore bağlamını prompt'un başına ekler. Teslim edilen raporun özeti agent'ın hafızasına, tam metni (araç çağrıları dahil) agent'ın Lore belgelerine yazılır.

Case koşuları

2–5 kayıtlı elçilik seçilir; platform her birini o anda introspect eder ve sonucu LLM ile analiz eder (asenkron, kredi cüzdandan düşülür).

Case Kredi Ne üretir
Case 1 — Project Diff 3 Projelerin özellik kümelerini karşılaştırır; her özelliği ortak / uyumlu / uyumsuz / farklı diye sınıflar
Case 2 — Endpoint Merge → MCP 5 Endpoint listelerini birleştirir, her endpoint'in hangi projelerde olduğunu ve MCP toolset fırsatlarını çıkarır

İsteğe bağlı on-chain attestation, başarılı bir Case koşusunun çıktı hash'ini zincire yazar. Yalnızca Case koşuları içindir, koşuyu hiçbir zaman engellemez ve zincir yapılandırılmamış kurulumlarda kullanılamaz.

Onay akışı

stateDiagram-v2
    [*] --> pending_approval: Koşu biter
    pending_approval --> approved: approve_report
    pending_approval --> rejected: reject_report
    approved --> delivering: outbox
    delivering --> delivered: Platform kabul etti
    delivering --> dead: 12 deneme veya 4xx
    dead --> approved: retry_report
  • Raporlar elçilikte pending_approval durumunda bekler. pending_approval, rejected ve dead durumları yalnızca elçilikte yaşar; platform yalnızca teslim edilen raporu görür.
  • Onay, elçiliğin yerel onay yüzeyinden verilir: POST /admin/mcp, MCP_ADMIN_TOKEN ile. Bu yüzey ayrı bir MCP sunucusudur; araçları platformun introspect ettiği listede ve yerel modelin erişebildiği araçlarda görünmez.
  • TUI bu yüzeye --embassy-url http://<elçilik>:8090/admin/mcp --embassy-token <MCP_ADMIN_TOKEN> (veya AGENT_TALE_EMBASSY_URL / AGENT_TALE_EMBASSY_TOKEN, ya da config.toml içindeki [[embassies]] girdileri) ile bağlanır; birden çok elçilik tanımlıysa önce seçim ekranı açılır.
Araç Ne yapar
list_reports Rapor özetleri, isteğe bağlı durum filtresiyle
get_report Tek raporun tamamı; araç çağrılarının argüman ve sonuçları kırpılmadan
approve_report Bekleyen raporu onaylar, teslim kuyruğuna alır
reject_report Bekleyen raporu reddeder; reddedilen rapor hiç gönderilmez
retry_report dead raporu deneme sayacı sıfırlanmış olarak kuyruğa geri alır
run_assignment Bir assignment'ı hemen çalıştırır; koşu bitene kadar bekler
list_assignments Senkronlanan assignment'lar, sonraki ve son çalışma zamanlarıyla
runner_status Assignment sayısı, duruma göre rapor sayıları, yapılandırılan model

Teslim: onaylı raporlar bir outbox'tan gönderilir. Hata halinde bekleme 30 sn'den 30 dk'ya kadar üstel artar (±%20 sapma); 12 denemeden sonra (yaklaşık 2,5 saat) rapor dead olur. Platformun 4xx ile reddettiği rapor doğrudan dead olur; 409 (rapor platformda zaten var) teslim edilmiş sayılır. Teslim rapor kimliğine göre idempotenttir: yanıtı kaybolan bir tekrar gönderim yeni kayıt açmaz. İlerleme her adımda diske yazılır; çöken elçilik kaldığı yerden devam eder. Platform tarafında rapor başına sınırlar: özet 8 KiB, çıktı 256 KiB, en çok 50 araç çağrısı (64 KiB).

Onaylanan rapor neleri içerir

Rapor; özet, çıktı ve modelin yaptığı her araç çağrısının argüman ve sonucunu içerir. Onayladığınız rapor bu iz ile birlikte platforma gider. get_report ile tam içeriği onaydan önce görün.

Prompt-injection sınırı

Agent prompt'u modelin sistem talimatıdır; araçlardan dönen içerik kullanıcı rolünde verilir ve talimatın yerine geçemez. Modelin çağırabildiği araçlar tam olarak elçiliğin kendi MCP araçlarıdır.

Bugün ne yapar / ne yapmaz

Konu Bugün
OpenAPI ile tanımlanmış HTTP API'leri MCP aracına çevirme Yapar
Kaynak kodunu veya veritabanını doğrudan araca çevirme Yapmaz; yalnızca OpenAPI tanımlı HTTP API'ler
Agent'ı müşteri ağında çalıştırma Yapar (runner modu, isteğe bağlı); yerel model veya yapılandırılmış bulut sağlayıcı
Operatör onayı olmadan rapor gönderme Varsayılan olarak yapmaz (RUNNER_AUTO_APPROVE=false)
Araç çağrısı izini platforma gönderme Yapar; onaylanan rapor bu izi içerir
Dışarı bağlantı Runner yalnızca Agent Tale platform API'sine bağlanır; bunun dışında yalnızca sizin yapılandırdığınız LLM uç noktası ve yerel upstream API
Elçilikten elçiliğe iletişim Yapmaz
Blockchain ile konuşma Elçilik yapmaz; isteğe bağlı attestation platform tarafında, yalnızca Case koşuları için
Web'den onay Yapmaz; onay TUI üzerinden yerel yüzeyde, web raporları teslimden sonra salt okunur gösterir
Otomatik sağlık izleme Yapmaz; Check elle tetiklenir, runner göstergesi son senkron zamanına bakar
Rapor şablonu, format doğrulaması, mobil onay Yapmaz (yol haritası)

Yol haritası

Aşağıdakiler planlanan özelliklerdir, bugün mevcut değildir. İki şirketli akış önce iki düğümlü bir kavram kanıtı (proof of concept) olarak planlanmaktadır:

  • Format doğrulamalı rapor şablonları
  • İki şirket arasında zincir üstünde anlaşma (teklif, kabul, süre sonu)
  • Rapor hash'inin zincire sabitlenmesi ve alıcı tarafında doğrulanması
  • Platform aracı olmadan, elçilikten elçiliğe şifreli teslim
  • Değiştirildiğinde iz bırakan (tamper-evident) denetim günlüğü
  • Mobil onay

İlgili sayfalar

Toolsets (MCP Bridge) · Connectors · Ayarlar → API Keys · Lore