Fülöp Dénes

Fülöp Dénes

  · 12 min read

Hangvezérelt AI asszisztens készítése - az MCP és az AWS környezet

Az AI már nemcsak szöveget értelmez, hanem már függvényeket is felismer, dokumentumokat is olvas és API hívásokat is kezdeményez. A Model Context Protocol-t (MCP) bemutatva egy hangvezérelt, Express–React alapú applikációt ismerhetsz meg a cikkben AWS-környezetben.

Az AI már nemcsak szöveget értelmez, hanem már függvényeket is felismer, dokumentumokat is olvas és API hívásokat is kezdeményez. A Model Context Protocol-t (MCP) bemutatva egy hangvezérelt, Express–React alapú applikációt ismerhetsz meg a cikkben AWS-környezetben.

Proof of Concept - Mit tud a példa alkalmazás?

A cél: beszéddel vezérelhető foglalási AI asszisztens létrehozása.

Fő funkciók:

  • Speech-to-text: A felhasználó hangját szöveggé alakítani.

  • AI értelmezés: Az AI ismerje fel a szöveges parancs szándékát, és ha kell hívjon meg függvényeket.

  • Text-to-speech: Az AI szöveges válasz kerüljön vissza hangformában a felhasználóhoz.

Az applikációban használt függvények:

Ezeket a függvényeket az AI felismeri, ha mellé kerülnek tools nevű definiciók:

Függvény neveLeírás
checkRoomAvailabilitySzoba elérhetőségek lekérdezése
createReservationFoglalás létrehozása
getReservationDetailsFoglalások lekérdezése
listReservationIdsFoglalások kilistázása
answerFromFileVálaszok elkészítése a fájlok tartalmából

Így néz ki a hagyományos függvény formátuma:

function checkRoomAvailability({
checkin_date,
checkout_date,
room_type = 'standard' }) {
  # ide jön a függvény logikája
}

A fent megjelölt hagyományos módon elkészült függvények még local szerver környezetben futnak le. Ezekhez a függvényekhez készítettem tool definiciót is, ebből bemutatok egyet, a checkRoomAvailability-t.

const tools = [
  {
    type: "function",
    function: {
      name: "checkRoomAvailability",
      description: "Check room availability for specific dates and room types",
      parameters: {
        type: "object",
        properties: {
          checkin_date: {
            type: "string",
            description: "Check-in date (YYYY-MM-DD)",
          },
          checkout_date: {
            type: "string",
            description: "Check-out date (YYYY-MM-DD)",
          },
          room_type: {
            type: "string",
            description: "Type of room (standard, deluxe, suite)",
          },
          guests: { type: "number", description: "Number of guests" },
        },
        required: ["checkin_date", "checkout_date"],
      },
    },
  },
  ...
]

Bármilyen függvény a hozzá tartozó tool definicióval felhasználó AI-hoz előkészített kéréshez. A kérdés már csak az mire szeretnénk használni ezeket. Tovább haladva bemutatom, hogyan néz ki az applikáció szerkezeti felépítése.

A technológiai háttér

A funkciók most már ismertek. Így nézne ki a megvalósítás a monolitikus megközelítéssel:

Szerkezeti felépítés - Monolit
Szerkezeti felépítés - Monolit

1. Frontend – React + Web Speech API

Készítettünk egy letisztult, React alapú UI-t, ami lehetővé teszi a hangfelvételt és a visszajátszást. A böngészőben fut egy Web Speech API, ami elvégzi a hangrögzítést és a szintetizálást.

UI - Mikrofon gomb és a UI felület
UI - Mikrofon gomb és a UI felület

2. Backend – Express

Az Express egy gyors és rugalmas Node.js keretrendszer, ami ideális REST API-k vagy webszerverek készítésére. Ez a választás ideális volt a parancsok fogadására, az AI-hoz való csatlakozáshoz, valamint az eszközök kezeléséhez és integrálásához.

3. AI - OpenAI API - (Chat Completions API)

