Contextator
ENTR

İşletim

Yapay Zekâ İstemcilerini Bağlamak

Claude Code, Cursor, Claude Desktop ve diğer her MCP istemcisi için yapıştırmaya hazır kurulum; ayrıca token'lar, uzaktan erişim ve bir endpoint'i ajansız doğrulama.

Güncelleme:

Her proje tek bir URL’dir. Bir istemciyi ona yöneltin, ajan üç dokümantasyon aracı kazanır — başka bir yapılandırma, API key ya da plugin gerekmez.

http://localhost:3444/mcp/<project-name>

Panonun Connect an agent paneli, aşağıdaki her parçayı gerçek URL ile doldurulmuş, kopyalamaya hazır biçimde yazdırır — proje bir token gerektiriyorsa Authorization header’ı dahil. Örneklerde demo’yu kendi proje adınızla, ctxm_9f3a…’yı proje sayfasının size gösterdiği token ile değiştirin.


Claude Code

Yeni bir proje varsayılan olarak bir token gerektirir, bu yüzden projenizin token’ıyla header’ı ekleyin:

claude mcp add --transport http demo-docs http://localhost:3444/mcp/demo \
  --header "Authorization: Bearer ctxm_9f3a…"

Projenin MCP access’i open’a çevrildiyse header’ı çıkarabilirsiniz:

claude mcp add --transport http demo-docs http://localhost:3444/mcp/demo

Çalıştığını kontrol edin:

claude mcp list

Sonra yalnızca dokümantasyonunuz hakkında bir soru sorun — Claude Code, search_docs’u kendiliğinden çağırmaya karar verir, çünkü sunucu neyi tuttuğunu anlatır.

Cursor

Her proje için ~/.cursor/mcp.json, ya da tek bir depo içinde .cursor/mcp.json. Yeni bir proje varsayılan olarak bir token gerektirir:

{
  "mcpServers": {
    "demo-docs": {
      "url": "http://localhost:3444/mcp/demo",
      "headers": { "Authorization": "Bearer ctxm_9f3a…" }
    }
  }
}

Projenin MCP access’i open’a çevrildiyse headers bloğunu çıkarabilirsiniz:

{
  "mcpServers": {
    "demo-docs": { "url": "http://localhost:3444/mcp/demo" }
  }
}

Cursor’ı yeniden başlatın, sonra Settings → MCP’de yeşil bir gösterge arayın.

Claude Desktop

Claude Desktop stdio konuşur, bu yüzden bir köprüye ihtiyaç duyar. Yeni bir proje varsayılan olarak bir token gerektirir ve mcp-remote onu --header ile iletir; claude_desktop_config.json içinde:

{
  "mcpServers": {
    "demo-docs": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "http://localhost:3444/mcp/demo",
        "--header", "Authorization: Bearer ctxm_9f3a…"
      ]
    }
  }
}

Projenin MCP access’i open’a çevrildiyse --header argümanını çıkarabilirsiniz:

{
  "mcpServers": {
    "demo-docs": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:3444/mcp/demo"]
    }
  }
}

Claude Desktop’ı yeniden başlatın. Araçlar connectors simgesinin altında görünür.

Yapılandırma dosyası konumları: macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json.

Başka herhangi bir MCP istemcisi

Ona URL’yi verin. Contextator her iki MCP transport’unu da aynı adreste sunar ve istemcinin gönderdiğine göre seçer:

  • Streamable HTTP (güncel istemciler): bir initialize isteğini POST edin; session id mcp-session-id header’ında geri gelir.
  • HTTP + SSE (protokol 2024-11-05, eski istemciler): URL’yi GET edin; sunucu /mcp/demo/messages?sessionId=…’i işaret eden bir endpoint olayıyla yanıt verir.

İkisi arasında geçiş yapan bir yapılandırma yoktur.

Token gerektiren projeler

MCP access’i token required olan bir proje, geçerli bir token olmadan gelen her isteği, istemcinin hangi transport’u kullandığından bağımsız olarak 401 ve bir www-authenticate: Bearer realm="<project-name>" header’ıyla yanıtlar. Token’ı proje sayfasında üretin — yalnızca bir kere gösterilir — ve sıradan bir header olarak gönderin:

