מה זה

מערכת ניהול עסק היא המקום שבו יושבים החשבוניות, הקבלות, הלקוחות וההוצאות. ברוב הימים העבודה בה היא סדרה של טפסים: לחפש לקוח, לבחור סוג מסמך, למלא שורות, לבחור אמצעי תשלום, לבדוק, להפיק.

בניתי שרת MCP שמחבר את Claude ישירות ל-API של המערכת, ובניתי אותו עם קלוד קוד. MCP (Model Context Protocol) הוא תקן פתוח שדרכו מודל שפה מקבל כלים אמיתיים לעבוד איתם, ולא רק טקסט לקרוא. מהרגע שהשרת מחובר, אפשר פשוט לכתוב:

  • "תוציא קבלה על שיעור פרטי של שעתיים, שולם בביט"
  • "תפתח לקוח חדש עם הטלפון הזה"
  • "מה פתוח לי מהחודש?"
  • "תרשום הוצאה לספק"

והסוכן עושה את העבודה מול המערכת עצמה, עם הנתונים האמיתיים של העסק.

תרשים זרימה: בקשה בעברית עוברת ל-Claude, משם לשרת ה-MCP שמאפשר קריאה חופשית, כתיבה רק באישור מפורש וחוסם מחיקה, מיזוג וחיוב אשראי, ומשם למערכת ניהול העסק
הדרך של בקשה אחת, מהשיחה ועד המערכת

איך נראית עבודה איתו

הפקת קבלה, לדוגמה, היא לא פקודה אחת אלא שיחה קצרה, וזה בכוונה:

איור: מחשב נייד עם שיחה פתוחה, ולידו תצוגה מקדימה של מסמך עם כפתור אישור גדול
קודם רואים את המסמך, ורק אחר כך מפיקים
  1. הסוכן מחפש את הלקוח במערכת, כדי לא לפתוח כפילות.
  2. הוא מנסח את המסמך ומציג אותו: לקוח, תיאור, כמות, סכום.
  3. אם חסר פרט שהמסמך דורש, למשל אמצעי התשלום בקבלה, הוא שואל במקום לנחש.
  4. הוא מפיק תצוגה מקדימה של המסמך האמיתי, בדיוק כמו שהוא ייראה, בלי לשמור שום דבר במערכת.
  5. רק אחרי אישור מפורש הוא מפיק את המסמך, ומחזיר קישור להורדה.

זה חשוב במיוחד כאן, כי מסמך מס שהופק לא נמחק. אפשר רק לבטל אותו במסמך נגדי. לכן כל המבנה של השרת בנוי סביב "קודם לראות, אחר כך להפיק".

והוא לא רק מבצע פקודות. כבר בסקירה הראשונה של המסמכים, הסוכן שם לב לחשבון עסקה ישן שנשאר פתוח אחרי שאוחד לחשבון חדש, כך שיתרת הלקוח הוצגה גבוהה מהאמת. הוא הציע לסגור אותו, והסביר לפני כן שסגירה לא מוחקת דבר ולא מפיקה מסמך חדש.

מה הוא יודע לעשות

שבעה כלים, ובתוכם כארבעים פעולות:

הבטיחות היא חלק מהתכנון, לא תוספת

לתת למודל שפה גישה לחשבון אמיתי של עסק זה לא דבר שעושים בקלות ראש. לכן השרת בנוי בשכבות:

  • שער אישור בקוד. כל פעולה מוגדרת כקריאה או ככתיבה. פעולת כתיבה נדחית על ידי השרת עצמו אם לא הגיעה עם אישור מפורש, והמודל מונחה להציג למשתמש את הפרטים המדויקים לפני שהוא שולח אותו. כל פעולה חדשה שמוגדרת ככתיבה מקבלת את השער אוטומטית.
  • פעולות הרסניות פשוט לא קיימות. מחיקות, מיזוג רשומות, חיוב כרטיסי אשראי ויצירת טפסי תשלום קיימים ב-API, אבל לא בשרת הזה. הם הושארו בחוץ בכוונה, וגם הכלי הפתוח חוסם אותם.
  • סביבת ניסוי נפרדת. מתג אחד מעביר את כל השרת לחשבון בדיקה, וכל תשובה במצב הזה מסומנת, כך שאי אפשר להתבלבל בין ניסוי לאמת.
  • המפתחות לא בקוד. הם נקראים מקובץ סביבה מקומי שלא נכנס לניהול גרסאות ולא מועתק לקבצי ההגדרות של Claude.
  • רץ רק על המחשב. השרת מתחבר בערוץ מקומי (stdio): התוכנה מפעילה אותו כתהליך ומדברת איתו ישירות. הוא לא פותח פורט ולא מקבל חיבורים מבחוץ.