Az AI kommunikációhoz az OpenAI Chat Completions API-t használtuk, ami egy programozási interfész, ezzel a fejlesztők chat-alapú interakciókat küldhetnek a kijelölt modellnek. Az alábbi paramétereket használtam:

  1. model: pld. gpt-4.1-nano (lásd egyéb elérhető OpenAI modellek)
  2. tools: pld. függvények (lásd egyéb elérhető OpenAI tool-ok)
  3. kontextus: pld. “Ön egy professzionális szállodai recepciós mesterséges intelligencia asszisztens a budapesti XYZ Hotelben”
  4. szerepkörök: pld. felhasználó és rendszer.
  5. input: “Van szabad szállás 2025 Június 17-n, két személyre deluxe csomagra?”

Így néz ki az összeállított OpenAI chat completions API-hívás:

const completion = await openai.chat.completions.create({
  model: 'gpt-4.1-nano',
  messages,
  tools,
  tool_choice: 'auto',
  temperature: 0.7,
  max_tokens: 100,
});

A fent összeállított kérés elküldésre került és válaszolt az AI. Az OpenAI API log-ban közben ez olvasható ki:

OpenAI - API Log - Példa: az Assistant felismeri a checkRoomAvailability függvényt
OpenAI - API Log - Példa: az Assistant felismeri a checkRoomAvailability függvényt

A képen látható, hogy az AI felismerte a checkRoomAvailability függvényt.

Az AI visszaküldi a választ paramétereket is megjelölve (arguments), majd várja a visszacsatolást a megjelölt függvénytől.

A local backend szerveren lefut a checkRoomAvailability függvény, levéve a terhet az OpenAI API-ról, majd a válasz visszaküldére kerül az AI-nak. Lásd alábbi kódrészlet ahol az AI által küldött függvény neve társul a local függvénnyel és megvárja a választ:

switch (functionName) {
  case "checkRoomAvailability":
    functionResult = checkRoomAvailability(args);
    break;
  ...
 }

  toolMessages.push({
    role: "tool",
    tool_call_id: toolCall.id,
    content: JSON.stringify(functionResult),
  });

A local függvény az alábbiakat válaszolta (ez Tool néven jelenik meg a log-ban):

OpenAI - API Log - Példa: A Tool válasz alapján az AI tovább viszi a folyamatot
OpenAI - API Log - Példa: A “Tool” válasz alapján az AI tovább viszi a folyamatot

Az AI a függvény válaszát átalakította szöveggé és válaszul megküldte a kérésünkre. Így néz ki a végeredmény a UI felületen! Tádám.. :)

AI-válasz-üzenet-a-UI-felületén
AI-válasz-üzenet a UI felületén (cca. ez a művelet két másodpercet vett igénybe)

A bemutatott példán keresztül láthatjuk, hogy miként lehet hangalapú kérdéseket és feladatokat adni AI-nak, függvényeket használva.

Nézzük meg, hogyan nézne ki ez AWS-ben.

Architektúra – AWS alapú megvalósítás (MCP nélkül)

Az AWS felépítéshez a korábbi állapothoz képest még hozzáadtam az autentikáció-t és a session kezelés-t is:

  1. Frontend: S3 + Cloudfront
  2. Autentikáció (+validáció) és session kezelés: Cognito + DynamoDB (Session Store)
  3. Később bővíthető API: Rest API Gateway
  4. Backend:
    • egy Router Lambda + egy DynamoDB (Session Store)
    • több tool Lambda + egy DynamoDB (Database)
  5. AI: a router lambda meghívja az OpenAI API-t.
AWS-Hotel-AI-Assistant-Architecture - with OpenAI API
AWS-Hotel-AI-Assistant-Architecture - with OpenAI API

Itt a lambdák bevezetésével a válasz idő megnőtt, viszont már skálázható lett a rendszer! Az OpenAI alternatívájaként lehetne használni az AWS Bedrock API-t is, viszont a magyar nyelv támogatása jelenleg elég korlátos. A Bedrock modell listáján az OpenAI modellek nem szerepelnek, viszont számos más modell megtalálható. Az alábbi képen látható, milyen AWS szolgáltatásokkal lehetne a meglévő funkciókat kiváltani:

AWS-Hotel-AI-Assistant-Architecture - with Amazon AI Services
AWS-Hotel-AI-Assistant-Architecture - with Amazon AI Services

