Ez a rész azt mutatja be, hogyan lehet egy nagy nyelvi modellt szabályozott módon összekapcsolni külső rendszerekkel MCP szerverek segítségével. A fókusz a modern integrációs szemléleten van: nem az a cél, hogy az LLM közvetlenül érje el a legacy rendszereket, hanem az, hogy egy szabályozott, egységes interfészen keresztül kapjon hozzáférést adatokhoz és műveletekhez.
Az MCP rövidítés jelentése: Model Context Protocol.
Sok szervezetnél már léteznek olyan rendszerek, amelyek üzletileg kritikusak, de technológiailag régebbiek:
Ha egy LLM-et szeretnénk ezekkel együtt használni, akkor gyorsan felmerülnek a következő kérdések:
Erre ad egy modern, egységes megközelítést az MCP.
Az MCP egy szabványos protokoll arra, hogy egy kliensalkalmazás strukturált módon összekapcsolódjon olyan szerverekkel, amelyek adatot, promptokat vagy végrehajtható műveleteket tesznek elérhetővé egy LLM számára.
Egyszerűen megfogalmazva:
Ez az a program, amelyben a felhasználó ténylegesen dolgozik. Például:
Ez a komponens jeleníti meg a választ a felhasználónak, és ez kapcsolja össze az LLM-et az MCP világával.
Az MCP kliens a host alkalmazás része vagy annak egy komponense. Feladata:
Az MCP szerver teszi elérhetővé a háttérrendszerek képességeit egységes formában. Nem maga a legacy rendszer az MCP szerver, hanem egy olyan adapter vagy köztes réteg, amely becsomagolja a háttérrendszer funkcióit.
Például:
Az MCP három különösen fontos szerveroldali fogalmat használ.
A tool egy végrehajtható művelet. Ilyen lehet például:
Lényeges, hogy a tool nem csak adatot ad vissza, hanem valamilyen műveletet is képviselhet.
A resource olyan adat vagy tartalom, amelyet a kliens és a modell kontextusként felhasználhat. Például:
Ez különösen hasznos akkor, ha az LLM-nek először információt kell olvasnia és értelmeznie, mielőtt választ adna.
A prompt ebben a kontextusban nem egyszerűen egy szabad szöveg, hanem egy újrahasznosítható sablon vagy workflow. Például:
Ez segít abban, hogy a gyakori feladatok szabványos módon jelenjenek meg a kliensben.
Tegyük fel, hogy egy vállalatnál van:
Egy felhasználó ezt kérdezi:
Ilyenkor egy lehetséges folyamat:
Ha szükséges, a modell további toolokat is használhat, például:
get_customer_notesget_delivery_eventssearch_manualÍgy az LLM nem “kitalálja” az adatokat, hanem valós rendszerekből dolgozik.
Az MCP szerver egy köztes réteg. Ez biztonságosabb és jobban ellenőrizhető.
Az LLM vagy a kliens szempontjából mindegy lehet, hogy a háttérben SQL, REST, SOAP vagy fájlrendszer van. Az MCP szerver egységesen hirdeti a képességeit.
Az integrációs logikát nem a modellbe építjük, hanem a szerveroldali komponensbe.
Ha megváltozik a háttérrendszer API-ja, elég lehet az MCP szervert módosítani, és nem kell az egész kliensoldali megoldást újratervezni.
Az MCP koncepcionálisan egy szabványos kliens-szerver kommunikáció. A specifikáció a képességek egységes leírását és a hívások szabályos szerkezetét adja meg.
Oktatási szempontból a legfontosabb gondolatok:
Ha egy legacy rendszert szeretnénk LLM-mel összekapcsolni, akkor érdemes a következő lépésekben gondolkodni:
Nem azt kell kitenni, hogy “itt a teljes adatbázis”, hanem azt, hogy:
Példák:
Nem minden művelet való automatikus modellhasználatra. Egyes tooloknál emberi jóváhagyás kellhet.
Mi történik, ha:
Tegyük fel, hogy van egy egyetemi tanulmányi rendszer. Az MCP szerver az alábbi toolokat teheti elérhetővé:
get_student_data(neptunKod)get_course_list(neptunKod)get_exam_results(neptunKod, felev)create_helpdesk_ticket(szoveg)Lehetséges resource-ok:
Lehetséges prompt:
Fogalmazz udvarias választ a hallgatónak a vizsgajelentkezési problémájára a szabályzat alapján.Ez már egy teljes, modern integrációs minta: az LLM nem csak beszélget, hanem szabályozott módon kapcsolódik valódi szervezeti tudáshoz és műveletekhez.
Az alábbi példa egy minimális, kipróbálható MCP szervert mutat be Python nyelven. A cél nem egy teljes vállalati megoldás, hanem annak szemléltetése, hogy egy legacy jellegű háttérrendszer képességeit hogyan lehet toolok, resource-ok és promptok formájában kiajánlani.
Ez a példa a jelenlegi, 2026. március 27-én ellenőrzött Python MCP SDK szemléletéhez igazodik.
mcp_demo_server.pymcp_demo_client.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Legacy Student MCP", json_response=True)
STUDENTS = {
"ABC123": {
"name": "Kiss Anna",
"program": "Mernokinformatikus BSc",
"status": "aktiv",
"semester": 4,
},
"XYZ987": {
"name": "Nagy Bela",
"program": "Programtervezo informatikus BSc",
"status": "aktiv",
"semester": 6,
},
}
EXAM_RESULTS = {
("ABC123", "2025-26-1"): [
{"course": "Halozatok", "grade": 4},
{"course": "Adatbazisok", "grade": 5},
],
("XYZ987", "2025-26-1"): [
{"course": "Szoftvertechnologia", "grade": 3},
{"course": "Mesterseges intelligencia", "grade": 5},
],
}
@mcp.tool()
def get_student_data(neptun_code: str) -> dict:
"""Hallgatoi alapadatok lekerdezese Neptun-kod alapjan."""
student = STUDENTS.get(neptun_code.upper())
if student is None:
return {"error": "Nincs ilyen hallgato."}
return {"neptun_code": neptun_code.upper(), **student}
@mcp.tool()
def get_exam_results(neptun_code: str, semester: str) -> dict:
"""Vizsgaeredmenyek lekerdezese egy adott felevre."""
key = (neptun_code.upper(), semester)
results = EXAM_RESULTS.get(key)
if results is None:
return {"error": "Nincs talalat a megadott hallgatohoz vagy felevhez."}
return {
"neptun_code": neptun_code.upper(),
"semester": semester,
"results": results,
}
@mcp.resource("guide://exam-rules")
def exam_rules() -> str:
"""Rovid vizsgaszabalyzati minta."""
return (
"A hallgato a vizsgara a hivatalos tanulmanyi rendszeren keresztul jelentkezhet. "
"Vizsgaidoszakban a jelentkezes es a lejelentkezes hataridokhoz kotott. "
"Problema eseten a hallgato helpdesk jegyet nyithat."
)
@mcp.prompt()
def answer_student_question(question: str) -> str:
"""Promptsablon hallgatoi ugyintezesi kerdesek megvalaszolasahoz."""
return (
"Valaszolj roviden, targyszeruen es udvariasan a hallgatoi kerdesre. "
"Ha szukseges, hasznald a vizsgaszabalyzatot es a kapcsolodo toolokat. "
f"Kerdes: {question}"
)
if __name__ == "__main__":
mcp.run(transport="stdio")
import asyncio
import sys
from pathlib import Path
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main() -> None:
server_script = Path(__file__).with_name("mcp_demo_server.py")
server_params = StdioServerParameters(
command=sys.executable,
args=[str(server_script)],
)
async with stdio_client(server_params) as (read_stream, write_stream):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools_result = await session.list_tools()
print("Elerheto toolok:")
for tool in tools_result.tools:
print(f"- {tool.name}: {tool.description}")
student_result = await session.call_tool(
"get_student_data",
{"neptun_code": "ABC123"},
)
print("\\nget_student_data valasz:")
print(student_result.content)
exam_result = await session.call_tool(
"get_exam_results",
{"neptun_code": "ABC123", "semester": "2025-26-1"},
)
print("\\nget_exam_results valasz:")
print(exam_result.content)
if __name__ == "__main__":
asyncio.run(main())
Ha a mcp csomag még nincs telepítve:
python -m venv .venv .venv\Scripts\activate pip install mcp
Ezután a kliens futtatása:
python mcp_demo_client.py
Ha a kliens sikeresen kapcsolódik, akkor:
get_student_data toolt;get_exam_results toolt;Ha a háttérrendszer hibás vagy hiányos adatot ad, az LLM válasza is gyenge lesz.
Nem biztos, hogy minden felhasználó minden toolhoz hozzáférhet.
Érdemes világosan meghatározni:
Az MCP szerver egy modern integrációs minta LLM-ek számára.
Legfontosabb tanulságok:
Hivatalos MCP dokumentáció: