MCP server · Org-owned · Audited from source

Notion MCP server

by makenotion/notion-mcp-serverMIT licenceAudited 21 Sep 2026 · source ccf053fb9abb

npm @notionhq/notion-mcp-server 2.5.2stdiostreamable-http★ 4,641
!CAUTIONGrade B · 88/100 · 21 Sep 2026 · ccf053f
4,641GitHub stars

Is it safe? With care — CAUTION, grade B (88/100). It exposes 3 tools: 2 read, 1 write and 0 destructive. The audit recorded 12 findings (0 critical, 0 high, 4 medium, 8 low). Maintainer's description: Official Notion MCP Server

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “Notion MCP server (makenotion/notion-mcp-server)”. Retrieved 21 Sep 2026. https://modelsatlas.com/mcp/makenotion/notion-12

7 MCP servers are called Notion. This is the one we pick. Compare all 7 →

Trust audit

Audit 0.4.1 · full source read 21 Sep 2026

Trust score88/100!CAUTION B
0 critical0 high4 medium8 low0 info

12 findings, listed below with the file and line each was found on. Grade A needs a sandboxed behavioural run too; this audit read the source only.

What the source does

  • FilesystemNone observedNothing seen in the source
  • NetworkDeclared1 observation
  • ShellNone observedNothing seen in the source
  • DependenciesNot pinnedSome ranges float
  • SecretsNone foundNo keys in source

“Declared” means the server says it does this and the source agrees. Browser, file and shell access are expected of some kinds of server.

Five audit layers

LayerWhat we checkResult
L0 ProvenanceRepo owner, licence, archive status, activityPASS
L1 Static sourceSecrets, path traversal, supply chainWARN 12 findings
L2 InstructionsPrompt injection and authority framing in docs and tool descriptionsPASS
L3 InventoryDeclared tools match the sourcePASS
L4 SandboxRun in isolation and watch behaviourSKIPPED

Provenance & runtime

Who published it, and what the audit could and could not run

Provenance

  • Repository owner makenotionOrganizationAccount type recorded when we read the repository.
  • PackagePublished on npm@notionhq/notion-mcp-server at version 2.5.2
  • LicenceMITFrom the repository, as read at the audited commit.
  • Last pushTodayActivity of the repository when we read it.
  • Source commit readccf053fb9abbThe audit covers exactly this commit, read on 21 Sep 2026.

Runtime

  • Sandbox runNot run yetThis audit read the source only; it did not execute the server.
  • Tool inventory3 declaredRead from the source and classed read, write or destructive.

Every value here is read from the record's own repository and audit.Suggest a correction

Findings (12)

Sorted by severity

MEDIUMInformation disclosuredisclose.log_secret · scripts/start-server.ts:54
F-12 Information disclosureCWE-209 · CWE-532Layer L1
console.log(`Generated auth token written to: ${authTokenFilePath}`)
Why
No further detail recorded for this rule.
Fix
—
MEDIUMInformation disclosuredisclose.log_secret · scripts/start-server.ts:150
F-12 Information disclosureCWE-209 · CWE-532Layer L1
console.log(`Initializing session with per-request Notion token ${redactToken(resolution.token)}`)
Why
No further detail recorded for this rule.
Fix
—
MEDIUMInformation disclosuredisclose.log_secret · scripts/start-server.ts:249
F-12 Information disclosureCWE-209 · CWE-532Layer L1
console.log(`Authentication: Bearer token required`)
Why
No further detail recorded for this rule.
Fix
—
MEDIUMInformation disclosuredisclose.log_secret · scripts/start-server.ts:251
F-12 Information disclosureCWE-209 · CWE-532Layer L1
console.log(`Read your auth token from: ${authTokenFilePath}`)
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · src/openapi-mcp-server/mcp/__tests__/proxy.test.ts:3
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
import { HttpClient } from '../../client/http-client'
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · src/openapi-mcp-server/mcp/__tests__/proxy.test.ts:8
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
vi.mock('../../client/http-client')
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · README.md:363
F-04 Network egressCWE-200 · CWE-319Layer L1
When using Streamable HTTP transport, the server will be available at `http://127.0.0.1:<port>/mcp` by default.
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · scripts/server-options.test.ts:19
F-04 Network egressCWE-200 · CWE-319Layer L1
expect(getHttpServerDisplayUrl(options)).toBe('http://127.0.0.1:3000')
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · scripts/server-options.test.ts:35
F-04 Network egressCWE-200 · CWE-319Layer L1
expect(getHttpServerDisplayUrl(options)).toBe('http://127.0.0.1:8080')
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · scripts/server-options.test.ts:78
F-04 Network egressCWE-200 · CWE-319Layer L1
expect(dnsOptions.allowedOrigins).toContain('http://127.0.0.1:4321')
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · src/openapi-mcp-server/client/__tests__/test-server.ts:25
F-04 Network egressCWE-200 · CWE-319Layer L1
resolve({ server, baseUrl: `http://127.0.0.1:${port}` })
Why
No further detail recorded for this rule.
Fix
—
LOWSupply chainsupply.unpinned · package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
@modelcontextprotocol/sdk, axios, express, form-data, mustache, node-fetch, openapi-client-axios, openapi-schema-validator
Why
22 dependency range(s) float
Fix
pin exact versions or ship a lockfile

