Notion MCP
आधिकारिकAI एजेंटों से Notion पेज, डेटाबेस और वर्कस्पेस सामग्री को खोजने, पढ़ने, बनाने और अपडेट करने के लिए आधिकारिक Notion MCP सर्वर।
Notion MCP के साथ आप क्या कर सकते हैं?
- शीर्षक द्वारा पृष्ठ या डेटा स्रोत खोजें — अपने कार्यक्षेत्र में नाम से पृष्ठ और डेटा स्रोत खोजने के लिए
post-searchका उपयोग करें। - पृष्ठ की सामग्री को Markdown के रूप में पढ़ें —
retrieve-page-markdownके साथ किसी पृष्ठ की पूरी सामग्री प्राप्त करें, वैकल्पिक रूप से मीटिंग प्रतिलेख शामिल करें। - Markdown के साथ पृष्ठ की सामग्री संपादित करें —
update-page-markdownका उपयोग करके पृष्ठ सामग्री को ओवरराइट या खोजें और बदलें। - फ़िल्टर और सॉर्ट के साथ डेटा स्रोत क्वेरी करें —
query-data-sourceके माध्यम से डेटा स्रोत पर संरचित क्वेरी चलाएँ। - किसी मूल पृष्ठ या डेटा स्रोत के अंदर एक नया पृष्ठ बनाएँ —
post-pageके साथ एक पृष्ठ जोड़ें, जिसमेंpage_idयाdatabase_idमूल निर्दिष्ट करें। - पृष्ठ को किसी भिन्न मूल स्थान पर ले जाएँ —
move-pageके साथ पृष्ठ को स्थानांतरित करके अपने कार्यक्षेत्र को पुनर्व्यवस्थित करें।
दस्तावेज़
Notion MCP सर्वर
[!NOTE]
हमने Notion MCP पेश किया है, एक रिमोट MCP सर्वर जिसमें निम्नलिखित सुधार हैं:
- मानक OAuth के माध्यम से आसान इंस्टॉलेशन। अब JSON या API टोकन के साथ छेड़छाड़ करने की आवश्यकता नहीं है।
- AI एजेंटों के लिए अनुकूलित शक्तिशाली उपकरण, जिसमें Markdown में पृष्ठों का संपादन शामिल है। ये उपकरण अनुकूलित टोकन खपत को ध्यान में रखकर डिज़ाइन किए गए हैं।
अधिक जानें और Notion MCP दस्तावेज़ीकरण पर आरंभ करें।
हम Notion MCP (रिमोट) को प्राथमिकता दे रहे हैं और केवल इसके लिए सक्रिय समर्थन प्रदान कर रहे हैं। परिणामस्वरूप:
- हम भविष्य में इस स्थानीय MCP सर्वर रिपॉजिटरी को बंद कर सकते हैं।
- यहाँ मुद्दों और पुल अनुरोधों की सक्रिय रूप से निगरानी नहीं की जाती है।
- कृपया रिमोट MCP से संबंधित मुद्दे यहाँ दर्ज न करें; इसके बजाय, Notion समर्थन से संपर्क करें।
यह परियोजना Notion API के लिए एक MCP सर्वर लागू करती है।
⚠️ संस्करण 2.0.0 ब्रेकिंग परिवर्तन
संस्करण 2.0.0 Notion API 2025-09-03 में माइग्रेट होता है जो डेटाबेस के लिए प्राथमिक अमूर्तन के रूप में डेटा स्रोतों का परिचय देता है।
क्या बदला
हटाए गए उपकरण (3):
post-database-query-query-data-sourceद्वारा प्रतिस्थापितupdate-a-database-update-a-data-sourceद्वारा प्रतिस्थापितcreate-a-database-create-a-data-sourceद्वारा प्रतिस्थापित
नए उपकरण (7):
query-data-source- फ़िल्टर और सॉर्ट के साथ डेटा स्रोत (डेटाबेस) क्वेरी करेंretrieve-a-data-source- डेटा स्रोत के लिए मेटाडेटा और स्कीमा प्राप्त करेंupdate-a-data-source- डेटा स्रोत गुण अपडेट करेंcreate-a-data-source- एक नया डेटा स्रोत बनाएँlist-data-source-templates- डेटा स्रोत में उपलब्ध टेम्पलेट सूचीबद्ध करेंmove-page- किसी पृष्ठ को भिन्न मूल स्थान पर ले जाएँretrieve-a-database- डेटाबेस मेटाडेटा प्राप्त करें जिसमें उसके डेटा स्रोत IDs शामिल हों
पैरामीटर परिवर्तन:
- सभी डेटाबेस संचालन अब
database_idके बजायdata_source_idका उपयोग करते हैं - खोज फ़िल्टर मान
["page", "database"]से बदलकर["page", "data_source"]हो गए - पृष्ठ निर्माण अब
page_idऔरdatabase_idदोनों मूल (डेटा स्रोतों के लिए) का समर्थन करता है
क्या मुझे माइग्रेट करने की आवश्यकता है?
कोई कोड परिवर्तन आवश्यक नहीं है। सर्वर प्रारंभ होने पर MCP उपकरण स्वचालित रूप से खोजे जाते हैं। जब आप v2.0.0 में अपग्रेड करते हैं, तो AI क्लाइंट स्वचालित रूप से नए उपकरण नाम और पैरामीटर देखेंगे। पुराने डेटाबेस उपकरण अब उपलब्ध नहीं हैं।
यदि आपके पास हार्डकोडेड उपकरण नाम या संकेत हैं जो पुराने डेटाबेस उपकरणों का संदर्भ देते हैं, तो उन्हें नए डेटा स्रोत उपकरणों का उपयोग करने के लिए अपडेट करें:
| पुराना उपकरण (v1.x) | नया उपकरण (v2.0) | पैरामीटर परिवर्तन |
|---|---|---|
post-database-query | query-data-source | database_id → data_source_id |
update-a-database | update-a-data-source | database_id → data_source_id |
create-a-database | create-a-data-source | कोई परिवर्तन नहीं (parent.page_id का उपयोग करता है) |
नोट:
retrieve-a-databaseअभी भी उपलब्ध है और डेटाबेस मेटाडेटा लौटाता है जिसमें डेटा स्रोत IDs की सूची शामिल है। किसी विशिष्ट डेटा स्रोत की स्कीमा और गुण प्राप्त करने के लिएretrieve-a-data-sourceका उपयोग करें।
अब कुल उपकरण: 22 (v1.x में 19 थे)
Markdown के रूप में पृष्ठ सामग्री
सर्वर ब्लॉक JSON के बजाय उन्नत Markdown के रूप में पृष्ठ सामग्री के साथ काम करने के लिए दो उपकरणों को उजागर करता है, जो AI एजेंटों के लिए टोकन-कुशलता की दृष्टि से काफी बेहतर है:
retrieve-page-markdown— किसी पृष्ठ की पूर्ण सामग्री को Markdown के रूप में पढ़ें (GET /v1/pages/{page_id}/markdown)। मीटिंग-नोट ट्रांसक्रिप्ट को इनलाइन करने के लिएinclude_transcript: trueपास करें।update-page-markdown— Markdown के साथ किसी पृष्ठ की सामग्री संपादित करें (PATCH /v1/pages/{page_id}/markdown)। पूरे पृष्ठ को अधिलेखित करने के लिएreplace_contentको प्राथमिकता दें, या लक्षित खोज-और-बदलें संपादनों के लिएupdate_contentका उपयोग करें।
इन एंडपॉइंट्स के लिए Notion API संस्करण 2026-03-11 की आवश्यकता होती है। सर्वर अब OpenAPI स्पेक से प्रति संचालन Notion-Version हेडर प्राप्त करता है, इसलिए ये उपकरण 2026-03-11 का उपयोग करते हैं जबकि शेष API 2025-09-03 का उपयोग जारी रखता है — किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है। यदि आप OPENAPI_MCP_HEADERS के माध्यम से स्वयं Notion-Version सेट करते हैं, तो आपका मान प्रत्येक उपकरण के लिए प्राथमिकता लेता है।
इंस्टॉलेशन
1. Notion में एकीकरण सेट करना
https://www.notion.so/profile/integrations पर जाएं और एक नया आंतरिक एकीकरण बनाएं या किसी मौजूदा का चयन करें।