Authorization: Bearer ctxm_9f3a…
  • Header her /mcp/* isteğinde kontrol edilir. Eski SSE transport’unda bu, stream’i açan GET isteği ve /mcp/demo/messages’a giden POST’lar anlamına gelir; bu yüzden yalnızca ikisinden birine header ekleyebilen bir istemci bağlanamaz. Bir tarayıcı EventSource’u genelde bu durumdur — o projeleri açık bırakın ya da tüm örneği kimlik doğrulayan bir proxy’nin arkasına koyun.
  • Token’lar proje başınadır. İki token korumalı projeye bağlı bir istemcinin her biri için birer token’a ihtiyacı vardır.
  • Bir token’ı iptal etmek, istemcisini oturum ortasında hemen keser; bir projeyi open’dan token required’a çevirmek de öyle. Güncel bir token ile yeniden bağlanmak tek gereken şeydir.

Bu anahtarın nerede olduğu ve kimin çevirebileceği: Projeler.

Hesap zorunlu kılan projeler

account required üçüncü moddur ve bu panonun üyeliklerinin /mcp/*’a ulaştığı moddur. Statik bir ctxm_… token kimseyi adlandırmaz ve orada reddedilir; bir istemcinin projenin üyesi olan bir hesap adına davranması gerekir ve bu her istekte yeniden denetlenir — bir üyeliği kaldırmak, bir hesabı devre dışı bırakmak ya da parolasını sıfırlamak bağlantıyı bir süre dolumunda değil, bir sonraki çağrısında keser.

İstemci bu kimlik bilgisini OAuth 2.1 üzerinden alır; tarayıcı tabanlı MCP connector’larının zaten konuştuğu şey budur. Hiçbir şey yapılandırmazsınız: connector’ı http://host:3444/mcp/<project-name>’e yöneltin; sunucunun yetkilendirme endpoint’lerini keşfeder, kendini kaydeder ve sizi buradaki bir sayfaya, oturum açıp onaylamanız için gönderir. Geri aldığı şey sizin hesabınız olarak davranır, sessizce kendini yeniler ve connector bir ay kullanılmazsa süresi dolar. Parolanızı değiştirmek, sizin adınıza davranan her connector’ın bağlantısını keser.

MCP_OAUTH=0 akışın tamamını kaldırır; o zaman kapalı bir projeyi yalnızca statik tokenlar açar — bu da tarayıcı tabanlı connector’ların hiç bağlanamaması demektir.

Aynı anda birden fazla proje

Proje başına bir girdi ekleyin. İzole kalırlar — ikisine de bağlı bir ajanın basitçe iki ayrı araç seti olur ve birindeki bir arama diğerinden hiçbir zaman belge döndürmez.

{
  "mcpServers": {
    "billing-docs": { "url": "http://localhost:3444/mcp/billing" },
    "mobile-docs":  { "url": "http://localhost:3444/mcp/mobile" }
  }
}

Başka bir makineden bağlanmak

  1. Sunucunun erişilebilir olduğundan emin olun: HOST=0.0.0.0 (varsayılan) ve port açık.
  2. localhost değil, sunucunun adresini kullanın: http://docs.internal:3444/mcp/demo.
  3. Bir reverse proxy arkasında, panonun doğru URL’leri yazdırması için PUBLIC_BASE_URL’i ayarlayın ve response buffering’i kapatın — bkz. Kurulum.

Bir ajan olmadan doğrulamak

Depoyla birlikte bir smoke test gelir. Bir kaynak checkout’undan:

npm install
npm run smoke -- http://localhost:3444/mcp/demo "how do I re-index"
npm run smoke -- http://localhost:3444/mcp/demo "kurulum" --sse   # eski transport'u da dener

Gerçek bir MCP handshake yapar, araçları listeler ve bir arama çalıştırır. Bir Authorization header’ı gönderemez, bu yüzden bir token gerektiren proje ona 401 yanıtı verir — o durumu bunun yerine curl ile kontrol edin:

curl -s -i -X POST http://localhost:3444/mcp/demo \
  -H "Authorization: Bearer ctxm_9f3a…" \
  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

Bağlanmıyorsa

Belirti Kontrol edin
Unknown project "…" URL’deki proje adı, tam olarak panonun gösterdiği gibi mi
İstemci bağlanıyor ama hiçbir şey bulamıyor Proje indekslendi mi — pano belge ve parça sayılarını gösterir
“indexed with another model” Projeyi yeniden indeksleyin (Gömme Modelleri)
Local’de çalışıyor, başka bir makineden çalışmıyor HOST, firewall ve localhost yerine makinenin adresini kullanıp kullanmadığınız
Tarayıcı tabanlı bir istemci reddediliyor Origin’ini ALLOWED_ORIGINS’e ekleyin
401 This project requires an MCP token Proje token required modunda ve istemci hiç Authorization header’ı göndermiyor
401 This project requires an account-backed credential Proje account required modunda ve istemci, kimseyi adlandırmayan statik bir ctxm_… token gönderiyor
403 That account is not a member of this project Connector, projenin üyesi olmayan bir hesap adına oturum açtı. Bu, open dâhil her modda denetlenir
Tarayıcı tabanlı bir connector hiç bağlanamıyor Bu kurulumda MCP_OAUTH=0, yani kullanabileceği bir akış yok
401 Unknown or revoked MCP token Token iptal edilmiş ya da başka bir projeye ait. Proje sayfasında yeni bir tane üretin

Daha fazlası Sorun Giderme sayfasında.

Gezinmek için ok tuşları, açmak için Enter.