ఒక Laravel App లోపల MCP Server ని ఉంచడం
AI ఏజెంట్లకు కేవలం స్క్రాప్ చేసిన UI మాత్రమే సరిపోదు. సరైన అనుమతులతో (permissions) నిర్దిష్ట టూల్స్ను పిలవడానికి వారికి ఒక మార్గం అవసరం. Model Context Protocol (MCP) చేసేది ఇదే.
నేను ఇటీవల ఒక MCP సర్వర్ను నేరుగా ఒక Laravel అప్లికేషన్లో ఇంటిగ్రేట్ చేశాను. దీనిని సురక్షితంగా నిర్మించడానికి నేను తీసుకున్న ఆర్కిటెక్చరల్ నిర్ణయాలను పంచుకోవాలనుకుంటున్నాను.
రిసెప్షనిస్ట్ మెటాఫర్
మీ యాప్ను ఒక ఆఫీస్ బిల్డింగ్గా ఊహించుకోండి.
- వెబ్ UI అనేది మనుషుల కోసం లాబీ వంటిది.
- REST API అనేది సిస్టమ్స్ కోసం స్టాఫ్ ఎంట్రన్స్ వంటిది.
- MCP సర్వర్ అనేది AI ఏజెంట్ల కోసం రిసెప్షన్ డెస్క్ వంటిది.
ఏజెంట్ తన IDని చూపించి ఒక నిర్దిష్ట పనిని అడుగుతుంది. రిసెప్షనిస్ట్ వారికి బిల్డింగ్ తాళాలు ఇచ్చేయరు. వారు అనుమతులను (permissions) తనిఖీ చేస్తారు, ఒక పనిని పూర్తి చేస్తారు మరియు ఒక స్ట్రక్చర్డ్ సమాధానాన్ని తిరిగి ఇస్తారు.
కీలకమైన డిజైన్ నిర్ణయాలు
1. ఒకే ఎండ్పాయింట్ను ఉపయోగించండి
వివిధ టూల్స్ కోసం అనేక రూట్లను సృష్టించవద్దు. ఒకే /mcp ఎండ్పాయింట్ను ఉపయోగించండి. ఈ ప్రోటోకాల్ టూల్ డిస్కవరీని ఆటోమేటిక్గా నిర్వహిస్తుంది. ఒకే సర్ఫేస్ ఉండటం వల్ల భద్రతను పటిష్టం చేయడం మరియు డాక్యుమెంటేషన్ చేయడం సులభం అవుతుంది.
2. డ్యూయల్ అథెంటికేషన్ను సపోర్ట్ చేయండి
వేర్వేరు కాలర్లకు వేర్వేరు సెక్యూరిటీ పద్ధతులు అవసరం:
- ఫస్ట్-పార్టీ కాలర్లు (CLI టూల్స్ వంటివి) Sanctum personal access tokens ఉపయోగిస్తారు.
- థర్డ్-పార్టీ ఏజెంట్లు (యూజర్ల తరపున పనిచేసేవి) OAuth 2.1 ఉపయోగిస్తాయి.
రెండింటినీ హ్యాండిల్ చేయడానికి ఒక డ్రైవర్-స్టైల్ రిజాల్వర్ను ఉపయోగించండి. టూల్ కోడ్ కేవలం అథెంటికేట్ అయిన యూజర్ గురించి మాత్రమే శ్రద్ధ చూపాలి, వారు ఎలా లాగిన్ అయ్యారు అనే దాని గురించి కాదు.
3. ఉన్న RBACని అమలు చేయండి
అథెంటికేషన్ అనేది కాలర్ ఎవరో మాత్రమే నిరూపిస్తుంది. వారు ఏమి చేయగలరో మీరు ఇంకా తనిఖీ చేయాలి. ప్రతి టూల్ ఒక ఉన్న సామర్థ్యానికి (ability) మ్యాప్ చేయబడాలి. ఒక యూజర్ వెబ్ UIలో పార్టిసిపెంట్స్ను చూడలేకపోతే, వారు MCP ద్వారా కూడా చూడలేకపోవాలి.
4. డేటా అవుట్పుట్ను పరిమితం చేయండి
ఎప్పుడూ పూర్తి డేటాబేస్ మోడల్ను తిరిగి పంపకండి. MCP అవుట్పుట్ను ఒక పబ్లిక్ API లాగా పరిగణించండి. ఏజెంట్కు అవసరమైన నిర్దిష్ట ఫీల్డ్లను మాత్రమే తిరిగి పంపండి. ఇది అనుకోకుండా డేటా లీక్ అవ్వకుండా నిరోధిస్తుంది.
సెక్యూరిటీ కోసం టెస్టింగ్
మీ టెస్ట్లు సిస్టమ్ సరిగ్గా ఫెయిల్ అవుతుందని నిరూపించాలి. వీటిని టెస్ట్ చేయండి:
- అనధికారిక యూజర్ (unauthorized user) 403 Forbidden ఎర్రర్ను పొందుతున్నారా.
- అధికారం ఉన్న యూజర్ (authorized user) అనుమతించబడిన ఫీల్డ్లను మాత్రమే పొందుతున్నారా.
స్వయంప్రతిపత్తి కలిగిన ఏజెంట్లను (autonomous agents) ఉపయోగించేటప్పుడు, డేటా లీక్ల నుండి రక్షణ పొందడానికి మంచి టెస్ట్ సూట్ మీ ఉత్తమ రక్షణ.
సారాంశం
బాధ్యతాయుతమైన MCP సర్వర్ను నిర్మించడానికి, ఈ మూడు నియమాలను పాటించండి:
- సరైన స్కీమ్ని ఉపయోగించి ప్రతి కాలర్ను అథెంటికేట్ చేయండి.
- మీ ప్రస్తుత పర్మిషన్ మోడల్ని ఉపయోగించి ప్రతి టూల్ను అథరైజ్ చేయండి.
- ప్రతి టూల్ అవుట్పుట్ను పరిమిత పబ్లిక్ రిసోర్స్గా పరిగణించండి.