जबकि हम Notion API के उजागर दायरे को सीमित करते हैं (उदाहरण के लिए, आप MCP के माध्यम से डेटाबेस हटाने में सक्षम नहीं होंगे), LLMs को उजागर करने से कार्यक्षेत्र डेटा के लिए गैर-शून्य जोखिम है। सुरक्षा-सचेत उपयोगकर्ता एकीकरण की क्षमताओं को और अधिक कॉन्फ़िगर करना चाह सकते हैं।
उदाहरण के लिए, आप "कॉन्फ़िगरेशन" टैब से केवल "सामग्री पढ़ें" पहुँच देकर एक रीड-ओनली एकीकरण टोकन बना सकते हैं:

2. सामग्री को एकीकरण से जोड़ना
सुनिश्चित करें कि प्रासंगिक पृष्ठ और डेटाबेस आपके एकीकरण से जुड़े हुए हैं।
ऐसा करने के लिए, अपनी आंतरिक एकीकरण सेटिंग्स में पहुँच टैब पर जाएं। पहुँच संपादित करें और उन पृष्ठों का चयन करें जिनका आप उपयोग करना चाहते हैं।


वैकल्पिक रूप से, आप व्यक्तिगत रूप से पृष्ठ पहुँच प्रदान कर सकते हैं। आपको लक्ष्य पृष्ठ पर जाना होगा, और 3 बिंदुओं पर क्लिक करना होगा, और "एकीकरण से कनेक्ट करें" का चयन करना होगा।

