שרת ה‑MCP
MCP (Model Context Protocol) הוא הפרוטוקול שדרכו מודל שפה מקבל כלים לעבוד מולם. שרת ה‑MCP של MyBusiness חושף את המערכת כאוסף כלים — שליפת נתונים, אגרגציות, סכימות, בניית דפים ודשבורדים, טריגרים, הודעות, קבצים, משתמשים והרשאות — כך ש‑Claude, ChatGPT או כל לקוח MCP אחר יכולים לעבוד מול המערכת בשפה חופשית.
השרת רץ מעל אותו Parse Server שמאחורי ה‑REST API. מה שהוא מוסיף הוא שכבת כלים בעלת סמנטיקה של המוצר — כלי שיוצר טבלה כותב גם את התווית בעברית ל‑_Dictionary ומגדיר הרשאות, מה שכתיבה גולמית לסכימה לא עושה.
הצינור מול הידע
Section titled “הצינור מול הידע”| שרת ה‑MCP | הפלאגין לסוכני AI | |
|---|---|---|
| מה זה נותן | 67 כלים גולמיים | 22 נהלי עבודה שמפעילים אותם נכון |
| מה הוא יודע | מה אפשר לעשות | מה כדאי לעשות, באיזה סדר, ואיפה קל לטעות |
| נדרש כדי לעבוד | חיבור | חיבור + התקנה |
שימוש בשרת בלי הפלאגין עובד: הסוכן פשוט ילמד תוך כדי, ולעיתים ילמד לא נכון. הפלאגין מקצר את הדרך ומונע את הטעויות הנפוצות.
שתי דרכי חיבור
Section titled “שתי דרכי חיבור”| השיטה | מה הלקוח שולח | הזהות בשרת | מודל ההרשאות |
|---|---|---|---|
| Application Id + API Key | X-Parse-Application-Id + X-Parse-API-Key |
משתמש־על בשם Master |
אין — עוקף כל הרשאת טבלה |
| התחברות משתמש (OAuth 2.1) | Authorization: Bearer <token> |
משתמש ה‑CRM שהתחבר | התפקיד שלו בתוספת הרשאות ה‑MCP האישיות; ה‑MCP לעולם לא חורג מהתפקיד |
שני הערכים של השיטה הראשונה זמינים בשירות עצמי, בסביבת הפיתוח: תפריט המשתמש ב‑CRM ← סביבת פיתוח (נפתח ב‑siteadmin.mbapps.co.il) ← Databases ← המערכת שלכם ← לשונית Settings — שדה Application Id עם כפתור Copy, וטבלת API Keys (עמודות Key / Name / Created Date / Revoke) עם + Add Key → Save. המפתח נוצר ומוצג מיד בלחיצה על Add Key; Revoke (סל האשפה בשורה) הורג אותו לאלתר.
{ "mcpServers": { "MyBusiness": { "type": "http", "url": "https://mcp.mbapps.co.il/", "headers": { "X-Parse-Application-Id": "REPLACE_WITH_YOUR_APPLICATION_ID", "X-Parse-API-Key": "REPLACE_WITH_YOUR_API_KEY" } } }}OAuth 2.1
Section titled “OAuth 2.1”גילוי סטנדרטי: RFC 9728 /.well-known/oauth-protected-resource ו‑RFC 8414 /.well-known/oauth-authorization-server.
מסלול /authorize שולח את המשתמש למסך ההתחברות של ה‑CRM — וזה מה שקושר את החיבור למערכת אחת. נתמכים PKCE S256 ו‑refresh_token, עם ה‑scopes mcp:tools mcp:resources.
הרשאות MCP למשתמש
Section titled “הרשאות MCP למשתמש”למשתמשים אין גישת MCP כברירת מחדל (כל התיבות ריקות גם אצל ה‑owner). מעניקים אותה בסביבת הפיתוח: תפריט המשתמש ← סביבת פיתוח ← Databases ← המערכת ← לשונית Users ← עיפרון על כרטיס המשתמש ← לשונית MCP Permissions ← Apply, עם הפרדה בין Read / Create / Update. הלשונית עצמה מציינת שההרשאות כפופות לזכויות ברמת הטבלה של המשתמש ולחבילת המנוי, ומציגה את כתובת השרת.
זו השכבה היחידה שבה גבול הרשאות באמת נאכף בשרת. חיבור עם API Key עוקף אותה לגמרי — ראו סוכן במצב קריאה בלבד.
הדגש שיחסוך לכם הכי הרבה זמן
Section titled “הדגש שיחסוך לכם הכי הרבה זמן”פרטי גישה שגויים לא מופיעים כשגיאת HTTP. הקריאה חוזרת 200, והשגיאה יושבת בתוך תשובת הכלי:
Permission denied for action find on class Accountsרק כותרת אימות חסרה לגמרי מחזירה HTTP 403 עם שגיאת JSON‑RPC {"code":-32000,"message":"Authorization header is required"} — וזה חל גם על Usage-Guide. לעומת זאת עם פרטי גישה שגויים (מפתח לא נכון, או Application Id שאינו קיים) Usage-Guide מצליח, ו‑initialize + tools/list (67 כלים) מצליחות גם בלי אימות — רק tools/call אוכפת.
התוצאה: לקוח יכול להיראות “מחובר”, להציג רשימת כלים מלאה, ולהיכשל בקריאת הנתונים הראשונה.
כלל האבחון: אבחנו מהתשובה של כלי נתונים (Get-Data על טבלה אמיתית) — לא מקוד הסטטוס, לא מנורית החיבור ולא מ‑tools/list.
מפת הכלים
Section titled “מפת הכלים”הקטלוג המלא — כל כלי בשרת, בסדר אלפביתי, עם דגל קריאה/שינוי — נמצא בעמוד אחד: אינדקס הכלים המלא. זו נקודת הכניסה כשאתם מחפשים שם של כלי.
הכלים מחולקים לשתי חבילות לפי מה שהם נוגעים בו:
חבילה א’ — נתונים, אוטומציה ותקשורת
Section titled “חבילה א’ — נתונים, אוטומציה ותקשורת”מה שסוכן משתמש בו ביום‑יום מול מערכת חיה:
| התחום | עמוד | הכלים |
|---|---|---|
| נתונים | כלי נתונים | Get-Data, Count-Data, Aggregate-Data, Create-Data, Create-Many, Update-Data |
| טריגרים | כלי טריגרים ואוטומציות | Get-Triggers, Set-Trigger, Set-Trigger-Action |
| משתמשים | כלי משתמשים | Get-Current-User, Get-all-Users, Create-or-Update-User |
| הצעות מחיר | כלי הצעות מחיר | Get-Price-Quote-Templates, Create-Update-Price-Quote-Template, Create-Price-Quote |
| הודעות | כלי הודעות | Send-WhatsApp-Message, Get-WhatsApp-Template-Params, Get-SMTP-Accounts |
| קבצים | כלי קבצים | Upload-Public-File, Get-File-Content, והמשאב get-file |
חבילה ב’ — בנייה והתאמה של המערכת
Section titled “חבילה ב’ — בנייה והתאמה של המערכת”מה שסוכן משתמש בו כשהוא בונה מערכת:
| התחום | עמוד | הכלים |
|---|---|---|
| סכימה | כלי סכימה | Get-Schema, Create-Table, Add-Field-to-Table |
| אתרים ודפים — קריאה | אתרים ודפים | Get-Sites, Get-Site-Pages, Get-Page-Content |
| עריכת דפים | עריכת דפים | Create-Form-Page, Edit-Page, Add-Container-to-Page, Duplicate-Element |
| הגדרות וגרסאות של דף | — | Get/Set-Page-Settings, Get-Page-Versions, Get/Set-Page-Version, Edit-Page-CSS-JS |
| אלמנטי דשבורד | — | Add-Edit-Chart-Element, Add-Edit-Counter-Element, Add-Edit-Text-Element, Add-Edit-Tabs-Element |
| טבלאות תצוגה | — | Create-Table-View-Page, Edit-Table-View, Add-Table-View-to-Form-Page, Get-Optional-Fields |
| כללי טופס | — | Get-Form-Rules, Set-Form-Rules, Edit-Form-Rules |
| תפריטים ודוחות | — | Get-Menus, Get-Menu-Items, Set-Menu-Items, Get-Reports, Create-or-Update-Report |
| מינוח | — | Get/Set-Terminology-Dictionary, Replace-Terms |
| תפקידים, הרשאות ורישוי | — | Get-Roles, Create-Role, Get-Role-Users, Add-Users-to-Role, Remove-Users-from-Role, Get/Set-Table-Permissions, Get-Packages, Set-Package-for-User |
ציר הזמן (_Timeline) |
אינדקס הכלים | Get-Timeline-Settings, Set-Timeline-Settings |
כל אלה מפורטים באינדקס, עם שיוך קטגוריה ודגל קריאה/שינוי לכל כלי.
שני עמודים רוחביים
Section titled “שני עמודים רוחביים”- סוכן במצב קריאה בלבד — רשימת ההיתר המדויקת שמייצרת סוכן שלא יכול לשנות כלום.
- מתכונים — המשימות הנפוצות, עם הקריאות המדויקות.
אבני הבניין המשותפות
Section titled “אבני הבניין המשותפות”שני מבנים חוזרים כמעט בכל כלי בשרת. כדאי לקרוא אותם פעם אחת כאן.
מבנה התנאים
Section titled “מבנה התנאים”// מבנה A — כללי טופס וכלי דפים{ "field": "StatusId", "equesition": "equalTo", "value": "abc1234567", "visibleVal": "בוטל", "condOr": false }
// מבנה B — טריגרים, מונים, גרפים, דוחות, טבלאות תצוגה{ "F": "StatusId", "C": "equalTo", "T": "Pointer", "V": "abc1234567", "P": { "targetClass": "CaseStatuses", "visibleVal": "בוטל", "multiple": false } }אופרטורים: equalTo, notEqualTo, greaterThan, lessThan, greaterThanOrEqualTo, lessThanOrEqualTo, containedIn, notContainedIn, exists, doesNotExist, startsWith, endsWith, contains (בטבלאות תצוגה נוספים AuthorizedOn, underMyHierarchy, notUnderMyHierarchy). שימו לב לאיות: הליטרל לשלילת קיום הוא doesNotExist. נתקלתם ב‑notExist? הצורה הזו מופיעה בנתונים ישנים, אבל היא אינה ב‑enum של אף כלי חי ותיפסל בוולידציה.
ערך Pointer ל‑_User יכול להיות המילה "currentUser". ערך תאריך יכול להיות YYYY-MM-DD, מספר ימים (שלילי מותר), או ביטוי כמו "today", "beginning of this month", "year ago".
שימו לב: הסכימה של Set-Trigger מגדירה enum צר יותר מהרשימה הזו. הפירוט המלא — בעמוד הטריגרים.
Placeholders בהודעות
Section titled “Placeholders בהודעות”{{{FieldName}}} ומסלולי Pointer {{{AccountId.Name}}} מוחלפים מהרשומה המפעילה.
עיצוב תאריך: {{{SaleDate.format(date,he-IL,Asia/Jerusalem)}}} — סוג (date / timehm / datetime), ואז locale, ואז אזור זמן.
מגבלות שכדאי לדעת עליהן מראש
Section titled “מגבלות שכדאי לדעת עליהן מראש”- אין כלי מחיקה. לא לרשומה, לא לטבלה, לא לדף ולא לטריגר. מחיקה נעשית בממשק או ב‑REST.
- המפתח המדומה
fieldNameש‑whereו‑dataדרשו בגרסאות שרת ישנות אינו נדרש עוד. מול שרת ישן ראו את הערת ההיסטוריה בכלי נתונים. - טבלת
Configפתוחה ל‑MCP —Get-Data/Create-Data/Create-Many/Update-Data/Get-Schemaעליה עובדים, כולל הדלקת דגלי הטפסים (AcceptWebLeads/AcceptWebToTable). בגרסאות שרת ישנות היא הייתה חסומה לחלוטין (Error: Table is restricted) — שם נדרש REST. שימו לב:Get-Dataמחזיר גם את שורתPaymentעל מבנה הסודות שלה — התייחסו לתוכן הטבלה כרגיש. עמודConfigבממשק ה‑CRM עדיין אינו קיים. ראו דגלי Config. Get-Triggersאינו עובד עם API Key — ראו למעלה.- עדכון חלקי של טריגר מתוזמן דרס אותו בגרסאות שרת ישנות; היום השרת ממזג. מול שרת ישן שלחו את כל השדות — ראו כלי טריגרים.
currentUserבפעולת טריגר שמופעלת מ‑MCP נשמר מילולית — אין משתמש מאחורי חיבור Master / API Key.- כלים שמחליפים ולא ממזגים:
Set-Form-Rulesמחליף את כל הכללים הקיימים (“דורס”);Edit-Page-CSS-JSמחליף את כל הבלוק;Set-Table-Permissionsמחליף את כל ה‑CLP. קראו לפני שאתם כותבים. - שני סוגי מזהים. תפריטים ודפים משתמשים ב‑
_idשל MongoDB (24 תווים הקסדצימליים); רשומות נתונים ב‑objectIdשל Parse (10 תווים). אל תזינו שם היכן שמצופה מזהה. shcedulerHours— זהו שם הפרמטר של תזמון הטריגרים, בדיוק באיות הזה. העתיקו אותו מהדוגמה ואל תתקנו את האיות: שליחתschedulerHoursהמאויית נכון מוחזרת ב‑Error: Scheduler hours is required for scheduled triggerוהטריגר לא נוצר.fromPhoneNumberIdב‑WhatsApp הואChannels.Identityולעולם לאChannels.objectId. זו הטעות הנפוצה ביותר באינטגרציות WhatsApp; בדקו את הערך לפני השליחה הראשונה.- עריכות דפים דורשות רענון בדפדפן כדי להופיע.
- חיבור אחד = מערכת אחת. אין כלי חוצה‑מערכות; ניתוב פרטי הגישה נעשה בהגדרת החיבור, לא בכל קריאה.
- שרשרת טריגרים מוגבלת ל‑3 רמות — שלושה טריגרים רצים בזה אחר זה; הרביעי נחסם ונרשם ב‑
_syslogTriggersכ‑blocked! trigger step is to deep -3. תכננו טעינות המוניות בהתאם. הפירוט בכלי טריגרים.
מספרים ומכסות במקום אחד: מגבלות ומכסות.
- אינדקס הכלים המלא — כל כלי בשרת בטבלה אחת
- מתכונים — משימות נפוצות דרך MCP
- הפלאגין לסוכני AI — חבילה מוכנה שמתקינה את החיבור הזה ומוסיפה מעליו 22 סקילים של ידע יישום
- אימות והרשאות
- שגיאות ופתרון תקלות