# לקוח משלכם

> חברו כל לקוח MCP ל-Nodaro על גבי Streamable HTTP: גילוי שרת ה-OAuth, רישום הלקוח או יישום מפתחים, והתחברות עם PKCE.

Source: https://nodaro.ai/he/docs/mcp/connect/custom-client

אפשר לחבר ל-Nodaro **לקוח משלכם**, אם הוא מדבר MCP סטנדרטי על גבי Streamable HTTP ומזדהה עם OAuth. כוונו אותו ל-`https://mcp.nodaro.ai/mcp`, תנו לו לגלות את שרת ה-OAuth, רשמו אותו והעבירו את המשתמש דרך מסך ההסכמה. הדף הזה מפרט את נקודות הקצה, את כללי הרישום ואת תוקף האסימונים.

## מה הלקוח שלכם צריך
- **MCP על גבי Streamable HTTP** בכתובת `https://mcp.nodaro.ai/mcp`.
- **זרימת authorization code של OAuth 2.0 עם PKCE.** השרת מקבל רק את `S256` כשיטת ה-code challenge.
- **גילוי OAuth** דרך המטא־דאטה של המשאב המוגן (RFC 9728) והמטא־דאטה של שרת ההרשאות (RFC 8414).
- **רישום לקוח**, דרך Dynamic Client Registration (RFC 7591) או כיישום מפתחים שרושמים פעם אחת.

## נקודות קצה
| מה | איפה |
| --- | --- |
| נקודת הקצה של MCP | `https://mcp.nodaro.ai/mcp` |
| המטא־דאטה של המשאב המוגן | `https://mcp.nodaro.ai/.well-known/oauth-protected-resource` |
| המטא־דאטה של שרת ההרשאות | `https://app.nodaro.ai/.well-known/oauth-authorization-server` |
| Dynamic Client Registration | `POST https://app.nodaro.ai/v1/oauth/register` |
| החלפת קוד באסימון | `POST https://app.nodaro.ai/v1/oauth/token` |
| ביטול אסימונים | `POST https://app.nodaro.ai/v1/oauth/revoke` |

שני מסמכי המטא־דאטה זמינים בשני המארחים, `app.nodaro.ai` ו-`mcp.nodaro.ai`. כל אחד מהם זמין גם עם הסיומת `/mcp`, למשל `/.well-known/oauth-protected-resource/mcp`, כי חלק מהלקוחות בודקים קודם את הצורה הזאת. מסמך המטא־דאטה של שרת ההרשאות מפרסם את נקודות הקצה של ההרשאה, של האסימונים, של הרישום ושל הביטול, את סוג התגובה `code`, את ה-grant `authorization_code`, את PKCE עם `S256`, את שיטת האימות `client_secret_post` ואת ההרשאות הנתמכות.

## זרימת החיבור
### גילוי שרת ההרשאות
קבלו את המטא־דאטה של המשאב המוגן ממארח ה-MCP. המסמך משייך את המשאב `https://mcp.nodaro.ai/mcp` לשרת ההרשאות שלו, `https://app.nodaro.ai`. אחר כך קבלו את המטא־דאטה של שרת ההרשאות כדי לקבל את נקודות הקצה.

### רישום הלקוח
שלחו את ה-`client_name` ואת כתובות ההפניה שלכם לנקודת הקצה של הרישום. Nodaro מחזיר `client_id` שמתחיל ב-`ndr_dcr_` ו-`client_secret`. נקודת הקצה מקבלת עד 10 בקשות לדקה מכתובת IP אחת.

### הפניית המשתמש למסך ההסכמה
פתחו בדפדפן את נקודת הקצה של ההרשאה עם ה-`client_id` שלכם, `redirect_uri`, `response_type=code`, רשימת ה-`scope`, ערך `state` אקראי ו-`code_challenge` של PKCE עם `code_challenge_method=S256`. המשתמש מתחבר, עובר על ההרשאות ולוחץ על **אישור**.

### החלפת הקוד
Nodaro מפנה ל-`redirect_uri` שלכם עם `code` ועם ה-`state` שלכם. בדקו את ה-`state`, ואז החליפו את הקוד באסימון בנקודת הקצה של האסימונים, עם ה-`code_verifier` שלכם. קוד עובד פעם אחת בלבד, ותוקפו פג 10 דקות אחרי שהונפק.

### קריאה לנקודת הקצה של MCP
שלחו את אסימון הגישה, שמתחיל ב-`ndr_app_`, בכותרת `Authorization: Bearer <token>` בכל בקשה ל-`https://mcp.nodaro.ai/mcp`. קבלו את רשימת הכלים עם `tools/list`.

## אילו שמות לקוח יכולים להירשם
כברירת מחדל, Dynamic Client Registration מקבל רק שמות לקוח מוכרים: Claude, Claude Code, Cursor, Cline, Continue, Goose, ChatGPT, OpenAI, Lovable, Gemini, Gemini CLI, Codex, MCP Inspector ו-mcp-inspector. לקוח עם שם אחר מקבל `403 client_not_allowed`.

אם ללקוח שלכם יש שם אחר, רשמו אותו במקום זאת פעם אחת כיישום מפתחים:

