# MCP בהתקנה באירוח עצמי

> הפעילו את שרת ה-MCP של Nodaro באירוח עצמי, כדי ש-Claude, Cursor, ChatGPT ולקוחות MCP אחרים ישתמשו בהתקנה שלכם עם OAuth, דרך שם מארח ייעודי.

Source: https://nodaro.ai/he/docs/self-hosting/mcp

**שרת ה-MCP** של Nodaro מאפשר ללקוחות AI כמו Claude, Cursor, Cline, Continue, Goose ו-ChatGPT להשתמש בכלים של ההתקנה שלכם באירוח עצמי בשמו של משתמש. השרת כבוי כברירת מחדל. כדי להפעיל אותו, נותנים ל-MCP שם מארח משלו, מנתבים את שם המארח הזה אל ה-API ומגדירים שני משתנים. אחר כך המשתמשים מחברים את הלקוח שלהם להתקנה שלכם עם OAuth.

## איך MCP מוגש
- **ה-API מגיש את MCP** בנתיב `/mcp`, בפורט `9000` בתוך הקונטיינר `nodaro`.
- **שרת הווב בפורט `3000` דוחה בקשות MCP.** בקשה ל-`/mcp` בכתובת הראשית של האפליקציה נדחית עם `405` ועם קוד השגיאה `wrong_mcp_host`, והתגובה כוללת את הכתובת של נקודת הקצה הנכונה.
- **לכן MCP צריך שם מארח משלו**, כמו `mcp.nodaro.example.com`, שהתעבורה שלו מגיעה ישירות ל-API.
- **ההתחברות נשארת בדומיין הראשי שלכם.** מסמך הגילוי של OAuth, `/.well-known/oauth-authorization-server`, ומסך ההסכמה מוגשים בכתובת `PUBLIC_URL`.

## הפעלת MCP
### ניתוב שם מארח של MCP אל ה-API
צרו רשומת DNS ל-`mcp.<your-domain>` שמפנה לשרת שלכם. אל תעבירו אותה דרך CDN שמשמש כפרוקסי: פרוקסי שובר את חיבורי אירועי השרת (SSE) הממושכים ש-MCP משתמש בהם.

**Docker Compose**

קובץ ה-Compose לא חושף את הפורט של ה-API. חשפו אותו בממשק ה-loopback, תחת השירות `nodaro`:

```yaml
nodaro:
ports:
      - "3000:3000"
      - "127.0.0.1:9000:9000"
```

