Bir proje, Contextator’daki her şeyin birimidir: dokümanlarını, gömmelerini, indeksleme geçmişini ve tam olarak bir MCP endpoint’ini sahiplenir. Bir projeye bağlı istemci bir başkasının dokümanlarını asla göremez.
Ajanlarınızın soru sorduğu her bilgi bütünü için bir proje açın — genelde ürün başına, takım başına ya da müşteri başına.
Bir proje oluşturmak
Panoda New project’e basın (ya da yalnızca n yazın).
| Alan | Kurallar |
|---|---|
| Project name | Küçük harf, rakam, - ve _; bir harf ya da rakamla başlar, en fazla 63 karakter. Benzersiz olmalı |
| Documentation directory | Opsiyonel. İzin verilen bir kök içindeki klasör (/docs/...), projenin ilk kaynağı olur |
| Index now | Bir ilk indeksleme çalıştırmasını hemen kuyruğa alır |
Ad URL’niz olur, bu yüzden ajan ayarlarına yapıştırmaktan memnun olacağınız bir şey seçin:
http://localhost:3444/mcp/<project-name>
Adı dikkatli seçin. Bir projeyi yeniden adlandırmak, eski URL ile ayarlanmış her istemciyi kırar, bu yüzden onu kalıcı sayın. Pratikte yeniden adlandırmak için: yeni bir proje oluşturun, aynı kaynakları ekleyin ve istemcilerinizi güncelleyin.
Bir projeyi klasörsüz oluşturmak tamamen normaldir — sonradan Add source ile git depoları, yüklemeler ya da Notion ekleyebilirsiniz.
New project yalnızca
rootveadminhesapları için görünür, Delete da öyle — yeni bir/mcp/<name>yüzeyi, örnek düzeyinde bir karardır. Birmemberhesabı, proje sayfasında Members altında eklendiği projeler içinde çalışır; bkz. Hesaplar ve İzinler.
Bir projenin içinde ne var
project "handbook"
├── source "policies" (local directory) → policies/onboarding.md
├── source "api" (git repository) → api/reference/auth.md
└── source "notion" (Notion workspace) → notion/Engineering/Runbooks.md
Her doküman yolu, geldiği kaynağın adıyla başlar. İki kaynağın aynı anda README.md içermesine izin
veren de, bir ajanın yanıtının nereden geldiğini söylemesini sağlayan da budur. Bkz.
Belge Kaynakları.
MCP erişimi
Yeni bir projenin endpoint’i varsayılan olarak token required’dır: onu oluşturmak ilk token’ını üretir ve gizli anahtarı oluşturma diyaloğunda bir kez gösterir, böylece endpoint ilk saniyeden itibaren kapalıdır. Bu varsayılan olmadan önce, yeni bir proje open’dı — hesap ya da token olmadan URL’sine ulaşabilen herkese yanıt verirdi — ve güncelleme, zaten var olan bir projenin modunu geriye dönük olarak değiştirmez. Modun her iki yönde de değiştiği yer, proje sayfasındaki MCP access panelidir:
| Mod | Ne anlama gelir |
|---|---|
| open | http://localhost:3444/mcp/<project-name>’e ulaşan her istemci projeyi arayabilir ve okuyabilir |
| token required | Yalnızca Authorization: Bearer ctxm_… gönderen bir istemci yanıtlanır; geri kalan her şey 401 alır |
| account required | Yalnızca bu projenin üyesi olan bir hesap adına davranan bir istemci yanıtlanır; her istekte yeniden denetlenir |
Üçü bu sırayla daralır ve daralttıkları şey, kimseyi adlandırmayan çağrıcıdır — anonim bir istek ya da
statik bir ctxm_… token. Bir hesabı adlandıran kimlik bilgisi ise open dâhil her modda, her
istekte o hesabın üyeliğine karşı denetlenir: üye olmayan, mod ne derse desin 403 alır; bir üyeliği
kaldırmak ya da bir hesabı devre dışı bırakmak bağlantıyı bir sonraki çağrısında keser. İstemci böyle
bir kimlik bilgisini OAuth 2.1 üzerinden alır; tarayıcı tabanlı MCP connector’larının zaten konuştuğu
şey budur. account required ise anonim hiçbir yol bırakmayan moddur; statik bir token orada bu
yüzden reddedilir.
Modu değiştirmek proje üzerinde manager hakları gerektirir — pratikte bir
root ya da admin hesabı. Token üretmek ve iptal etmek bir editor’ün işidir; projeyi görebilen
herkes, tokenlarının listesini adlarıyla görür. Hangisi ne: Hesaplar ve İzinler.
New token, gizli değeri yalnızca bir kez, oluşturulduğu anda gösterir. Sunucu yalnızca onun
bir hash’ini saklar, bu yüzden kopyalanmamış bir token kurtarılamaz, yalnızca değiştirilebilir.
Sonrasında liste yalnızca adını, ilk birkaç karakterini (ctxm_9f3a…) ve en son ne zaman kullanıldığını
gösterir.
Bir projeyi token required’a çevirmek açık MCP oturumlarını kapatır, bir token’ı iptal etmek de öyle — istemcinin bir sonraki isteğinde değil, hemen. Token gerektiren ve hiç tokenı olmayan bir proje ulaşılamaz olur, bu yüzden endpoint’in hazır olduğunu birine söylemeden önce ilk token’ı üretin.
Netleştirilmesi gereken bir şey: bir token, o endpoint için bir kimlik bilgisidir, bir hesap değil. Hiçbir kimlik ve doküman bazlı kural taşımaz, bu yüzden onu elinde bulunduran kişi projede indekslenen her şeyi okur. Her istemciye kendi token’ını verin, böylece biri diğerlerini rahatsız etmeden iptal edilebilir. Bir istemcinin bunu nasıl gönderdiği: Yapay Zekâ İstemcilerini Bağlamak.
Durumlar
| Durum | Anlamı |
|---|---|
idle |
Hiçbir şey çalışmıyor. Son çalıştırma başarılı oldu |
queued |
İndeksleyiciyi bekliyor; o aynı anda tek bir projeyi işler |
indexing |
Şu anda senkronize ediyor, tarıyor ya da gömüyor |
error |
Son çalıştırma başarısız oldu, ya da kaynaklardan biri senkronize olamadı. Neden gösterilir |
Bir kaynaktan kaynaklanan error durumu hiçbir şeyin çalışmadığı anlamına gelmez: diğer kaynaklar yine
indekslendi, ve mesaj şöyle okunur: 2/3 sources synced; notion: <reason>.
Yeniden indeksleme
| Ne zaman kullanılır | |
|---|---|
| Re-index | Normal durum. Her kaynağı senkronize eder ve yalnızca içeriği değişen dosyaları yeniden gömer |
| Force re-index | Chunk ayarlarını değiştirdikten sonra, ya da indeksin hashleme’nin göremeyeceği bir şekilde bayat olduğundan şüphelendiğinizde |
Contextator, gömme modeli değiştiğinde de kendiliğinden tam bir yeniden indeksleme zorlar — bkz. Gömme Modelleri.
Bir çalıştırma sırasında ne olduğunun ayrıntıları: İndeksleme.
Silme
Delete (onaylamak için iki kez) projeyi, kaynaklarını, dokümanlarını, chunk’larını ve çalıştırma
geçmişini kaldırır, açık MCP oturumlarını kapatır ve DATA_DIR altında somutlaştırdığı dosyaları
(git checkout’ları, yüklemeler, Notion çekimleri) siler.
Kendi dosyalarınıza asla dokunulmaz: /docs’a bağlanan dokümantasyon salt okunurdur, ve local
directory kaynakları olduğu yerde taranır.
Proje indekslenirken silme reddedilir — çalıştırmanın bitmesini bekleyin.
Birden fazla proje
İndeksleyici aynı anda tek bir projeyi işler, çünkü gömme CPU’ya bağlıdır. Kuyruktaki bir proje hangi projeyi beklediğini gösterir. Bir dağıtımın kaç proje tutabileceğine dair bir sınır yoktur; her biri yalnızca başka bir URL’dir.