A példa foglalási AI asszisztens teljesen kiépíthető kizárólag csak AWS szolgáltatásokkal, amennyiben csak angolul akarjuk használni az eszközöket.

És akkor jöjjön a várva várt MCP!

Ha szeretnél egy rövid gyorstalpalót azzal kapcsolatosan, hogy mit jelent az LLM, FM, LM, DL, vagy mik azok a modelltípusok? javaslom olvasd el ezt először: AI alapfogalmak

Mi az MCP?

Az MCP (Model Context Protocol) egy új ipari szabvány 2025-ben, amely lehetővé teszi, hogy a különböző LLM-ek és alkalmazások környezetfüggő információkat (pl. felhasználói kontextus, rendszerparaméterek, jogosultságok) szabványos módon kapjanak meg. Íme egy kép mi mindent foglal magába:

Az MCP segítségével számos modell, különböző kontextusból tud egymással kommunikálni.
Az MCP segítségével számos modell, különböző kontextusból tud egymással kommunikálni.

Az MCP előtt ..

Az MCP bevezetése előtt, ha egy szolgáltató eszközeihez, adataihoz szerettünk volna csatlakozni (pld: Google, Slack, Gmail, WeatherAPI etc..), akkor külön kapcsolodási mintázatokat kellett nekünk implementálni. Ez kihívás volt az érintett szereplőknek, mert minden kapcsolatot külön-külön ismerni és követni kellett!

Before-MCP
MCP előtt

Az MCP megjelenése után ..

Egységessé vált a kommunikációs mintázat, így mostmár a rendszerek egy nyelvet tudnak beszélni. Az MCP itt egy új rétegként jelenik meg, mint egy egységes fordító. Az MCP például segíteni tud abban, hogy a modell tudja: éppen egy naptáralkalmazással beszél, vagy egy emailt kell megírnia – ez jelentősen javítja a válaszok relevanciáját és pontosságát.

After-MCP
MCP megjelenése után

Jelenleg csak egy AI alapú szolgáltatás van a példa alkalmazásunkban, így az MCP-nek nincs nagy jelentősége, viszont már most megéri bevezetni, mert így lehetőséget biztosít, hogy később könnyedén bővíteni lehessen a kiépült architektúránkat!

Jelenlegi problémák (fájdalom pontok) MCP nélkül:

  1. Monolitikus Router Lambda: Minden AI kérés egy központi lambdán keresztül megy.
  2. Közvetlen OpenAI API hívás: Nincs egységes interfész különböző AI szolgáltatásokhoz.
  3. Korlátozott eszközhozzáférés: A Tool Lambda-k izoláltan működnek.
  4. Nehézkes bővíthetőség: Új funkciók hozzáadása komplex.

Megvizsgálva a MCP előnyeit, a jelenlegi AWS architektúrámat több helyen is át tudtam alakítani!

Architektúra – MCP-vel, AWS környezetben

  1. Probléma: OpenAI lambda function calling kaotikus és nem biztonságos, új funkciók, más szolgáltatások bevezetése időigényes.
  2. Megoldás: Bevezetni a Model Context Protocol-t
  3. Eredmény:
    • 3 külön Lambda: 1 MCP Client + 2 MCP Server
    • JSON-RPC kommunikáció közöttük
    • Biztonságos tool isolation
    • Skálázható architektúra
AWS-Hotel-AI-Assistant-Architecture - with custom made MCP Servers
AWS-Hotel-AI-Assistant-Architecture - with custom made MCP Servers

Sima Function Calling vs. MCP:

AspektusSima Function CallingMCP
BiztonságAz AI-t közvetlenül hívjaProtokoll szintű izoláció
SkálázásMonolitikusKülön skálázható szerverek
StandardOpenAI specifikusUniverzális protokoll
HibakezelésManuálisBeépített MCP szabványok

Előnyök az MCP bevezetése után

  1. Egységes interfész: Minden tool ugyanazon protokollon keresztül müködik
  2. Validáció: Automatikus argument ellenőrzés bevezetése került
  3. Error handling: Strukturált hibakezelés bevezetésre került
  4. Extensibility: Új tools egyszerűen hozzáadható
  5. Monitoring: Centralizált tool hívás naplózható