Tools it exposes

3 declared in source · 0 destructive

2 read1 write0 destructive
ToolRiskWhat it does
createABwriteCreate an A-B object
getABreadGet an A-B object
getComposedreadGet a composed resource

Install

Package version 2.5.2 · audited commit ccf053f

Read the findings first. The most severe is Information disclosure (medium) at scripts/start-server.ts.

One-click links open your editor with the config below filled in, exactly as the snippets show it, pinned to version 2.5.2. The audit covers commit ccf053f only.

claude mcp add notion-mcp-server --env AUTH_TOKEN=${AUTH_TOKEN} --env ENABLE_TOKEN_PASSTHROUGH=${ENABLE_TOKEN_PASSTHROUGH} --env NOTION_TOKEN=${NOTION_TOKEN} -- npx -y @notionhq/[email protected]

The command pins the package version recorded in the source (2.5.2); the audit covers commit ccf053fb9abb. Transport: stdio · streamable-http. Reads these environment variables: AUTH_TOKEN, ENABLE_TOKEN_PASSTHROUGH, NOTION_TOKEN. Give it the narrowest token it needs.

Audit history

  1. !CAUTION B 88 / 100

    Source changed, verdict held · ccf053fb9abb

  2. !CAUTION B 88 / 100

    First audit · fda23548d239

README badge

For maintainers · updates on every re-audit

ModelsAtlas: CAUTION BMODELSATLASCAUTION · B
[![ModelsAtlas: CAUTION B](https://modelsatlas.com/mcp/makenotion/notion-12/badge.svg)](https://modelsatlas.com/mcp/makenotion/notion-12/)

The badge always shows the latest audit; a maintainer cannot pin an old verdict.

Other ratings

Cited, never blended into our score

No third-party security ratings are recorded for this server yet. When they exist they appear here with their source and date, beside, not inside, our grade.

Questions about Notion MCP server

What is the Notion MCP server?
Official Notion MCP Server
What tools does Notion expose?
3 in total: 2 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Notion safe to connect to an agent?
With care. The audit graded it B (88/100) and found 12 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does Notion need?
It reads AUTH_TOKEN, ENABLE_TOKEN_PASSTHROUGH and NOTION_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Notion run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @notionhq/notion-mcp-server at 2.5.2.
How current is this page?
The grade is for one exact copy of the source (ccf053fb9abb), read on 2026-09-21. The repository is watched and re-audited when it changes.
Which Notion MCP server is the right one?
makenotion/notion-mcp-server (this page). 7 servers share the name; see the side-by-side comparison.

Sources

  • makenotion/notion-mcp-server on GitHub — the source we read, its licence, stars and activityObserved · 21 Sep 2026
  • ModelsAtlas trust audit — CAUTION verdict for commit ccf053fb9abbObserved · 21 Sep 2026

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.