mcp-notion
mcp-notion
An MCP server exposing eight narrow Notion tools. Reads pages and databases, writes additively. Nothing is deleted, archived, or overwritten.
Setup
Create an internal integration at https://www.notion.com/my-integrations and copy its token.
cp .env.example .envand setNOTION_API_KEY.Share each page or database with the integration. In Notion, open it, then ••• > Connections > your integration. Without this, every call returns a 404 — the token alone grants no access.
Install:
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
Optional aliases, so a database can be named rather than pasted:
NOTION_ALIAS_TASKS=https://www.notion.so/workspace/0123456789abcdef0123456789abcdeflist_databases reports configured aliases.
Registering with Claude Code
claude mcp add notion -- /absolute/path/to/mcp-notion/.venv/bin/mcp-notionRefs
Every tool takes a ref, resolved in this order: configured alias, notion.so
URL, page or database id, exact title. An ambiguous title is an error listing
candidate URLs — the server never guesses.
Tools
Tool | Purpose |
| Databases visible to the integration, with aliases |
| Property names, types, and select options |
| Rows, filtered and sorted by property name |
| Page properties plus the body as markdown |
| Title search across shared pages and databases |
| New database row or subpage, with an optional markdown body |
| Append markdown to the end of a page |
| Set properties on a database row |
Markdown subset
Both directions: headings 1-3, paragraphs, bulleted and numbered lists, to-dos,
fenced code, quotes, dividers. Reading an unsupported block yields
<!-- unsupported: TYPE -->. Writing an unsupported construct — tables, images,
raw HTML — fails the whole call, naming the construct and the line.
Inline markup is one-way. Bold, italic, code, and links are rendered as
markdown when reading, but written back as literal characters: appending
**bold** writes those eight characters, not bold text. A half-correct inline
parser would silently corrupt text, which is worse than a visible asterisk.
Tests
.venv/bin/pytestNo network, no API key required.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pius-grainger/mcp-notion'
If you have feedback or need assistance with the MCP directory API, please join our Discord server