תדריך סטנדאפ ליום שני
Every Monday at 8:30, search my Notion workspace for pages updated in the last seven days, group them by project, and write me a short standup brief with one line per project and anything that looks blocked.
שרת MCP מאומת: Notion
רשימת הכלים למטה היא לכידה חיה מהשרת הרץ; קריאת כלי מאומתת עדיין ממתינה להרשאות.
התשובה הקצרה
אומת לאחרונה 2026-08-03
שרת ה-MCP של Notion הוא הגשר הרשמי של Notion בין עוזר AI לבין סביבת העבודה שלכם: חיפוש, קריאת עמודים כ-Markdown, עריכה, שאילתות על מסדי נתונים והשארת תגובות, הכל דרך ה-API של Notion. הוא רץ על ה-Mac שלכם על גבי stdio ודורש אישור גישה אחד, סוד של אינטגרציה פנימית שאתם יוצרים בעצמכם. הרצנו אותו ושמרנו את הפלט הגולמי. החלק המעניין הוא מה שקרה בלי טוקן: השרת עלה, דיבר בפרוטוקול ומנה את כל 24 הכלים עוד לפני שביקש אישור גישה כלשהו. רק הקריאה האמיתית הראשונה חזרה עם שגיאת 401 של Notion, והתשובה הזו מודפסת בהמשך. ל-Notion יש גם גרסה מתארחת בכתובת mcp.notion.com שמשתמשת ב-OAuth במקום בטוקן מודבק, והיא זו שמומלצת כיום; שתי ההגדרות נמצאות בעמוד הזה. [1][3][5][6]
אימות
השיטה
הרצנו את השרת עם npx על גבי stdio בלי שום משתני סביבה: בלי NOTION_TOKEN ובלי OPENAPI_MCP_HEADERS. הוא עלה בכל זאת, השלים את לחיצת היד של MCP וענה ל-tools/list עם 24 כלים. טבלת הכלים למטה היא הלכידה הזו, מילה במילה. אחר כך הרצנו קריאה אחת שאינה משנה דבר, API-post-search, והשרת העביר אותה ל-Notion והחזיר את התשובה האמיתית: שגיאת 401 שאומרת שטוקן ה-API אינו תקף, והיא מודפסת למטה בדיוק כפי שחזרה. קריאת כלי שמגיעה בפועל לסביבת עבודה עדיין ממתינה לאישור גישה, ולכן העמוד הזה נושא את תג הספירה ולא את תג האימות המלא. השרת אינו מדפיס דבר ל-stderr בעליה, ולכן הבאנר למטה הוא תגובת ה-initialize הגולמית שהוא כתב על החיבור.
הודעת הפתיחה של השרת
{"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"Notion API","version":"1.0.0"}},"jsonrpc":"2.0","id":1}קריאת כלי אמיתית אחת
tools/call API-post-search {"query": "Getting started", "page_size": 1}{"status":401,"object":"error","code":"unauthorized","message":"API token is invalid.","request_id":"ede4937b-fa79-4222-8515-b404299d6f82"}שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.
כלים
השרת ענה ל-tools/list עם 24 כלים בתאריך 2026-08-03. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.
| כלי | מה הוא עושה |
|---|---|
| API-get-useruser_id* | Notion | Retrieve a user Error Responses: 400: 400 |
| API-get-usersstart_cursorpage_size | Notion | List all users Error Responses: 400: 400 |
| API-get-self | Notion | Retrieve your token's bot user Error Responses: 400: Bad request |
| API-post-searchquerysortfilterstart_cursorpage_size | Notion | Search by title Error Responses: 400: Bad request |
| API-get-block-childrenblock_id*start_cursorpage_size | Notion | Retrieve block children Error Responses: 400: Bad request |
| API-patch-block-childrenblock_id*children*after | Notion | Append block children Error Responses: 400: Bad request |
| API-retrieve-a-blockblock_id* | Notion | Retrieve a block Error Responses: 400: Bad request |
| API-update-a-blockblock_id*typearchived | Notion | Update a block Error Responses: 400: Bad request |
| API-delete-a-blockblock_id* | Notion | Delete a block Error Responses: 400: Bad request |
| API-retrieve-a-pagepage_id*filter_properties | Notion | Retrieve a page Error Responses: 400: Bad request |
| API-patch-pagepage_id*propertiesin_trasharchivediconcover | Notion | Update page properties Error Responses: 400: Bad request |
| API-post-pageparent*properties*childreniconcover | Notion | Create a page Error Responses: 400: Bad request |
| API-retrieve-a-page-propertypage_id*property_id*page_sizestart_cursor | Notion | Retrieve a page property item Error Responses: 400: Bad request |
| API-retrieve-a-commentblock_id*start_cursorpage_size | Notion | Retrieve comments Error Responses: 400: Bad request |
| API-create-a-commentparent*rich_text* | Notion | Create comment Error Responses: 400: Bad request |
| API-query-data-sourcedata_source_id*filter_propertiesfiltersortsstart_cursorpage_sizearchivedin_trash | Notion | Query a data source Error Responses: 400: Bad request |
| API-retrieve-a-data-sourcedata_source_id* | Notion | Retrieve a data source Error Responses: 400: Bad request |
| API-update-a-data-sourcedata_source_id*titledescriptionproperties | Notion | Update a data source Error Responses: 400: Bad request |
| API-create-a-data-sourceparent*properties*title | Notion | Create a data source Error Responses: 400: Bad request |
| API-list-data-source-templatesdata_source_id*start_cursorpage_size | Notion | List templates in a data source Error Responses: 400: Bad request |
| API-retrieve-a-databasedatabase_id* | Notion | Retrieve a database Error Responses: 400: Bad request |
| API-move-pagepage_id*parent* | Notion | Move a page Error Responses: 400: Bad request |
| API-retrieve-page-markdownpage_id*include_transcript | Notion | Retrieve a page as Markdown Error Responses: 400: Bad request 403: The integration lacks the read/update content capability required for this page. 404: Page not found or not shared with the integration. 429: Rate limited. |
| API-update-page-markdownpage_id*type*replace_contentupdate_contentinsert_contentreplace_content_range | Notion | Update a page's content as Markdown Error Responses: 400: Bad request 403: The integration lacks the read/update content capability required for this page. 404: Page not found or not shared with the integration. 409: Conflict (e.g. row limit exceeded). 429: Rate limited. |
פרמטרים המסומנים ב-* הם חובה.
התקנה
העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.
פתחו את הקובץ ~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_your_integration_secret"
}
}
}
}החליפו את מציין המקום בסוד של האינטגרציה שלכם, ואז סגרו ופתחו מחדש את Claude Desktop. אם אתם מעדיפים לא להדביק טוקן, את השרת המתארח של Notion מוסיפים תחת Settings, אחר כך Connectors, עם הכתובת https://mcp.notion.com/mcp והתחברות OAuth. [7][5][6]
פקודה אחת בטרמינל:
claude mcp add --env NOTION_TOKEN=ntn_your_integration_secret --transport stdio notion -- npx -y @notionhq/notion-mcp-server
כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ. עבור השרת המתארח, Notion מתעדת את הפקודה claude mcp add --transport http notion https://mcp.notion.com/mcp, ואחריה מריצים את /mcp כדי להשלים את התחברות ה-OAuth. [8][6]
הוסיפו ל-~/.cursor/mcp.json עבור כל הפרויקטים, או ל-.cursor/mcp.json בתוך פרויקט אחד:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_your_integration_secret"
}
}
}
}Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. השרת המתארח משתמש באותו קובץ עם שורת url אחת, {"url": "https://mcp.notion.com/mcp"}, ומחבר אתכם ב-OAuth בשימוש הראשון. [9][6]
בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:
Name Notion Command npx Arguments -y @notionhq/notion-mcp-server Environment Variables NOTION_TOKEN = ntn_your_integration_secret
הערך בשדה ה-Arguments מתפצל לפי רווחים, לכן השאירו אותו בדיוק כפי שמופיע. הכניסו את הסוד ל-Environment Variables, לא ל-Arguments. לחצו קודם על Test Connection: שרת תקין עונה עם מספר הכלים שלו, עשרים וארבעה עבור השרת הזה. [10]
בלי טרמינל
אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים ארבעה שדות פעם אחת, והכלים של השרת זמינים ל-AI שלכם בצ׳אט ובשגרות מתוזמנות. ההכנה היחידה מתבצעת בתוך Notion, והיא לוקחת בערך שתי דקות.
01
היכנסו ל-notion.so/profile/integrations וצרו אינטגרציה פנימית חדשה. העתיקו את הסוד שהיא מציגה: הוא מתחיל ב-ntn_. בלשונית Configuration אפשר לסמן רק Read content, וכך תקבלו טוקן שיכול להסתכל אך לעולם לא לכתוב.
02
אינטגרציה מתחילה בלי גישה לשום דבר. בהגדרות האינטגרציה פתחו את הלשונית Access ובחרו את העמודים ומסדי הנתונים שמותר לה להשתמש בהם. כל מה שלא תשתפו נשאר בלתי נראה לשרת.
03
הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו. לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.
04
הטופס נפתח במצב URL (SSE/HTTP). העבירו אותו ל-Command (stdio): השרת הזה הוא פקודה, לא כתובת אינטרנט. Name: Notion. Command: npx. Arguments: -y @notionhq/notion-mcp-server, בלי שום דבר אחריו.
05
בשדה Environment Variables הוסיפו רשומה אחת, NOTION_TOKEN, והערך שלה הוא הסוד שמתחיל ב-ntn_. אל תכניסו אותו ל-Arguments: השדה הזה מתפצל לפי רווחים ואינו המקום לאישור גישה.
06
לחצו Test Connection: Routines מפעילה את השרת ומדווחת כמה כלים היא מצאה, עשרים וארבעה עבור השרת הזה. אחר כך לחצו Add Server. הכלים עובדים בצ׳אט מיד. כדי לתת לשגרה מתוזמנת להשתמש בהם, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.
רעיונות לשגרות
אחרי שהשרת מחובר, שגרה מתוזמנת יכולה להשתמש בכלים שלו גם כשאתם לא מול המסך. העתיקו פרומפט, הדביקו אותו ב-Routines ובחרו שעה. הפרומפטים כתובים באנגלית בכוונה, מדביקים אותם בדיוק כפי שהם.
Every Monday at 8:30, search my Notion workspace for pages updated in the last seven days, group them by project, and write me a short standup brief with one line per project and anything that looks blocked.
Every first day of the month at 9:00, query my Notion project database for pages with a status of In progress that have not been edited in 30 days, and list them with their owner and last edited date so I can chase or close them.
Every weekday at 19:00, read today's meeting notes from my Notion Meetings database, pull out every decision and action item, and append them as a dated section to my Notion page called Running Log.
פתרון תקלות
שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.
מה רואים
{"status":401,"object":"error","code":"unauthorized","message":"API token is invalid.","request_id":"ede4937b-fa79-4222-8515-b404299d6f82"}הפתרון
זו התשובה המדויקת שלכדנו בלי טוקן מוגדר. השרת אינו בודק את אישור הגישה שלכם בעליה: הוא עולה, מונה את כל 24 הכלים, ונכשל רק כשקריאת כלי מגיעה ל-Notion. לכן בדיקת חיבור ירוקה אינה מוכיחה דבר לגבי הטוקן. הגדירו את NOTION_TOKEN לסוד אמיתי של אינטגרציה פנימית (הוא מתחיל ב-ntn_) והפעילו מחדש את הלקוח. אם הטוקן אמיתי והשגיאה נמשכת, הוא בוטל או שהעתקתם את מזהה האינטגרציה במקום את הסוד.
מה רואים
Failed to parse OPENAPI_MCP_HEADERS environment variable: SyntaxError: Expected property name or '}' in JSON at position 1 (line 1 column 2)
הפתרון
גרמנו לשגיאה הזו בכוונה עם מחרוזת כותרות שאינה JSON תקין. המשתנה חייב להכיל אובייקט JSON שלם שבו כל מפתח וכל ערך עטופים במרכאות כפולות, ובתוך קובץ הגדרות JSON כל אחת מהמרכאות האלה צריכה בריחה נוספת. השרת מדפיס את השורה הזו ל-stderr, וממשיך בלי שום אישור גישה, ולכן הדבר הבא שתראו הוא שגיאת ה-401 שלמעלה. השתמשו ב-NOTION_TOKEN אלא אם אתם צריכים במפורש לקבע כותרת Notion-Version. מה שמופיע למעלה הוא השורה הראשונה של אותו stderr; שורות מחסנית הקריאות שמודפסות מתחתיה אינן מוצגות כאן כי הן נושאות נתיבים מקומיים מה-Mac שלנו.
מה רואים
{"error":"invalid_token","error_description":"Missing or invalid access token"}הפתרון
זהו גוף התשובה שקיבלנו מ-https://mcp.notion.com/mcp כשפנינו אליו בלי להתחבר, לצד כותרת WWW-Authenticate שמכריזה על Bearer realm="OAuth". השרת המתארח אינו מקבל סוד ntn_ מודבק: הוא מצפה להתחברות OAuth שהלקוח שלכם משלים בדפדפן. ב-Claude Code זו הפקודה /mcp; ב-Cursor וב-Claude Desktop זה קורה בפעם הראשונה שמשתמשים בכלי של Notion. אם הלקוח שלכם אינו יודע OAuth, השתמשו בהתקנה המקומית עם npx שבעמוד הזה.
הפתרון
הפקודה npx שייכת ל-Node.js. אם Node לא מותקן על ה-Mac, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו Node מ-nodejs.org, הפעילו מחדש את לקוח ה-MCP ונסו שוב.
שאלות נפוצות
זהו שרת ה-Model Context Protocol הרשמי של Notion, שמתפרסם בשם @notionhq/notion-mcp-server. אחרי החיבור, עוזר AI כמו Claude יכול לחפש בסביבת העבודה שלכם, לקרוא ולערוך עמודים, להריץ שאילתות על מסדי נתונים, להזיז עמודים ולהשאיר תגובות, דרך אותו API ציבורי שאפליקציית Notion משתמשת בו. הוא רץ כתהליך מקומי על ה-Mac שלכם ומדבר עם אפליקציית ה-AI על גבי stdio. [1][5]
השרת הרץ ענה ל-tools/list עם 24 כלים: חיפוש (API-post-search), עמודים (API-retrieve-a-page, API-post-page, API-patch-page, API-move-page, API-retrieve-a-page-property), תוכן עמוד כ-Markdown (API-retrieve-page-markdown, API-update-page-markdown), בלוקים (API-get-block-children, API-patch-block-children, API-retrieve-a-block, API-update-a-block, API-delete-a-block), מקורות נתונים ומסדי נתונים (API-query-data-source, API-retrieve-a-data-source, API-update-a-data-source, API-create-a-data-source, API-list-data-source-templates, API-retrieve-a-database), תגובות (API-retrieve-a-comment, API-create-a-comment) ומשתמשים (API-get-user, API-get-users, API-get-self). הטבלה למעלה היא התשובה הזו, מילה במילה.
כי המספר ב-README ישן יותר מהחבילה. הנתון 22 שייך להערות של גרסה 2.0.0; הגרסה שהרצנו, 2.5.1, כוללת גם את API-retrieve-page-markdown ואת API-update-page-markdown, שני הכלים שקוראים וכותבים עמוד כ-Markdown במקום כ-JSON של בלוקים. README הוא הצהרה, תשובת tools/list היא עובדה, ו-24 זה מה שהשרת הרץ אמר. [5][1]
Notion ממליצה כיום על המתארח. התיעוד שלה מתאר את Notion MCP בכתובת https://mcp.notion.com/mcp כשרת שמתוחזק באופן פעיל, מאומת ב-OAuth ובלי טוקן להדביק, ומתאר את החבילה בקוד פתוח ככזו שאינה מתוחזקת עוד באופן פעיל. החבילה המקומית עדיין מתאימה יותר כשאתם רוצים אישור גישה בשליטתכם, אינטגרציה לקריאה בלבד, או שרת שרץ מהמחשב שלכם, ולכן שתי ההגדרות נמצאות בעמוד הזה. [6][5]
כן. אתם יוצרים אינטגרציה פנימית ב-notion.so/profile/integrations ומעתיקים את הסוד שלה, מחרוזת שמתחילה ב-ntn_, אל תוך NOTION_TOKEN. גם האינטגרציה עצמה מתחילה בלי גישה לשום דבר: אתם בוחרים אילו עמודים ומסדי נתונים מותר לה לגעת בהם בלשונית Access, כך שהטווח שלה הוא בדיוק מה שהענקתם ולא יותר. [5]
כן, וזו ההגדרה ששווה להכיר. בלשונית Configuration של האינטגרציה אפשר להעניק רק Read content, וכך נוצר טוקן שאינו יכול לכתוב. רשימת הכלים עדיין תציג את כלי הכתיבה, כי הרשימה קבועה בשרת, אבל Notion תסרב לכתיבה בצד שלה. שלבו את זה עם שיתוף של העמודים שהמשימה באמת צריכה. [5]
כל לקוח MCP שמסוגל להפעיל שרת stdio מקומי: Claude Desktop, Claude Code, Cursor ו-Routines כולם יכולים, וההגדרה המדויקת לכל אחד נמצאת למעלה. השרת עצמו זהה בכל לקוח; רק המקום שבו מדביקים את ההגדרה משתנה. לקוחות שיודעים להשלים התחברות OAuth יכולים להשתמש בשרת המתארח במקום. [7][8][9][10]
מקורות
כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.
[1]
Latest version 2.5.1, published 2026-07-25; described as the official MCP server for the Notion API; every publishing maintainer is a Notion address.
[2]
[3]
4,566 stars and a push dated 2026-07-25 at access time, per the GitHub API; owned by the makenotion organisation.
[4]
We read the file: it is the MIT License text, copyright 2025 Notion Labs, Inc.
[5]
The NOTION_TOKEN and OPENAPI_MCP_HEADERS contract, stdio as the default transport, the integration and Access tab steps, and the 22-tool figure from the 2.0.0 notes.
[6]
The hosted server at https://mcp.notion.com/mcp, its OAuth flow, per-client config, and the note that the open-source server is no longer actively maintained.
[7]
The claude_desktop_config.json location and shape for a local stdio server.
[8]
The claude mcp add syntax for stdio servers with --env, and for remote servers with --transport http.
[9]
[10]
How Routines runs one-click OAuth connectors and any MCP server.
העמוד הזה מתאר את Notion כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.
מאחורי המדריך הזה
Routines, האפליקציה שמאחורי המדריך הזה, מריצה שרתי MCP כמו זה בלי טרמינל: כך עובדים המחברים. כל מה שהיא כותבת עבורכם נשאר כקובצי markdown על ה-Mac שלכם, ואין חשבון ענן לשלם. להורדת Routines