🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@shck-dev/notion-mcp

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shck-dev/notion-mcp

MCP server for Notion using internal API — search, export, and import pages as markdown. No workspace admin or OAuth needed, just your browser cookie.

latest
Source
npmnpm
Version
0.5.2
Version published
Weekly downloads
40
-45.21%
Maintainers
1
Weekly downloads
 
Created
Source

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 setupnpx @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

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:

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

  • Open notion.so in Chrome
  • Press F12ApplicationCookieswww.notion.so
  • Copy the token_v2 cookie value → NOTION_TOKEN
  • Press F12Network tab, do any action in Notion
  • Find a POST request to api/v3/*, click it
  • From Request Headers: copy x-notion-active-user-headerNOTION_USER_ID
  • From Request Body (Payload): find spaceIdNOTION_SPACE_ID

2. Configure your MCP client

Claude Code

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.):

{
  "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 expirytoken_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

Keywords

notion

FAQs

Package last updated on 23 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts