The permission model is the thing to plan around: the integration only sees pages explicitly connected to it, so access grows deliberately instead of covering the workspace by default. One thing to read before you clone — the README credits sweir1/notion-server with the enhanced markdown support, the database operations and the improved error handling, and gives the clone command for that repository as an alternative to this one.
A Node MCP server for Notion that lets a model search a workspace, read pages back as clean markdown, create new pages from markdown, update existing ones, work at block level, handle comments, and create and query databases. It is built from source and run as `build/index.js`; the package declares the name `notionmcp` (1.0.0) with a `notion` binary.
- Workspace search, page reads with clean formatting, page creation from rich markdown content, and updates to existing pages
- Block-level operations — update and delete individual blocks rather than rewriting the page
- Comments both ways: add them and retrieve them
- Markdown that survives the round trip — H1 to H3 headings, code blocks with language, todo items with checkbox states, multi-line blockquotes, horizontal dividers, images with captions and nested bullet points
- Database work: create and manage databases, add and update items, and query with filters and sorting
- Database property types including title, rich text, number, select, multi-select, date and checkbox
- Page creation taking a parent page ID, title and markdown body, and database queries taking a database ID with filter and sort objects — `create_page`, `query_database`
Node.js v16 or higher, a Notion API key in `NOTION_API_KEY`, and an MCP-compatible client. Create the integration at Notion → My integrations and give it Content read/update/insert, Comments read/create and User information read. Then connect each page you want reachable from its "..." menu → Connections — the integration sees nothing you have not connected, so repeat it for every page or parent you intend to use. Installation is from source — clone the repository, `npm install`, `npm run build`, then point the client's command at the absolute path of `build/index.js` with the key in its env block. MIT licensed.