1. פתחו את [app.nodaro.ai/settings/developer-apps](https://app.nodaro.ai/settings/developer-apps) ולחצו על **יצירת יישום**.
2. הזינו את השם, את כתובות ההפניה ואת ההרשאות שהלקוח רשאי לבקש.
3. העתיקו את ה-`client_id` ואת ה-`client_secret`. הסוד מוצג פעם אחת בלבד. התוקף שלו לא פג, ואפשר להחליף אותו בסוד חדש בדף של היישום.

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

במופע Nodaro משלכם, מנהל השרת שולט ברישום בעזרת `MCP_DYNAMIC_REGISTRATION` (`allowlist`, ברירת המחדל, `open` או `off`) ו-`MCP_DCR_ALLOWLIST`. במצב `open`, לכל צמד של שם לקוח וכתובת הפניה יכולים להיות לכל היותר 5 רישומים שלא נעשה בהם שימוש בתוך 24 שעות; בקשות רישום נוספות נדחות עם `429 too_many_open_registrations`. במצב `off`, הרישום נדחה עם `403 dcr_disabled`. ראו את הדף [MCP בהתקנה באירוח עצמי](https://nodaro.ai/docs/self-hosting/mcp).

## אסימונים
- **תוקף.** אסימון גישה תקף ל-90 ימים. אין אסימוני רענון: כשקריאה מחזירה `401`, העבירו את המשתמש שוב דרך מסך ההסכמה.
- **ביטול.** הלקוח שלכם יכול לבטל אסימון בנקודת הקצה של הביטול, שתמיד מחזירה `200`. גם המשתמש יכול לבטל את הגישה של הלקוח שלכם תחת **הגדרות › אפליקציות מחוברות**, בכתובת [app.nodaro.ai/settings/connected-apps](https://app.nodaro.ai/settings/connected-apps). הביטול פוסל מיד את כל האסימונים שהונפקו ללקוח עבור אותו משתמש, והקריאה הבאה שלכם מחזירה `401`.
- **מסך ההסכמה.** לקוח שנרשם באופן דינמי בחר את השם שלו בעצמו, ולכן מסך ההסכמה מזהיר את המשתמש ש-Nodaro לא אימת את השם.

אותו שרת OAuth משרת גם את ה-REST API. הדף [OAuth למפתחים](https://nodaro.ai/docs/developers/oauth) מתאר אותו במלואו.

## טיפול בתוצאות של כלים
- **משימות.** כלי יצירה מתחילים משימה ומחזירים מיד את המזהה שלה. בדקו את הסטטוס עם `get_job` כל 5–10 שניות, או קראו ל-`wait_for_job`, עד שהמשימה במצב `completed` או `failed`. ראו את הדף [כלי משימות](https://nodaro.ai/docs/mcp/tools/jobs).
- **תוכן מובנה.** כלים רבים מחזירים את הנתונים שלהם ב-`structuredContent` לצד תשובת הטקסט, למשל את מעטפת המשימה של `get_job`. בקוד, השתמשו בנתונים המובנים.
- **הכרטיסים אופציונליים.** מארחים שמציגים MCP Apps מקבלים כרטיסים אינטראקטיביים, כמו התקדמות משימה וחלונות העלאה. לקוח בלי MCP Apps מקבל את אותן תוצאות כטקסט וכנתונים מובנים.
- **ה-API `tasks`.** לקוח שתומך ב-API `tasks` של MCP מקבל דרכו את התקדמות המשימה.
- **כלים חסרים.** כלי שהמשתמש לא אישר את ההרשאה שלו לא נכלל ב-`tools/list`. לפני שמחפשים כלי חסר, בדקו אילו הרשאות אושרו.

## טעויות נפוצות
- **שימוש ב-`https://app.nodaro.ai/mcp`.** הכתובת הזאת היא דף אינטרנט. בקשת `POST` אליה מחזירה `405` עם קוד השגיאה `wrong_mcp_host`, שמציין את הכתובת הנכונה.
- **שימוש ב-`https://api.nodaro.ai/mcp`.** הדומיין הזה לא קיים.
- **הוספת לוכסן בסוף.** השתמשו בדיוק ב-`https://mcp.nodaro.ai/mcp`.

## מקורות
- [המפרט של Model Context Protocol](https://modelcontextprotocol.io/specification)
- [ה-SDK של MCP ל-TypeScript](https://github.com/modelcontextprotocol/typescript-sdk)

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

### באיזו תעבורה משתמש שרת ה-MCP של Nodaro?

שרת ה-MCP של Nodaro משתמש ב-Streamable HTTP, בכתובת https://mcp.nodaro.ai/mcp. ההתחברות נעשית עם OAuth 2.0 ו-PKCE, ולקוח יכול לרשום את עצמו בעזרת Dynamic Client Registration.

### למה הרישום נכשל עם client_not_allowed?

רישום דינמי מקבל רק שמות לקוח מוכרים, והשם של הלקוח שלכם לא ברשימה. במקום זאת, רשמו יישום מפתחים בהגדרות ה-Nodaro שלכם, והשתמשו במזהה הלקוח ובסוד שלו.

### כמה זמן תקף אסימון גישה משרת ה-MCP של Nodaro?

אסימון גישה משרת ה-MCP של Nodaro תקף ל-90 ימים. אין אסימוני רענון, ולכן אחרי 90 ימים המשתמש מתחבר שוב. הלקוח שלכם יכול לבטל אסימון לפני כן, והמשתמש יכול לבטל את הגישה של הלקוח בדף הגדרות › אפליקציות מחוברות.

### האם אפשר לבדוק את שרת ה-MCP של Nodaro עם MCP Inspector?

כן. MCP Inspector הוא אחד משמות הלקוח שיכולים להירשם באופן דינמי, ולכן אפשר לחבר אותו, והוא יכול להזדהות ולהציג את רשימת הכלים.
