Ένα MCP token είναι ο κωδικός του λογαριασμού σας με ένα API κολλημένο πάνω του. Δώστε το σε έναν agent και έχετε έναν χρήστη που δεν κουράζεται ποτέ, διαβάζει κάθε σελίδα που του δείχνετε και κάνει ακριβώς ό,τι είπε η τελευταία οδηγία στο context του. Τις περισσότερες φορές αυτό ακριβώς θέλετε. Αυτή η σελίδα είναι για τις υπόλοιπες.
Όλα όσα ακολουθούν ελέγχθηκαν στον server παραγωγής την ημερομηνία που φαίνεται στην κορυφή: η λίστα εργαλείων προέρχεται από το tools/list στο https://mcp.eqvps.com/mcp, τα όρια από το ίδιο το API. Αν ξεκινάτε τώρα, διαβάστε πρώτα σύνδεση MCP client και API tokens, και μετά επιστρέψτε.
Μοντέλο απειλών: τι στραβώνει στην πράξη
Τρία πράγματα, με τη σειρά που τα βλέπουμε:
- Ο agent καταλαβαίνει λάθος. Το «καθάρισε το test μηχάνημα» γίνεται επανεγκατάσταση του λάθος server. Χωρίς κακή πρόθεση, απλώς ένα μοντέλο που γέμισε ένα κενό στην οδηγία.
- Prompt injection. Ο agent διαβάζει κείμενο που δεν γράψατε εσείς (ένα README, μια απάντηση της υποστήριξης, μια σελίδα από το web) και αυτό το κείμενο του λέει να κάνει κάτι. Αν ο agent κρατά token με πλήρη δικαιώματα, τα έχει και η εμφυτευμένη οδηγία.
- Το token διαρρέει. Καταλήγει σε ιστορικό shell, σε δημόσιο repo, σε κοινόχρηστο MCP config ή σε μια γραμμή log.
Ο MCP server ελέγχει ότι το token είναι έγκυρο και ότι ο server ανήκει σε αυτόν τον λογαριασμό (ή του έχει ανατεθεί). Δεν ξέρει τι εννοούσατε. Κάθε δικλίδα παρακάτω απαντά σε ένα ερώτημα: πόση ζημιά είναι δυνατή όταν η οδηγία είναι λάθος;
Όλα τα εργαλεία MCP ανά επίπεδο κινδύνου
Ένα token πελάτη βλέπει 45 εργαλεία (MCP server 1.6.0). Ένα token μεταπωλητή (rk_…) βλέπει ξεχωριστό σύνολο 30 εργαλείων μεταπώλησης και κανένα από αυτά, οπότε το endpoint έχει συνολικά 75. Ο client σας λαμβάνει από το tools/list μόνο το δικό του σύνολο.
Αυτή η σελίδα ταξινομεί τα εργαλεία κατά κίνδυνο. Οι παράμετροι και τα παραδείγματα κλήσεων κάθε εργαλείου είναι στον οδηγό παραμέτρων· όλα τα εργαλεία σε μία γραμμή, μαζί με τα 30 εργαλεία μεταπωλητή, είναι στην πλήρη λίστα.
Δεν στέλνουμε ακόμα annotations εργαλείων MCP (readOnlyHint, destructiveHint), οπότε ο client σας δεν μπορεί να τα ταξινομήσει μόνος του. Ρυθμίστε τις εγκρίσεις με το χέρι βάσει των επιπέδων παρακάτω.
Επίπεδο 0 — δημόσια, χωρίς token (5)
| Εργαλείο | Τι κάνει |
|---|---|
get_started | Όλη η ροή σε μία απάντηση: ποια εργαλεία, με ποια σειρά |
list_plans | Πακέτα, τιμές, εικόνες λειτουργικών |
sandbox_pricing | Τιμές sandbox |
register_account | Δημιουργεί νέο λογαριασμό και επιστρέφει το token του |
login | Email + κωδικός → token |
Επίπεδο 1 — ανάγνωση λογαριασμού, χωρίς παρενέργειες (15)
| Εργαλείο | Τι κάνει | Προσοχή |
|---|---|---|
whoami | Id, όνομα, email λογαριασμού | |
get_balance | Προπληρωμένο υπόλοιπο | |
list_vps | Ενεργοί servers, servers υπό δημιουργία και σε αναστολή | |
get_vps_status | Κατάσταση, προδιαγραφές, στοιχεία πρόσβασης | Με reveal: true επιστρέφει τον κωδικό root |
get_vps_metrics | CPU, μνήμη, δίκτυο, δίσκος στον χρόνο | |
get_upgrade_options | Πακέτα στα οποία μπορεί να περάσει ο server χωρίς επανεγκατάσταση | |
list_delegations | Σε ποιους δώσατε πρόσβαση | |
list_delegated_to_me | Servers που σας ανέθεσαν άλλοι | |
list_tickets | Τα tickets υποστήριξής σας | |
get_ticket | Ένα ticket με όλη τη συζήτηση | Το κείμενο του ticket είναι μη αξιόπιστη είσοδος για τον agent |
list_sandboxes | Τα sandbox σας | |
get_sandbox | Ένα sandbox και η κατανάλωσή του | |
get_task | Έξοδος μιας εργασίας παρασκηνίου | |
download_file | Διαβάζει ένα μικρό αρχείο από sandbox | |
get_download_url | Βραχύβιος σύνδεσμος σε ένα αρχείο sandbox | Όποιος έχει τον σύνδεσμο μπορεί να κατεβάσει μέχρι να λήξει |
Επίπεδο 2 — αλλάζουν κατάσταση, δεν ξοδεύουν τίποτα (17)
| Εργαλείο | Τι κάνει | Προσοχή |
|---|---|---|
power_vps | start / stop / reboot | Stop σημαίνει stop: οι υπηρεσίες πέφτουν |
set_hostname | Μετονομάζει τον server | Αλλάζει ακριβώς την τιμή με την οποία συγκρίνει το confirm |
undo_cancel | Αφαιρεί προγραμματισμένη ακύρωση στο τέλος της περιόδου | |
refresh_token | Νέο token, το παλιό ανακαλείται αμέσως | Ενημερώστε μετά κάθε στατικό config |
set_password | Ορίζει τον κωδικό του λογαριασμού αν δεν υπάρχει | Όποιος έχει το token μπορεί να τον ορίσει πριν από εσάς |
topup_balance | Τιμολόγιο φόρτισης + σύνδεσμος πληρωμής crypto | Η πληρωμή θέλει πορτοφόλι |
pay_invoice | Σύνδεσμος πληρωμής για απλήρωτο τιμολόγιο | Το ίδιο |
accept_delegation | Αποδέχεται πρόσκληση | |
revoke_delegation | Τερματίζει ανάθεση | |
create_ticket / reply_ticket / close_ticket | Tickets υποστήριξης | Ο agent γράφει στην υποστήριξη εκ μέρους σας |
run_code / exec_command | Τρέχει κώδικα μέσα σε sandbox | Μόνο στο sandbox, όχι στο VPS σας |
kill_task | Σταματά εργασία παρασκηνίου στο sandbox | |
upload_file / get_upload_url | Βάζει αρχείο στο sandbox |
Επίπεδο 3 — ξοδεύουν, καταστρέφουν δεδομένα ή δίνουν πρόσβαση (8)
| Εργαλείο | Τι κάνει | Έλεγχος στον server |
|---|---|---|
order_vps | Παραγγέλνει server, πληρωμή από το υπόλοιπο | Ανεπαρκές υπόλοιπο → απλήρωτο τιμολόγιο, καμία χρέωση |
change_plan | Αλλαγή πακέτου χωρίς επανεγκατάσταση, η διαφορά χρεώνεται στο υπόλοιπο | confirm: true· ανεπαρκές υπόλοιπο → 402 |
create_sandbox | Ξεκινά χρεούμενο sandbox | Άδειο υπόλοιπο → 402 |
reinstall_vps | Σβήνει τον δίσκο και εγκαθιστά νέο λειτουργικό | confirm = ακριβές hostname ή DELETE· 4 κλήσεις/λεπτό |
reset_password | Νέος κωδικός root, ο παλιός παύει να ισχύει | confirm = hostname ή DELETE· 6 κλήσεις/λεπτό |
cancel_service | end_of_period (προεπιλογή, αναστρέψιμο) ή immediate (καταστρέφει τον server αμέσως) | Το immediate απαιτεί confirm = hostname |
kill_sandbox | Διαγράφει sandbox μαζί με τα αρχεία του | κανένας |
delegate_service | Δίνει σε άλλο άτομο πρόσβαση χειριστή σε server | Μόνο ο ιδιοκτήτης· ο άλλος πρέπει να αποδεχτεί |
Ημερολόγιο αλλαγών του συνόλου εργαλείων
| Ημερομηνία | Έκδοση server | Αλλαγή | Επίδραση στον κίνδυνο |
|---|---|---|---|
| 2026-10-03 | 1.6.0 | Προστέθηκε το refresh_token· τα tokens ισχύουν 1 χρόνο από προεπιλογή | Επίπεδο 2 |
| 2026-10-03 | 1.5.0 | undo_cancel, get_upgrade_options, change_plan | Το change_plan ξοδεύει υπόλοιπο → επίπεδο 3 |
| 2026-10-03 | 1.1.0 | 13 εργαλεία sandbox | Το create_sandbox ξοδεύει, το kill_sandbox καταστρέφει → επίπεδο 3 |
Η τρέχουσα έκδοση είναι δημόσια: curl -s https://mcp.eqvps.com/healthz. Όταν αλλάξει, αλλάζει μαζί και αυτός ο πίνακας.
Το υπόλοιπο είναι το ταβάνι των δαπανών
Η EQVPS λειτουργεί με προπληρωμή. Καμία αποθηκευμένη κάρτα, κανένα πιστωτικό όριο, καμία υπερανάληψη: το μέγιστο που μπορεί ποτέ να ξοδέψει ένας agent είναι ό,τι υπάρχει στο υπόλοιπο. Τρία εργαλεία ξοδεύουν: order_vps, change_plan και create_sandbox. Οι ανανεώσεις των υπαρχόντων servers σας χρεώνονται στο ίδιο υπόλοιπο.
Ο agent μπορεί να δημιουργεί αιτήματα πληρωμής, όχι να τα πληρώνει. Τα topup_balance και pay_invoice επιστρέφουν σύνδεσμο πληρωμής crypto, και ένας σύνδεσμος χωρίς πορτοφόλι από πίσω δεν κάνει τίποτα. Δεν υπάρχει ούτε endpoint ανάληψης: τα χρήματα στο υπόλοιπο αγοράζουν υπηρεσίες στον λογαριασμό σας, δεν βγαίνουν έξω. Οι επιστροφές από άμεση ακύρωση επιστρέφουν επίσης στο υπόλοιπο.
Μία επιφύλαξη, και είναι πραγματική. Αν κρατάτε το υπόλοιπο πολύ χαμηλά για να φρενάρετε τον agent, αρχίζουν να αποτυγχάνουν οι δικές σας ανανεώσεις και οι servers μπαίνουν σε περίοδο χάριτος. Ο δικός μας πρακτικός κανόνας: ένας κύκλος ανανέωσης για ό,τι ήδη τρέχει, συν τον προϋπολογισμό της τρέχουσας δουλειάς του agent. Ο οδηγός προϋπολογισμού για agents δείχνει τον υπολογισμό. Και αν δώσετε στον agent δικό του πορτοφόλι με χρήματα, αυτό το πορτοφόλι γίνεται δεύτερο ταβάνι που πρέπει επίσης να παρακολουθείτε.
Ελάχιστα δικαιώματα: token μόνο ανάγνωσης δεν υπάρχει (ακόμα)
Ευθέως: κάθε token πελάτη έχει τα ίδια δικαιώματα με τον λογαριασμό στον πίνακα ελέγχου. Το όνομα και η διάρκεια ενός token ρυθμίζονται, τα scopes όχι.
Το πιο στενό που υπάρχει σήμερα είναι η ανάθεση. Δίνετε στον agent δικό του λογαριασμό με μηδενικό υπόλοιπο και του αναθέτετε έναν server:
delegate_service { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }
Το ίδιο μέσω REST:
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}'
Η πρόσκληση πρέπει να γίνει αποδεκτή ενώ έχετε συνδεθεί με αυτό το email (accept_delegation), και το expires_days κυμαίνεται από 1 έως 365. Βήμα προς βήμα με στιγμιότυπα: ανάθεση πρόσβασης και πρόσβαση στην τεκμηρίωση.
| Ένας λογαριασμός με ανάθεση μπορεί | Ένας λογαριασμός με ανάθεση δεν μπορεί |
|---|---|
| Να βλέπει κατάσταση, μετρήσεις και ιστορικό αυτού του ενός server | Να βλέπει τους άλλους servers σας, το υπόλοιπο ή τα τιμολόγια |
| Να ξεκινά, να σταματά, να επανεκκινεί | Να ακυρώνει, να ανανεώνει ή να αλλάζει πακέτο |
| Να ορίζει hostname και reverse DNS | Να αγοράζει πρόσθετα ή IP |
| Να επαναφέρει τον κωδικό root | Να ανοίγει την κονσόλα web |
| Να επανεγκαθιστά το λειτουργικό | Να αναθέτει τον server σε κάποιον άλλο |
Προσέξτε τις δύο τελευταίες γραμμές αριστερά. Αυτός που έχει την ανάθεση δεν μπορεί να ξοδέψει τα χρήματά σας, μπορεί όμως να σβήσει αυτόν τον server. Ενεργοποιήστε αντίγραφα ασφαλείας σε κάθε server που μπορεί να επανεγκαταστήσει ένας agent.
Υγιεινή token
Ένα token ανά agent, με όνομα. Δημιουργήστε το στο Πίνακας ελέγχου → Ρυθμίσεις → API tokens για πράκτορες, ή έτσι:
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 εμφανίζεται μία φορά. Διάρκεια από 1 έως 1825 ημέρες, 365 αν δεν ορίσετε κάτι. Για agents θα διαλέγαμε 90.
Κρατήστε το σε αρχείο που μόνο εσείς μπορείτε να διαβάσετε, όχι στο repo, όχι στο prompt, όχι σε μεταβλητή shell που αντιγράφετε δεξιά κι αριστερά:
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 # αναμενόμενο: -rw-------
Μετά φορτώστε το στην υπηρεσία του agent με EnvironmentFile= (systemd) ή set -a; . ~/.config/eqvps/agent.env; set +a.
Κάντε rotation πριν τη λήξη. Το εργαλείο refresh_token, ή το POST /auth/tokens/{id}/refresh, εκδίδει νέο token με το ίδιο όνομα και ανακαλεί αμέσως το παλιό. Αν το token είναι γραμμένο σταθερά στο config του MCP client, ενημερώστε το αμέσως μετά, αλλιώς η επόμενη συνεδρία θα πάρει 401.
Ελέγξτε ποιος χρησιμοποιεί τι: το GET /auth/tokens δείχνει κάθε token με όνομα, λήξη και last_used_at. Ένα token που δεν αναγνωρίζετε, ή ένα που χρησιμοποιήθηκε αφού σβήσατε τον agent, είναι το σήμα σας.
Αν διαρρεύσει ένα token
Με αυτή τη σειρά:
- Ανακαλέστε το. Πίνακας ελέγχου → Ρυθμίσεις → API tokens για πράκτορες → Ανάκληση, ή
curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>. Παύει να λειτουργεί από το επόμενο αίτημα. - Ψάξτε για νέα tokens που δεν δημιουργήσατε εσείς, και ανακαλέστε κι αυτά.
- Ελέγξτε τι μπορεί να επηρεάστηκε: το ιστορικό υπηρεσίας κάθε server, τα τιμολόγια και το υπόλοιπο, και το
list_delegationsγια πρόσβαση που δεν δώσατε. - Αλλάξτε τους κωδικούς root σε κάθε server που έβλεπε αυτό το token. Το
get_vps_statusμεreveal: trueδίνει τον κωδικό root, άρα ένα διαρρεύσαν token είναι ένας διαρρεύσας κωδικός root. Ελέγξτε και το~/.ssh/authorized_keysόσο είστε εκεί. - Κλείστε την πόρτα του κωδικού. Αν ο λογαριασμός σας δεν είχε ποτέ κωδικό, όποιος κρατούσε το token μπορεί να όρισε έναν με το
set_password. Συνδεθείτε με κωδικό μέσω email και αλλάξτε τον.
Η πρόληψη για το βήμα 5 δεν κοστίζει τίποτα: ορίστε εσείς τώρα κωδικό λογαριασμού, και το set_password θα επιστρέφει 409 σε όποιον έρθει μετά από εσάς.
Ανθρώπινη έγκριση
Τι επιβάλλει ο server:
- Τα
reinstall_vps,reset_passwordκαιcancel_serviceμεtype: immediateαπαιτούνconfirmίσο με το ακριβές hostname (τοDELETEισχύει επίσης για επανεγκατάσταση και επαναφορά). - Το
change_planαπαιτείconfirm: true. - Η προεπιλεγμένη ακύρωση είναι
end_of_period: ο server τρέχει μέχρι το τέλος της πληρωμένης περιόδου και τοundo_cancelτην αναιρεί. - Όρια ρυθμού ανά λογαριασμό: επανεγκατάσταση 4/λεπτό, επαναφορά κωδικού 6/λεπτό, τροφοδοσία 20/λεπτό, παραγγελίες 20/λεπτό. Αρκετά για να μην το κάνει ένας βρόχος πενήντα φορές, όχι για να σταματήσουν μία λάθος κλήση.
Να είστε ξεκάθαροι για το τι είναι το confirm. Εμποδίζει έναν agent να ενεργήσει με ένα «καθάρισέ το». Δεν σταματά έναν επιτιθέμενο, γιατί το hostname απέχει μία κλήση get_vps_status. Η πραγματική έγκριση βρίσκεται στον MCP client σας. Οι περισσότεροι clients μπορούν να ρωτούν πριν από κάθε κλήση εργαλείου: αφήστε τα επίπεδα 0 και 1 ελεύθερα και κάντε το επίπεδο 3 να ρωτά πάντα. Σε clients με δικαιώματα ανά εργαλείο, όπως το settings.json του Claude Code (ο server καταχωρισμένος ως eqvps):
{
"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"]
}
}
Προσθέστε επίσης μια γραμμή στις οδηγίες του agent. Μόνη της δεν είναι μέτρο ασφαλείας, αλλά μειώνει τις παρεξηγήσεις (αφήστε τη στα αγγλικά, τα μοντέλα την καταλαβαίνουν εξίσου καλά):
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.
Αν ο agent συνδέεται με κωδικό από email αντί να κρατά μακρόβιο token, δείτε σύνδεση agent μέσω MCP.
Έλεγχος: τι βλέπετε εκ των υστέρων
- Λίστα tokens (
GET /auth/tokens, ή Ρυθμίσεις → API tokens για πράκτορες): όνομα, δημιουργία, λήξη,last_used_at. Γι' αυτό αξίζει να ονομάζετε τα tokens ανά agent. - Ιστορικό υπηρεσίας (πίνακας ελέγχου, σελίδα server): ενέργειες τροφοδοσίας, επανεγκαταστάσεις, επαναφορές κωδικού, αλλαγές πακέτου, πληρωμές, καθεμία με ώρα και φορέα: εσείς, υποστήριξη ή αυτόματα. Δεν λέει ποιο token ή ποιος με ανάθεση ενήργησε, μόνο ότι ήρθε από τη δική σας πλευρά.
- Τιμολόγια και υπόλοιπο: κάθε χρέωση και επιστροφή.
list_delegations: ποιος έχει πρόσβαση σε τι, και μέχρι πότε.
Αυτό το κενό στο ιστορικό υπηρεσίας είναι σήμερα το ειλικρινές όριο του ελέγχου από την πλευρά του server. Αν χρειάζεται να ξέρετε ποιος agent έκανε τι, καταγράφετε κάθε κλήση εργαλείου με τα ορίσματά της (χωρίς μυστικά) από την πλευρά του agent.
Η ρύθμιση που θα διαλέγαμε
Για έναν agent που διαχειρίζεται έναν server παραγωγής:
- Ξεχωριστός λογαριασμός για τον agent, μηδενικό υπόλοιπο, ο server ανατεθειμένος με
expires_days: 90. - Το token ιδιοκτήτη μένει σε εσάς και δεν υπάρχει σε κανένα config του agent.
- Αντίγραφα ασφαλείας σε αυτόν τον server, επειδή όποιος έχει ανάθεση μπορεί να κάνει επανεγκατάσταση.
- Τα εργαλεία επιπέδου 3 σε «ask» ή «deny» στον client.
- Το token του agent σε αρχείο
600, ανανεωμένο πριν λήξει.
Για έναν agent που πρέπει να παραγγέλνει servers ή να τρέχει sandbox, η ανάθεση δεν αρκεί, γιατί χρειάζεται υπόλοιπο. Εκεί το υπόλοιπο είναι το ταβάνι σας: φορτώνετε ανά δουλειά, δίνετε όνομα στο token και κοιτάτε το last_used_at μία φορά την εβδομάδα. Αν ένα token μόνο ανάγνωσης θα άλλαζε τον τρόπο που βάζετε agents να δουλεύουν, πείτε μας το στην υποστήριξη: αυτού του είδους η ανατροφοδότηση αποφασίζει τι φτιάχνουμε μετά.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.