ഒരു Laravel ആപ്പിൽ ഒരു MCP Server ഉൾപ്പെടുത്തുന്നു

AI ഏജന്റുകൾക്ക് വെറുമൊരു സ്ക്രാപ്പ് ചെയ്ത UI മാത്രം പോരാ. ശരിയായ അനുമതികളോടെ (permissions) പ്രത്യേക ടൂളുകൾ ഉപയോഗിക്കാൻ അവർക്ക് ഒരു മാർഗ്ഗം ആവശ്യമാണ്. Model Context Protocol (MCP) ചെയ്യുന്നത് ഇതാണ്.

ഞാൻ അടുത്തിടെ ഒരു MCP സെർവർ നേരിട്ട് ഒരു Laravel ആപ്ലിക്കേഷനിൽ സംയോജിപ്പിച്ചു. ഇത് സുരക്ഷിതമായി നിർമ്മിക്കുന്നതിനുള്ള ആർക്കിടെക്ചറൽ തീരുമാനങ്ങൾ പങ്കുവെക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു.

റിസപ്ഷനിസ്റ്റ് ഉപമ (The Receptionist Metaphor)

നിങ്ങളുടെ ആപ്പിനെ ഒരു ഓഫീസ് കെട്ടിടമായി സങ്കൽപ്പിക്കുക.

  • വെബ് UI എന്നത് മനുഷ്യർക്കായുള്ള ലോബി ആണ്.
  • REST API എന്നത് സിസ്റ്റങ്ങൾക്കായുള്ള സ്റ്റാഫ് എൻട്രൻസ് ആണ്.
  • MCP സെർവർ എന്നത് AI ഏജന്റുകൾക്കായുള്ള ഒരു റിസപ്ഷൻ ഡെസ്ക് ആണ്.

ഏജന്റ് ഒരു ഐഡി കാണിക്കുകയും ഒരു പ്രത്യേക ടാസ്ക് ആവശ്യപ്പെടുകയും ചെയ്യുന്നു. റിസപ്ഷനിസ്റ്റ് അവർക്ക് കെട്ടിടത്തിന്റെ താക്കോൽ നൽകുന്നില്ല. അവർ അനുമതികൾ പരിശോധിക്കുന്നു, ഒരു ടാസ്ക് ചെയ്യുന്നു, തുടർന്ന് ഒരു സ്ട്രക്ചർഡ് മറുപടി നൽകുന്നു.

പ്രധാനപ്പെട്ട ഡിസൈൻ തീരുമാനങ്ങൾ

1. ഒരു സിംഗിൾ എൻഡ്പോയിന്റ് ഉപയോഗിക്കുക

വിവിധ ടൂളുകൾക്കായി നിരവധി റൂട്ടുകൾ സൃഷ്ടിക്കരുത്. ഒരു /mcp എൻഡ്പോയിന്റ് ഉപയോഗിക്കുക. പ്രോട്ടോക്കോൾ സ്വയമേവ ടൂൾ ഡിസ്കവറി കൈകാര്യം ചെയ്യുന്നു. ഒരു സിംഗിൾ സർഫസ് സുരക്ഷിതമാക്കാനും ഡോക്യുമെന്റ് ചെയ്യാനും എളുപ്പമാണ്.

2. ഡ്യുവൽ ഓതന്റിക്കേഷൻ പിന്തുണയ്ക്കുക

വ്യത്യസ്ത കോളർമാർക്ക് വ്യത്യസ്ത സുരക്ഷാ രീതികൾ ആവശ്യമാണ്:

  • ഫസ്റ്റ് പാർട്ടി കോളർമാർ (CLI ടൂളുകൾ പോലെ) Sanctum പേഴ്സണൽ ആക്സസ് ടോക്കണുകൾ ഉപയോഗിക്കുന്നു.
  • തേർഡ് പാർട്ടി ഏജന്റുകൾ (യൂസർമാർക്ക് വേണ്ടി പ്രവർത്തിക്കുന്നവർ) OAuth 2.1 ഉപയോഗിക്കുന്നു.

