The integration only reaches the page you explicitly shared with it, so an assistant with this connected cannot wander through the rest of your workspace. Three tools, no search and no database queries — this is a capture-and-complete loop, not a general Notion client.
A small MCP server that integrates with Notion's API to manage a personal todo list on one page. Three operations cover it: show every task, add a task from a description, and complete a task by ID. It talks to Notion's REST API directly with a pinned API version.
- Every task on the configured page listed — `show_all_todos`
- A new task added from a description — `add_todo`, taking a `task` argument
- An existing task marked complete by ID — `complete_todo`, taking a `task_id` argument
- A pinned Notion API version, so a change on Notion's side does not silently alter behaviour
A Notion account with API access and a Notion integration token, plus a Notion page shared with that integration — create the integration at Notion's my-integrations page, then use the page's "..." menu and Add connections to grant it access. Python 3.11 or higher, with the environment created by `uv venv` and `uv pip install -e .`. Four settings go in `.env`: `NOTION_TOKEN`, `PAGE_ID` for the page holding the list, `NOTION_VERSION` pinned to `2022-06-28`, and `NOTION_BASE_URL` set to `https://api.notion.com/v1`. The client runs it as `uv --directory /path/to/notion-mcp/src run server.py` over stdio; Smithery can install it for Claude Desktop automatically. The project is `notion-mcp` 1.0.0.
One command plus a key — npx -y @smithery/cli install @Badhansen/notion-mcp --client claude, then supply credentials