A fenti előnyöket megismerve, kipróbáltam valóban ennyire jó ez az új protokoll? A válaszom IGEN! Sikerült pár apró modosítással egy teljesen különálló harmadik WeatherAPI MCP szervert hozzáadnom a meglévő architektúrához! Nézd csak:

AWS-Hotel-AI-Assistant-Architecture + MCP + New WeatherAPI MCP Server
AWS-Hotel-AI-Assistant-Architecture + MCP + New WeatherAPI MCP Server

Mostmár foglaláskor még az időjárásra is rákérdezhetünk (a használt API csak Amerika területére vonatkozóan tud adatokat szolgálni), nyilván ezt csak a példa kedvéért tettem be:

Question: What is the current weather at Hampton Beach?
App Answer: The current temperature at Hampton Beach is 22°C.

Itt megtalálható az AWS hivatalos MCP szerver listája: link.

Az MCP integrációja hol tart?

Common-MCP-Supports
Common-MCP-Supports
  1. Claude jelenleg is a legjobb MCP-támogatást nyújtja.
  2. A ChatGPT is már hozzáadta az MCP-csatlakozókat, ez működik a csevegés közbeni keresés vagy a mélyreható kutatási mód során (Plus csomaggal). Most már képes a ChatGPT is olvasni és elemezni az eszközeid adatait, de nem tud semmit létrehozni, szerkeszteni vagy elküldeni még.
  3. Ami a Geminit illeti, a jelenlegi MCP-támogatás csak a Google Gemini API használatán keresztül érhető el, a saját SDK-jukon belül.
  4. A Windsurf és a Cursor esetében, hasonló módon mint a Claude-nál az eszközök folyamatosan elérhetővé válnak.

Várhatóan az AI-cégek egyre több támogatást fognak kiadni az MCP-hez, ez csak idő kérdése! Érdemes követni őket!

Mivel érdemes számolni, ha hasonló projeknek fognál neki?

  1. ASR nehézségek: Amikor egy számot és betűt tartalmazó azonosítót kell bediktálni nem mindig sikerült ez zökkenő mentesen, ez a kérés elküldésekor félreértésekhez vezetett.

  2. Autentikáció: session és jogosultság integrációja Cognitóval nem triviális.

  3. AI improvizál: ha nem mondasz pontos dátumot, improvizál – alapértelmezett dátum ajánlott.

  4. Optimalizálás: minden file újraolvasása elkerülhető cache-sel, ami többlet költség de még mindig olcsóbb mint állandóan újra betölteni az adatokat a kontextusba.

  5. TTS korlát: magyar nyelvű hangfelolvasás csak fizetős opcióval érhető el.

  6. Limitációk: bár a megjelölt architektúra működik lambdával, viszont ha az MCP cliens vagy a szerver mérete megnő számolni szükséges EC2 példányok bevezetésével is.

    KategóriákLambda limitációk
    RuntimeMax 15 perc
    Memory10 GB-t ig
    CPUegészen 6 vCPU-ig
    Storage512 MB ephemeral /tmp
    ConcurrencyJól skálázódik, de van hideg indulás
  7. Lambda-Cold-Start: az első kérés megválaszolása több mint 3 másodpercet is igénybe vehet. Itt még van lehetőség fejlődésre!

Összegzés

A bemutatott foglalási AI asszisztens példája jól szemlélteti, hogyan lehet ma egy hang-vezérelt, valós funkciókat ellátó mesterséges intelligencia rendszert építeni – akár már pár napos fejlesztéssel is. Az egyszerű monolit architektúrától eljutottunk egy jól skálázható, AWS-alapú, MCP-kompatibilis rendszerig, amely már nemcsak beszédet ért és generál, hanem valódi üzleti logikát is képes kiszolgálni és bővíthető!

A legfontosabb tanulságok:

  • Az AI megfelelő kontextussal és jól definiált funkciókkal (tools) már nemcsak válaszol, de aktívan részt vesz a munkavégzésben.

  • Az AWS és OpenAI integrációja lehetővé teszi az éles környezetbe való átültetést, de a rendszer skálázása és biztonságos működtetése komoly tervezést igényel.

  • Az MCP egy új szintre emeli a többmodulos AI alkalmazásokat, és megnyitja az utat az interoperábilis, moduláris jövő felé.

