show_all_todosLABSCO SUMMARY
Scoped to one page on purpose, which is why it is safe to wire up quickly.
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.
What it is
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.
What you get
- Every task on the configured page listed —
show_all_todos - A new task added from a description —
add_todo, taking ataskargument - An existing task marked complete by ID —
complete_todo, taking atask_idargument - A pinned Notion API version, so a change on Notion's side does not silently alter behaviour
Requirements
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. The project is notion-mcp 1.0.0.
Setup effort
Build from source
USE CASES
Capturing a task while you are talking about it
Add the todo from the conversation instead of switching to Notion and losing the thread.
Reviewing what is outstanding
List every task on the page and let the assistant group or prioritise them for you.
Closing things out at the end of a session
Mark the finished tasks complete by ID so Notion reflects the state you just described.
3 tools
Listed in project docs. Your client may show a different list.
add_todocomplete_todoBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation.
Requires
- uv on PATH
- Python 3.11 or later
- NOTION_TOKEN in your environment
INSTALLATION
Connect your client
MCP Clients
Claude Desktop
Clone it and set up the environment
Run it from a local copy with uv (Python 3.11 or later); after the last line, put your NOTION_TOKEN and PAGE_ID in the new .env file.
git clone https://github.com/Badhansen/notion-mcp.git
cd notion-mcp
uv venv
source .venv/bin/activate
uv pip install -e .
cp .env.example .envAdd to claude_desktop_config.json
/Users/<YOUR_USERNAME>/Projects/Python/notion-mcp/src is the absolute path of the src folder in your clone.
{
"mcpServers": {
"notion-mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/<YOUR_USERNAME>/Projects/Python/notion-mcp/src",
"run",
"server.py"
]
}
}
}NOTION_TOKEN and PAGE_ID are not set in the client entry: the server reads them from the .env file in your clone (NOTION_TOKEN=<your-notion-api-token>, PAGE_ID=<your-notion-page-id>).