3. अपने क्लाइंट में MCP कॉन्फ़िग जोड़ना
npm का उपयोग करना
Cursor और Claude
अपने .cursor/mcp.json या claude_desktop_config.json (MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json) में निम्नलिखित जोड़ें
विकल्प 1: NOTION_TOKEN का उपयोग करना (अनुशंसित)
{
"mcpServers": {
"notionApi": {
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}
विकल्प 2: OPENAPI_MCP_HEADERS का उपयोग करना (उन्नत उपयोग मामलों के लिए)
{
"mcpServers": {
"notionApi": {
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2025-09-03\" }"
}
}
}
}
Zed
अपने settings.json में निम्नलिखित जोड़ें
{
"context_servers": {
"some-context-server": {
"command": {
"path": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2025-09-03\" }"
}
},
"settings": {}
}
}
}
GitHub Copilot CLI
MCP सर्वर को सहभागी रूप से जोड़ने के लिए Copilot CLI का उपयोग करें:
/mcp add
वैकल्पिक रूप से, कॉन्फ़िगरेशन फ़ाइल ~/.copilot/mcp-config.json बनाएं या संपादित करें और जोड़ें:
{
"mcpServers": {
"notionApi": {
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}
अधिक जानकारी के लिए, Copilot CLI दस्तावेज़ीकरण देखें।
Docker का उपयोग करना
Docker के साथ MCP सर्वर चलाने के लिए दो विकल्प हैं:
विकल्प 1: आधिकारिक Docker Hub छवि का उपयोग करना
अपने .cursor/mcp.json या claude_desktop_config.json में निम्नलिखित जोड़ें
NOTION_TOKEN का उपयोग करना (अनुशंसित):
{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "NOTION_TOKEN",
"mcp/notion"
],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}
OPENAPI_MCP_HEADERS का उपयोग करना (उन्नत उपयोग मामलों के लिए):
{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "OPENAPI_MCP_HEADERS",
"mcp/notion"
],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_****\",\"Notion-Version\":\"2025-09-03\"}"
}
}
}
}
यह दृष्टिकोण:
- आधिकारिक Docker Hub छवि का उपयोग करता है
- पर्यावरण चर के माध्यम से JSON एस्केपिंग को ठीक से संभालता है
- अधिक विश्वसनीय कॉन्फ़िगरेशन विधि प्रदान करता है
विकल्प 2: स्थानीय रूप से Docker छवि बनाना
आप स्थानीय रूप से Docker छवि भी बना और चला सकते हैं। सबसे पहले, Docker छवि बनाएं:
docker compose build
फिर, अपने .cursor/mcp.json या claude_desktop_config.json में निम्नलिखित जोड़ें
NOTION_TOKEN का उपयोग करना (अनुशंसित):
{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"NOTION_TOKEN=ntn_****",
"notion-mcp-server"
]
}
}
}
OPENAPI_MCP_HEADERS का उपयोग करना (उन्नत उपयोग मामलों के लिए):
{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"OPENAPI_MCP_HEADERS={\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2025-09-03\"}",
"notion-mcp-server"
]
}
}
}
ntn_**** को अपने एकीकरण रहस्य से बदलना न भूलें। इसे अपने एकीकरण कॉन्फ़िगरेशन टैब से खोजें:
परिवहन विकल्प
Notion MCP सर्वर दो परिवहन मोड का समर्थन करता है:
STDIO परिवहन (डिफ़ॉल्ट)
डिफ़ॉल्ट परिवहन मोड संचार के लिए मानक इनपुट/आउटपुट का उपयोग करता है। यह Claude Desktop जैसे अधिकांश क्लाइंट द्वारा उपयोग किया जाने वाला मानक MCP परिवहन है।
# Run with default stdio transport
npx @notionhq/notion-mcp-server
# Or explicitly specify stdio
npx @notionhq/notion-mcp-server --transport stdio
स्ट्रीमेबल HTTP परिवहन
वेब-आधारित अनुप्रयोगों या क्लाइंट के लिए जो HTTP संचार पसंद करते हैं, आप स्ट्रीमेबल HTTP परिवहन का उपयोग कर सकते हैं:
# Run with Streamable HTTP transport on port 3000 (default)
npx @notionhq/notion-mcp-server --transport http
# Run on a custom port
npx @notionhq/notion-mcp-server --transport http --port 8080
# Bind to a different host. The default is 127.0.0.1.
npx @notionhq/notion-mcp-server --transport http --host 0.0.0.0
# Run with a custom authentication token
npx @notionhq/notion-mcp-server --transport http --auth-token "your-secret-token"
स्ट्रीमेबल HTTP परिवहन का उपयोग करते समय, सर्वर डिफ़ॉल्ट रूप से http://127.0.0.1:<port>/mcp पर उपलब्ध होगा।
प्रमाणीकरण
स्ट्रीमेबल HTTP परिवहन को सुरक्षा के लिए बियरर टोकन प्रमाणीकरण की आवश्यकता होती है। आपके पास तीन विकल्प हैं:
विकल्प 1: ऑटो-जनरेटेड टोकन (केवल विकास के लिए)
npx @notionhq/notion-mcp-server --transport http
सर्वर एक सुरक्षित यादृच्छिक टोकन उत्पन्न करेगा और इसे प्रतिबंधित अनुमतियों वाली फ़ाइल में लिखेगा:
Generated auth token written to: /tmp/.notion-mcp-auth-token-12345
विकल्प 2: कमांड लाइन के माध्यम से कस्टम टोकन (उत्पादन के लिए अनुशंसित)
npx @notionhq/notion-mcp-server --transport http --auth-token "your-secret-token"
विकल्प 3: पर्यावरण चर के माध्यम से कस्टम टोकन (उत्पादन के लिए अनुशंसित)
AUTH_TOKEN="your-secret-token" npx @notionhq/notion-mcp-server --transport http
यदि दोनों प्रदान किए जाते हैं तो कमांड लाइन तर्क --auth-token को AUTH_TOKEN पर्यावरण चर पर प्राथमिकता दी जाती है।
असुरक्षित विकल्प: HTTP प्रमाणीकरण अक्षम करें
आप केवल स्पष्ट असुरक्षित फ़्लैग के साथ बियरर टोकन प्रमाणीकरण अक्षम कर सकते हैं:
npx @notionhq/notion-mcp-server --transport http --unsafe-disable-auth
चेतावनी: --unsafe-disable-auth असुरक्षित है। सर्वर DNS रीबाइंडिंग के माध्यम से आपके द्वारा देखे जाने वाले पृष्ठों तक पहुँच योग्य हो सकता है। केवल पृथक नेटवर्क पर इसका उपयोग करें।
जब प्रमाणीकरण अक्षम होता है, तो सर्वर कॉन्फ़िगर किए गए स्थानीय होस्ट और लूपबैक होस्ट के विरुद्ध Host और Origin हेडर की जाँच करके DNS रीबाइंडिंग सुरक्षा सक्षम करता है। पिछला --disable-auth फ़्लैग अभी भी एक पदावनत उपनाम के रूप में स्वीकार किया जाता है, लेकिन यह एक चेतावनी प्रिंट करेगा।
HTTP अनुरोध करना
स्ट्रीमेबल HTTP परिवहन के सभी अनुरोधों में प्राधिकरण हेडर में बियरर टोकन शामिल होना चाहिए:
# Example request
curl -H "Authorization: Bearer your-token-here" \
-H "Content-Type: application/json" \
-H "mcp-session-id: your-session-id" \
-d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}' \
http://localhost:3000/mcp
नोट: किसी भी परिवहन मोड का उपयोग करते समय अपने Notion एकीकरण टोकन के साथ या तो NOTION_TOKEN पर्यावरण चर (अनुशंसित) या OPENAPI_MCP_HEADERS पर्यावरण चर सेट करना सुनिश्चित करें।
एकाधिक एकीकरणों की सेवा (प्रति-अनुरोध टोकन पासथ्रू)
डिफ़ॉल्ट रूप से सर्वर स्टार्टअप पर बेक किए गए एकल टोकन के साथ Notion में प्रमाणित होता है, जो एक परिनियोजन को एक Notion एकीकरण में लॉक कर देता है। एकल परिनियोजन को एकाधिक एकीकरणों की सेवा देने की अनुमति देने के लिए, टोकन पासथ्रू सक्षम करें ताकि प्रत्येक क्लाइंट प्रति कनेक्शन अपना स्वयं का Notion एकीकरण टोकन प्रदान करे:
# Enable per-request Notion tokens (flag or ENABLE_TOKEN_PASSTHROUGH=true)
npx @notionhq/notion-mcp-server --transport http --enable-token-passthrough
क्लाइंट तब समर्पित Notion-Token हेडर का उपयोग करके इनिशियलाइज़ अनुरोध पर अपना Notion टोकन भेजते हैं:
curl -H "Authorization: Bearer <server-auth-token>" \
-H "Notion-Token: ntn_****" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}' \
http://localhost:3000/mcp
प्रत्येक कनेक्शन के लिए टोकन कैसे हल किया जाता है, क्रम में:
Notion-Tokenहेडर (पसंदीदा — स्पष्ट, और सर्वर के अपनेAuthorizationगेटवे प्रमाणीकरण के साथ काम करता है)। यदि मौजूद है तो यह एक मान्य Notion टोकन होना चाहिए, अन्यथा अनुरोध401के साथ अस्वीकार कर दिया जाता है।Authorization: Bearer ntn_****— केवल तब जब सर्वर का अपना बियरर प्रमाणीकरण बंद हो (--unsafe-disable-auth), ताकि हेडर सीधे Notion टोकन ले जाने के लिए स्वतंत्र हो।- अन्यथा स्टार्टअप env टोकन (
NOTION_TOKEN/OPENAPI_MCP_HEADERS), यदि सेट है, ताकि पासथ्रू और एक डिफ़ॉल्ट एकीकरण एक परिनियोजन पर सह-अस्तित्व में रह सकें।
नोट्स:
- केवल Notion टोकन उपसर्ग (
ntn_, विरासतsecret_) वाले मानों को Notion टोकन के रूप में माना जाता है, इसलिए सर्वर का गेटवे रहस्य और किरायेदार का Notion टोकन कभी टकराते नहीं हैं। - प्रत्येक टोकन अपने MCP सत्र से बंधा होता है; टोकन कभी लॉग नहीं किए जाते (केवल एक संपादित उपसर्ग उत्सर्जित होता है)।
- यह एक जानबूझकर टोकन-पासथ्रू सेटअप है। इसे हमेशा TLS पर तैनात करें, और बहु-किरायेदार ट्रैफ़िक के सामने गेटवे के रूप में सर्वर के अपने बियरर प्रमाणीकरण (
--auth-token) को सक्षम रखना पसंद करें।
उदाहरण
- निम्नलिखित निर्देश का उपयोग करना
Comment "Hello MCP" on page "Getting started"
AI कार्य को प्राप्त करने के लिए दो API कॉल, v1/search और v1/comments की सही योजना बनाएगा
- इसी तरह, निम्नलिखित निर्देश के परिणामस्वरूप मूल पृष्ठ "Development" में "Notion MCP" नामक एक नया पृष्ठ जुड़ जाएगा
Add a page titled "Notion MCP" to page "Development"
- आप सीधे सामग्री ID का संदर्भ भी दे सकते हैं
Get the content of page 1a6b35e6e67f802fa7e1d27686f017f2
विकास
बिल्ड और परीक्षण
npm run build
npm test
निष्पादित करें
npx -y --prefix /path/to/local/notion-mcp-server @notionhq/notion-mcp-server
Cursor में स्थानीय रूप से परिवर्तनों का परीक्षण:
notion-mcp-serverपैकेज के लिए मशीन-वैश्विक सिमलिंक बनाने के लिए रिपॉजिटरी रूट सेnpm linkकमांड चलाएं।- नीचे दिए गए कॉन्फ़िगरेशन स्निपेट को Cursor के
mcp.json(या अन्य MCP क्लाइंट जिसके साथ आप परीक्षण करना चाहते हैं) में मर्ज करें। - (सफाई) रिपॉजिटरी रूट से
npm unlinkचलाएं।
{
"mcpServers": {
"notion-local-package": {
"command": "notion-mcp-server",
"env": {
"NOTION_TOKEN": "ntn_..."
}
}
}
}
प्रकाशित करें
npm login
npm publish --access public