Ez csak a kezdet. A jövőben olyan AI-asszisztensek jöhetnek létre, amelyek nem csupán egy szállodában dolgoznak, hanem egész ökoszisztémákat szolgálnak ki – kontextusban gondolkodnak, tanulnak, reagálnak és együttműködnek más rendszerekkel.

Ha ma elkezded építeni, holnap már ott lehet a saját iparágadban is.

A bemutatott példán túl számos más formában is kialakítható az MCP Cliens és az MCP szerver. Ha kíváncsi vagy milyen további lehetőségek vannak, javaslom kezd itt.

Kíváncsi vagy mire használható még a MCP? Ugrás az Ötletekhez


Alapfogalmak az AI modellekkel kapcsolatosan

1. Milyen halmazok vannak AI (Mesterséges Intelligencia)-n belül?

Az AI-on belül érdemes három meghatározó halmazt megnevezni: a gépi tanulás, a mély-tanulás és a generatív AI.

ai-context
Mesterséges intelligencia - Halmazok

A különbségek röviden:

  1. Machine Learning (ML) – Gépi tanulás: A gépi tanulás az a mesterséges intelligencia (AI) területe, amely lehetővé teszi a gépek számára, hogy adatok alapján tanuljanak és döntéseket hozzanak anélkül, hogy kifejezetten programoznánk őket.

  2. Deep Learning (DL) – Mély-tanulás: A deep learning a gépi tanulás egyik speciális ága, amely többrétegű (ún. neurális hálózatokon alapuló) modelleket használ, hogy komplex mintákat ismerjen fel nagy mennyiségű adatban.

  3. Generative AI – Generatív mesterséges intelligencia: A generatív AI olyan modelleket takar, amelyek új tartalmat képesek előállítani (szöveg, kép, zene, videó stb.) a meglévő tanulási minták alapján. A hétköznapokban legelterjedtebb ez a típus. Példák:

    • ChatGPT – Új szövegeket generál kérdések vagy parancsok alapján.

    • DALL·E – Képek generálása szöveges leírásból.

2. Mik a Foundation Modellek (Alapmodellek) ?

Olyan nagyméretű gépi tanulási modellek, amelyeket hatalmas mennyiségű adaton képeztek ki, és általános célra használhatók. Ezek az alapok lehetnek alapjai sokféle feladatnak – például szövegalkotás, beszédfelismerés vagy képelemzés –, és utólag finomhangolhatók specifikus feladatokra.

3. Mik a finomhangolt vagy specializált modellek?

Azok, amiket egy alapmodellből kiindulva egy speciális feladatra szabtak (pl. Codex a kód generálásra, GPT-4 multimodális funkciókkal).

4. Mik a kísérleti modellek vagy új generációk?

pl. Sora, ami egy multimodális videó generáló AI, de még nem annyira általános vagy széles körben elterjedt.

5. Mit jelent az Large Language Modell (LLM)?

A Large Language Modell egy mesterséges intelligencia-alapú modell, amelyet nagy mennyiségű szöveges adat alapján tanítanak meg a természetes nyelv megértésére és generálására, statisztikai mintázatok felismerésével. Mi ezt fogjuk használni a cikkben bemutatott példában!

6. Milyen modelltípusok vannak és melyik alapmodellhez tartoznak?

Modell típusAlapmodell vagy specializált?Magyarázat
Szöveggenerálás (GPT-4, GPT-4o, o4-mini)Foundation modellNagy nyelvi modellek, általános célú nyelvi képességekkel.
Hang → Szöveg (Whisper, Whisper V3)Foundation modellNagy, általános beszédfelismerő modell, sokféle hanganyagon tanítva.
Szöveg → Hang (TTS-1, GPT-4o audio)Többnyire speciális generatív modell vagy finomhangolt alapmodellSpeciális generatív modellek beszédszintézishez, lehet alapmodell vagy kisebb specializált modell.
Kép → Szöveg (GPT-4o, CLIP)Alapmodell (CLIP), finomhangolt modell (GPT-4o)CLIP egy alapvető multimodális modell; GPT-4o multimodális képességekkel finomhangolt.
Szöveg → Kép (DALL·E 3)Foundation modellNagy generatív alapmodell képgenerálásra.
Szöveg → Videó (Sora)Kísérleti, előzetes multimodális alapmodellEgyelőre kevésbé kiforrott, de alapmodell jellegű, multimodális generatív AI.
Kódgenerálás (Codex, GPT-4)Foundation modell vagy finomhangolt LLMCodex a GPT speciális finomhangolása programkódra, GPT-4 általános, nagy nyelvi modell.

