דלגו לתוכן

שימוש בשרת MCP

מדריך זה מציג כיצד לחבר לקוח MCP חיצוני — Claude Code, עורך, ה-MCP Inspector — לשרת הכלים של Control Center עצמו.

Control Center רושם 110 כלים ומגיש אותם דרך Model Context Protocol בגרסת פרוטוקול 2024-11-05. משפחות שלמות של כלים שאולי הייתם מצפים להן חסרות: אין כלי פגישות או לוח שנה ואין כלי פרויקטים.

משטח ה-MCP חולק את המאזין הראשי cc_server. אין פורט MCP נפרד.

נקודת קצה שיטה מטרה
/mcp POST תעבורת Streamable HTTP — זו השפה שלקוח מדבר בה
/mcp DELETE סיום סשן
/sse GET זרם התראות שרת-אל-לקוח

לכן התקנה מקומית כברירת מחדל נמצאת בכתובת http://127.0.0.1:9030/mcp.

  1. עברו אל הגדרות → שרת → שרתי MCP
  2. קראו את הכרטיס שרת MCP — הוא מציג פועל או נעצר ואת הפורט שהוא מאזין עליו

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

השרת מאזין ב-loopback כברירת מחדל, ולכן נקודת הקצה נגישה רק מהמכונה שבה פועל cc_server, אלא אם הפעלתם אותו עם --bind any.

כוונו את הלקוח שלכם לנקודת הקצה של Streamable HTTP. צורת התצורה המדויקת היא עניינו של הלקוח שלכם; הכתובת זהה בכל מקרה.

{
"mcpServers": {
"control-center": {
"type": "http",
"url": "http://127.0.0.1:9030/mcp"
}
}
}

Claude Code לא יאסוף זאת מקובץ .mcp.json של הפרויקט — הוא משער שרתי MCP בהיקף הפרויקט מאחורי בקשת אישור שקריאה לא־אינטראקטיבית של claude -p לעולם אינה עונה עליה. העבירו את התצורה במפורש:

חלון מסוף
claude --mcp-config /path/to/mcp.json --strict-mcp-config

‏--strict-mcp-config גורם ל-Claude להשתמש רק בקובץ הזה, כך שאותו שרת לא יתגלה גם מהפרויקט ויירשום פעמיים.

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

הגשת MCP מעבר למכונה המארחת

קטע בשם “הגשת MCP מעבר למכונה המארחת”
  1. במסך הגדרות → שרת → שרתי MCP, בשורה אסימון גישה, לחצו על הגדר והדביקו אסימון
  2. שלחו אותו כ-Authorization: Bearer <token> בכל בקשת POST /mcp

משטח ללא אסימון דוחה כל פונה שאינו loopback עם 403. זו התנהגות של כשל־סגור מכוונת: האסימון הוא מה שמאפשר בכלל שירות מחוץ למכונה.

שינויים באסימון חלים על המשטח הפעיל מיד — בלי הפעלה מחדש.

תיחום כל קריאה לסביבת עבודה

קטע בשם “תיחום כל קריאה לסביבת עבודה”

כל כלי שנוגע בנתונים בהיקף סביבת עבודה מחייב workspace_id, וקריאה בלעדיו נדחית במקום שתיפתר מול איזו סביבת עבודה “נוכחית”:

{
"workspace_id": "acme",
"title": "Fix login bug",
"priority": "high"
}

המזהה הוא זה שמופיע בכתובת הדפדפן או היישום שלכם: /workspaces/<workspace_id>/…. הפטורים היחידים הם כלים שבאמת פורשים על פני סביבות עבודה, כמו list_workspaces וכלי עדכוני החדשות — עדכוני החדשות הם לפי משתמש ולסוכן אין משתמש משל עצמו, ולכן הכלים האלה פועלים על הפידים של בעל השרת.

כלים בהיקף מאגר בודקים בנוסף שהמאגר מקושר לאותה סביבת עבודה.

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

הקטלוג המלא מפורסם ב-tools/list בלי שער גילוי — לקוח MCP חיצוני מסרב לקרוא לכלי שאינו ברשימה שבמטמון שלו, כך שהסתרת כלים שוברת אותם במקום לסדר אותם.

  • בדקו שכרטיס שרת MCP מראה פועל
  • בדקו שהפורט תואם לפורט של cc_server שלכם
  • ב-Claude Code, בדקו שהעברתם --mcp-config ו---strict-mcp-config

שגיאת 403 ממכונה שאינה השרת

קטע בשם “שגיאת 403 ממכונה שאינה השרת”

לא הוגדר אסימון Bearer. הגדירו אחד ושלחו אותו.

קריאת כלי נכשלת עם “Missing or invalid argument: workspace_id”

קטע בשם “קריאת כלי נכשלת עם “Missing or invalid argument: workspace_id””

הוסיפו workspace_id. אין סביבת עבודה משתמעת.

קריאת כלי נדחית מפני שהיא אינה מוכרת

קטע בשם “קריאת כלי נדחית מפני שהיא אינה מוכרת”

כלי MCP מפרט את הקטלוג. קראו בשם בדיוק כפי שהוא מופיע שם.