Açık kaynak · MIT

hetzner-mcp

Sunucularımızın durumuna bakmak için panele girip tıklamaktan sıkıldık. Artık soruyu zaten açık olan istemcide soruyoruz, cevap oradan geliyor. Aracı MIT lisansıyla açtık: ücretsiz, kaynak kodu herkese açık.

GitHub deposu → git clone · npm install · npm run build
hetzner-mcp — Hetzner API'sine bağlanan açık kaynak MCP sunucusu

Bir sunucunun durumunu merak ettiğinizde yapılan iş hep aynıydı: tarayıcıyı aç, Hetzner Console'a gir, doğru projeyi seç, makineyi bul, metrik sekmesine tıkla. Tek bir soru için beş adım. hetzner-mcp, o soruyu zaten açık olan yapay zekâ istemcisinde sorup cevabı orada almanızı sağlıyor. Ekipte Claude Code, Claude Desktop ve Cursor kullanıyoruz; araç bunların hepsiyle konuşan bir MCP sunucusu.

Kendi altyapımız için yazdık, her gün kullanıyoruz, sonra MIT lisansıyla açtık. Ücretli sürümü yok, buna bağlı bir hizmet de satmıyoruz. İndirin, kendi makinenizde çalıştırın.

Ne soruluyor

Gerçekten sorulan sorular

Aşağıdakiler uydurma örnek değil; günlük olarak yazdığımız cümleler.

"fra1-web-03 son bir haftada ne kadar CPU yedi?"

Hetzner'in tuttuğu CPU, disk ve ağ metriklerini çeker. Yük dengeleyici sorduysanız bağlantı sayısı, istek sayısı ve bant genişliği gelir.

"proxy projesinde kaç makine var, hangileri kapalı?"

Kaynak araması adla, tipe göre listeleyerek ya da etiket seçiciyle çalışır. Tek bir aramayla yapılandırdığınız bütün bağlantıları birden tarayabilirsiniz.

"şu alan adının A kaydı nereyi gösteriyor?"

DNS bölgeleri ve kayıt kümeleri kendi aracında duruyor. Okumak için ek bir bayrağa gerek yok; değiştirmek için var.

"cpx31 aylık kaça geliyor, KDV dahil mi?"

Hetzner'in yayınladığı fiyatı, para birimi ve KDV oranıyla birlikte döndürür. Tahmin etmez, listeyi okur.

Hetzner tek bir API değil

Neden birden çok bağlantı gerekiyor

Hetzner'de en çok kafa karıştıran şey bu. Bir Cloud API jetonu, hangi projenin içinde üretildiyse yalnızca onu görür — API'de "proje" diye bir parametre yoktur, dolayısıyla jetonu başka bir projeye çeviremezsiniz. Üç hesapta on projeniz varsa elinizde on jeton vardır. Kiraladığınız fiziksel sunucular ise apayrı bir API'nin arkasındadır; Storage Box'lar da öyle.

Araç bunu gizlemeye çalışmıyor, görünür kılıyor: her jeton adlandırılmış bir bağlantı oluyor, her çağrı bağlantıyı adıyla alıyor, arama tek seferde hepsini birden tarayabiliyor. Yüzey de her zaman görünür duruyor, çünkü Cloud tarafındaki bir sunucu saatlik faturalanan bir sanal makine, Robot tarafındaki bir sunucu ise aylık sözleşmeli ve fesih süresi olan kiralık donanım. İkisini aynı kelimeye sıkıştırmak, "sunucuyu yeniden başlat" cümlesini kimsenin güvenle cevaplayamayacağı bir soruya çevirir.

Cloud

Tek bir proje

Sanal sunucular, diskler, ağlar, güvenlik duvarları, yük dengeleyiciler ve DNS. Bir Cloud jetonu hangi projenin içinde üretildiyse yalnızca onu görür.

Hetzner hesabı

Hesabın tamamı

Storage Box'lar bu ayrı API'nin arkasında duruyor. Cloud jetonunuz buraya ulaşmaz; hesap jetonu ayrı üretilir.

Robot

Hesabın tamamı

Kiraladığınız fiziksel sunucular. Bambaşka bir adres, bambaşka bir kimlik doğrulama. Bu yüzey v0.3 için planlandı, henüz yayında değil.

Araç yüzeyi

220 operasyon, 13 araç

Hetzner'in API'lerinde 220 canlı operasyon var. Hepsini ayrı birer araç olarak yayımlamak kolaydı, ama istemci açılırken bütün şemaları okur; model hiç çağırmayacağı tanımlara bağlam bütçesi harcar. Bu yüzden 13 araç yayımlanıyor: kaynak arama, tek kaynağı tam okuma, bir Action'ı sonuna kadar takip etme, metrik okuma, fiyat okuma, sunucu açma, güç ve yaşam döngüsü kontrolü, DNS ve etiket. Yani operatörün gerçekten tekrarladığı döngü.

Geri kalan her şey aranabilir bir katalogdan geçiyor: önce operasyon aranıyor, sonra şeması okunuyor, sonra çalıştırılıyor. Katalog Hetzner'in kendi OpenAPI tanımlarından üretiliyor ve depoya işleniyor — her istemci bu süreci sıfırdan başlattığı için 3,4 MB spesifikasyonu her açılışta ayrıştırmak dosyadan okumaktan kötü olurdu.

Bir ayrıntı: 220 operasyonun 143'ü sonuç değil bir Action döndürüyor, iş çağrıdan sonra oluyor. O yüzden beklemek burada kolaylık değil varsayılan, ve her yanıt işin gerçekten bitip bitmediğini ayrı bir alanda söylüyor. Koşan bir Action'ı bitmiş gibi raporlayan bir araç, hiç beklemeyenden kötüdür — çünkü ayırt edemezsiniz.

Güvenlik

Tehlikeli olan şey listede yok

Bir dil modeline API anahtarı vermek ciddi bir karar. Tasarımın en çok uğraştığımız kısmı burası.

Silme diye bir araç yok

Silme, yeniden kurma ve üzerine yazma işlemleri tek bir araçta toplanıyor ve o araç HETZNER_ALLOW_DESTRUCTIVE=true verilmeden hiç kaydedilmiyor. Listelenip reddeden bir araç değil — istemcinin araç listesinde yok. Yıkıcı olmayan araçları otomatik onaylayan bir istemci, gerçekten yıkıcı olmayan bir şeyi onaylamış oluyor.

Salt okunur bir tavandır, bir tercih değil

HETZNER_READ_ONLY=true ya da tek bir bağlantıda readOnly açıkken GET dışındaki her çağrı, soket açılmadan HTTP istemcisinde reddedilir. Bağlantı bu tavanın altından çıkamaz; kendi ayarıyla geri açamaz.

Hiçbir araç şeması adres taşımaz

baseUrl, url, host ya da kimlik bilgisi diye bir parametre yok. connection parametresi, sizin adlandırdığınız bağlantılar üzerinde kapalı bir liste. Bir kaynak adına ya da DNS kaydına saklanmış "şu adrese istek at" talimatının inecek yeri kalmıyor.

Fatura açan işlemler görünür

Yazma yetkisi verilmiş bir bağlantıda sunucu açmak fazladan bayrak istemez — bunu saklamak yerine görünür kılıyoruz. Katalog o işlemleri costly diye işaretler, bir şey oluşturan çağrının yanıtı Hetzner'in yayınladığı fiyatı meta.billing alanına yazar. Bu, iyi niyetle akıl yürüten bir model için gerçek bir önlem; istem enjeksiyonuna karşı değil. Sizin için doğru takas değilse salt okunur bir jeton kullanın ve yazmayı adını açıkça yazdığınız ayrı bir bağlantıda tutun.

