הגשר agent_mcp הוא ממשק HTTP פנימי שדרכו שרת ה-agent של Wizzo (הסשנים של Kringl) עובד על אתר: קורא סכמה, מריץ שאילתות, קורא לוגים, מנקה מטמון, מעדכן את הליבה ופועל בפאנלי האדמין. הוא שונה משרת ה-MCP הרגיל: הוא לא מיועד ללקוחות חיצוניים, ויש לו שתי שכבות אימות שמצמצמות מי יכול לקרוא לו.
הגשר חזק מאוד: הוא מריץ SQL כלשהו ומנפיק סשן אדמין. אין בו הגדרה שמכבה אותו אלא חסימה ברמת הרשת. אם אתם לא עובדים עם Kringl, ודאו שהוא לא נגיש מהאינטרנט בנתיב /system/agent_mcp (למשל חסימה בשרת האינטרנט).
איך קוראים לגשר#
curl -s -X POST "https://example.com/system/agent_mcp/query" \
-H "Authorization: Bearer $BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sql":"SELECT COUNT(*) AS n FROM CRM_adminPanel_panels"}'
תשובה מוצלחת: {"success": true, "data": {...}}. שגיאה: {"success": false, "error": "..."}. הגוף יכול להיות JSON או $_POST. הטוקן יכול להישלח גם בשדה _token בגוף. הכתובת היא תמיד /system/agent_mcp/<action>, ושיטת ה-HTTP היא POST (ה-CORS מרשה POST ו-OPTIONS).
שתי שכבות אימות#
- כתובת מקור.
WIZZO_NET::is_wizzo()בודקת שהקריאה מגיעה מכתובת IP של Wizzo (שרת ה-agent ב-IPv4 וב-IPv6, והמשרד). הרשימה נמצאת במקום אחד, ב-collections/WIZZO_NET.php. כתובת אחרת מקבלת403. - טוקן. ה-bearer מאומת ב-HTTP מול המאסטר (
check_version/validate_bot_token), בזמן קצוב של 10 שניות. טוקן חסר, לא תקין, או מאסטר שלא ענה, מחזירים401.
השכבה הראשונה לא מספיקה לבדה: ההשוואה כוללת גם את הכותרות CF-Connecting-IP ו-X-Forwarded-For, שאפשר לזייף כשהשרת נגיש ישירות ולא מאחורי פרוקסי מהימן (ממצא AI-02 בביקורת, חמור). ההגנה האמיתית היא הטוקן ושמירתו. אל תתנו טוקן bot לגורם חיצוני ואל תכתבו אותו בקוד או בדוקומנטציה.
רשימת הפעולות#
הפעולה capabilities מחזירה את הרשימה העדכנית של הפעולות הציבוריות של המחלקה (בהשתקפות), יחד עם כתובת האתר ורשימת פעולות ה-SEO. היא המקור הנכון לבדיקה אם אתר מסוים תומך בפעולה.
מסד נתונים, לוגים ותחזוקה#
| action | פרמטרים | מה עושה |
|---|---|---|
capabilities | - | רשימת כל הפעולות הציבוריות |
schema | - | כל הטבלאות עם עמודות ואינדקסים |
table_info | table | DESCRIBE, SHOW INDEX ו-SHOW CREATE TABLE |
query | sql או sql_hex | SELECT, SHOW, DESCRIBE, EXPLAIN מחזירים {rows, count}. כל פקודה אחרת מבוצעת דרך DB::sql ומחזירה {executed:true} (ועם INSERT גם insert_id) |
delete_cache | url | מקדם את attaches_version, מנקה את מטמון הדף והנתונים (params, platforms, table_list), מפעיל את האירוע delete.cache ומרוקן את מטמון external_mcp |
error_log | lines, filter, from_date, to_date | קריאת לוג השגיאות |
log_data | action (list או read), file | קריאת קבצי לוג של האתר |
grep_logs | pattern, source | חיפוש בלוגים |
wizzo_update | channel (latest או stable), check_only, force | בדיקה או הרצה של עדכון הליבה עם נעילה .wizzo_update.lock |
עם check_only מתקבלים: גרסה נוכחית, גרסה אחרונה, האם יש עדכון, גרסת PHP, מקום פנוי בדיסק ו-5 שורות אחרונות מ-CRM_wizzo_update_log.
קבצים (קריאה בלבד)#
| action | פרמטרים עיקריים | מה עושה |
|---|---|---|
files_capabilities | - | מה מותר ובאילו שורשים |
files_list | path, root | רשימת קבצים |
files_read | path, root, tail_bytes | קריאת קובץ, עם הסתרה של תבניות רגישות (SENSITIVE_PATTERNS) |
files_find | query | חיפוש לפי שם |
files_search | query, limit | חיפוש בתוכן |
files_glob | pattern | חיפוש לפי glob |
פאנלי אדמין#
| action | שקול ל-tool | הערה |
|---|---|---|
admin_panels | list_panels | |
admin_schema | panel_schema | |
admin_rows | list_rows | |
admin_save | save_record | כותב |
admin_set_field | set_field | כותב |
admin_delete | delete_record | כותב |
הפעולות האלה רצות דרך admin_mcp_tools בזהות mcp_agent עם הרשאה מלאה (perms=-1). אפיון הכלים ב-כלי ה-MCP.
סשן דפדפן#
| action | פרמטרים | מה עושה |
|---|---|---|
admin_login | ttl_minutes (5 עד 240, ברירת מחדל 60), label | מנפיק סשן אדמין ל-mcp_agent ומחזיר את העוגיות CRM_admin_session ו-CRM_admin_logged, כולל מעבר של שער המדינות |
admin_logout | token | מבטל את הסשן |
הסשן שנוצר נרשם ב-CRM_adminPanel_sessions בתווית "Agent browser", וכל הנפקה נרשמת בלוג CRM_safe_sql_log כ-ADMIN_LOGIN.
SEO ו-AI#
- 16 פעולות
seo_*:seo_report,seo_finding,seo_verify,seo_fixed,seo_scan,seo_pull,seo_status,seo_opportunities,seo_sitemaps,seo_sitemap_submit,seo_sitemap_remove,seo_answer,seo_note,seo_report_doc,seo_write_report,seo_changes. כולן עוברות ל-admin_mcp_tools(ראו חבילת ה-SEO). - פעולות WizzoAI:
ai_dashboard,ai_usage_logs,ai_log_detail,ai_models,ai_test_flight. עוברות ל-external_mcp ככליwizzoai_<tool>. - כלי מוצרים:
service_tools(רשימה) ו-service_call(tool,arguments) מפעילים כלי של שירותי המרקט דרךexternal_mcp.
דוגמה: עדכון ליבה מבוקר#
# 1. בדיקה בלבד
curl -s -X POST "https://example.com/system/agent_mcp/wizzo_update" \
-H "Authorization: Bearer $BOT_TOKEN" -H "Content-Type: application/json" \
-d '{"channel":"stable","check_only":true}'
# 2. הרצה
curl -s -X POST "https://example.com/system/agent_mcp/wizzo_update" \
-H "Authorization: Bearer $BOT_TOKEN" -H "Content-Type: application/json" \
-d '{"channel":"stable"}'
אם אתר לא מעודכן, update_available יהיה false והעדכון לא ירוץ, אלא אם נשלח force.
הוספת פעולה לגשר#
כל מתודה ציבורית חדשה במחלקה agent_mcp הופכת אוטומטית לפעולה וגם מופיעה ב-capabilities. מתודות private לא נחשפות. פעולה חדשה צריכה להשתמש ב-$this->json_response([...]) ולכתוב ל-log_query() כשהיא משנה מצב. שינוי בליבה דורש פרסום גרסה לצי כולו, ראו ניהול גרסאות.