לדלג לתוכן

6.2 שרתי MCP שימושיים הרצאה

בהרצאה הקודמת הבנו מה זה MCP וכיצד עובד מודל הלקוח-שרת. עכשיו נעבור מתיאוריה למעשה: איך מתקינים ומגדירים שרתי MCP בתוך Claude Code, אילו שרתים שווה להכיר, ואיך הtools שלהם מופיעים לagent בפועל. נעבוד עם פקודת claude mcp ועם קובץ ההגדרות, נבין את שלושת הטווחים (scopes) שקובעים מי רואה את השרת, ונראה כמה דוגמאות אמיתיות של שרתים - תיעוד, דפדפן, מסד נתונים ומערכות מעקב. המטרה: שבסוף ההרצאה תדעו לחבר שרת לפרויקט שלכם ולהתחיל לעבוד מולו.

פקודת ההוספה - claude mcp add

הדרך המרכזית להוסיף שרת היא פקודת claude mcp add מהמעטפת. המבנה משתנה מעט לפי סוג התובלה. נתחיל בשרת מרוחק מסוג HTTP, שהוא הצורה המומלצת לשירותי ענן:

# basic syntax
claude mcp add --transport http <name> <url>

# real example: connecting to Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp

# with a Bearer token in the header
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

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

# basic syntax
claude mcp add [options] <name> -- <command> [args...]

# example: an Airtable server, with an environment variable for the API key
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
  -- npx -y airtable-mcp-server

התו -- קריטי: כל מה שאחריו מועבר לשרת כמו שהוא. בלעדיו, Claude Code היה מנסה לפרש דגלים של השרת (למשל --port) כדגלים משלו. כלל: קודם הדגלים של Claude (למשל --env, --transport), אז שם השרת, אז --, ואז הפקודה.

שלושת הטווחים - scopes

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

טווח - scope נטען ב משותף עם הצוות נשמר ב
local (ברירת מחדל) הפרויקט הנוכחי בלבד לא ~/.claude.json
project הפרויקט הנוכחי בלבד כן, דרך גרסאות .mcp.json בשורש
user כל הפרויקטים שלכם לא ~/.claude.json

הבחירה החשובה ביותר היא בין local ל-project. שרת local נשאר פרטי לכם ולפרויקט הזה, ומתאים לניסויים או לשרת עם סיסמאות שאתם לא רוצים ב-git. שרת project נכתב לקובץ .mcp.json בשורש הפרויקט, שמיועד להיכנס ל-git כדי שכל הצוות יקבל את אותם tools.

# local server for the project (default)
claude mcp add --transport http stripe https://mcp.stripe.com

# server shared with the team, written to .mcp.json
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

# a server available to you in all projects
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

קובץ ההגדרות - .mcp.json

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

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

שימו לב לשני דברים. ראשית, השדה type חובה לשרת מרוחק (http או sse); הכניסה streamable-http היא כינוי מקובל ל-http. אם יש url בלי type, Claude Code יחשוב שזה שרת stdio ויתלונן. שנית, אפשר להשתמש בהרחבת משתני סביבה: ${VAR} מתרחב לערך המשתנה, ו-${VAR:-default} נותן ערך ברירת מחדל. זה מאפשר לצוות לשתף את הקובץ בלי לחשוף מפתחות - כל אחד מגדיר את המפתח כמשתנה סביבה מקומי.

מטעמי ביטחון, כששרת מוגדר ב-.mcp.json שמגיע מ-git, Claude Code שואל אתכם אישור לפני שהוא משתמש בו. לא כל קוד שמגיע מrepository מקבל אוטומטית גישה לtools שלכם.

ניהול השרתים - managing servers

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

claude mcp list          # list all configured servers
claude mcp get github     # details about a specific server
claude mcp remove github  # remove a server

ובתוך סשן של Claude Code, הפקודה /mcp פותחת פאנל שמראה את מצב החיבור של כל שרת, כמה tools כל אחד חושף, ומאפשרת להתחבר לשרתים שדורשים אימות.

אימות - authentication