Kurulum

Bir komut, bir ortam değişkeni

  1. 01

    Kaynaktan kurulum

    Depoyu klonlayıp npm install && npm run build çalıştırın, sonra node dist/cli.js install deyin. Kurucu makinenizdeki MCP istemcilerini bulur — Claude Code, Claude Desktop, Codex, Cursor, Zed, opencode, Kimi, MiniMax. Ne yazacağını önce gösterir, sadece onayladığınızı yazar. node dist/cli.js install --dry-run farkı gösterir ve hiçbir şeye dokunmaz.

  2. 02

    İstemci yapılandırmasına anahtar girmez

    Yazdığı şey bir işaretçi: bir komut ve en fazla bir bağlantı adı. Jeton oraya hiç uğramaz. Anahtar üç yerden okunabilir — bir ortam değişkeni, bir komutun çıktısı (örneğin parola yöneticiniz), ya da işletim sisteminin kimlik deposu.

  3. 03

    Her proje ayrı bir bağlantı

    HETZNER_TOKEN_PROD ve HETZNER_TOKEN_STAGING iki bağlantı demektir; araçlar bağlantıyı adıyla alır. Tek bağlantı yapılandırdıysanız o parametre hiç var olmaz — seçilecek bir şey yoktur. Bağlantı başına ayar isterseniz (salt okunur bir üretim bağlantısı, daha uzun bir zaman aşımı) bir yapılandırma dosyası kullanılır.

  4. 04

    Yazma bir bayrağın, silme başka bir bayrağın arkasında

    Varsayılan kurulum okur. HETZNER_ALLOW_DESTRUCTIVE yıkıcı kapıyı kaydeder, HETZNER_READ_ONLY her yazmayı sunucu genelinde reddeder. doctor komutu neyin yapılandırıldığını ve nesinin bozuk olduğunu söyler.

Sınırlar

Ne yapmaz

Bazı işler için başka bir araç daha iyi. Bunu yazmamak size vakit kaybettirir.

Sunucunun içine girmez

Bu bir SSH aracı değil. Hetzner'in API'siyle konuşur, işletim sistemiyle değil. df -h çıktısı, çalışan süreçler ve log dosyaları buradan görünmez; disk metriği hipervizörün gördüğü şeydir.

Terraform'un yerine geçmez

Altyapınızın istenen halini sürüm kontrolünde, gözden geçirilebilir ve tekrarlanabilir biçimde tutmak istiyorsanız doğru araç OpenTofu ya da Terraform'un hcloud sağlayıcısı. Bu araç soru sormak ve tek seferlik işler için.

Fiziksel sunucular henüz yok

Robot yüzeyi v0.3 için planlandı. Bugün kiraladığınız donanımı buradan göremezsiniz; Cloud ve hesap yüzeyleri çalışıyor.

Toplu iş için panel daha hızlı olabilir

Otuz makineyi aynı anda etiketleyecekseniz ya da uzun bir taşıma planı yürütüyorsanız Hetzner Console'da tıklamak veya hcloud CLI ile betik yazmak daha az sürer. Bu araç tek bir soruya tek bir cevap almak için hızlı.

Kimin işine yarar

Bu araç kimin için

Birden çok projesi olanlar

Üç hesap ve on proje, on ayrı jeton demek. Hepsini tek yerden aratabilmek burada asıl kazancı yaratan şey.

İstemciyle kod yazanlar

Kod yazarken tarayıcıya geçmeden "bu makine hâlâ ayakta mı" sorusunu sorabilmek, akışı bölmemek demek.

Nöbet tutan ekipler

Metrik ve Action geçmişi okumak için ayrı bir panele girmek gerekmiyor. Yıkıcı araçlar kayıtlı olmadığı için gece yarısı kaza riski dar.

MCP güvenliğine bakanlar

