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_approvaldurumunda bekler.pending_approval,rejectedvedeaddurumları 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_TOKENile. 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>(veyaAGENT_TALE_EMBASSY_URL/AGENT_TALE_EMBASSY_TOKEN, ya daconfig.tomliç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