Et MCP-token er din kontoadgangskode med et API sat på. Giv det til en agent, og du har en bruger, der aldrig bliver træt, læser enhver side du peger den hen til og gør præcis det, den seneste instruks i dens kontekst sagde. Det meste af tiden er det lige det, du vil have. Denne side handler om resten af tiden.
Alt herunder er kontrolleret mod den kørende server på datoen øverst: værktøjslisten kommer fra tools/list på https://mcp.eqvps.com/mcp, grænserne fra selve API'et. Er du ny, så læs først tilslut en MCP-klient og API-tokens, og kom så tilbage.
Trusselsmodel: hvad der faktisk går galt
Tre ting, i den rækkefølge vi ser dem:
- Agenten misforstår. "Ryd op på testmaskinen" bliver til en geninstallation af den forkerte server. Ingen ond vilje, bare en model, der udfylder et hul i instruksen.
- Promptinjektion. Agenten læser tekst, du ikke har skrevet (en README, et svar fra support, en skrabet side), og den tekst beder den gøre noget. Har agenten et token med fulde rettigheder, har den injicerede instruks det også.
- Tokenet lækker. Det havner i en shellhistorik, et offentligt repo, en delt MCP-konfiguration eller en loglinje.
MCP-serveren tjekker, at tokenet er gyldigt, og at serveren hører til den konto (eller er delegeret til den). Hvad du mente, ved den ikke. Hvert sikkerhedsværn herunder svarer på ét spørgsmål: hvor meget skade er mulig, når instruksen er forkert?
Alle MCP-værktøjer efter risikoniveau
Et kundetoken ser 45 værktøjer (MCP-server 1.6.0). Et forhandlertoken (rk_…) ser et separat sæt på 30 forhandlerværktøjer og ingen af disse, så endpointet har 75 i alt. Din klient får kun sit eget sæt fra tools/list.
Denne side sorterer værktøjerne efter risiko. Parametre og eksempler på kald for hvert værktøj står i parameterreferencen; alle værktøjer på én linje, inklusive de 30 forhandlerværktøjer, står i den komplette liste.
Vi leverer endnu ikke MCP-værktøjsannotationer (readOnlyHint, destructiveHint), så din klient kan ikke selv sortere dem. Indstil godkendelserne manuelt ud fra niveauerne herunder.
Niveau 0 — offentlige, intet token (5)
| Værktøj | Hvad det gør |
|---|---|
get_started | Hele forløbet i ét svar: hvilke værktøjer i hvilken rækkefølge |
list_plans | Planer, priser, OS-images |
sandbox_pricing | Sandkassepriser |
register_account | Opretter en ny konto og returnerer dens token |
login | E-mail + adgangskode → token |
Niveau 1 — læs kontoen, ingen bivirkninger (15)
| Værktøj | Hvad det gør | Vær opmærksom på |
|---|---|---|
whoami | Konto-id, navn, e-mail | |
get_balance | Forudbetalt saldo | |
list_vps | Aktive servere, servere under oprettelse og suspenderede servere | |
get_vps_status | Status, specifikationer, adgangsoplysninger | Med reveal: true returneres root-adgangskoden |
get_vps_metrics | CPU, hukommelse, netværk, disk over tid | |
get_upgrade_options | Planer serveren kan skifte til uden geninstallation | |
list_delegations | Hvem du har givet adgang | |
list_delegated_to_me | Servere andre har delegeret til dig | |
list_tickets | Dine supportsager | |
get_ticket | Én sag med hele tråden | Sagstekst er upålideligt input for agenten |
list_sandboxes | Dine sandkasser | |
get_sandbox | Én sandkasse og dens forbrug | |
get_task | Output fra en baggrundsopgave | |
download_file | Læser en lille fil fra en sandkasse | |
get_download_url | Kortlivet link til én sandkassefil | Alle med linket kan downloade, indtil det udløber |
Niveau 2 — ændrer tilstand, bruger intet (17)
| Værktøj | Hvad det gør | Vær opmærksom på |
|---|---|---|
power_vps | start / stop / reboot | Stop er stop: tjenester går ned |
set_hostname | Omdøber serveren | Ændrer netop den værdi, confirm sammenligner med |
undo_cancel | Fjerner en planlagt opsigelse ved periodens udløb | |
refresh_token | Nyt token, det gamle tilbagekaldes med det samme | Opdatér statisk konfiguration bagefter |
set_password | Sætter kontoens adgangskode, hvis der ikke er en | Den, der har tokenet, kan sætte den før dig |
topup_balance | Optankningsfaktura + kryptobetalingslink | Betaling kræver en tegnebog |
pay_invoice | Betalingslink til en ubetalt faktura | Det samme |
accept_delegation | Accepterer en invitation | |
revoke_delegation | Afslutter en delegering | |
create_ticket / reply_ticket / close_ticket | Supportsager | Agenten skriver til support i dit navn |
run_code / exec_command | Kører kode i en sandkasse | Kun i sandkassen, ikke på din VPS |
kill_task | Stopper en baggrundsopgave i sandkassen | |
upload_file / get_upload_url | Lægger en fil i sandkassen |
Niveau 3 — bruger penge, sletter data eller giver adgang (8)
| Værktøj | Hvad det gør | Kontrol på serveren |
|---|---|---|
order_vps | Bestiller en server, betalt fra saldoen | Saldoen rækker ikke → ubetalt faktura, intet trukket |
change_plan | Planskift uden geninstallation, differencen trækkes fra saldoen | confirm: true; saldoen rækker ikke → 402 |
create_sandbox | Starter en betalt sandkasse | Tom saldo → 402 |
reinstall_vps | Sletter disken og installerer et nyt OS | confirm = præcist værtsnavn eller DELETE; 4 kald/min |
reset_password | Ny root-adgangskode, den gamle holder op med at virke | confirm = værtsnavn eller DELETE; 6 kald/min |
cancel_service | end_of_period (standard, kan fortrydes) eller immediate (destruerer serveren med det samme) | immediate kræver confirm = værtsnavn |
kill_sandbox | Sletter en sandkasse med filer | ingen |
delegate_service | Giver en anden person operatøradgang til en server | Kun ejeren; personen skal acceptere |
Ændringslog for værktøjssættet
| Dato | Serverversion | Ændring | Betydning for risiko |
|---|---|---|---|
| 2026-10-03 | 1.6.0 | refresh_token tilføjet; tokens gælder 1 år som standard | Niveau 2 |
| 2026-10-03 | 1.5.0 | undo_cancel, get_upgrade_options, change_plan | change_plan bruger saldo → niveau 3 |
| 2026-10-03 | 1.1.0 | 13 sandkasseværktøjer | create_sandbox bruger, kill_sandbox sletter → niveau 3 |
Den kørende version er offentlig: curl -s https://mcp.eqvps.com/healthz. Når den ændres, ændres denne tabel med.
Saldoen er udgiftsloftet
EQVPS er forudbetalt. Intet gemt kort, ingen kreditramme, intet overtræk: det meste, en agent nogensinde kan bruge, er det, der står på saldoen. Tre værktøjer bruger penge: order_vps, change_plan og create_sandbox. Fornyelser af dine eksisterende servere trækkes fra samme saldo.
Agenten kan oprette pengeanmodninger, men ikke betale dem. topup_balance og pay_invoice returnerer et kryptobetalingslink, og et link gør ingenting uden en tegnebog bagved. Der er heller ikke noget endpoint til udbetaling: penge på saldoen kan købe tjenester i din konto, men ikke trækkes ud. Refusioner ved øjeblikkelig opsigelse går også tilbage til saldoen.
Ét forbehold, og det er reelt. Holder du saldoen meget lav for at bremse agenten, begynder dine egne fornyelser at fejle, og servere går i henstandsperiode. Vores tommelfingerregel: én fornyelsescyklus af det, du allerede kører, plus budgettet for agentens aktuelle opgave. Guiden til agentbudget regner det igennem. Og giver du agenten sin egen tegnebog med penge på, bliver den tegnebog et andet loft, du også skal holde øje med.
Mindste rettighed: et skrivebeskyttet token findes ikke (endnu)
Ærligt svar: hvert kundetoken har de samme rettigheder som kontoen i kontrolpanelet. Navn og levetid på et token kan indstilles, scopes kan ikke.
Det snævreste, der findes i dag, er delegering. Du giver agenten sin egen konto med nul på saldoen og delegerer én server til den:
delegate_service { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }
Det samme via 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}'
Invitationen skal accepteres, mens man er logget ind med den e-mail (accept_delegation), og expires_days kan være 1 til 365. Trin for trin med skærmbilleder: delegér adgang og adgang i dokumentationen.
| En delegeret konto kan | En delegeret konto kan ikke |
|---|---|
| Se status, målinger og historik for netop den server | Se dine andre servere, din saldo eller dine fakturaer |
| Starte, stoppe, genstarte | Opsige, forny eller skifte plan |
| Sætte værtsnavn og omvendt DNS | Købe tilvalg eller IP-adresser |
| Nulstille root-adgangskoden | Åbne webkonsollen |
| Geninstallere styresystemet | Delegere serveren videre til andre |
Læg mærke til de sidste to rækker til venstre. En delegeret kan ikke bruge dine penge, men kan slette den server. Slå backup til på alle servere, som en agent kan geninstallere.
Tokenhygiejne
Ét token pr. agent, med navn. Opret det under Dashboard → Indstillinger → API-tokens til agenter, eller sådan her:
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}'
Tokenet vises én gang. Levetid 1 til 1825 dage, 365 hvis du ikke angiver noget. Til agenter ville vi vælge 90.
Opbevar det i en fil, kun du kan læse, ikke i repoet, ikke i prompten, ikke i en shellvariabel, du kopierer rundt:
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 # forventet: -rw-------
Indlæs det derefter i agentens tjeneste med EnvironmentFile= (systemd) eller set -a; . ~/.config/eqvps/agent.env; set +a.
Rotér, før det udløber. Værktøjet refresh_token, eller POST /auth/tokens/{id}/refresh, udsteder et nyt token med samme navn og tilbagekalder det gamle med det samme. Står tokenet fast i din MCP-klients konfiguration, så opdatér den lige bagefter, ellers får næste session 401.
Tjek, hvem der bruger hvad: GET /auth/tokens viser hvert token med navn, udløb og last_used_at. Et token, du ikke kender, eller et der er brugt, efter du slukkede agenten, er dit signal.
Hvis et token lækker
I denne rækkefølge:
- Tilbagekald det. Dashboard → Indstillinger → API-tokens til agenter → Tilbagekald, eller
curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>. Det holder op med at virke ved næste forespørgsel. - Led efter nye tokens, du ikke selv har oprettet, og tilbagekald også dem.
- Gennemgå, hvad der kan være ramt: tjenestehistorikken for hver server, dine fakturaer og din saldo, og
list_delegationsfor adgang, du ikke har givet. - Skift root-adgangskoder på alle servere, som det token kunne se.
get_vps_statusmedreveal: trueudleverer root-adgangskoden, så et lækket token er en lækket root-adgangskode. Tjek~/.ssh/authorized_keys, mens du er der. - Luk adgangskodedøren. Hvis din konto aldrig har haft en adgangskode, kan den, der havde tokenet, have sat en med
set_password. Log ind med en kode via e-mail og skift den.
At forebygge trin 5 koster ingenting: sæt selv en kontoadgangskode nu, så returnerer set_password 409 til alle, der kommer efter dig.
Menneskelig godkendelse
Det håndhæver serveren:
reinstall_vps,reset_passwordogcancel_servicemedtype: immediatekræverconfirmlig med det præcise værtsnavn (DELETEvirker også ved geninstallation og nulstilling).change_plankræverconfirm: true.- Opsigelse sker som standard ved periodens udløb (
end_of_period): serveren kører til slutningen af den betalte periode, ogundo_cancelfortryder det. - Hastighedsgrænser pr. konto: geninstallation 4/min, nulstilling af adgangskode 6/min, strøm 20/min, bestillinger 20/min. Nok til at et loop ikke gør det halvtreds gange, ikke nok til at stoppe ét forkert kald.
Vær klar over, hvad confirm er. Det forhindrer en agent i at handle på "ryd op der". Det stopper ikke en angriber, for værtsnavnet er kun ét get_vps_status-kald væk. Den rigtige godkendelse ligger i din MCP-klient. De fleste klienter kan spørge før hvert værktøjskald: lad niveau 0 og 1 køre frit, og lad niveau 3 altid spørge. I klienter med rettigheder pr. værktøj, som settings.json i Claude Code (serveren registreret som 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"]
}
}
Tilføj også en linje til agentens instruktioner. Alene er det ingen sikkerhedskontrol, men det skærer ned på misforståelserne (behold den på engelsk, modellerne forstår den lige så godt):
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.
Logger agenten ind med en e-mailkode i stedet for at holde et langlivet token, så se agentlogin via MCP.
Revision: hvad du kan se bagefter
- Tokenlisten (
GET /auth/tokens, eller Indstillinger → API-tokens til agenter): navn, oprettet, udløber,last_used_at. Derfor betaler det sig at navngive tokens pr. agent. - Tjenestehistorik (kontrolpanelet, serversiden): strømhandlinger, geninstallationer, nulstillinger af adgangskode, planskift, betalinger, hver med tidspunkt og aktør: dig, support eller automatisk. Den fortæller ikke, hvilket token eller hvilken delegeret der handlede, kun at det kom fra din side.
- Fakturaer og saldo: hver trækning og refusion.
list_delegations: hvem der har adgang til hvad, og indtil hvornår.
Det hul i tjenestehistorikken er i dag den ærlige grænse for revision på serversiden. Skal du vide, hvilken agent der gjorde hvad, så log hvert værktøjskald med argumenter (uden hemmeligheder) på agentens side.
Den opsætning vi ville vælge
Til en agent, der passer én produktionsserver:
- En separat konto til agenten, nul på saldoen, serveren delegeret med
expires_days: 90. - Dit ejertoken bliver hos dig og ligger ikke i nogen agentkonfiguration.
- Backup på den server, fordi en delegeret kan geninstallere.
- Niveau 3-værktøjer på "ask" eller "deny" i klienten.
- Agentens token i en
600-fil, fornyet før det udløber.
Til en agent, der skal bestille servere eller køre sandkasser, er delegering ikke nok, for den har brug for saldo. Så er saldoen dit loft: fyld op pr. opgave, navngiv tokenet, og kig på last_used_at en gang om ugen. Hvis et skrivebeskyttet token ville ændre, hvordan du sætter agenter i arbejde, så sig det til os i support: det er netop den slags feedback, der afgør, hvad vi bygger næste gang.
Kommentarer
Ingen kommentarer endnu. Vær den første.