LABSCO SUMMARY
A worked example more than a product, and it says so.
The author is explicit that this was built for one personal list: no custom fields, no recurring tasks, no priorities, and only today or later as scheduling. Taken as a starting point for your own Notion integration that is a virtue - the code is short enough to read in a sitting and change to match your database.
What it is
A deliberately small personal project. It manages a Notion todo database with exactly three properties - a Task title, a When select holding either today or later, and a completion checkbox - and nothing else.
What you get
- Add a new todo item
- View all todos, or just the ones scheduled for today
- Check a task off as complete
- A short, readable server file to fork when your own database looks different
Requirements
Python 3.10 or higher, a Notion account, and a Notion integration whose API key goes in NOTION_API_KEY alongside the database ID in NOTION_DATABASE_ID. The database has to be shared with the integration from the Add connections menu, and it must match the three-property structure - anything else means editing the server file.
Setup effort
Build from source — git clone https://github.com/danhilse/notion_mcp.git
USE CASES
Capturing a task without leaving the conversation
Say what needs doing and whether it is for today or later; it lands in the Notion database directly.
Asking what is on today
Pull just the items scheduled for today rather than the whole list, and tick one off when it is done.
Starting your own Notion server
Fork it and change the create and formatting functions plus the input schema to match your own database properties.
BEFORE YOU INSTALL
What to know first
Requires
- Python 3.10 or higher
- uv on PATH
- NOTION_API_KEY and NOTION_DATABASE_ID in a .env file in the clone
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/danhilse/notion_mcp.git
cd notion_mcp
python -m venv .venv
source .venv/bin/activate
uv pip install -e .Create a Notion integration at https://www.notion.so/my-integrations and copy its API key
Share your todo database with the integration: in Notion, open the database, click the "..." menu, choose Add connections and select your integration
Create a .env file in the clone with NOTION_API_KEY set to that key and NOTION_DATABASE_ID set to your database's ID
MCP Clients
Claude Desktop
{
"mcpServers": {
"notion-todo": {
"command": "<YOUR_PATH_TO_VENV>/bin/python",
"args": [
"-m",
"notion_mcp"
],
"cwd": "<YOUR_PATH_TO_NOTION_MCP>"
}
}
}<YOUR_PATH_TO_NOTION_MCP> is the full path of your clone (the notion_mcp folder git clone creates), and <YOUR_PATH_TO_VENV>/bin/python is that clone's .venv/bin/python. The server reads NOTION_API_KEY and NOTION_DATABASE_ID from the .env file in that folder.