Bosphorus

← Bilgi bankası

Kişisel araç kiti: kendi saat diliminiz ve kendi imza anahtarınız

Saat diliminizi, yerel ayarınızı ve kişisel HMAC anahtarınızı My variables'a bir kez girin; sohbette yerel saatinizi sorun, metin imzalayın ve doğrulayın.

AraçlarMy variablesİmzalamaÜrün üzerinde doğrulandığı tarih:

Animasyonlu şema: bir kişinin kendi değişkenini taşıyan isteğin ağ geçidinden araç sunucusuna geçişiMehmetmühendislikAyşemühendislikZeynepoperasyonaimosohbet + ajanlarAğ geçidi/api/mcp/githubanahtarekipizindeğişkenkişiye ait değer yokyalnızca bu istek için okunurMCP sunucusugithubGitHub APItek kimlik görürKASAOpenBao ya da mühürlü · kişi, sunucukayıtlı değer yokDENETİM KAYDI
  1. Adım 01

    Önce: herkes için tek anahtar

    • Ağ geçidi her çağrıya yöneticinin sunucuya kaydettiği tek kimlik bilgisini ekliyordu.
    • Ayşe, Mehmet ve Zeynep karşı tarafa aynı kimlikle ulaşıyordu.
    • Oradaki kotalar, yetkiler ve denetim kayıtları kişileri birbirinden ayırt edemiyordu.
  2. Adım 02

    Yönetici, sunucunun kabul ettiği değişkenleri tanımlar

    • Konsolun /mcp sayfasındaki Variables sekmesinde: ad, gizli mi, zorunlu mu ve nasıl iletileceği.
    • Yalnızca adlar. Yönetici burada hiç kimsenin değerini yazmaz.
    • Tanımlanmamış bir ad ne saklanır ne gönderilir. Alanlar, MCP Registry'nin server.json şemasındaki ortam değişkeni biçimini izler.
    Hat üzerindeGITHUB_API_KEY gizli · zorunlu başlık Authorization: Bearer ${value}
  3. Adım 03

    Ayşe soruyor. Ağ geçidi durduruyor.

    • Anahtar, ekip kapsamı ve izni geçiyor. Ardından zorunlu değişkenin eksik olduğu görülüyor.
    • Araç sunucusuna hiçbir istek çıkmıyor. GitHub'a hiçbir şey ulaşmıyor.
    • Araç yanıtı kişisel sayfasının bağlantısını taşıyor; MCP bağlantı istemini destekleyen bir istemci onu bir istem olarak gösteriyor. Değer sohbette hiç istenmiyor: MCP şartnamesi gizli bilgilerin bu yolla toplanmasını yasaklıyor.
    Hat üzerindeisError: true "This tool needs your own GITHUB_API_KEY … Set it once at /vault?server=github"
  4. Adım 04

    Ayşe değeri bir kez, kendi sayfasında giriyor

    • My variables (/vault), konsolla aynı girişin arkasında. Yalnızca kendi satırlarını görüyor.
    • Kurulum OpenBao çalıştırıyorsa değer kendi klasörüne, kv/users/<e-postası>/mcp/github yoluna yazılır; Ayşe onu orada kendisi açabilir. Aksi halde (kişi, sunucu, ad) üçlüsüne bağlanmış şifreli metin olarak saklanır; bir satır başka bir kişiye taşınamaz.
    • Burada bir daha gösterilmez. Sayfa bunun yerine kısa bir parmak izi gösterir; yöneticiler ve model değeri hiçbir zaman görmez. Değeri yalnızca Ayşe, yalnızca kendi OpenBao klasöründe geri okuyabilir.
    Hat üzerindekv/users/ayse.demir@corp.example/mcp/github GITHUB_API_KEY = ••••••••
  5. Adım 05

    Artık çağrı ona ait

    • Ağ geçidi değerini yalnızca bu istek için okuyor: OpenBao klasöründen ya da mühürlü satırını çözerek. Ardından yöneticinin şablonunu bir başlığa yazıyor.
    • Önbelleğe alınmıyor, modelin bağlamına hiç girmiyor.
    • Denetim satırı değişkenin adını kaydediyor. Araç değeri geri yansıtırsa yanıtın kaydedilen kopyası maskeleniyor.
    Hat üzerinderequestContext.userVars = { injected: ["GITHUB_API_KEY"] }
  6. Adım 06

    Herkes kendi anahtarıyla

    • Ayşe ve Mehmet GitHub'a kendi kimlikleriyle ulaşıyor. Zeynep hiçbir şey girmediği için kendi sayfasının bağlantısını alıyor.
    • Yönetici kaç kişinin değer girdiğini görür. Hangi değeri girdiğini asla.
    • İşten ayrılış, Variables sekmesinde tek bir silme işlemi. Yönetici bir kişinin değerlerini silebilir ama asla okuyamaz.
    Hat üzerindegithub · 3 kişiden 2'si GITHUB_API_KEY girdi
  7. Adım 07

    Üç yol, tek kasa

    • Başlık şablonu, canlı: size ait olmayan üçüncü taraf sunucular için. Onların tarafında hiçbir şey değişmiyor.
    • Mühürlü paket, canlı: kendi çalıştırdığınız sunucular için. O sunucunun adına bağlı, 60 saniye geçerli tek bir şifreli başlık.
    • Ortam köprüsü, canlı: yalnızca ortam değişkeni okuyan araçlar için. Kişi başına bir alt süreç, ortamı kasadan doldurulur.
  8. Adım 08

    Neyi korur, neyi korumaz

    • Kasanın bugün neyi koruduğu ve kalan güvenin nerede durduğu.

    Değeri asla görmeyenler

    Sohbet, modelin bağlamı, denetim kaydı, günlük akışı, metrikler, konsol yöneticileri, diğer kişiler ve değişkenin tanımlanmadığı her araç sunucusu.

    Yine de değeri okuyabilecek olan

    Platformun kendisi: değerleri gözetimsiz okur; böylece gece 03:00'teki zamanlanmış ajan çalışması da çalışır. OpenBao ile kendi hizmet hesabıyla oturum açar, saklanmış hiçbir kimlik bilgisi tutmaz ve yalnızca kişilerin mcp/ klasörlerini okuyabilir; OpenBao'nun kendi yöneticileri ise her klasöre ulaşabilir. OpenBao yoksa kasa anahtarını ve veritabanını birlikte elinde tutan. Yedek arşivleri kasayı da taşır; onları kasa gibi koruyun.

