
إذا كان منتجك يعمل على Next.js أو React، فإن WebMCP يناسبه بسهولة: الأداة دالة صغيرة، ومسارات API لديك تقوم بالعمل الحقيقي أصلًا. يعرض هذا الدليل نمطًا نظيفًا. جديد على الموضوع؟ ابدأ بمقال ما هو WebMCP.
سجّل الأدوات في مكوّن عميل
لا يوجد document.modelContext إلا في المتصفح، لذا مكان التسجيل هو useEffect. لا تعرض شيئًا، ومرّر AbortSignal لتختفي الأدوات عندما يغادر الزائر الصفحة:
'use client';
import { useEffect } from 'react';
export default function SearchTool() {
useEffect(() => {
const mc = document.modelContext || navigator.modelContext;
if (!mc?.registerTool) return undefined; // browsers without WebMCP skip this
const controller = new AbortController();
mc.registerTool({
name: 'search_products',
description: 'Search the catalog. Returns up to 5 products with price and link.',
inputSchema: {
type: 'object',
properties: { query: { type: 'string' } },
required: ['query'],
},
annotations: { readOnlyHint: true },
execute: async ({ query }, { signal }) => {
const res = await fetch('/api/search?q=' + encodeURIComponent(query), { signal });
return JSON.stringify(await res.json());
},
}, { signal: controller.signal });
return () => controller.abort();
}, []);
return null;
}أضف <SearchTool /> إلى التخطيط أو الصفحة التي تناسبها الأداة. يشغّل React Strict Mode التأثيرات مرتين أثناء التطوير، ودالة التنظيف أعلاه تعالج ذلك.
أبقِ المنطق في مسار API
الأداة مجرد غلاف رقيق. أما التحقق والحدود والصلاحيات فمكانها الخادم، حيث لا يستطيع الزائر تغييرها:
// app/api/search/route.js
import { NextResponse } from 'next/server';
export async function GET(request) {
const q = (request.nextUrl.searchParams.get('q') || '').slice(0, 80);
if (!q) return NextResponse.json({ error: 'missing_query' }, { status: 400 });
const items = await searchCatalog(q, { limit: 5 }); // your own function
return NextResponse.json(items.map(({ name, price, url }) => ({ name, price, url })));
}النماذج كأدوات
للنموذج البسيط، أضف toolname وtooldescription إلى العنصر <form>. يمرّر React هذه السمات غير المعروفة المكتوبة بأحرف صغيرة إلى الصفحة كما هي. ويعبّئ المتصفح النموذج، ويبقى الزائر افتراضيًا هو من يضغط الزر.
قواعد الأمان
- ابدأ بالقراءة فقط. البحث والتفاصيل أولًا، وميّزها بـ
readOnlyHint. - اسأل قبل التنفيذ. ميّز إجراءات السلة والحجز والنماذج بـ
consequentialHintليؤكّدها الزائر. - تحقّق على الخادم. المتصفح ليس حدًّا أمنيًّا، لذا تحقّق من كل مدخل وكل صلاحية في الواجهة الخلفية.
- أعِد أقل قدر ممكن. أرسل فقط ما يحق للعميل رؤيته، ولا ترسل أبدًا بيانات الإدارة أو سجلات عملاء آخرين.
اختبر الأدوات
- استخدم إصدارًا حديثًا من Chrome مع تفعيل WebMCP، عبر التجربة الأولية (origin trial) أو إعداد الاختبار.
- استدعِ كل أداة بمدخلات صحيحة وأخرى خاطئة.
- تأكّد من أن الزوار العاديين لا يلاحظون أي تغيير.
- شغّل فاحص WebMCP المجاني على الصفحة نفسها التي توجد فيها أدواتك.
تريد أن ننفّذه لك؟
نضيف WebMCP إلى منتجات Next.js وReact، من التقييم المجاني للجاهزية حتى الأدوات المختبرة. اطّلع على خدمات دمج WebMCP وتطوير Next.js.
الأسئلة الشائعة
هل يمكن تسجيل أدوات WebMCP في React Server Component؟
لا. يعمل WebMCP في المتصفح، لذا يجب تسجيل الأدوات في مكوّن عميل. ويمكن لمكوّن الخادم تمرير البيانات إلى هذا المكوّن عبر props.
هل تعمل أدوات WebMCP مع العرض من جهة الخادم؟
نعم. تُعرض الصفحة على الخادم كالمعتاد، وتُسجَّل الأدوات بعد اكتمال hydration. تأكّد من وجود document.modelContext قبل استخدامه.
لماذا تُسجَّل أدواتي مرتين أثناء التطوير؟
يشغّل React Strict Mode التأثيرات مرتين أثناء التطوير. وعند تمرير AbortSignal وإلغائه في دالة التنظيف الخاصة بالتأثير يُزال التسجيل الأول.
هل يوجد نوع TypeScript لـ WebMCP؟
نعم. تشير وثائق Chrome إلى حزمة npm باسم webmcp-types التي توفّر الأنواع لواجهة API الأمرية.
كيف يمكننا المساعدة
- خدمات تكامل WebMCPWebMCP development for any stack, from WordPress and Shopify to Next.js, Laravel and Django: search, FAQs and forms offered as secure tools for AI browser agents, with a free audit.
- تطوير Next.jsتطبيقات Next.js 14 / 15 جاهزة للإنتاج مع App Router ومكونات الخادم والنشر الطرفي وتسليم يعتمد TypeScript أولًا على Vercel أو AWS.
- تطوير تطبيقات الويب المخصصةتطوير تطبيقات ويب مخصصة متكاملة لـ SaaS والأدوات الداخلية ولوحات المعلومات وبوابات المؤسسات باستخدام React وNext.js وNode وLaravel وDjango.
تحدثوا إلى مهندس حول مشروعكم
أخبرونا بما تبنونه. نردّ خلال يوم عمل واحد برأي صريح حول النطاق والنهج والجهد المطلوب.
احجزوا مكالمة استراتيجية مجانيةكتبه الفريق الهندسي في UnlockLive IT. تعمل UnlockLive IT Limited مع العملاء عبر مقرها الرئيسي في لوس أنجلوس ومكتبها في تورنتو، وتقدم الأعمال الهندسية من مركز التسليم في دكا. من نحن