הרבה שרתי ענן דורשים התחברות. Claude Code תומך ב-OAuth 2.0. הזרימה פשוטה: מוסיפים את השרת, ואז מריצים /mcp בתוך סשן ובוחרים להתחבר. הדפדפן נפתח, אתם מתחברים, ו-Claude Code שומר את הטוקן ומרענן אותו אוטומטית.

# add the server
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# inside Claude Code
/mcp
# choose Sentry and connect in the browser

אפשר גם להתחבר ישירות מהמעטפת בלי לפתוח סשן, עם claude mcp login <name>. זה שימושי בסביבות SSH.

דוגמה: מסד נתונים - PostgreSQL

אחת הדוגמאות השימושיות ביותר היא חיבור למסד נתונים. הנה שרת שנותן לagent גישה לקריאה בלבד ל-PostgreSQL:

claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

שימו לב שהשתמשנו במשתמש readonly ב-DSN. זה עיקרון חשוב: תנו לagent את ההרשאות המינימליות. אחרי החיבור אפשר לשאול בשפה טבעית:

What is the total revenue this month?
Show me the schema of the orders table.
Find customers who haven't purchased in the last 90 days.

הagent מתרגם את השאלה לשאילתה, מריץ אותה דרך הtool של השרת, ומחזיר תשובה מבוססת נתונים אמיתיים.

דוגמאות נוספות - more servers

הנה עוד כמה שרתים שכדאי להכיר, לפי סוג המשימה:

  • דפדפן - browser: שרת כמו Playwright נותן לagent לנווט בדפים, ללחוץ, למלא טפסים ולצלם מסך. זה מאפשר לagent לבדוק פיצ'ר בדפדפן אמיתי, לא רק בקוד.
  • תיעוד - docs: שרתי תיעוד מביאים תיעוד עדכני של ספריות ישירות לcontext, כדי שהagent לא ינחש מזיכרון ישן איך API עובד.
  • GitHub: קריאת PR-ים, פתיחת issues, ניהול ריפו. השרת המרוחק מאמת עם personal access token בכותרת.
  • מערכות ניטור - monitoring: Sentry ל-שגיאות, שרתי אנליטיקס לשימוש. הagent שולף נתוני ייצור חיים.
# example: a Playwright browser server, local
claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

# example: remote GitHub with a token
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_PAT"

איך הtools מופיעים לagent - tool naming

אחרי שהשרת מחובר, הtools שלו הופכים לזמינים לagent, בדיוק כמו הtools המובנים. שם הtool בנוי בתבנית קבועה שכדאי להכיר:

mcp__<server-name>__<tool-name>

# for example, the query tool from the server named db:
mcp__db__query

השם המלא הזה חשוב כשרוצים להתייחס לtool במקום אחר - בכללי הרשאות, ברשימת הtools של sub-agent, או ב-matcher של hook. נראה את כל אלה בהרצאות הבאות.

מעבר לtools, שרת יכול לחשוף גם משאבים ופרומפטים. משאב מוזכר בשיחה עם תו @, בתבנית @server:protocol://resource/path, למשל:

Analyze @github:issue://123 and suggest a fix.

ופרומפט של שרת הופך ל-slash command בתבנית /mcp__servername__promptname:

/mcp__github__pr_review 456

מקומי מול מרוחק - local vs remote

בחירה חשובה בכל שרת: האם הוא רץ מקומית (stdio) או מרחוק (HTTP). כדאי להבין את התמורות:

מאפיין מקומי (stdio) מרוחק (HTTP)
היכן רץ תהליך על המחשב שלכם שרת בענן
מהירות מהיר, בלי רשת תלוי ברשת
אימות משתני סביבה OAuth, Bearer token
גישה למערכת ישירה לקבצים ולמערכת מוגבלת לשירות
מתאים ל הtools מקומיים, סקריפטים שירותי SaaS

שרת מקומי אידיאלי כשצריך גישה ישירה למערכת - מערכת קבצים, סקריפט מותאם, מסד נתונים מקומי. שרת מרוחק אידיאלי לשירותי ענן כמו Notion, Sentry או GitHub, שממילא חיים ברשת. כלל אצבע: אם הtool צריך לגעת במחשב שלכם, מקומי; אם הוא שער לשירות חיצוני, מרוחק.