Kaynak açık. Araç şemalarının neden adres taşımadığını ve tavanın nerede uygulandığını okuyup kendi sunucunuzda aynısını yapabilirsiniz.

SSS

Sık sorulanlar

Gerçekten ücretsiz mi?

Evet. MIT lisanslı, kaynak kodu GitHub'da açık. Ücretli bir sürümü, kurumsal planı ya da bu araca bağlı bir hizmet paketi yok. Hetzner'e ödediğiniz bedel size ait; bu araç arada durmuyor.

Neden 220 operasyonun tamamı araç olarak yayımlanmıyor?

İstemci başlarken bütün araç şemalarını okur. 220 şema, modelin bağlam bütçesinin ciddi bir kısmını hiç çağırmayacağı tanımlara harcaması demek. Bu yüzden on üç araç yayımlanıyor: operatörün gerçekten tekrarladığı döngü. Geri kalanına search_operations ile arama yapıp describe_operation ile şemasını okuyarak ulaşılıyor.

Bir Cloud jetonu neden bütün projeleri görmüyor?

Hetzner'in tasarımı böyle. Jeton bir projenin içinde üretilir ve API'de proje parametresi diye bir şey yoktur. Dolayısıyla on proje on bağlantıdır. Araç bunu gizlemek yerine görünür kılıyor: her çağrı bağlantıyı adıyla alıyor, arama hepsini birden tarayabiliyor.

Model yanlışlıkla bir sunucu silebilir mi?

Varsayılan kurulumda silme aracı istemciye hiç kaydedilmiyor, dolayısıyla çağrılabilecek bir şey yok. Bayrağı açarsanız kapı açılır. Ayrıca silme olmadan da yıkıcı olan dört işlem var — sunucu yeniden kurma, bölge dosyası içe aktarma, kayıt kümesi değiştirme ve Storage Box'ı anlık görüntüye geri alma — ve bunlardan biri eşleşmeyi bırakırsa derleme hata veriyor.

Hetzner ile bir bağınız var mı?

Hayır. Done Dynamics Hetzner'in müşterisi; bu araç bizim yazdığımız bir istemci. Hetzner tarafından onaylanmış, desteklenen ya da yayımlanmış bir yazılım değil.

Windows'ta anahtar nerede duruyor?

macOS'ta login keychain, Linux'ta libsecret kullanılıyor; ikisinde de öğe başına erişim denetimi var. Windows tarafında bunun tam dengi yok, bu yüzden %LOCALAPPDATA% altında DPAPI ile şifrelenmiş bir dosya kullanılıyor: sadece sizin kullanıcınız, sadece o makine — ama öğe başına ACL ve kilit açma sorusu olmadan. İstemci yapılandırmasına jeton yazmaktan iyi, keychain'den zayıf. Belgelerde bunu açıkça yazıyoruz.

Bir sonraki yazılım projenize hazır mısınız?

Ekibimizle 30 dakikalık ücretsiz bir keşif görüşmesi planlayın.

Sertifikalar

Ağ ve siber güvenlik işlerini, uluslararası geçerli Cisco sertifikasyonuna sahip ekiple yürütüyoruz.

Cisco CyberOps Associate rozeti

Cisco CyberOps Associate

Veren kurum: Cisco · Sahibi: Devrim Tunçer

Güvenlik operasyon merkezi (SOC) yetkinliğini belgeleyen sertifika: güvenlik izleme, olay müdahalesi ve ağ saldırılarının analizi. Sızma tespiti, log korelasyonu ve olay sonrası müdahale gerektiren işlerde dayandığımız temel budur.

Cisco CCNA Eğitimi

süresi doldu

Cisco eğitim sertifikası · Ocak 2023'te tamamlandı

Ağ temellerini kapsar: yönlendirme, anahtarlama, IP adresleme ve ağ güvenliği. Kurumsal ağ kurulumu ile segmentasyon işlerinde kullandığımız bilgi tabanı.