MCP token'ı, hesap parolanıza bağlanmış bir API'dir. Bunu bir ajana verdiğinizde hiç yorulmayan, yönlendirdiğiniz her sayfayı okuyan ve bağlamındaki son talimat ne diyorsa tam olarak onu yapan bir kullanıcınız olur. Çoğu zaman istediğiniz de budur. Bu sayfa geri kalan zamanlarla ilgili.
Aşağıdaki her şey, sayfanın üstündeki tarihte canlı sunucuya karşı doğrulandı: araç listesi https://mcp.eqvps.com/mcp üzerindeki tools/list çıktısından, sınırlar doğrudan API'den geliyor. Yeniyseniz önce MCP istemcisini bağlama ve API belirteçleri sayfalarına bakın, sonra buraya dönün.
Tehdit modeli: gerçekte ne ters gidiyor
Gördüğümüz sırayla üç şey:
- Ajan yanlış anlar. "Test makinesini temizle" talimatı yanlış sunucunun yeniden kurulmasına dönüşür. Kötü niyet yok, sadece talimattaki boşluğu dolduran bir model.
- Prompt injection. Ajan sizin yazmadığınız bir metni okur (bir README, bir destek yanıtı, internetten çekilmiş bir sayfa) ve o metin ona bir şey yapmasını söyler. Ajanın elinde tam yetkili bir token varsa, araya sokulan talimat da o yetkilere sahip olur.
- Token sızar. Bir shell geçmişine, herkese açık bir depoya, paylaşılan bir MCP yapılandırmasına ya da bir log satırına düşer.
MCP sunucusu token'ın geçerli olduğunu ve sunucunun o hesaba ait olduğunu (ya da ona devredildiğini) kontrol eder. Ne demek istediğinizi bilmez. Aşağıdaki her güvenlik sınırı tek bir soruya cevap verir: talimat yanlışsa ne kadar zarar mümkün?
Risk seviyesine göre tüm MCP araçları
Bir müşteri token'ı 45 araç görür (MCP sunucusu 1.6.0). Bir bayi token'ı (rk_…) 30 bayi aracından oluşan ayrı bir set görür ve bunların hiçbirini görmez; yani uç noktada toplam 75 araç vardır. İstemciniz tools/list üzerinden yalnızca kendi setini alır.
Bu sayfa araçları riske göre sıralar. Her aracın parametreleri ve örnek çağrıları parametre başvurusunda; 30 bayi aracı dahil tüm araçlar tek satırda tam listede.
MCP araç açıklamalarını (readOnlyHint, destructiveHint) henüz göndermiyoruz, bu yüzden istemciniz araçları kendi başına sınıflandıramaz. Onayları aşağıdaki seviyelere göre elle ayarlayın.
Seviye 0 — herkese açık, token gerekmez (5)
| Araç | Ne yapar |
|---|---|
get_started | Tüm akış tek yanıtta: hangi araçlar, hangi sırayla |
list_plans | Paketler, fiyatlar, işletim sistemi imajları |
sandbox_pricing | Sandbox tarifeleri |
register_account | Yeni hesap açar ve token'ını döndürür |
login | E-posta + parola → token |
Seviye 1 — hesabı okur, yan etkisi yok (15)
| Araç | Ne yapar | Dikkat |
|---|---|---|
whoami | Hesap kimliği, ad, e-posta | |
get_balance | Ön ödemeli bakiye | |
list_vps | Aktif, kurulumda ve askıya alınmış sunucular | |
get_vps_status | Durum, özellikler, erişim bilgileri | reveal: true ile root parolasını döndürür |
get_vps_metrics | Zamana göre CPU, bellek, ağ, disk | |
get_upgrade_options | Sunucunun yeniden kurulum olmadan geçebileceği paketler | |
list_delegations | Kime erişim verdiğiniz | |
list_delegated_to_me | Başkalarının size devrettiği sunucular | |
list_tickets | Destek talepleriniz | |
get_ticket | Tek bir talep ve tüm yazışma | Talep metni ajan için güvenilmeyen girdidir |
list_sandboxes | Sandbox'larınız | |
get_sandbox | Tek bir sandbox ve tüketimi | |
get_task | Arka plan görevinin çıktısı | |
download_file | Bir sandbox'tan küçük bir dosya okur | |
get_download_url | Tek bir sandbox dosyası için kısa ömürlü bağlantı | Bağlantıya sahip herkes süresi dolana kadar indirebilir |
Seviye 2 — durumu değiştirir, harcama yapmaz (17)
| Araç | Ne yapar | Dikkat |
|---|---|---|
power_vps | start / stop / reboot | Stop, stop demektir: servisler durur |
set_hostname | Sunucunun adını değiştirir | confirm alanının karşılaştırdığı değeri değiştirir |
undo_cancel | Dönem sonu için planlanmış iptali kaldırır | |
refresh_token | Yeni token, eskisi anında iptal edilir | Sabit yapılandırmayı sonrasında güncelleyin |
set_password | Henüz yoksa hesap parolasını belirler | Token'ı elinde tutan sizden önce belirleyebilir |
topup_balance | Bakiye yükleme faturası + kripto ödeme bağlantısı | Ödemek için cüzdan gerekir |
pay_invoice | Ödenmemiş fatura için ödeme bağlantısı | Aynı şekilde |
accept_delegation | Daveti kabul eder | |
revoke_delegation | Yetki devrini sonlandırır | |
create_ticket / reply_ticket / close_ticket | Destek talepleri | Ajan destek ekibine sizin adınıza yazar |
run_code / exec_command | Sandbox içinde kod çalıştırır | Yalnızca sandbox'ta, VPS'inizde değil |
kill_task | Sandbox'taki arka plan görevini durdurur | |
upload_file / get_upload_url | Sandbox'a dosya koyar |
Seviye 3 — para harcar, veri siler veya erişim verir (8)
| Araç | Ne yapar | Sunucu tarafı kontrol |
|---|---|---|
order_vps | Sunucu sipariş eder, bakiyeden ödenir | Bakiye yetmezse → ödenmemiş fatura, hiçbir şey çekilmez |
change_plan | Yeniden kurulum olmadan paket değişimi, fark bakiyeden düşer | confirm: true; bakiye yetmezse → 402 |
create_sandbox | Ücretli bir sandbox başlatır | Boş bakiye → 402 |
reinstall_vps | Diski siler ve yeni bir işletim sistemi kurar | confirm = tam hostname veya DELETE; dakikada 4 çağrı |
reset_password | Yeni root parolası, eskisi çalışmaz | confirm = hostname veya DELETE; dakikada 6 çağrı |
cancel_service | end_of_period (varsayılan, geri alınabilir) veya immediate (sunucuyu hemen yok eder) | immediate için confirm = hostname gerekir |
kill_sandbox | Sandbox'ı dosyalarıyla birlikte siler | yok |
delegate_service | Başka bir kişiye sunucu üzerinde operatör erişimi verir | Yalnızca sahip; karşı tarafın kabul etmesi gerekir |
Araç setinin değişiklik günlüğü
| Tarih | Sunucu sürümü | Değişiklik | Riske etkisi |
|---|---|---|---|
| 2026-10-03 | 1.6.0 | refresh_token eklendi; token'lar varsayılan olarak 1 yıl geçerli | Seviye 2 |
| 2026-10-03 | 1.5.0 | undo_cancel, get_upgrade_options, change_plan | change_plan bakiye harcar → seviye 3 |
| 2026-10-03 | 1.1.0 | 13 sandbox aracı | create_sandbox harcar, kill_sandbox siler → seviye 3 |
Çalışan sürüm herkese açık: curl -s https://mcp.eqvps.com/healthz. Sürüm değişince bu tablo da değişir.
Bakiye, harcama tavanıdır
EQVPS ön ödemelidir. Kayıtlı kart, kredi limiti veya eksi bakiye yok: bir ajanın harcayabileceği en fazla tutar, bakiyede ne varsa odur. Üç araç para harcar: order_vps, change_plan ve create_sandbox. Mevcut sunucularınızın yenilemeleri de aynı bakiyeden düşer.
Ajan para talebi oluşturabilir ama ödeyemez. topup_balance ve pay_invoice bir kripto ödeme bağlantısı döndürür ve arkasında cüzdan olmayan bir bağlantı hiçbir şey yapmaz. Para çekme uç noktası da yok: bakiyedeki para hesabınızdaki hizmetleri satın alabilir, dışarı çıkamaz. Anında iptalde yapılan iadeler de bakiyeye geri döner.
Bir uyarı, hem de ciddi bir uyarı. Ajanı frenlemek için bakiyeyi çok düşük tutarsanız kendi yenilemeleriniz başarısız olmaya başlar ve sunucular ek süreye (grace) girer. Bizim pratik kuralımız: zaten çalıştırdığınız hizmetlerin bir yenileme döngüsü artı ajanın mevcut işinin bütçesi. Ajan bütçesi rehberi hesabı adım adım anlatıyor. Ajana içinde para olan kendi cüzdanını verirseniz, o cüzdan da takip etmeniz gereken ikinci bir tavan olur.
En az yetki: salt okunur token (henüz) yok
Açık cevap: her müşteri token'ı, kontrol panelindeki hesapla aynı yetkilere sahiptir. Token'ın adı ve ömrü ayarlanabilir, kapsamları (scope) ayarlanamaz.
Bugün mevcut olan en dar seçenek yetki devridir. Ajana sıfır bakiyeli kendi hesabını açar ve ona tek bir sunucu devredersiniz:
delegate_service { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }
Aynısı REST ile:
curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/services/EQ-XXXX/delegations" \
-H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
-d '{"email":"agent@yourdomain.com","expires_days":30}'
Davet, o e-posta ile oturum açılmışken kabul edilmelidir (accept_delegation) ve expires_days 1 ile 365 arasında olabilir. Ekran görüntüleriyle adım adım: erişim devretme ve belgelerde erişim.
| Devredilmiş hesap şunları yapabilir | Devredilmiş hesap şunları yapamaz |
|---|---|
| O tek sunucunun durumunu, metriklerini ve geçmişini görmek | Diğer sunucularınızı, bakiyenizi veya faturalarınızı görmek |
| Başlatmak, durdurmak, yeniden başlatmak | İptal etmek, yenilemek veya paket değiştirmek |
| Hostname ve ters DNS ayarlamak | Eklenti veya IP satın almak |
| Root parolasını sıfırlamak | Web konsolunu açmak |
| İşletim sistemini yeniden kurmak | Sunucuyu başka birine devretmek |
Soldaki son iki satıra dikkat edin. Devralan kişi paranızı harcayamaz ama o sunucuyu silebilir. Bir ajanın yeniden kurabileceği her sunucuda yedeklemeyi açın.
Token hijyeni
Her ajana bir token, adıyla birlikte. Kontrol paneli → Ayarlar → Ajanlar için API belirteçleri bölümünden ya da şöyle oluşturun:
curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/auth/tokens" \
-H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"backup-agent","expires_in_days":90}'
Token yalnızca bir kez gösterilir. Ömrü 1 ile 1825 gün arası, belirtmezseniz 365. Ajanlar için biz 90 seçerdik.
Token'ı yalnızca sizin okuyabildiğiniz bir dosyada tutun; depoda, prompt'ta ya da oradan oraya kopyaladığınız bir shell değişkeninde değil:
mkdir -p ~/.config/eqvps && chmod 700 ~/.config/eqvps
( umask 077; read -rsp 'EQVPS token: ' T; echo; printf 'EQVPS_TOKEN=%s\n' "$T" > ~/.config/eqvps/agent.env )
ls -l ~/.config/eqvps/agent.env # beklenen: -rw-------
Ardından ajanın servisinde EnvironmentFile= (systemd) ya da set -a; . ~/.config/eqvps/agent.env; set +a ile yükleyin.
Süresi dolmadan yenileyin. refresh_token aracı veya POST /auth/tokens/{id}/refresh, aynı adla yeni bir token verir ve eskisini anında iptal eder. Token MCP istemcinizin yapılandırmasına sabit yazılmışsa hemen ardından güncelleyin, yoksa bir sonraki oturum 401 alır.
Kimin neyi kullandığını kontrol edin: GET /auth/tokens her token'ı adı, bitiş tarihi ve last_used_at ile listeler. Tanımadığınız bir token ya da ajanı kapattıktan sonra kullanılmış bir token sizin işaretinizdir.
Bir token sızarsa
Bu sırayla:
-
İptal edin. Kontrol paneli → Ayarlar → Ajanlar için API belirteçleri → İptal et, ya da
curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>. Bir sonraki istekten itibaren çalışmaz. -
Sizin oluşturmadığınız yeni token'lar arayın ve onları da iptal edin.
-
Etkilenmiş olabilecek alanı kontrol edin: her sunucunun hizmet geçmişi, faturalar ve bakiye, vermediğiniz bir erişim için
list_delegations. -
Root parolalarını değiştirin; o token'ın görebildiği her sunucuda.
reveal: trueileget_vps_statusroot parolasını verir, yani sızan token sızan root parolası demektir. Bu arada~/.ssh/authorized_keysdosyasını da kontrol edin. -
Parola kapısını kapatın. Hesabınızın hiç parolası olmadıysa, token'ı elinde tutan kişi
set_passwordile bir parola belirlemiş olabilir. E-postayla gelen kodla giriş yapın ve parolayı değiştirin. -
adımı önlemek bedava: hesap parolasını şimdi kendiniz belirleyin,
set_passwordsizden sonra gelen herkese 409 döndürür.
İnsan onayı
Sunucunun uyguladıkları:
reinstall_vps,reset_passwordvetype: immediateilecancel_service,confirmalanının tam hostname olmasını ister (yeniden kurulum ve sıfırlamadaDELETEde geçer).change_plan,confirm: trueister.- İptal varsayılan olarak
end_of_period'dur: sunucu ödenmiş dönemin sonuna kadar çalışır,undo_cancelgeri alır. - Hesap başına hız sınırları: yeniden kurulum dakikada 4, parola sıfırlama dakikada 6, güç dakikada 20, sipariş dakikada 20. Bir döngünün bunu elli kez yapmasını engellemeye yeter, tek bir hatalı çağrıyı durdurmaya yetmez.
confirm alanının ne olduğunu net bilin. Bir ajanın "orayı temizle" talimatıyla harekete geçmesini engeller. Bir saldırganı durdurmaz, çünkü hostname tek bir get_vps_status çağrısı uzaklıktadır. Gerçek onay MCP istemcinizde yaşar. Çoğu istemci her araç çağrısından önce sorabilir: seviye 0 ve 1'i serbest bırakın, seviye 3 her zaman sorsun. Araç bazında izinleri olan istemcilerde, örneğin Claude Code'un settings.json dosyasında (sunucu eqvps adıyla kayıtlı):
{
"permissions": {
"ask": ["mcp__eqvps__order_vps", "mcp__eqvps__change_plan", "mcp__eqvps__create_sandbox", "mcp__eqvps__reset_password", "mcp__eqvps__delegate_service"],
"deny": ["mcp__eqvps__reinstall_vps", "mcp__eqvps__cancel_service", "mcp__eqvps__kill_sandbox"]
}
}
Ajanın talimatlarına da bir satır ekleyin. Tek başına bir güvenlik kontrolü değildir ama yanlış anlamaları azaltır (İngilizce bırakın, modeller onu aynı şekilde anlar):
Never call reinstall_vps, reset_password, cancel_service (type=immediate), change_plan,
order_vps, create_sandbox, kill_sandbox or delegate_service unless the human has typed
the target server's hostname in this conversation for that specific action.
Ajan uzun ömürlü bir token tutmak yerine e-posta koduyla giriş yapıyorsa, MCP üzerinden ajan girişi sayfasına bakın.
Denetim: sonradan neyi görebilirsiniz
- Token listesi (
GET /auth/tokensya da Ayarlar → Ajanlar için API belirteçleri): ad, oluşturulma, bitiş,last_used_at. Token'lara ajan bazında ad vermenin önemi buradan gelir. - Hizmet geçmişi (kontrol paneli, sunucu sayfası): güç işlemleri, yeniden kurulumlar, parola sıfırlamaları, paket değişiklikleri, ödemeler; her biri zaman ve kaynakla: siz, destek veya otomatik. Hangi token'ın ya da hangi yetkilinin işlem yaptığını söylemez, yalnızca işlemin sizin tarafınızdan geldiğini gösterir.
- Faturalar ve bakiye: her tahsilat ve iade.
list_delegations: kimin neye, ne zamana kadar erişimi olduğu.
Hizmet geçmişindeki bu boşluk, bugün sunucu tarafı denetimin dürüst sınırıdır. Hangi ajanın ne yaptığını bilmeniz gerekiyorsa, her araç çağrısını argümanlarıyla (gizli bilgiler hariç) ajan tarafında loglayın.
Bizim seçeceğimiz kurulum
Tek bir üretim sunucusunu yöneten bir ajan için:
- Ajan için ayrı bir hesap, sıfır bakiye, sunucu
expires_days: 90ile devredilmiş. - Sahip token'ınız sizde kalır, hiçbir ajan yapılandırmasında durmaz.
- O sunucuda yedekleme, çünkü devralan kişi yeniden kurulum yapabilir.
- İstemcide seviye 3 araçları "ask" ya da "deny" olarak ayarlı.
- Ajanın token'ı
600izinli bir dosyada, süresi dolmadan yenilenir.
Sunucu sipariş etmesi ya da sandbox çalıştırması gereken bir ajan için yetki devri yetmez, çünkü bakiyeye ihtiyacı vardır. O durumda tavanınız bakiyedir: iş başına yükleyin, token'a ad verin ve haftada bir last_used_at değerine bakın. Salt okunur bir token ajanları nasıl çalıştırdığınızı değiştirecekse, bunu destek üzerinden bize yazın: bir sonraki adımda ne geliştireceğimize tam da bu tür geri bildirimler karar veriyor.
Yorumlar
Henüz yorum yok. İlk olun.