הערה על SSE: פעם היה אמצעי תובלה שלישי בשם SSE (Server-Sent Events), אבל הוא נחשב מיושן היום. אם אתם רואים שרת עם --transport sse, זה עדיין עובד, אבל עדיף HTTP כשיש אפשרות.

הוספה מ-JSON - add-json

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

# adding an HTTP server from JSON
claude mcp add-json weather-api \
  '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

# adding a stdio server from JSON
claude mcp add-json local-weather \
  '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"]}'

זו דרך נוחה כשמעתיקים הגדרה מוכנה. רק ודאו שה-JSON מצוטט נכון במעטפת.

שאלה מתבקשת: אם מחברים הרבה שרתים, האם כל הtools ממלאים את context window? התשובה: לא, בזכות מנגנון בשם חיפוש כלים - tool search, שמופעל כברירת מחדל. במקום לטעון את כל הגדרות הtools מראש, Claude Code טוען רק את השמות, והagent מחפש את הtool הרלוונטי כשהוא צריך אותו. כך אפשר לחבר שרתים רבים בלי לשלם על כך בcontext. אם יש שרת שהtools שלו נחוצים בכל תור, אפשר לסמן אותו עם "alwaysLoad": true ב-.mcp.json כדי שייטען מראש.

קדימות בין טווחים - precedence

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

1. local     - highest
2. project
3. user
4. servers added by plugins
5. connectors from claude.ai

זה אומר שהגדרה מקומית שלכם גוברת על הגדרת פרויקט משותפת, שגוברת על הגדרת user. שימושי כשרוצים לעקוף זמנית הגדרת צוות בלי לשנות אותה בשביל כולם - פשוט מגדירים local עם אותו שם.

פתרון תקלות - troubleshooting

כמה בעיות נפוצות ואיך לזהות אותן:

  • שרת מופיע כ"ממתין לאישור": שרת project מ-.mcp.json דורש אישור שלכם. הריצו claude אינטראקטיבי ואשרו.
  • שגיאת "url but no type": שכחתם את השדה type בהגדרת JSON של שרת מרוחק. הוסיפו "type": "http".
  • שרת דורש אימות: אם tool מחזיר 401 או 403, השרת מסומן ב-/mcp כזקוק להתחברות. הריצו /mcp והתחברו.
  • פלט גדול מדי: Claude Code מזהיר כשפלט של tool MCP עובר סף מסוים. אפשר להעלות את המגבלה עם משתנה הסביבה MAX_MCP_OUTPUT_TOKENS.

כשמשהו לא עובד, claude mcp list ו-claude mcp get <name> הם הצעד הראשון: הם מראים את מצב החיבור וכמה tools כל שרת חושף.

סיכום

בהרצאה הזו למדנו:

  • מוסיפים שרת עם claude mcp add. עבור HTTP: --transport http <name> <url>. עבור stdio מקומי: --transport stdio <name> -- <command>, כשהתו -- מפריד בין הדגלים של Claude לבין הפקודה של השרת.
  • יש שלושה טווחים: local (ברירת מחדל, פרטי לפרויקט), project (משותף לצוות דרך .mcp.json ב-git), ו-user (זמין לכם בכל הפרויקטים).
  • קובץ .mcp.json מחזיק את ההגדרות בטווח project, עם השדה type חובה ותמיכה בהרחבת משתני סביבה ${VAR} כדי לא לחשוף מפתחות.
  • פקודות ניהול: claude mcp list, claude mcp get, claude mcp remove, והפאנל /mcp בתוך סשן. אימות OAuth נעשה דרך /mcp או claude mcp login.
  • שרתים שימושיים: מסד נתונים (עם משתמש קריאה בלבד), דפדפן (Playwright), תיעוד, GitHub ומערכות ניטור כמו Sentry.
  • הtools מופיעים בתבנית mcp__<server>__<tool>. משאבים מוזכרים עם @server:... ופרומפטים כ-/mcp__server__prompt.
  • חיפוש tools מופעל כברירת מחדל וטוען tools לפי דרישה, כדי לחסוך בcontext גם כשמחוברים הרבה שרתים.