Skills/npm/notion-mcp-server

notion-mcp-server@3.4.0

VERIFIED

Publisher claims: "Notion MCP server with token auth: connect Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client to Notion. Search, create and edit pages, query databases, comment and upload files. Runs headless in CI and agents." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry npm (MCP server)Publisher awkoy · publishing for 611 daysInstalls 17,546Last detonated 3d ago
$claude mcp add notion-mcp-server -- npx -y notion-mcp-server
WatchReport an issue

Coverage

Server started and answered tools/list.
Tested
MCP initialize and tools/list · every tool description, for hidden instructions · every file read, file written and host contacted by what ran
Not tested
what the tools do when called with real credentials

Before you give it your token

It will ask for
MCP_ALLOW_UNAUTHENTICATEDMCP_AUTH_TOKENNOTION_TOKENConfiguration, not credentials: MCP_ALLOWED_HOSTS, MCP_ALLOWED_ORIGINS, MCP_TRANSPORT, NOTION_DAILY_LOG_PAGE_ID, NOTION_FILE_URLS, NOTION_PAGE_ID, NOTION_UPLOAD_ROOT, XDG_STATE_HOME
Where it talks to
notion.com (its own)
What the honeypot saw
no credential files read · no network
What we could not test
what the tools do when called with real credentials

Connect it with a scoped credential, under the guard. It asks for MCP_ALLOW_UNAUTHENTICATED, MCP_AUTH_TOKEN, NOTION_TOKEN and talks to notion.com. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind.

$vet-skills run --secrets MCP_ALLOW_UNAUTHENTICATED=notion.com,MCP_AUTH_TOKEN=notion.com,NOTION_TOKEN=notion.com -- npx -y notion-mcp-server

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios) on 2026-11-11 and scored it 81/100 (Verified). It did what it claims and nothing else we could detect: no undeclared network egress, no credential reads, no persistent instruction writes. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 30 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
10.0sprocessdependency install exit 0
30sclaimed3 tools: notion_read, notion_write, notion_describe
30sprocessscript backend runs setup only
30sprocessno install scripts to re-run

Static findings

HIGH
Access to sensitive file pathsbuild/operations/files.js:474 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files…nsport, and over stdio refused for paths through a dot-named file or directory (~/.ssh, .env) or under system and app-data folders (/proc, /dev, ~/Library, %APPDATA%)…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File permission modification commandpackage.json:10 · File permission modification command — agent changes file ownership/permissions"build": "shx rm -rf build && tsc && shx chmod +x build/*.js",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
HIGH
Access to sensitive file pathsbuild/operations/files.js:197 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesmessage: `Refusing to upload ${p}: the path goes through "${hidden}", and dot-named files and directories are where credentials and config live (~/.ssh, ~/.aws, .env).`,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsbuild/utils/upload-paths.js:17 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files* The first dot-named segment of a path: ~/.ssh, ~/.aws, ~/.config, .env,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathspackage.json:15 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"e2e": "node --env-file=.env scripts/e2e.mjs",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Collapsed <details> block carrying instructionsREADME.md:46 · Collapsed <details> block carrying instructions<summary><b>Manual setup: JSON config, Claude Code, Codex, Gemini CLI, Docker</b></summary> **Any client that reads an `mcpServers` block** (Cursor's `~/.cursorFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01

Cost to the agent

Instructions loaded
≈96 tok
1 file · 74 in bundle
Tool list per prompt
≈1,131 tok
3 tools · 377 per tool
Handshake
613 ms
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 707

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

No advisories in OSV for notion-mcp-server@3.4.0 as of 3d ago. This is the package itself, not its dependencies.