אחר כך הוסיפו לפרוקסי ההפוך שלכם אתר שני, לשם המארח של MCP, שמעביר את הבקשות ל-`127.0.0.1:9000` במקום ל-`127.0.0.1:3000`. השאירו את אגירת התגובות כבויה, כמו ב[דוגמה ל-nginx](https://nodaro.ai/docs/self-hosting/reverse-proxy#option-a-nginx) בדף פרוקסי הפוך ו-HTTPS.

**Railway**

הוסיפו את שם המארח של MCP כדומיין מותאם אישית של השירות backend:

```bash
railway domain add mcp.your-domain.com --service backend
```

או, בלוח הבקרה של Railway: **Project › backend service › Settings › Domains › Add custom domain** (פרויקט › השירות backend › הגדרות › דומיינים › הוספת דומיין מותאם אישית). אחר כך הוסיפו את רשומת ה-CNAME אצל ספק ה-DNS שלכם.

### הגדרת המשתנים
```bash
MCP_ENABLED=true                              # required; the default is off
MCP_PUBLIC_URL=https://mcp.your-domain.com    # the hostname from step 1
```

במערך השירותים של Compose, הוסיפו את שניהם תחת `environment:` של השירות `nodaro`: קובץ ה-Compose לא מעביר אותם מהקובץ `.env`. אחר כך הריצו `docker compose -f docker-compose.community.yml up -d`.

המשתנה `MCP_PUBLIC_URL` הוא הזהות שנקודות הקצה של הגילוי מפרסמות עבור המשאב המוגן (RFC 9728), והוא גם הבסיס של קישורי ההעלאה שהכלים מחזירים. בלעדיו, ההתקנה שלכם מפרסמת את שם המארח של MCP ב-Nodaro Cloud. אם אתם מגישים את MCP בדומיין הראשי שלכם ולא בתת־דומיין, הגדירו אותו לאותו ערך כמו `PUBLIC_URL`. גם אז, בקשות ל-`/mcp` חייבות להגיע ישירות לפורט של ה-API.

### בדיקת נקודות הקצה של הגילוי
```bash
curl https://mcp.your-domain.com/.well-known/oauth-protected-resource
curl https://your-domain.com/.well-known/oauth-authorization-server
```

שני הנתיבים חייבים להחזיר JSON עם סטטוס `200`.

### הוספת המחבר בלקוח שלכם
נקודת הקצה של MCP היא `https://mcp.your-domain.com/mcp`. ב-Claude, פתחו את **Settings › Connectors › Add custom connector** (הגדרות › מחברים › הוספת מחבר מותאם אישית) והזינו את הכתובת הזאת. בלקוחות אחרים, ראו את הדף [חיבור לקוח](https://nodaro.ai/docs/mcp/connect) והשתמשו בכתובת ה-MCP שלכם במקום בכתובת של Nodaro Cloud.

## אילו לקוחות יכולים להירשם
החיבור של לקוחות MCP עובר דרך OAuth. לקוחות נתמכים נרשמים בעצמם בהתקנה שלכם דרך רישום לקוחות דינמי (RFC 7591). שני משתנים שולטים ברישום, וערכי ברירת המחדל שלהם מתאימים לרוב ההתקנות:

| משתנה | ברירת מחדל | מה הוא עושה |
| --- | --- | --- |
| `MCP_DYNAMIC_REGISTRATION` | `allowlist` | המצב `allowlist` מקבל רק את שמות הלקוחות שב-`MCP_DCR_ALLOWLIST`. המצב `open` מקבל כל לקוח. המצב `off` מכבה את הרישום הדינמי. |
| `MCP_DCR_ALLOWLIST` | 14 לקוחות מוכרים | שמות הלקוחות שמתקבלים במצב `allowlist`, מופרדים בפסיקים. |

רשימת ההיתרים שמוגדרת כברירת מחדל היא: Claude, Claude Code, Cursor, Cline, Continue, Goose, ChatGPT, OpenAI, Lovable, Gemini, Gemini CLI, Codex, MCP Inspector ו-mcp-inspector. כדי להוסיף לקוח משלכם, הגדירו את הרשימה המלאה:

```bash
MCP_DCR_ALLOWLIST=Claude,Cursor,Cline,Continue,Goose,YourCustomClient
```

המצב המומלץ הוא `allowlist`.

## מה הלקוחות יכולים לעשות
שרת ה-MCP כולל את כלי היצירה לתמונות, לווידאו, לאודיו, לדמויות, למיקומים ולאובייקטים, וכלים לגלריה, לתהליכים, לאפליקציות, לרכיבים שמורים ולמודלים. כל משתמש פועל בהתקנה שלכם בשם החשבון שלו. ראו את [מדריך כלי ה-MCP](https://nodaro.ai/docs/mcp/tools) ואת הדף [פתרון בעיות ב-MCP](https://nodaro.ai/docs/mcp/troubleshooting).

## שאלות נפוצות

### האם MCP מופעל כברירת מחדל ב-Nodaro באירוח עצמי?

לא. הגדירו MCP_ENABLED=true ואת MCP_PUBLIC_URL, נתבו שם מארח של MCP אל ה-API והפעילו מחדש את ההתקנה. במערך השירותים של Compose, הוסיפו את שני המשתנים תחת environment של השירות nodaro, כי קובץ ה-Compose לא מעביר אותם מהקובץ ‎.env.

### למה הבקשות של לקוח ה-MCP שלי נדחות עם 405 wrong_mcp_host?

לקוח ה-MCP פונה לכתובת הראשית של האפליקציה, ושם שרת הווב דוחה בקשות MCP. כוונו את הלקוח לשם המארח של MCP, https://your-mcp-host/mcp, שחייב להגיע ישירות ל-API בפורט 9000.

### אילו לקוחות MCP יכולים להירשם בהתקנה שלי?

כברירת מחדל, ההתקנה מקבלת 14 לקוחות מוכרים, ביניהם Claude, Claude Code, Cursor, Cline, Continue, Goose, ChatGPT ו-Codex. הוסיפו שמות ל-MCP_DCR_ALLOWLIST, או הגדירו MCP_DYNAMIC_REGISTRATION=open כדי לקבל כל לקוח.

### האם אפשר לשים CDN לפני שם המארח של MCP?

לא אם ה-CDN משמש כפרוקסי לתעבורה. MCP שומר חיבורי אירועי שרת (SSE) פתוחים לאורך זמן, ו-CDN כזה שובר אותם. כוונו את ה-DNS ישירות לשרת שלכם.
