|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 5. Servis yüzeyleri > 5.12 MCP kipi |
NetsimSystemAgent.exe -MCP ajanı standart giriş/çıkış üzerinden konuşan bir MCP
sunucusuna çevirir. Araçlar koddan değil veritabanından gelir, ve
her aktif veritabanı kendi araç kümesini getirir:
SELECT * FROM WEBSENDP
WHERE KAYIT_DURUMU IN ('A','O') AND HTTP_METHOD IN ('MCP','Local MCP')Bir satırın WEB_ENDPOINT_KODU aracın adı, ACIKLAMA_TEXT açıklaması,
PARAMETRELER girdi şeması (JSON), SCRIPT_TEXT çalıştırılacak metindir.
Yalnızca SCRIPT_DILI değeri SQL OPEN ve SQL EXECUTE olan
satırlar çalıştırılır.
| Yeni araç eklemek | WEBSENDP tablosuna satır eklemek yeterlidir; C++ tarafında değişiklik gerekmez. |
| Hangi veritabanları | -DATABASE <ad> verilmişse yalnızca o kayıt; verilmemişse MASTER'da kayıtlı, istemci bağlantısı kurulabilen bütün veritabanları. Her kayıt kendi bağlantısını tembel açar ve araçlarını kendi WEBSENDP'sinden yükler. Ulaşılamayan bir veritabanının araçları o listede yer almaz, diğerleri sunulur. Hiç kayıt yoksa liste yalnızca reload_tools'u taşır (veritabanı kaydedildikten sonra çağırılacak araç odur); kayıt var ama hiçbirine bağlanılamıyorsa yerleşik ivd__* araçları da sunulur ve durum günlüğe yazılır. tools/list her koşulda bir araç listesi döndürür. |
| Araç adı | Tek veritabanı sunulurken PATH'in kendisi. Birden fazla veritabanı varken <önek>__<PATH>; önek kayıt adının küçük harfli biçimidir, [a-z0-9_-] dışındaki her karakter _ olur (NETSIM → netsim__). Toplam ad 64 karakteri aşarsa o araç sunulmaz. Çağrı, önekten bulunan veritabanının bağlantısında koşar. |
| Ne zaman görünür | Araç listesi süreç başına bir kez yüklenir. Yeni satır MCP süreci yeniden başlatılınca ya da yerleşik reload_tools aracı çağrılınca görünür: sunucu listeleri düşürür, notifications/tools/list_changed gönderir, istemci tools/list'i yeniler. Araç her listede vardır ve veritabanı ön eki taşımaz. |
| Bozuk satır | PARAMETRELER geçerli JSON değilse o araç günlüğe yazılıp atlanır; diğerleri yüklenir. |
| Parametre sırası | Konumsaldır ve WEBSENDP bölümündeki Parametre sırası kuralı aynen geçerlidir — MCP'ye özgü bir davranış değildir. |
| Yardım ve belge havuzları | Yerleşik araçlar aynı yapıdaki iki havuzu sunar. Müşteri belgeleri (veritabanı başına
belge havuzu; database argümanı, yoksa -DATABASE) için doc_collections, doc_search (tam
metin; Türkçe harfler aksansız yazımla da eşleşir; koleksiyon süzgeci), doc_get (konu adıyla ya da
bağlı olduğu varlıkla), doc_entity (form sınıfı, işlem kodu, modül: öznitelikler, ilişkiler, eski
adlar, bağlı konular, çevrimiçi yardım adresi), doc_entities, doc_links, doc_stats; NETSİM
yardımı (yardım havuzu, paketteki help.db) için help_search, help_get_topic,
help_form_info, help_stats. Yardım havuzu conf'taki
docs/help dosyasıdır (öndeğer ajanın dizinindeki help.db); belge havuzunu
ALTER DATABASE … SET DOCUMENTS veritabanına bağlar. İkisi de salt okunur açılır; belge koleksiyonları
AdminREST EXECCOMMAND IMPORTDOC ile alınır. Havuz yoksa araçlar help pool not found ya da
document pool not imported döner. Ayrı dizinden çalışan bir MCP kopyasının conf'unda
docs/help ajanın dosyasını gösterir. MCP bütün koleksiyonları görür; araçlar her listede yer alır.
doc_search anlamca yakın konuları da bulur (mode: fts tam metin,
vector anlam, hybrid ikisinin birleşimi). Bunun için sorgu gömme modeli
help.db'nin dizininde models\e5-int8\ altında (model_int8.onnx,
tokenizer.json) ve ONNX Runtime kitaplığı ajanın yanında (onnxruntime.dll;
Linux'ta libonnxruntime.so) durur. Biri yoksa vector ve hybrid açık bir
hata iletisi döner, fts çalışmaya devam eder. |
| Yetki | MCP yolunda ROLE_KODU okunmaz. Süreç yereldir, onu başlatan kullanıcının yetkisiyle ve MASTER kaydındaki veritabanı kimliğiyle koşar; güven modeli “kullanıcıya eşit”dir. |
MCP işlemcisi)conf'ta "processor": "MCP" olan uygulama (örnek conf'ta yol /mcp) aynı MCP sunucusunu
HTTP üzerinden sunar. İstemci kaydı örneği:
claude mcp add --transport http netsim http://<sunucu>:82/mcp.
| Taşıma | MCP Streamable HTTP'nin SSE'siz biçimi (initialize yanıtı ajana araçları anlatan instructions metnini taşır): POST gövdesi tek bir JSON-RPC mesajıdır, yanıt application/json gövdesidir; yanıtı olmayan bildirim 202 + boş gövde alır. GET 405 döner (sunucudan akış yok), initialize yanıtında listChanged false'tur. Oturum açılmaz. |
| Araçlar | Yalnız yerleşik ivd__describe_table, ivd__search_objects, ivd__effective_attributes (MASTER'da kayıtlı veritabanlarının kataloğu; database argümanı kayıt adıdır) ve help_* (yardım havuzu, conf docs/help). WEBSENDP araçları, doc_* ve reload_tools bu yoldan sunulmaz; çağrılırlarsa -32601 döner. |
| Veritabanları | MASTER kayıtları: CREATE / OPEN DATABASE ile kaydedilenler. Uygulamaya "database": "<kayıt adı>" yazılırsa ivd__* araçları yalnız o kaydı gösterir: database argümanı verilmeyen çağrı onu okur, başka bir ad -32602 “bulunamadı” alır. Ağa açılan bir uçta bu anahtarla yalnız gösterilmesi istenen veritabanı bırakılır. |
| Yetki | Uç anonimdir: kayıtlı veritabanlarının katalog metaverisini (tablo, kolon, açıklama, öznitelik) ve yardımı kimlik sormadan verir; veri satırı okumaz. Ağa açık bir sunucuda yol ters vekil sunucuda ya da güvenlik duvarında sınırlanır; gerekmiyorsa uygulama "active": false yapılır. |
| İstek sınırı | "rateLimitPerMinute" (örnek conf'ta 120, 0 = sınırsız): istemci IP'si başına dakikada en çok bu kadar istek. Aşan istek 429, Retry-After (pencerenin kalan saniyesi) ve JSON-RPC -32000 alır; pencere IP'nin ilk isteğiyle başlar, 60 saniye sürer. Sayaçlar bütün işçi süreçlerinde ortaktır; sınırı ilk aşan istek günlüğe bir uyarı yazar. |
Distribution işlemcisi)Ürün sürümlerinin dosyalarını (veritabanı seti, seviye paketleri, kitaplıklar, sürüm notu) sunar; Netsim'in
dağıtım sunucusunda çalışır, yerel ağdaki ajanlara ayna olarak bir ajanda da açılabilir. Kök dizin (physicalRoot)
yayın klasörüyle aynı yapıdadır: <sürüm>-<ek>/ klasörleri, her birinde manifest.json
ve manifest'te adı geçen dosyalar. Manifest'i olmayan ya da geri çekilmiş (withdrawn) klasör sunulmaz.
GET VERSIONS[?product=] | Sunulan sürümler, yeniden eskiye: sürüm, ek, yayın tarihi, yükseltilebilen en eski sürüm, katalog sürümü, sürüm notu dosyası. |
GET MANIFEST?version= | Sürümün manifest.json'u (dosya adları, türleri, boyutları, SHA-256). |
GET FILE?version=&name= | Dosyanın kendisi. Yalnız manifest'te adı geçen dosya verilir; ETag dosyanın SHA-256'sıdır, Range ile kesilen indirme kaldığı yerden sürer. Boyutu manifest'tekinden farklı dosya (yarım kopya) sunulmaz. |
POST REPORT | Ajanın kurulum / yükseltme özeti (JSON, en çok 64 KB). Netsim'in dağıtım sunucusu lisans üçlüsünü doğrular ve özeti kendi kayıtlarına yazar. Ajan aynası rapor toplamaz (202). |
| Yetki | Liste ve manifest anonimdir. Netsim'in dağıtım sunucusunda FILE lisans üçlüsünü ister (X-Netsim-System, X-Netsim-Owner, X-Netsim-Activation) ve sürümün yayın tarihi lisansın güncelleme aboneliği dışındaysa reddeder. Ajanda ayna olarak açılırsa yalnız yerel ağ dinleyicisine bağlanır; allowAnonymous: false kimlik ister. |
| Hata | 202 + {"result": false, "message": ...}; bilinmeyen uç 400. |
distribution ayarıYönetim arayüzünün Dağıtım sayfası (Veritabanı menüsü) conf distribution/url'deki
dağıtım sunucusunun sürümlerini listeler; bir sürüm seçilince dosyaları (manifest) görünür, seçilenler ajanın önbelleğine
indirilir (veritabanı seti ve kitaplıkların yanında manifest'te listelenen ajan, model ve uygulama zip'leri de). İstekler ajanın lisans üçlüsünü taşır; dosya indirme lisansın güncelleme aboneliğine bağlıdır.
| Önbellek | distribution/cacheDir (öndeğer ${APPDIR}/distribution, Linux'ta /var/lib/netsim/distribution): <sürüm>-<ek>/<dosya>. En yeni keepVersions sürüm (öndeğer 2) tutulur, fazlası bir sonraki indirmede silinir. |
| Kaldığı yerden | İndirme <dosya>.part'a yazılır; kesilirse bir sonraki istek kaldığı bayttan sürer. Bitince SHA-256 manifest'le karşılaştırılır: tutarsa dosya yerine taşınır, tutmazsa yarım dosya silinir ve hata döner. Önbellekte SHA'sı tutan dosya yeniden indirilmez. Sunucu bir dosyayı reddederse (lisans doğrulanamadı, abonelik sürümü kapsamıyor, dosya yok) sunucunun iletisi dosyanın satırında görünür ve yarım dosya silinir; sorun giderilince indirme baştan başlar. |
| Adres | Netsim'in dağıtım sunucusu https://dist.netsim.com.tr/Distribution (örnek conf'un değeri; standart HTTPS portu 443, ağ çıkışında açık olmalı). Yalnız https (sertifika verifyPeer ile doğrulanır, ek CA caFile); http yalnız bu makinenin adresine. url boşsa dağıtım kapalıdır. |
| Yeni sürüm bildirimi | Yönetim arayüzüne giriş yapılınca (tarayıcı oturumu başına bir kez) ajan sunucunun sürüm listesine bakar (distribution/checkOnLogin, öndeğer true); bu ajandan yeni bir sürüm varsa arayüzün üst şeridinde Yeni sürüm rozeti görünür (Dağıtım sayfasına götürür) ve STATUS latestVersion / newerVersion verir. Yalnız bildirimdir: hiçbir dosya kendiliğinden indirilmez, hiçbir şey kendiliğinden uygulanmaz. |
| Rapor | distribution/report (öndeğer true) açıksa her UPGRADE LEVEL 3 ve veritabanı kurulumu sonunda özet sunucunun REPORT'una gönderilir: işlem, sürüm önce / sonra, motor, sonuç, süre, hata ve uyarı sayısı, ilk hata. Veritabanı adı ve sunucu bilgisi gönderilmez. Gönderim arka planda yapılır: işlem sunucuyu beklemez, gönderilemezse yalnız günlüğe yazılır. Önizleme rapor göndermez; false rapor göndermez. |
| Kurulum ve Yükseltme | Veritabanı kurulumu sayfasının dosya kutularında ve Yükseltme sayfasının paket kutusunda Netsim'den indir düğmesi vardır: sürüm seçilir, kurulumda motora (ve Firebird'de güvenlikli seçimine) göre yedek / veritabanı dosyası ile kütüphane, yükseltmede hedef veritabanının motoru ve güvenlik ayarına uyan seviye paketi indirilir ve yolu kutuya yazılır. |
| Ajanı güncelle | İndirilmiş bir ajan paketi (tür agent) seçilip Ajanı güncelle ile kurulur; yalnız SYSDBA girişi, yalnız bu ajandan yeni bir sürüm ve bu ajanın platformu için paket kabul edilir, dosyanın SHA-256'sı manifest'le doğrulanır. Ajan durur (hizmette SCM / systemd, konsolda -A süreçleri), değişecek dosyalar ile ivd$master.sqlite ve ivd$master.key update-backup/<eski sürüm>/'e alınır, paketin dosyaları yerine konur (NetsimSystemAgent.conf.json hariç - ayarlarınız korunur) ve ajan yeniden başlar (konsolda aynı komut satırıyla). Yeni sürüm 2 dakika içinde hazır olmazsa dosyalar ve MASTER geri konur, önceki sürüm başlatılır. Bağlı oturumlar kesilir. Sonuç sayfada ve STATUS'ta (lastUpdateState: OK | ROLLED BACK | FAILED) görünür; ayrıntı update-backup/update.log'dadır. Kendiliğinden güncelleme yoktur. |