Hoppa till innehållet

Vad är en MCP-server och hur hänger den ihop med telefoni

September 2, 2026 · 7 min läsning

En MCP-server är ett gränssnitt som gör det möjligt för en AI-editor eller en assistent (Claude Code, Cursor, Windsurf med flera) att under körning nå ett verktyg i en extern tjänst och använda det direkt - inte bara prata om det. Model Context Protocol (MCP) är en öppen standard som editorn använder för att be om en lista över tillgängliga verktyg, välja rätt verktyg för prompten och anropa det med riktiga parametrar; servern i andra änden kör verktyget och skickar resultatet tillbaka till konversationen. Hos volai är ett av dessa verktyg make_call - därför kan en AI-editor bokstavligen lyfta luren och ringa någon utan att du skriver en enda rad kod.

Vad är en MCP-server?

Model Context Protocol presenterades i november 2024 av Anthropic som en öppen standard för att koppla AI-modeller till externa verktyg och data - i stället för att varje editor och varje tjänst hittar på sin egen engångsintegration talar de ett gemensamt protokoll. MCP skiljer mellan två sidor: MCP-klienten är appen som körs hos dig (Claude Code, Cursor, Claude Desktop), och MCP-servern är det gränssnitt som en tjänst (här volai) exponerar utåt - med en lista över verktyg som kan anropas.

volais MCP-server körs på adressen https://volai.cz/mcp (en fjärrserver som nås via så kallad streamable HTTP-transport, inte en process på din egen disk) och erbjuder 110 verktyg (läget den 3 november 2026, den aktuella listan finns alltid på /docs/mcp) - från att kontrollera saldot och köpa ett nummer till att skicka sms och, ja, ringa ett samtal.

Hur anropar en MCP-klient ett verktyg?

Mellan installationen och själva samtalet sker en rad steg som editorn sköter helt själv - du skriver bara prompten:

  1. Editorn ansluter till servern och identifierar sig med en API-nyckel (Authorization: Bearer vk_...) - samma nyckel som för REST-API:t, med samma rate limit på 60 förfrågningar per minut.
  2. Servern skickar tillbaka en lista över verktyg - för varje verktyg ett namn, en läsbar beskrivning och parametrarnas exakta form (ett JSON-schema).
  3. Modellen läser beskrivningarna och väljer det verktyg som passar prompten - till exempel make_call när prompten säger "ring".
  4. Editorn anropar verktyget med riktiga parametrar - ett faktiskt telefonnummer och konkreta instruktioner till agenten, inte allmän text.
  5. Servern på vår sida kör verktyget - startar samtalet, drar av saldo - och returnerar resultatet i två former: som en läsbar mening och samtidigt som strukturerad data (structuredContent) för klienter som kan läsa den direkt.
  6. Modellen får resultatet tillbaka i konversationen och berättar vad som hände - eller går vidare till ett annat verktyg, till exempel get_call, för att vänta tills samtalet är slut och hämta en utskrift.

Exempel: make_call i praktiken

Du säger till editorn vad du vill i vanligt språk - till exempel: "Ring +420777123456, presentera dig som receptionen på kaféet Kavka och ta reda på om den som svarar vill boka bord." Editorn gör om det till ett anrop av verktyget make_call - den delen ser du aldrig direkt, men under huven ser den ut så här:

json
{
  "to": "+420777123456",
  "systemPrompt": "Du är receptionen på kaféet Kavka. Svara på samtalet, presentera dig och ta reda på om den som ringer vill boka bord - om så är fallet, fråga efter namn och tid."
}

Verktyget kräver ett mål (to) och exakt ETT av tre sätt att genomföra samtalet - agentId (din egen agent sköter det), from (en enkel förbindelse mellan två nummer, utan agent) eller systemPrompt (ett provsamtal utan eget nummer - en förfrågan, inget behöver köpas eller skapas i förväg). Servern svarar i båda formerna samtidigt (ett utdrag - hela samtalsobjektets form finns i referensen för REST-API:t):

