जर्नल पर वापस जाएं
7 मिनट पठन

मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) के साथ AI इंटीग्रेशन का मानकीकरण

AI डेवलपर एजेंटों से एंटरप्राइज़ डेटा को सुरक्षित रूप से जोड़ने के लिए कस्टम MCP सर्वर बनाने और सुरक्षित करने के लिए एक व्यावहारिक मार्गदर्शिका।

AI AgentsMCPNode.jsEnterprise ArchitectureAPI Security
मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) के साथ AI इंटीग्रेशन का मानकीकरण

लार्ज लैंग्वेज मॉडल्स (LLM) को आंतरिक डेटा स्रोतों और प्रणालियों से जोड़ना ऐतिहासिक रूप से एक खंडित, तदर्थ (ad-hoc) कार्य रहा है। प्रत्येक AI इंजीनियरिंग प्रोजेक्ट आमतौर पर कस्टम API रैपर लिखने, JSON स्कीमा की मैपिंग करने, या टूल-कॉलिंग को संभालने के लिए ऑर्केस्ट्रेटर रनटाइम के भीतर मालिकाना कोड लिखने के साथ शुरू होता है।

यदि आप OpenAI से Anthropic पर स्विच करते हैं, या आपके डेवलपर्स एक AI-सहायता प्राप्त IDE से दूसरे पर जाते हैं, तो आपको अक्सर अपनी इंटीग्रेशन लेयर को नए सिरे से लिखना पड़ता है।

यह घर्षण ही कारण है कि मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP), जो Anthropic के नेतृत्व में एक ओपन स्टैंडर्ड है, ने तेजी से लोकप्रियता हासिल की है। जिस तरह लैंग्वेज सर्वर प्रोटोकॉल (LSP) ने मानकीकृत किया कि कंपाइलर कोड एडिटर्स के साथ कैसे संवाद करते हैं, उसी तरह MCP मानकीकृत करता है कि AI मॉडल डेटा स्रोतों और डेवलपर टूल के साथ कैसे संवाद करते हैं।

यहाँ आपके डेवलपर एजेंटों के लिए एंटरप्राइज़ डेटा को सुरक्षित रूप से सुलभ बनाने के लिए एक कस्टम MCP सर्वर बनाने, उसे व्यवस्थित करने और सुरक्षित करने के लिए एक व्यावहारिक मार्गदर्शिका दी गई है।


आर्किटेक्चर: क्लाइंट और सर्वर का अलगाव (Decoupling)

MCP का मुख्य डिज़ाइन सिद्धांत अलगाव (Decoupling) है। किसी एजेंट रनटाइम में सीधे API इंटीग्रेशन को हार्डकोड करने के बजाय, MCP एक क्लाइंट-सर्वर आर्किटेक्चर पेश करता है:

[ AI Agent / IDE ] (MCP Client)
       │
       │ (JSON-RPC 2.0 over Stdio or SSE)
       ▼
[ Custom MCP Server ]
       │
       ├─► Secure Database (PostgreSQL / BigQuery)
       ├─► Internal Microservices
       └─► Local Development Tools
  • MCP क्लाइंट: कॉर्डिनेटर (जैसे Cursor, Windsurf, या एक कस्टम LangChain ऑर्केस्ट्रेटर)। यह LLM रीजनिंग को प्रबंधित करता है, उपयोगकर्ता कॉन्टेक्स्ट को रखता है, और टूल रिक्वेस्ट शुरू करता है।
  • MCP सर्वर: एक लाइटवेट प्रोसेस या सर्विस जो तीन मुख्य प्रिमिटिव्स को सुलभ बनाती है:
    1. Prompts: मॉडल इंटरैक्शन को निर्देशित करने के लिए पुन: प्रयोज्य (reusable) टेम्पलेट।
    2. Resources: केवल-पठन (read-only) डेटा स्रोत (फ़ाइल सामग्री, डेटाबेस रो, API प्रतिक्रियाएं)।
    3. Tools: निष्पादन योग्य (executable) फ़ंक्शन जो ऑपरेशन कर सकते हैं या बाहरी API को कॉल कर सकते हैं।

