Notion Mcp

io.github.shck-devPublished by GitHub account shck-devv0.5.2Updated Oct 24, 2026

Notion MCP server — search, export, and import pages as markdown

The publisher's own server: Notion

Overview

AI-generated overview

Lets an assistant search a Notion workspace and export, import, append, and create pages as markdown, plus manage comments and images.

What you can do
Uses Notion's internal web API to search all pages visible to your account, export pages as markdown, and write markdown back to pages from a string or local file. Import replaces a page's content, while append adds to the end without touching existing content. It also creates child pages, uploads local images or references external URLs, and lists, adds, or replies to comment threads.
When to use it
Useful when you want an assistant to read and rewrite Notion pages as markdown without creating a Notion integration or getting workspace admin approval. It fits personal or small-team workflows where the account already has access to the pages involved.
Requirements
Runs locally over stdio via npx, so Node.js 18 or later (or Bun) is needed. Requires three values from the browser: NOTION_TOKEN (the token_v2 cookie), NOTION_USER_ID, and NOTION_SPACE_ID, supplied as environment variables or saved by the init command. Network access to Notion is required.
Before you install
NOTION_TOKEN is a session cookie granting access to everything your account can see, so treat it as a full-account credential and expect it to expire. Import tools replace all existing page content, and comment, image, and create tools write to the workspace. The server relies on an undocumented internal API that may change, and markdown conversion can be lossy.

Installation

In SourceWeft

  1. Open Notion Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[MCP Badge]

@shck-dev/notion-mcp

Notion MCP Server — search, export, and import pages as markdown

[npm version] [npm downloads] [license]

No workspace admin. No OAuth. No page sharing.
Just paste 3 values from your browser and go.

Blog Post | GitHub | npm


Features

  • Search — full-text search across your entire workspace
  • Export — download any page as clean markdown (headings, lists, to-do, code blocks, tables, links, images with viewable URLs)
  • Import — write markdown back to Notion pages (replaces content), from a string or local file
  • Append — add markdown to the end of a page without touching existing content
  • Create — spin up new child pages, optionally prefilled from a markdown string or file
  • Images — upload a local image to a page, or reference an external URL
  • Comments — list open discussions, add new comments, reply to threads
  • One-command setup — npx @shck-dev/notion-mcp init: paste a browser "Copy as cURL" and it extracts + saves your credentials
  • Prompts & resources — a notion_setup prompt and a notion://guide resource for in-client onboarding
  • Zero setup friction — uses the same internal API as the Notion web app; if you can see it in your browser, this server can access it

Tools

ToolDescription
notion_searchFull-text search across all pages in your workspace
notion_export_pageExport any Notion page as markdown; image links resolve to viewable CDN URLs (pass image_dir to download images locally instead)
notion_import_pageWrite markdown to a Notion page — replaces all existing content
notion_import_page_from_fileWrite a local .md file to a page — replaces all content
notion_append_to_pageAppend markdown to the end of a page (non-destructive)
notion_append_to_page_from_fileAppend a local .md file to the end of a page (non-destructive)
notion_create_pageCreate a new sub-page, optionally prefilled with markdown
notion_create_page_from_fileCreate a new sub-page from a local .md file
notion_add_imageAppend an image to the end of a page — local file is uploaded to Notion, http(s) URL is referenced as-is
notion_list_commentsList open discussion threads on a page
notion_add_commentStart a new discussion — inline (anchored to text) or block-level
notion_reply_commentReply to an existing discussion thread
notion_initPaste a browser "Copy as cURL" to extract & save credentials

Why not the official Notion API?

This MCP serverOfficial Notion API
SetupPaste 3 values from DevToolsCreate integration, get admin approval, share pages
Page accessEverything you can seeOnly explicitly shared pages
MarkdownBidirectional (export + import)Read-only blocks API
AuthCookie (token_v2)OAuth / integration token

Trade-off: The internal API is undocumented and may change. Token expires periodically (re-grab from browser).

Quick start

Easiest: interactive setup

bash
npx @shck-dev/notion-mcp init

Open Notion in Chrome → DevTools (F12) → Network → click any request to notion.so/api/v3/… → right-click → Copy as cURL, then paste it and press Ctrl-D. Your token, user id, and workspace id are extracted and saved to ~/.notion-mcp/config.json. Then register the server — no env block needed:

bash
claude mcp add notion -- npx @shck-dev/notion-mcp

Prefer to set the three values by hand? Steps below.

1. Get credentials from your browser

  1. Open notion.so in Chrome
  2. Press F12 → Application → Cookies → www.notion.so
  3. Copy the token_v2 cookie value → NOTION_TOKEN
  4. Press F12 → Network tab, do any action in Notion
  5. Find a POST request to api/v3/*, click it
  6. From Request Headers: copy x-notion-active-user-header → NOTION_USER_ID
  7. From Request Body (Payload): find spaceId → NOTION_SPACE_ID

2. Configure your MCP client

Claude Code
bash
claude mcp add notion -- env NOTION_TOKEN=your_token NOTION_USER_ID=your_user_id NOTION_SPACE_ID=your_space_id npx @shck-dev/notion-mcp
Claude Desktop / Cursor / any MCP client

Add to your MCP config (claude_desktop_config.json, .cursor/mcp.json, etc.):

json
{  "mcpServers": {    "notion": {      "command": "npx",      "args": ["@shck-dev/notion-mcp"],      "env": {        "NOTION_TOKEN": "your_token_v2_value",        "NOTION_USER_ID": "your_user_id",        "NOTION_SPACE_ID": "your_space_id"      }    }  }}

Requirements

  • Node.js ≥ 18 (for npx) — or Bun. The published server is compiled to node-compatible JS, so Bun is no longer required to run it.

Limitations

  • Internal API — undocumented, may break with Notion updates
  • Token expiry — token_v2 expires periodically; re-grab from browser when auth fails
  • Databases — database/collection pages don't export rows yet; sub-pages render as links and such pages return an explanatory note instead of empty output
  • Block granularity — import replaces all content, append adds to the end (no in-place editing of individual blocks)
  • Lossy markdown — some complex formatting may simplify during conversion (e.g. nested lists flatten on import)
  • External images — http(s) image URLs added via notion_add_image (or embedded in markdown) are referenced as-is and not re-uploaded to Notion

License

MIT

Source: README.md at commit 736e785

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.5.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Notion integrations