Başlıkla iletim, mühürlü paketler ve ortam köprüsü canlı; herkesin değerleri kendi OpenBao klasöründe durabilir.

Kişisel araç kiti (Personal toolkit), yalnızca sizin elinizde olan ayarlarla çalışan küçük bir araç sunucusudur: saat diliminiz, tarihlerin hangi yerel ayarla yazılacağı ve size ait bir imza anahtarı. Bunları konsolun My variables sayfasında bir kez girersiniz. Sonrasında sohbet çalışma alanına “benim için saat kaç?” ya da “bu metni benim anahtarımla imzala” diye sorabilirsiniz; yanıt başka birinin değil, sizin ayarlarınızla üretilir.

Bu rehber yalnızca yöneticiler için değil, herkes içindir. Çalışan ürün üzerinde 27 Eylül 2026’da uçtan uca doğrulandı. Bir kişi üç değeri de girdi, sohbete saati ve hello metninin imzasını sordu; kendi saat dilimini ve kendi imzasını aldı. Denetim izi üç değişkenin adını kaydetti, değerlerin hiçbirini kaydetmedi.

Neye ihtiyacınız var

Tek paragrafta nasıl çalışır

Değerleriniz şifreli saklanır ve yalnızca sizin bu araç sunucusuna yaptığınız çağrılarda gönderilir. Sunucu sizin için ayrı bir süreç başlatır; bu süreçte yalnızca sizin değerleriniz bulunur, başkasınınki bulunmaz. On dakika boyunca çağrı gelmezse süreç kapatılır. Model, aracın yanıtlarını (saati, imzayı) görür; imza anahtarınızı asla görmez. Yöneticiler bir değişkeni kaç kişinin girdiğini görebilir, değerin kendisini asla göremez.

1. adım: My variables sayfasını açın

Konsolda oturum açın ve My variables (/vault) sayfasını açın. Personal toolkit bölümünü bulun. Burada hepsi isteğe bağlı üç değişken vardır:

Değişken Nedir Örnek Size geri gösterilir mi?
MY_TIMEZONE IANA adıyla saat diliminiz Europe/Istanbul, Europe/Berlin, America/New_York Evet
MY_LOCALE Tarihlerin nasıl yazılacağı tr-TR, en-GB, de-DE Evet
MY_SIGNING_KEY Metin imzalamak için kişisel anahtarınız uzun, rastgele bir dizi (aşağıya bakın) Asla

Bir değer yazın, Save düğmesine basın; satır kısa bir parmak iziyle birlikte set durumuna geçer. Bir değeri sonradan değiştirmek için yenisini yazıp Replace düğmesine, silmek için Remove düğmesine basın.

Bir anahtarı bunun yerine asla sohbete yapıştırmayın. Sohbete yazılan her şey modele ve denetim izine gider. My variables’a kaydedilen değerler ikisine de gitmez.

