Skip to main content
Glama
DEVELOPMENT.ar.md14.1 kB
# دليل التطوير يغطي هذا الدليل إعداد بيئة التطوير، وبناء المشروع، والمساهمة في الكود، وفهم هندسة Spec Workflow MCP. ## المتطلبات الأساسية ### البرامج المطلوبة - **Node.js** 18.0 أو أعلى - **npm** 9.0 أو أعلى - **Git** للتحكم في الإصدار - معرفة **TypeScript** مفيدة ### الأدوات الموصى بها - **VSCode** مع إضافات TypeScript - **Chrome/Edge DevTools** لتصحيح أخطاء لوحة التحكم - **Postman/Insomnia** لاختبار API ## إعداد بيئة التطوير ### 1. استنساخ المستودع ```bash git clone https://github.com/Pimzino/spec-workflow-mcp.git cd spec-workflow-mcp ``` ### 2. تثبيت التبعيات ```bash npm install ``` هذا يثبت: - MCP SDK - TypeScript وأدوات البناء - Express لخادم لوحة التحكم - مكتبات WebSocket - أطر الاختبار ### 3. بناء المشروع ```bash npm run build ``` هذا يترجم ملفات TypeScript إلى JavaScript في دليل `dist/`. ## أوامر التطوير ### الأوامر الأساسية | الأمر | الوصف | |---------|-------------| | `npm run dev` | البدء في وضع التطوير مع إعادة التحميل التلقائي | | `npm run build` | بناء حزمة الإنتاج | | `npm start` | تشغيل خادم الإنتاج | | `npm test` | تشغيل مجموعة الاختبارات | | `npm run clean` | إزالة القطع الأثرية للبناء | | `npm run lint` | تشغيل مدقق الكود | | `npm run format` | تنسيق الكود باستخدام Prettier | ### وضع التطوير ```bash npm run dev ``` الميزات: - إعادة التجميع التلقائي عند تغيير الملفات - إعادة التحميل الساخن للوحة التحكم - رسائل خطأ مفصلة - خرائط المصدر للتصحيح ### البناء للإنتاج ```bash npm run clean && npm run build ``` التحسينات: - JavaScript مصغر - حجم الحزمة محسّن - معالجة أخطاء الإنتاج - تحسينات الأداء ## هيكل المشروع ``` spec-workflow-mcp/ ├── src/ # الكود المصدري │ ├── index.ts # نقطة دخول خادم MCP │ ├── server.ts # خادم لوحة التحكم │ ├── tools/ # تطبيقات أدوات MCP │ ├── prompts/ # قوالب الأوامر │ ├── utils/ # دوال الأدوات المساعدة │ └── types/ # تعريفات أنواع TypeScript ├── dist/ # JavaScript المترجم ├── dashboard/ # ملفات لوحة تحكم الويب │ ├── index.html # واجهة لوحة التحكم │ ├── styles.css # أنماط لوحة التحكم │ └── script.js # JavaScript لوحة التحكم ├── vscode-extension/ # إضافة VSCode │ ├── src/ # مصدر الإضافة │ └── package.json # بيان الإضافة ├── tests/ # ملفات الاختبار ├── docs/ # التوثيق └── package.json # تكوين المشروع ``` ## نظرة عامة على الهندسة ### هندسة خادم MCP ``` Client (AI) ↔ MCP Protocol ↔ Server ↔ File System ↓ Dashboard ``` ### المكونات الرئيسية #### 1. خادم MCP (`src/index.ts`) - يتعامل مع اتصالات بروتوكول MCP - يعالج طلبات الأدوات - يدير حالة المشروع - عمليات نظام الملفات #### 2. خادم لوحة التحكم (`src/server.ts`) - يخدم لوحة تحكم الويب - اتصالات WebSocket - التحديثات الفورية - نقاط نهاية HTTP API #### 3. الأدوات (`src/tools/`) كل أداة عبارة عن وحدة منفصلة: - التحقق من صحة المدخلات - منطق الأعمال - عمليات الملفات - تنسيق الاستجابة #### 4. الأوامر (`src/prompts/`) سلاسل القوالب لـ: - توليد المستندات - إرشادات سير العمل - رسائل الخطأ - تعليمات المستخدم ## تطبيق الميزات الجديدة ### إضافة أداة جديدة 1. **أنشئ ملف الأداة** في `src/tools/`: ```typescript // src/tools/my-new-tool.ts import { Tool } from '@anthropic/mcp-sdk'; export const myNewTool: Tool = { name: 'my-new-tool', description: 'وصف ما تفعله الأداة', parameters: { type: 'object', properties: { param1: { type: 'string', description: 'وصف المعامل' }, param2: { type: 'number', optional: true } }, required: ['param1'] }, handler: async (params) => { // تطبيق الأداة const { param1, param2 = 0 } = params; // منطق الأعمال هنا return { success: true, data: 'استجابة الأداة' }; } }; ``` 2. **سجل في الفهرس** (`src/tools/index.ts`): ```typescript export { myNewTool } from './my-new-tool'; ``` 3. **أضف إلى الخادم** (`src/index.ts`): ```typescript import { myNewTool } from './tools'; server.registerTool(myNewTool); ``` ### إضافة ميزات لوحة التحكم 1. **تحديث HTML** (`dashboard/index.html`): ```html <div class="new-feature"> <h3>ميزة جديدة</h3> <button id="new-action">إجراء</button> </div> ``` 2. **أضف JavaScript** (`dashboard/script.js`): ```javascript document.getElementById('new-action').addEventListener('click', () => { // منطق الميزة ws.send(JSON.stringify({ type: 'new-action', data: { /* ... */ } })); }); ``` 3. **التعامل في الخادم** (`src/server.ts`): ```typescript ws.on('message', (message) => { const { type, data } = JSON.parse(message); if (type === 'new-action') { // معالجة الإجراء الجديد } }); ``` ## الاختبار ### تشغيل الاختبارات ```bash # تشغيل جميع الاختبارات npm test # تشغيل ملف اختبار محدد npm test -- src/tools/my-tool.test.ts # التشغيل مع التغطية npm run test:coverage # وضع المراقبة npm run test:watch ``` ### كتابة الاختبارات أنشئ ملفات اختبار بجانب ملفات المصدر: ```typescript // src/tools/my-tool.test.ts import { describe, it, expect } from 'vitest'; import { myTool } from './my-tool'; describe('myTool', () => { it('يجب معالجة المدخلات بشكل صحيح', async () => { const result = await myTool.handler({ param1: 'test' }); expect(result.success).toBe(true); expect(result.data).toContain('expected'); }); it('يجب معالجة الأخطاء', async () => { const result = await myTool.handler({ param1: null }); expect(result.success).toBe(false); expect(result.error).toBeDefined(); }); }); ``` ### اختبار التكامل اختبر سير العمل الكامل: ```typescript // tests/integration/workflow.test.ts describe('سير العمل الكامل', () => { it('يجب إنشاء المواصفة من البداية إلى النهاية', async () => { // إنشاء المتطلبات // الموافقة على المتطلبات // إنشاء التصميم // الموافقة على التصميم // إنشاء المهام // التحقق من الهيكل }); }); ``` ## التصحيح ### تصحيح خادم MCP 1. **أضف مخرجات التصحيح**: ```typescript console.error('[DEBUG]', 'تم استدعاء الأداة:', toolName, params); ``` 2. **استخدم مصحح VSCode**: ```json // .vscode/launch.json { "type": "node", "request": "launch", "name": "Debug MCP Server", "program": "${workspaceFolder}/dist/index.js", "args": ["/path/to/test/project"], "console": "integratedTerminal" } ``` ### تصحيح لوحة التحكم 1. **أدوات المطور للمتصفح**: - افتح لوحة التحكم في المتصفح - اضغط F12 لأدوات المطور - تحقق من وحدة التحكم للأخطاء - راقب علامة تبويب الشبكة لـ WebSocket 2. **أضف التسجيل**: ```javascript console.log('رسالة WebSocket:', message); console.log('تحديث الحالة:', newState); ``` ## أسلوب الكود والمعايير ### إرشادات TypeScript - استخدم الوضع الصارم - حدد الواجهات لهياكل البيانات - تجنب نوع `any` - استخدم async/await بدلاً من callbacks ### تنظيم الملفات - مكون واحد لكل ملف - جمع الوظائف ذات الصلة - اصطلاحات تسمية واضحة - تعليقات شاملة ### اصطلاحات التسمية - **الملفات**: kebab-case (`my-tool.ts`) - **الفئات**: PascalCase (`SpecManager`) - **الدوال**: camelCase (`createSpec`) - **الثوابت**: UPPER_SNAKE (`MAX_RETRIES`) ## المساهمة ### عملية المساهمة 1. **افرع المستودع** 2. **أنشئ فرع الميزة**: ```bash git checkout -b feature/my-feature ``` 3. **قم بإجراء التغييرات** 4. **اكتب الاختبارات** 5. **قم بتشغيل الاختبارات والمدقق**: ```bash npm test npm run lint ``` 6. **أرسل التغييرات**: ```bash git commit -m "feat: add new feature" ``` 7. **ادفع الفرع**: ```bash git push origin feature/my-feature ``` 8. **أنشئ طلب سحب** ### تنسيق رسالة الالتزام اتبع الالتزامات التقليدية: - `feat:` ميزة جديدة - `fix:` إصلاح خطأ - `docs:` التوثيق - `style:` التنسيق - `refactor:` إعادة هيكلة الكود - `test:` الاختبار - `chore:` الصيانة أمثلة: ``` feat: add approval revision workflow fix: resolve dashboard WebSocket reconnection issue docs: update configuration guide ``` ### إرشادات طلب السحب - وصف واضح - الإشارة إلى المشكلات ذات الصلة - تضمين لقطات الشاشة لتغييرات واجهة المستخدم - التأكد من نجاح جميع الاختبارات - تحديث التوثيق ## النشر ### حزمة NPM 1. **تحديث الإصدار**: ```bash npm version patch|minor|major ``` 2. **بناء الحزمة**: ```bash npm run build ``` 3. **النشر**: ```bash npm publish ``` ### إضافة VSCode 1. **تحديث إصدار الإضافة** في `vscode-extension/package.json` 2. **بناء الإضافة**: ```bash cd vscode-extension npm run package ``` 3. **النشر إلى السوق**: ```bash vsce publish ``` ## تحسين الأداء ### أداء الخادم - استخدم التخزين المؤقت لقراءات الملفات - نفذ debouncing لمراقبي الملفات - حسّن دفع رسائل WebSocket - التحميل الكسول للمستندات الكبيرة ### أداء لوحة التحكم - تقليل تحديثات DOM - استخدم التمرير الافتراضي للقوائم الطويلة - نفذ العرض التدريجي - حسّن إعادة اتصال WebSocket ## اعتبارات الأمان ### التحقق من صحة المدخلات تحقق دائمًا من صحة مدخلات الأداة: ```typescript if (!params.specName || typeof params.specName !== 'string') { throw new Error('Invalid spec name'); } // تطهير مسارات الملفات const safePath = path.normalize(params.path); if (safePath.includes('..')) { throw new Error('Invalid path'); } ``` ### أمان نظام الملفات - قيد العمليات على دليل المشروع - تحقق من صحة جميع مسارات الملفات - استخدم عمليات ملفات آمنة - نفذ فحوصات الأذونات ## استكشاف أخطاء التطوير وإصلاحها ### أخطاء البناء الشائعة | الخطأ | الحل | |-------|----------| | أخطاء TypeScript | قم بتشغيل `npm run build` لرؤية أخطاء مفصلة | | الوحدة غير موجودة | تحقق من الاستيرادات وقم بتشغيل `npm install` | | المنفذ قيد الاستخدام بالفعل | غيّر المنفذ أو أنهِ العملية الموجودة | | فشل اتصال WebSocket | تحقق من تشغيل الخادم وصحة المنفذ | ### نصائح التطوير 1. **استخدم وضع TypeScript الصارم** لسلامة أفضل للنوع 2. **مكّن خرائط المصدر** لتصحيح أسهل 3. **استخدم nodemon** لإعادة التشغيل التلقائي أثناء التطوير 4. **اختبر عمليات الملفات** في دليل معزول 5. **راقب الأداء** باستخدام Chrome DevTools ## الموارد - [توثيق MCP SDK](https://github.com/anthropics/mcp-sdk) - [دليل TypeScript](https://www.typescriptlang.org/docs/) - [أفضل ممارسات Node.js](https://github.com/goldbergyoni/nodebestpractices) - [VSCode Extension API](https://code.visualstudio.com/api) ## التوثيق ذو الصلة - [دليل التكوين](CONFIGURATION.md) - تكوين الخادم - [دليل المستخدم](USER-GUIDE.md) - استخدام الخادم - [مرجع الأدوات](TOOLS-REFERENCE.md) - توثيق الأدوات - [استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md) - المشكلات الشائعة

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Pimzino/spec-workflow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server