مقدمة في بروتوكول سياق النموذج (MCP)

بروتوكول سياق النموذج (MCP) هو بروتوكول مفتوح مصمم لتوحيد كيفية توفير التطبيقات للسياق لنماذج اللغة الكبيرة (LLMs). فكر في MCP كمنفذ USB-C لتطبيقات الذكاء الاصطناعي. تماماً كما يوفر USB-C طريقة موحدة لتوصيل الأجهزة بملحقات متنوعة، يوفر MCP طريقة موحدة لربط نماذج الذكاء الاصطناعي بمصادر البيانات والأدوات المختلفة.
لماذا استخدام MCP؟
MCP مفيد بشكل خاص لبناء الوكلاء وسير العمل المعقدة فوق نماذج اللغة الكبيرة. يوفر:
- قائمة متنامية من التكاملات المبنية مسبقاً التي يمكن لنموذج اللغة الكبير الخاص بك الاتصال بها مباشرة.
- المرونة للتبديل بين موفري ومورّدي نماذج اللغة الكبيرة.
- أفضل الممارسات لتأمين بياناتك داخل بنيتك التحتية.
البنية العامة
يتبع MCP بنية عميل-خادم حيث يمكن لتطبيق مضيف الاتصال بخوادم متعددة:

- مضيفو MCP: برامج مثل Claude Desktop أو بيئات التطوير أو أدوات الذكاء الاصطناعي التي تريد الوصول إلى البيانات من خلال MCP.
- عملاء MCP: عملاء البروتوكول الذين يحافظون على اتصالات 1:1 مع الخوادم.
- خوادم MCP: برامج خفيفة يكشف كل منها عن قدرات محددة من خلال بروتوكول سياق النموذج الموحد.
- مصادر البيانات المحلية: ملفات الحاسوب وقواعد البيانات والخدمات التي يمكن لخوادم MCP الوصول إليها بأمان.
- الخدمات البعيدة: الأنظمة الخارجية المتاحة عبر الإنترنت (مثل واجهات برمجة التطبيقات) التي يمكن لخوادم MCP الاتصال بها.
بناء خادم MCP مع TypeScript
لنمشي خلال بناء خادم طقس MCP بسيط باستخدام TypeScript.
المتطلبات الأساسية
- الإلمام بـ TypeScript.
- Node.js الإصدار 16 أو أعلى مثبت.
إعداد المشروع
أولاً، أنشئ مجلداً جديداً لمشروعك وقم بتهيئته:
mkdir weather
cd weather
npm init -yثبّت التبعيات اللازمة:
npm install @modelcontextprotocol/sdk zod
npm install -D @types/node typescriptأنشئ هيكل المشروع:
mkdir src
touch src/index.tsحدّث package.json ليتضمن سكريبت البناء:
{
"type": "module",
"bin": {
"weather": "./build/index.js"
},
"scripts": {
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
},
"files": [
"build"
]
}بناء الخادم
ابدأ باستيراد الحزم اللازمة:
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";هيّئ مثيل الخادم:
const NWS_API_BASE = "https://api.weather.gov";
const USER_AGENT = "weather-app/1.0";
const AlertsArgumentsSchema = z.object({
state: z.string().length(2),
});
const ForecastArgumentsSchema = z.object({
latitude: z.number().min(-90).max(90),
longitude: z.number().min(-180).max(180),
});
const server = new Server(
{
name: "weather",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
}
);نفّذ قائمة الأدوات:
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: "get-alerts",
description: "الحصول على تنبيهات الطقس لولاية",
inputSchema: {
type: "object",
properties: {
state: {
type: "string",
description: "رمز الولاية من حرفين (مثال CA، NY)",
},
},
required: ["state"],
},
},
{
name: "get-forecast",
description: "الحصول على توقعات الطقس لموقع",
inputSchema: {
type: "object",
properties: {
latitude: {
type: "number",
description: "خط العرض للموقع",
},
longitude: {
type: "number",
description: "خط الطول للموقع",
},
},
required: ["latitude", "longitude"],
},
},
],
};
});أخيراً، نفّذ الدالة الرئيسية لتشغيل الخادم:
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("خادم MCP للطقس يعمل على stdio");
}
main().catch((error) => {
console.error("خطأ فادح في main():", error);
process.exit(1);
});استخدام الخادم مع تطبيق JS طرفي
لاستخدام الخادم مع تطبيق JS طرفي، تحتاج إلى تكوين عميل MCP للاتصال بالخادم:
const { ClientSession, StdioServerParameters } = require('@modelcontextprotocol/sdk');
const { stdio_client } = require('@modelcontextprotocol/sdk/client/stdio');
async function connectToServer(serverScriptPath) {
const serverParams = new StdioServerParameters({
command: 'node',
args: [serverScriptPath],
});
const transport = await stdio_client(serverParams);
const session = new ClientSession(transport.stdio, transport.write);
await session.initialize();
return session;
}
async function main() {
const session = await connectToServer('./build/index.js');
const response = await session.listTools();
console.log('الأدوات المتاحة:', response.tools);
}
main();الخلاصة
بروتوكول سياق النموذج (MCP) هو أداة قوية لتوحيد تكامل نماذج الذكاء الاصطناعي. باتباع هذا الدليل، يمكنك بناء واستخدام خادم MCP مع TypeScript، مما يتيح التكامل السلس مع مصادر البيانات والأدوات المتنوعة. سواء كنت تبني سير عمل معقدة أو تطبيقات بسيطة، يوفر MCP المرونة والأمان اللازمين لتعزيز مشاريع الذكاء الاصطناعي الخاصة بك.
المرجع
- وثائق بروتوكول سياق النموذج
- المؤلف: فريق Model Context Protocol
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

بناء مفسر أكواد مخصص لوكلاء نماذج اللغة الكبيرة
تعلم كيفية إنشاء مفسر أكواد مخصص لوكلاء نماذج اللغة الكبيرة (LLM)، مما يتيح استدعاء الأدوات الديناميكي وتنفيذ الأكواد المعزول لتعزيز المرونة والأمان.

AI SDK 4.0: الميزات الجديدة وحالات الاستخدام
اكتشف الميزات الجديدة وحالات الاستخدام لـ AI SDK 4.0، بما في ذلك دعم PDF واستخدام الكمبيوتر والمزيد.

بناء مفسر الأكواد الخاص بك مع توليد الأدوات الديناميكية
تعلم كيفية إنشاء مفسر أكواد مخصص باستخدام التوليد الديناميكي للأدوات والتنفيذ مع o3-mini، مما يتيح حل المشاكل بمرونة وقابلية للتكيف.