2. adım: saat diliminizi ve yerel ayarınızı girin

  1. MY_TIMEZONE alanına saat diliminizin IANA adını, her işletim sisteminin kullandığı Bölge/Şehir biçiminde girin; örneğin Europe/Istanbul. Saat dilimi adları listesinde hepsi bulunur. GMT+3 ya da TRT gibi kısa biçimler IANA adı değildir ve çalışmaz.
  2. MY_LOCALE alanına tr-TR (Türkçe tarihler) ya da en-GB (İngiliz İngilizcesi) gibi bir dil etiketi girin. Boş bırakırsanız tarihler en-GB biçiminde yazılır.
  3. Her birinde Save düğmesine basın.

3. adım: aracı bir sohbette açın ve kontrol edin

Çalışma alanında yeni bir sohbet açın, sohbetin araçlarından Personal toolkit’i etkinleştirin ve şunu sorun:

Kişisel araç kitine hangi ayarlarım ulaştı?

Yanıt my_settings aracından gelir ve şöyle görünür (aracın kendi çıktısı İngilizcedir):

Your variables on this tool server:
- MY_TIMEZONE: set to "Europe/Istanbul" — the time zone my_time answers in
- MY_LOCALE: set to "tr-TR" — how my_time writes dates
- MY_SIGNING_KEY: set (secret — value not shown) — the key sign_text and verify_signature use

Girmediğiniz bir değişken not set olarak görünür. Kullanılamayan bir değer girdiyseniz bu da belirtilir: örneğin geçerli bir IANA adı olmayan bir saat dilimi bildirilir ve yerine UTC kullanılır.

Saat diliminizi kullanmak

Sohbete nerede olduğunuzu söylemeniz hiç gerekmez: araç saat diliminizi My variables’tan okur. Örneğin şunları sorun:

MY_TIMEZONE = Europe/Istanbul ve MY_LOCALE = tr-TR iken ikinci sorunun yanıtı şudur:

1 Ekim 2026 Perşembe 12:00:00 GMT+3 (Europe/Istanbul)
1 Ekim 2026 Perşembe 05:00:00 GMT-4 (America/New_York)

Aynı an, MY_LOCALE = en-GB ile:

Thursday, 1 October 2026 at 12:00:00 GMT+3 (Europe/Istanbul)
Thursday, 1 October 2026 at 05:00:00 GMT-4 (America/New_York)

Saat dilimi girmediyseniz araç UTC ile yanıt verir ve bunu belirtir; örneğin Thursday, 1 October 2026 at 09:00:00 UTC (UTC) satırının ardından sizi My variables’a yönlendiren bir satır gelir.

Kendi anahtarınızla metin imzalamak

HMAC-SHA256 imzası ne işe yarar

HMAC-SHA256, bir metinden ve gizli bir anahtardan hesaplanan kısa bir koddur. Aynı anahtarı elinde tutan herkes kodu yeniden hesaplayıp metnin, son boşluğuna kadar, imzalanan metnin aynısı olduğunu doğrulayabilir. Pek çok webhook ve API, bir mesajın anahtarı bilen birinden geldiğini ve yolda değişmediğini böyle kanıtlar.

Akılda tutulacak iki nokta:

1. Kendi bilgisayarınızda bir anahtar oluşturun

Uzun, rastgele bir anahtar üretin. Aşağıdakilerin her biri 64 rastgele onaltılık karakter yazdırır.

macOS ve Linux (Terminal):

openssl rand -hex 32

Windows (PowerShell; hem Windows PowerShell 5.1 hem PowerShell 7):

$bytes = New-Object byte[] 32
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
-join ($bytes | ForEach-Object { $_.ToString('x2') })

Çıktıyı kopyalayın. İmzalarınızı kontrol edecek karşı tarafın ihtiyaç duyduğu yerde bir kopyasını saklayın; örneğin parola yöneticinizde.

2. MY_SIGNING_KEY olarak kaydedin

My variables sayfasında, Personal toolkit altındaki MY_SIGNING_KEY alanına yapıştırın ve Save düğmesine basın. Değer size bile bir daha gösterilmez; parmak izi bir anahtarın girilmiş olduğunu gösterir.

3. Sohbette “hello” metnini imzalayın

Sohbete şunu sorun:

“hello” metnini benim anahtarımla imzala.

sign_text aracı yalnızca imzayla yanıt verir:

HMAC-SHA256 (hex): <64 hexadecimal characters>
Signed 5 bytes with your MY_SIGNING_KEY.

5 bytes, hello metninin uzunluğudur. Model araya bir boşluk ya da satır sonu eklediyse bayt sayısı bunu gösterir. Karşı sistem öyle bekliyorsa onaltılık yerine base64 isteyin.

4. İmzayı kendi bilgisayarınızda kontrol edin