ויש גבול שכדאי לומר בקול: שער האישור מגן מפני טעות של המודל, לא מפני אישור פזיז של אדם. וכשאותה שיחה גם קוראת תוכן מבחוץ, כמו מייל או אתר, טקסט זדוני בתוכן הזה יכול לנסות להטות את הסוכן. בגלל זה כל פעולה שמשנה משהו עוברת דרך אדם, ואף אחת מהן לא מוגדרת לאישור אוטומטי.

מתחת למכסה המנוע

  • אימות OAuth עם חידוש מוקדם. השרת מקבל טוקן גישה לשעה, שומר אותו בזיכרון ומחדש אותו שתי דקות לפני שהוא פג, כדי שלא ייפול באמצע פעולה. כמה בקשות שמגיעות יחד מתאחדות לחידוש אחד, במקום שכל אחת תבקש טוקן משלה.
  • מאומת מול המפרט הרשמי. כל נתיב נבדק מול מפרט ה-OpenAPI של המערכת. בדרך התברר, למשל, ששרת האימות יושב בכתובת נפרדת לגמרי מה-API עצמו, ושבגרסאות ישנות של התיעוד שמות השדות אחרים. פרט כזה הוא ההבדל בין שרת שעובד לשרת שמחזיר שגיאת הרשאה בלי הסבר.
  • כל הכלים נוצרים ממפה אחת. הפעולות מוגדרות בקובץ אחד, כטבלה: סוג הבקשה, הנתיב, האם זו כתיבה, ותיאור שהמודל רואה. השרת בונה מזה את הכלים, את התיעוד שהמודל מקבל ואת שער האישור. הוספת פעולה היא רשומה אחת.
  • תיאורים שנכתבו בשביל המודל. התיאור של כל פעולה הוא חלק מההנדסה. לא כל עסק רשאי להפיק כל סוג מסמך, ולכן התיאור מנחה את המודל לבדוק קודם אילו סוגים פתוחים לעסק. ופעולה ששמה נשמע כמו קריאה, אבל בפועל מחשבת מחדש ומעדכנת יתרה, מסומנת במפורש ככתיבה.
  • שגיאות שאפשר לפעול לפיהן. כשבקשה נכשלת, השרת מחלץ מהתשובה את הודעת השגיאה האמיתית ומחזיר אותה עם הסביבה וקוד הסטטוס, כך שהמודל יודע מה לתקן ולא סתם מנסה שוב.
  • קובץ אחד, בלי התקנה. השרת ארוז עם כל התלויות שלו לקובץ JavaScript יחיד. מספיק Node.js כדי להריץ אותו.
  • בדיקת חיבור לפני הכל. סקריפט נפרד מריץ חמש בדיקות קריאה בלבד: אימות, סוגי מסמכים, מידע על סוג מסמך, חיפוש לקוחות וחיפוש מסמכים. הוא לא משנה שום דבר, ואומר בדיוק מה לא עובד.

איפה זה עובד

בכל תוכנה שתומכת ב-MCP מקומי: Claude Code, השיחה הרגילה באפליקציית Claude למחשב, ועורכי קוד כמו Cursor או VS Code. אותו שרת, אותה הגדרה.

הטכנולוגיה שמאחוריו

רוצים חיבור כזה?

כמעט לכל מערכת שעסק עובד בה יש API: חשבוניות, CRM, יומן, מלאי. שרת MCP הופך אותה לכלי שהסוכן יודע להפעיל, בעברית, עם כללי בטיחות שמותאמים לאיך שהעסק עובד. אם יש מערכת שאתם מבלים בה שעה ביום על טפסים, כנראה שאפשר פשוט לדבר איתה.