TypeScript में एक कस्टम MCP सर्वर बनाना

आइए आधिकारिक TypeScript SDK और Node.js का उपयोग करके एक प्रोडक्शन-रेडी MCP सर्वर बनाएं। यह सर्वर इनबिल्ट रनटाइम आर्ग्युमेंट वैलिडेशन के साथ आंतरिक डेटाबेस रिकॉर्ड (जैसे उम्मीदवारों या केस स्टडीज) को खोजने के लिए एक सुरक्षित टूल प्रदान करेगा।

1. प्रोजेक्ट की शुरुआत (Initialization)

सबसे पहले, एक TypeScript प्रोजेक्ट सेटअप करें और आवश्यक डिपेंडेंसी इंस्टॉल करें:

npm init -y
npm install @modelcontextprotocol/sdk zod
npm install --save-dev typescript @types/node
npx tsc --init

2. सर्वर का कार्यान्वयन (Implementation)

नीचे stdio पर आधारित एक सुरक्षित MCP सर्वर का कोड दिया गया है। हम एक सर्च टूल रजिस्टर करते हैं और आने वाले पेलोड पर सख्त स्कीमा वैलिडेशन लागू करने के लिए zod का उपयोग करते हैं:

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
  CallToolRequestSchema,
  ListToolsRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
import { z } from "zod";

// 1. Initialize the MCP Server
const server = new Server(
  {
    name: "enterprise-search-service",
    version: "1.0.0",
  },
  {
    capabilities: {
      tools: {}, // Advertise tool capabilities to the client
    },
  }
);

// 2. Define the Search Schema using Zod
const CandidateSearchSchema = z.object({
  query: z.string().min(2),
  limit: z.number().optional().default(5),
  department: z.enum(["Engineering", "Design", "Product", "Sales"]).optional(),
});

// 3. Register Available Tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [
      {
        name: "search_candidates",
        description: "Search internal database for candidates matching specific skills and departments.",
        inputSchema: {
          type: "object",
          properties: {
            query: { type: "string", description: "Search term or required skill" },
            limit: { type: "number", description: "Maximum records to return" },
            department: { type: "string", enum: ["Engineering", "Design", "Product", "Sales"] },
          },
          required: ["query"],
        },
      },
    ],
  };
});

// Mock database resolver
async function queryDatabase(query: string, limit: number, dept?: string) {
  // Real implementation would connect to Cloud SQL / BigQuery
  return [
    { id: 101, name: "Sarah Connor", role: "Staff Platform Engineer", tags: ["Kubernetes", "Go", "MACH"] },
    { id: 102, name: "Marcus Wright", role: "Solutions Architect", tags: ["Next.js", "React", "AI Agents"] }
  ];
}

// 4. Handle Tool Executions
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name !== "search_candidates") {
    throw new Error(`Tool ${request.params.name} not found`);
  }

  try {
    // Validate the arguments at runtime
    const args = CandidateSearchSchema.parse(request.params.arguments);

    // Fetch secure records
    const results = await queryDatabase(args.query, args.limit, args.department);

    return {
      content: [
        {
          type: "text",
          text: JSON.stringify(results, null, 2),
        },
      ],
    };
  } catch (error: any) {
    return {
      content: [
        {
          type: "text",
          text: `Error validating arguments: ${error.message}`,
        },
      ],
      isError: true,
    };
  }
});

// 5. Start Server Transport (stdio is standard for local IDE integrations)
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Enterprise Search MCP Server running on stdio");

एंटरप्राइज़ उपयोग के लिए सुरक्षा को मजबूत करना

हालांकि TypeScript कोड लिखना आसान है, आंतरिक प्रोडक्शन डेटा को LLM के सामने उजागर करने के लिए सख्त सुरक्षा मानकों की आवश्यकता होती है। AI मॉडल में हैलुसिनेशन, प्रॉम्प्ट इंजेक्शन और अवांछित टूल निष्पादन लूप की संभावना होती है।

यहाँ एंटरप्राइज़ MCP सुरक्षा के चार मुख्य स्तंभ दिए गए हैं:

1. स्कीमा वैलिडेशन और इनपुट सैनिटाइजेशन

LLM द्वारा उत्पन्न आर्ग्युमेंट्स पर कभी भी भरोसा न करें। हमेशा Zod जैसे लाइब्रेरी का उपयोग करके पैरामीटरों को वैलिडेट करें, और डेटाबेस सुरक्षा के लिए इनपुट स्ट्रिंग्स को सैनिटाइज करें:

  • SQL इंजेक्शन को रोकने के लिए पैरामीटराइज्ड क्वेरीज़ या ORM का उपयोग करें।
  • यदि आपका टूल लोकल फ़ाइलों को पढ़ता है, तो डायरेक्टरी ट्रैवर्सल हमलों को रोकने के लिए फ़ाइल पाथ को वैलिडेट करें।

2. ऑथेंटिकेशन और OAuth कॉन्टेक्स्ट पास करना

जब आप किसी एंटरप्राइज़ नेटवर्क में चल रहे हों, तो आपको एजेंट के पीछे के उपयोगकर्ता के ऑथराइजेशन स्तर को सत्यापित करना होगा।

  • stdio के बजाय Server-Sent Events (SSE) के माध्यम से MCP को सुलभ बनाएं। यह MCP सर्वर को एक API गेटवे के पीछे एक स्वतंत्र माइक्रोसर्विसेज के रूप में चलाने की अनुमति देता है।
  • अनुरोध हेडर में उपयोगकर्ता के पहचान टोकन (JWT) को आगे भेजें, जिससे आपका MCP सर्वर लक्ष्य डेटाबेस में रो-लेवल सिक्योरिटी (RLS) लागू कर सके।

3. ह्यूमन-इन-द-लूप (HITL) गेटकीपिंग

रीड टूल्स (जैसे search_candidates) को उजागर करना कम जोखिम भरा है। हालांकि, राइट टूल्स (जैसे update_records या deploy_service) को उजागर करना खतरनाक हो सकता है।

  • राइट एक्शन के लिए स्पष्ट यूजर अप्रूवल लागू करें। MCP क्लाइंट को राइट रिक्वेस्ट को बीच में रोकना चाहिए और डेवलपर को एक diff दिखाना चाहिए कि एजेंट क्या बदलाव करना चाहता है।
[ Agent Tool Request ] ──► [ Security Middleware ] ──► (Diff Check / UI Popup)
                                                             │
                  ┌──────────────────────────────────────────┘
                  ▼
         [ User Approves? ] ──(Yes)──► [ Execute Write on Server ]

4. रेट लिमिटिंग और सुरक्षा घेरा

एजेंट रिकर्सिव लूप में जा सकते हैं जहाँ वे कुछ सेकंड में दर्जनों बार किसी टूल को कॉल करते हैं, जिससे डेटाबेस पर भारी लोड या भारी टोकन लागत आ सकती है।

  • प्रति सेशन रिक्वेस्ट रेट लिमिटिंग लागू करें।
  • टोकन ओवरफ्लो को रोकने के लिए अधिकतम परिणाम पेलोड आकार को सीमित करें।

भविष्य की राह: लिगेसी सिस्टम को AI प्रिमिटिव के रूप में उजागर करना

मॉडल कॉन्टेक्स्ट प्रोटोकॉल की ताकत यह है कि यह पुराने सॉफ्टवेयर इंटरफेस को साफ, खोजने योग्य क्षमताओं में बदल देता है।

एक मानकीकृत MCP लेयर में आंतरिक डेटाबेस, डिप्लॉयमेंट स्क्रिप्ट और API को रैप करके, आप यह सुनिश्चित करते हैं कि कोई भी AI टूल—चाहे वह Cursor जैसा एडिटर हो, टर्मिनल कंपेनियन हो, या कोई ऑटोनॉमस डिप्लॉयमेंट एजेंट—सुरक्षित, अनुमानित और बिना किसी अनुवाद लागत के आपके व्यावसायिक लॉजिक के साथ बातचीत कर सकता है।

Share this article