ഇവ രണ്ടും കൈകാര്യം ചെയ്യാൻ ഒരു ഡ്രൈവർ-സ്റ്റൈൽ റിസോൾവർ ഉപയോഗിക്കുക. ടൂൾ കോഡ് ഓതന്റിക്കേറ്റ് ചെയ്ത യൂസറെക്കുറിച്ച് മാത്രമേ ശ്രദ്ധിക്കാവൂ, അവർ എങ്ങനെ ലോഗിൻ ചെയ്തു എന്നതിനെക്കുറിച്ചല്ല.

3. നിലവിലുള്ള RBAC നടപ്പിലാക്കുക

ഓതന്റിക്കേഷൻ എന്നത് കോളർ ആരാണെന്ന് തെളിയിക്കുന്നു എന്ന് മാത്രം. അവർക്ക് എന്ത് ചെയ്യാൻ കഴിയുമെന്ന് നിങ്ങൾ ഇപ്പോഴും പരിശോധിക്കണം. ഓരോ ടൂളും നിലവിലുള്ള ഒരു എബിലിറ്റിയുമായി (ability) ബന്ധിപ്പിച്ചിരിക്കണം. വെബ് UI-ൽ ഒരു യൂസർക്ക് പാർട്ടിസിപ്പന്റുകളെ കാണാൻ കഴിയില്ലെങ്കിൽ, അവർക്ക് MCP വഴിയും അത് ചെയ്യാൻ കഴിയില്ല.

4. ഡാറ്റ ഔട്ട്പുട്ട് പരിമിതപ്പെടുത്തുക

ഒരിക്കലും ഒരു ഫുൾ ഡാറ്റാബേസ് മോഡൽ തിരികെ നൽകരുത്. MCP ഔട്ട്പുട്ടിനെ ഒരു പബ്ലിക് API പോലെ പരിഗണിക്കുക. ഏജന്റിന് ആവശ്യമുള്ള പ്രത്യേക ഫീൽഡുകൾ മാത്രം നൽകുക. ഇത് അപ്രതീക്ഷിതമായ ഡാറ്റാ ലീക്കുകൾ തടയുന്നു.

സുരക്ഷയ്ക്കായുള്ള ടെസ്റ്റിംഗ്

സിസ്റ്റം ശരിയായ രീതിയിൽ പരാജയപ്പെടുന്നു എന്ന് നിങ്ങളുടെ ടെസ്റ്റുകൾ തെളിയിക്കണം. ഇവ പരിശോധിക്കുക:

  • അനുമതിയില്ലാത്ത ഒരു യൂസർക്ക് 403 Forbidden എറർ ലഭിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.
  • അനുമതിയുള്ള ഒരു യൂസർക്ക് അനുവദനീയമായ ഫീൽഡുകൾ മാത്രം ലഭിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.

ഓട്ടോണമസ് ഏജന്റുകൾ ഉപയോഗിക്കുമ്പോൾ ഡാറ്റാ ലീക്കുകൾക്കെതിരെയുള്ള നിങ്ങളുടെ ഏറ്റവും മികച്ച പ്രതിരോധമാണ് ഒരു നല്ല ടെസ്റ്റ് സ്യൂട്ട്.

സംഗ്രഹം

ഉത്തരവാദിത്തമുള്ള ഒരു MCP സെർവർ നിർമ്മിക്കാൻ, ഈ മൂന്ന് നിയമങ്ങൾ പാലിക്കുക:

  • ശരിയായ സ്കീം ഉപയോഗിച്ച് ഓരോ കോളറെയും ഓതന്റിക്കേറ്റ് ചെയ്യുക.
  • നിങ്ങളുടെ നിലവിലുള്ള പെർമിഷൻ മോഡൽ ഉപയോഗിച്ച് ഓരോ ടൂളിനെയും ഓതറൈസ് ചെയ്യുക.
  • ഓരോ ടൂൾ ഔട്ട്പുട്ടിനെയും പരിമിതമായ ഒരു പബ്ലിക് റിസോഴ്സ് ആയി പരിഗണിക്കുക.

Source: https://dev.to/nasrulhazim/putting-an-mcp-server-inside-a-laravel-app-dual-auth-and-rbac-for-ai-tools-5376