json
{
  "call": {
    "id": "c_7a2f91de",
    "direction": "out",
    "to": "+420777123456",
    "status": "initiated",
    "startedAt": 1756111400000
  },
  "trial": true,
  "from": "+420..."
}

Samtalet går ut från ett delat demonummer hos volai, följer instruktionerna i systemPrompt och debiteras som vanligt, inklusive agenttillägget - men med en strängare daglig gräns än för en egen agent: högst tre provsamtal utan eget nummer per konto och dag (gränsen beskrivs i referensen för REST-API:t, läget den 6 september 2026). Därför innehåller svaret dessutom trial: true och from med det delade demonumret hos volai, så att det framgår att samtalet inte gick ut från ditt eget nummer.

Hur hänger MCP ihop med telefoni?

MCP-servern lyfter inte själv någon lur - den är bara porten genom vilken din prompt når den verkliga tjänstelogiken. Bakom den anropar make_call samma lager som REST-API:t och portalen, som lägger samtalet i telefonnätet precis som vilket annat utgående samtal som helst hos volai - via en SIP-trunk som kopplar ihop signalering över internet med det riktiga telefonnätet (hur det går till beskrivs i artikeln Vad är en SIP-trunk). MCP är språket som AI-editorn talar, SIP-trunken är språket som telefonnätet talar - och tjänstelogiken däremellan binder ihop de två.

Säkerhet

MCP autentiseras med samma API-nyckel som REST-API:t - den som har nyckeln kan använda ditt saldo i ditt namn: köpa nummer, ringa, skicka sms, skapa agenter. Nyckeln hör därför bara hemma i editorns konfiguration, aldrig i frontendkod eller i ett GitHub-repo. Vid misstanke om läckage räcker en knapp i portalen (API och MCP) - en raderad nyckel slutar gälla omedelbart och går inte att ångra.

Ett andra skyddslager körs på servern, inte i prompten. Ett nummer som läggs på listan över nummer som inte ska ringas (verktyget add_to_dnc) blockerar samtal via make_call och via relay oavsett vad som står i prompten - modellen behöver inte själv komma ihåg vem den inte får ringa, gränsen bevakas av servern. På samma sätt har verktyg som kostar pengar eller ändrar något oåterkalleligt (make_call, send_sms, delete_agent...) egna flaggor i protokollet - servern anger i förväg om en åtgärd är oåterkallelig eller säker att upprepa. Betalda åtgärder är med avsikt INTE idempotenta: ett andra anrop av make_call efter en avbruten anslutning ringer ett andra samtal och drar en andra betalning, så en välskött klient upprepar det inte på egen hand efter en timeout.

En sak saknas helt med avsikt: att frigöra ett köpt telefonnummer eller mobilnummer finns inte bland de 110 verktygen. Att köpa ett nummer via MCP går, att avsluta det går inte - en oåterkallelig åtgärd som kan göra att en kund förlorar numret som är tryckt på flygbladet kräver portalen eller REST-API:t, inte en enda missförstådd mening i en prompt.

Prova själv

Installationen i Claude Code är ett enda kommando i terminalen (Cursor, Windsurf och Claude Desktop behöver några egna rader JSON, se /docs/mcp):

bash
claude mcp add --transport http volai https://volai.cz/mcp \
  --header "Authorization: Bearer vk_DIN_NYCKEL"
Du vill haGå vidare till
Hela verktygslistan och installation i andra editorerMCP-server
Samma data via vanliga HTTP-förfrågningar från din egen backendREST-API

Och vart tar samtalet egentligen vägen?

make_call släpper till slut ut ljudet i det riktiga telefonnätet via en SIP-trunk - vad det är och varför en AI-röstagent behöver en förklaras i artikeln Vad är en SIP-trunk.

Testa volai - de första 50 kr bjuder vi på

Ett konto skapas på en minut och ett startsaldo för samtal och ett nummer finns direkt - sms går att skicka efter den första påfyllningen.

Testa gratis