MCP API
Alaf Server'ın API'sini yapay zeka istemcilerine araç olarak sunan, her çağrıda yeniden kimlik doğrulayan Streamable-HTTP JSON-RPC endpoint'i.
MCP API, yapay zeka ajanlarının (Claude, Cursor ve herhangi bir MCP uyumlu client) Alaf Server'ı bir dizi araç olarak kullanmasını sağlayan tek bir Model Context Protocol endpoint'idir. Her araç, izin etiketli bir REST route'a eşlenir ve her çağrı, tam auth ve permission stack'ini yeniden çalıştırır — böylece bir ajan yalnızca token'ının izin verdiği şeyleri görür ve yapar. Client kurulumu (OAuth flow, config snippet'leri) için MCP genel bakışına bakın.
Base path & auth
Endpoint, instance'ınızda /api/mcp adresinde bulunur — örn. https://your-host/api/mcp. Ya kişisel bir access token'ı (Authorization: Bearer <token>, alaf server token create ile oluşturulmuş) ya da bir MCP client'ın sizin için edindiği bir OAuth 2.1 access token'ı kabul eder. Ayrı bir MCP credential yoktur. Detaylar için API genel bakışına ve auth modeline bakın.
Hem self-hosted hem de Alaf Server Cloud'da (paylaşılan route setinde monte edilmiş olarak) mevcuttur.
Endpoint'ler
| Method & path | İzin | Ne işe yarar |
|---|---|---|
POST /api/mcp | public | Durumsuz Streamable-HTTP JSON-RPC 2.0 endpoint'i. Bearer'ı kendi başına doğrular, ardından initialize, ping, tools/list ve tools/call işlemlerini yönetir. |
GET /api/mcp | public | 405 döndürür — bu server asla mesaj göndermez, bu nedenle açılacak bir SSE stream'i yoktur. |
Her iki route da public olarak bildirilmiştir (otomatik enjekte edilmiş auth middleware'i yok): POST handler'ı bearer credential'ı kendi başına doğrular ve her tools/call, gerçek permission stack'i üzerinden yeniden kimlik doğrulayan dahili bir request gönderir.
Kimlik doğrulama nasıl çalışır
Eksik veya geçersiz bir bearer, /.well-known/oauth-protected-resource adresini gösteren bir WWW-Authenticate header'ı ile 401 döndürür, böylece OAuth-2.1 MCP client'ları authorization server'ı keşfedebilir ve PKCE flow'unu başlatabilir. Geçerli bir credential, çağrı yapanın effective capability'sini çözer — bu yalnızca tools/list'i filtrelemek için kullanılır, böylece endpoint, token'ın kullanamayacağı araçları tanıtmaz.
Capability, authorization gate değildir. Her tools/call, dahili bir HTTP request'i oluşturur ve çağrı yapanın bearer'ını ileterek gerçek Hono app üzerinden gönderir, böylece routing, validation, auth ve kaynak başına permission check'i, HTTP üzerinden çalıştıkları gibi tam olarak çalışır. Salt okunur bir token yalnızca okuma araçlarına ulaşabilir; scoped bir token, kendisine verilen project'ler, server'lar ve repository'lerle sınırlı kalır.
Endpoint, IP başına rate-limited'dır (mcp policy'si: dakikada 300 request) çünkü kimliği doğrulanmamış bir probe bile bir credential lookup maliyetine sahiptir.
Request body (JSON-RPC 2.0 envelope)
POST body'si tek bir JSON-RPC 2.0 mesajıdır (batching, 2025-06-18 protocol'ünde kaldırılmıştır — bir array body'si -32600 döndürür).
Prop
Type
Method'lar
| Method | Sonuç |
|---|---|
initialize | Protocol version'ını müzakere eder (varsayılan 2025-06-18; ayrıca 2025-03-26 ve 2024-11-05 ile de konuşur) ve capabilities: { tools: { listChanged: false } } ile serverInfo: { name: "alaf server", version: "1.0.0" } döndürür. |
ping | {} döndürür. |
tools/list | Çağrı yapanın token'ının gerçekten kullanabileceği araçları döndürür (salt okunur flag'i, role ve grant'lara göre filtrelenir). |
tools/call | Adlandırılmış aracı gerçek API üzerinden gönderir ve yanıtını JSON text content olarak döndürür. |
notifications/initialized | Yalnızca onaylanır (notification, yanıt yok → 202). |
Mevcut araçları listele
POST /api/mcpcurl -s https://your-host/api/mcp \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'# Register the same endpoint with an MCP client (Claude Code):
claude mcp add --transport http alaf server https://your-host/api/mcp \
--header "Authorization: Bearer $ALAFSERVER_TOKEN"Araç seti, bir mcp bloğu ile opt-in yapan Alaf Server'ın izin etiketli route'larından türetilmiştir; credential/auth yüzeyleri (tokens, auth, mcp'nin kendisi) asla ifşa edilmez.
Bir aracı çağır
params.name, tools/list'ten gelen araç adıdır; params.arguments, herhangi bir path parameter'ı, isteğe bağlı bir query object'i, isteğe bağlı bir body object'i (POST/PUT/PATCH araçları için) ve isteğe bağlı bir organizationId'yi (x-organization-id header'ı olarak gönderilir) taşır.
curl -s https://your-host/api/mcp \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"get_projects","arguments":{}}}'Sonuç, temel API response'unu text content olarak sarar; gönderilen request başarısız olduğunda isError: true olur.
Görebileceğiniz hatalar
401 — eksik veya geçersiz access token
Bearer yok veya süresi dolmuş/iptal edilmiş bir bearer. Response, OAuth client'larının discovery'yi başlatabilmesi için bir WWW-Authenticate header'ı taşır; PAT client'ları alaf server token create ile yeni bir token oluşturmalıdır.
GET /api/mcp üzerinde 405
Beklenen bir durum. Bu, server→client stream'i olmayan bir request/response server'ıdır, bu nedenle GET desteklenmez — JSON-RPC mesajınızı her zaman POST edin.
-32600 / -32700 — hatalı request
-32700 bir JSON parse error'ıdır; -32600 geçersiz bir envelope veya bu server'ın kabul etmediği bir batch (array) body'sidir. -32601 JSON-RPC method'unun bilinmediği, -32602 ise tools/call içindeki araç adının mevcut olmadığı anlamına gelir.
Bir araç çağrısı bir resource için 404 döndürüyor
tools/list başarılı oldu ancak belirli bir tools/call 404 döndürüyor — bu, token'ın scope'unun amaçlandığı gibi çalıştığı anlamına gelir: o project, server veya repository'ye yetki verilmemiştir.
Denetim API'si
Kuruluşunuzun yalnızca eklemeli denetim günlüğünü (kim neyi ne zaman yaptı) imleç veya sayfa numaralandırma ve filtrelerle okuyun.
System API
Self-hosted instance administration — onboarding, SSH servers, component install, tunnels, filesystem browse, team-mode migration, and whole-instance data transfer.