Aynı imzayı anahtarınızla yerelde yeniden hesaplayın. İkisi aynıysa sohbet tam olarak hello metnini tam olarak sizin anahtarınızla imzalamıştır. Aşağıdaki komutlarda paste-your-key-here yazan yere kendi anahtarınızı yapıştırın.

macOS ve Linux:

KEY='paste-your-key-here'
printf '%s' 'hello' | openssl dgst -sha256 -hmac "$KEY" | awk '{print $NF}'

Windows (PowerShell):

$key  = 'paste-your-key-here'
$text = 'hello'
$hmac = New-Object System.Security.Cryptography.HMACSHA256 (,[System.Text.Encoding]::UTF8.GetBytes($key))
-join ($hmac.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($text)) | ForEach-Object { $_.ToString('x2') })

Python 3 bulunan herhangi bir sistem:

python3 -c 'import hmac,hashlib,sys; print(hmac.new(sys.argv[1].encode(), b"hello", hashlib.sha256).hexdigest())' 'paste-your-key-here'

macOS ya da Linux’ta base64 için -binary ekleyip çıktıyı base64 komutuna verin: printf '%s' 'hello' | openssl dgst -sha256 -hmac "$KEY" -binary | base64. PowerShell’de hesaplanan özet üzerinde [Convert]::ToBase64String(...) kullanın.

Komutunuzu önce yanıtı bilinen bir örnekle deneyin. Gerçek anahtarınızı kullanmadan önce komutu, yalnızca deneme için olan bu örnek anahtarla çalıştırın:

Anahtar Metin HMAC-SHA256 (hex)
example-key-replace-me-7f3a91c2 hello 2c7dc87df6dc4ecc10a47c8410264630283876d183f253b1fb95aa1f569d6820

Aynı örneğin base64 karşılığı:

LH3IffbcTswQpHyEECZGMCg4dtGD8lOx+5WqH1adaCA=

Yukarıdaki üç komut da tam olarak bu değerleri üretir: macOS’ta (OpenSSL 3 ve yerleşik LibreSSL), Python 3 ile ve PowerShell 7’de çalıştırıldılar ve her biri araç kitinin kendi sonucuyla aynı çıktı.

En yaygın hata echo kullanmaktır. echo hello, hello metnini bir satır sonuyla birlikte gönderir; bu beş değil altı bayttır ve bambaşka bir imza verir (örnek anahtar için d85119b6…). Gösterildiği gibi printf '%s' kullanın ya da kabuğunuz destekliyorsa echo -n.

5. Bir imzayı sohbette doğrulayın

Bir imzayı sizin için kontrol etmesini de araca sorabilirsiniz:

<imza> değerinin “hello” üzerindeki benim imzam olduğunu doğrula.

verify_signature aracı Valid: this is your signature over exactly that text. ya da NOT valid: the signature does not match that text under your key. diye yanıt verir. Onaltılık ya da base64 kabul eder ve karşılaştırmayı sabit sürede yapar.

Bir değeri değiştirmek ya da silmek

Bir şeyler yolunda gitmediğinde

Durum Ne yapmalı
My variables’ta Personal toolkit yok Henüz sizin için açılmamış. Yöneticinizden ekibinize açmasını isteyin.
Sohbet aracı kullanmıyor Sohbetin araçlarından Personal toolkit’i etkinleştirin ya da adını anın: kişisel araç kitini kullanarak …
my_time UTC ile yanıt veriyor MY_TIMEZONE girilmemiş ya da IANA Bölge/Şehir adı değil. Hangisi olduğunu görmek için kişisel araç kitine hangi ayarlarım ulaştı? diye sorun.
tr-TR girmenize rağmen tarihler İngilizce Yazımı kontrol edin (tireyle tr-TR). Desteklenmeyen bir yerel ayar bildirilir ve yerine en-GB kullanılır.
sign_text MY_SIGNING_KEY is not set diyor My variables’a bir anahtar kaydedin ve yeniden sorun.
Yerel imzanız sohbettekinden farklı Sırayla kontrol edin: echo kullandınız (fazladan satır sonu); metin bir boşluk ya da tırnak işaretiyle farklı (bayt sayısına bakın); kaydettiğinizden farklı bir anahtar yapıştırdınız; onaltılık ile base64’ü karşılaştırdınız.
Bir değeri değiştirdiniz ama eskisi kullanılıyor Yeniden sorun: değişiklik bir sonraki çağrıdan itibaren geçerlidir. Birkaç dakika sonra da sürüyorsa yöneticinize bildirin.

Neler gizli kalır

Bu sayfanın başındaki adım adım gösterim, bir değerin My variables’tan bir araca nasıl ulaştığını anlatır; GitHub makalesi ise aynı kasanın üçüncü taraf bir servisle kullanımını gösterir.