7. Mik azok a Datasetek?

Az AI modellek tanításához használt adathalmazok. Ezek lehetnek nyílt szöveges korpuszok, hangfelvételek, képek vagy bármilyen strukturált adat. A modellek pontossága, rugalmassága és megbízhatósága nagymértékben függ a datasetek méretétől és minőségétől. Ugrás az MCP részhez


Ime néhány ötlet, hogy az MCP hol hasznosítható!

A szálláshelyfoglaláson és az ügyfélszolgálati lehetőségeken túl, számtalan területen alkalmazhatóak még ezek az új funkciók:

  1. Ügyfélkezelés és CRM: “Hozd fel Kovács János ügyfél adatait, az utolsó megbeszélésünk jegyzeteit, és emlékeztetőt állíts be a jövő heti követésre.” Az app a CRM rendszerből lekéri az információkat és automatikusan frissíti az ügyfél státuszát.
  2. Projektmenedzsment: “Milyen feladatok vannak késésben a marketing projektnél, és küldd el a státusz jelentést a csapatnak.” Integrálódik a Trello/Asana-val, elemzi a határidőket és automatikusan generál jelentéseket.
  3. Számlalogisztika: “Készítsd el a számlát a XY Kft-nek a múlt heti munkáért, és küldd el nekik emailben.” Az app a munkaórák alapján generál számlát, PDF-et készít és elküld az ügyfélnek.
  4. Értékesítési folyamat: “Ellenőrizd a mai ajánlatokat, frissítsd az eladási pipeline-t, és emlékeztetőt állíts be a holnapi follow-up hívásokra.” Összeköti a CRM-et a naptárral és automatizálja a sales folyamatokat.
  5. Raktárkezelés: “Mennyire áll a készlet, rendeljek-e új alapanyagot, és küldd el a beszállítónak a megrendelést.” Real-time készletadatok alapján automatikusan kezel beszerzési folyamatokat.
  6. HR és munkaidő nyilvántartás: “Rögzítsd a mai 8 órát a X projektre, küldd el a heti timesheet-et, és ellenőrizd a csapat szabadságkérelmeit.” Integrálódik az HR rendszerekkel és automatizálja a adminisztrációt.
  7. Pénzügyi elemzés: “Mutasd a havi bevételt kategóriánként, hasonlítsd össze a tavalyi adatokkal, és készíts Excel riportot.” Könyvelési szoftverekkel kapcsolódik és dinamikus jelentéseket készít.
  8. Ügyfélszolgálat: “Van új support ticket? Kategorizáld fontosság szerint és válaszolj az egyszerű kérdésekre automatikusan.” AI-alapú ticket routing és automatikus válaszgenerálás.
  9. Marketing kampányok: “Indítsd el a Facebook hirdetést az új termékre, kövesd a teljesítményt, és állítsd be a költségvetés riasztásokat.” Közösségi média API-kkal dolgozik és optimalizálja a kampányokat.
  10. Meetingek és ütemezés: “Foglalj meetinget a befektetőkkel jövő hétre, küldd el az agenda-t, és készítsd elő a pitch deck-et a legfrissebb adatokkal.” Naptár integrációval, dokumentum automatizálással és prezentáció frissítéssel.

Köszönjük, hogy elolvastad ezt a cikket!

Érdekel a téma? Szeretnél saját MCP szervert, vagy kérdés merült fel a cikkel kapcsolatosan? Foglalj egy ingyenes konzultációt és nézzük meg, hogy a Code Factory csapata miben tud segíteni neked / nektek! A szolgáltatásaink listáját itt találod meg!

Vissza a cikkekhez