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 שומר את הטוקן ומרענן אותו אוטומטית.
אפשר גם להתחבר ישירות מהמעטפת בלי לפתוח סשן, עם 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, למשל:
ופרומפט של שרת הופך ל-slash command בתבנית /mcp__servername__promptname:
מקומי מול מרוחק - 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 מצוטט נכון במעטפת.
חיסכון בcontext - tool search¶
שאלה מתבקשת: אם מחברים הרבה שרתים, האם כל הtools ממלאים את context window? התשובה: לא, בזכות מנגנון בשם חיפוש כלים - tool search, שמופעל כברירת מחדל. במקום לטעון את כל הגדרות הtools מראש, Claude Code טוען רק את השמות, והagent מחפש את הtool הרלוונטי כשהוא צריך אותו. כך אפשר לחבר שרתים רבים בלי לשלם על כך בcontext. אם יש שרת שהtools שלו נחוצים בכל תור, אפשר לסמן אותו עם "alwaysLoad": true ב-.mcp.json כדי שייטען מראש.
קדימות בין טווחים - precedence¶
מה קורה אם אותו שרת מוגדר בכמה מקומות? Claude Code מתחבר אליו פעם אחת, לפי המקור בעל הקדימות הגבוהה. הסדר, מהגבוה לנמוך:
זה אומר שהגדרה מקומית שלכם גוברת על הגדרת פרויקט משותפת, שגוברת על הגדרת 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 גם כשמחוברים הרבה שרתים.