A simple MCP integration that allows Claude to read and manage a personal Notion todo list
A simple Model Context Protocol (MCP) server that integrates with Notion's API to manage my personal todo list through Claude. This is a basic implementation tailored specifically for my minimalist todo list setup in Notion.
This is a personal project designed for a very specific use case: my simple Notion todo list that has just three properties:
While you can use this as a starting point for your own Notion integration, you'll likely need to modify the code to match your specific database structure and requirements.
git clone https://github.com/yourusername/notion-mcp.git
cd notion-mcp
python -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate
uv pip install -e .
Create a Notion integration:
Share your database with the integration:
Create a .env
file:
NOTION_API_KEY=your-api-key-here
NOTION_DATABASE_ID=your-database-id-here
{
"mcpServers": {
"notion-todo": {
"command": "/path/to/your/.venv/bin/python",
"args": ["-m", "notion_mcp"],
"cwd": "/path/to/notion-mcp"
}
}
}
The server can be run in two ways:
# From the project directory with virtual environment activated
python -m notion_mcp
claude_desktop_config.json
Note: When running directly, the server won't show any output unless there's an error - this is normal as it's waiting for MCP commands.
Basic commands through Claude:
If you want to use this with a different database structure, you'll need to modify the server.py
file, particularly:
create_todo()
function to match your database propertiescall_tool()
to handle your data structurelist_tools()
if you want different optionsnotion_mcp/
├── pyproject.toml
├── README.md
├── .env # Not included in repo
└── src/
└── notion_mcp/
├── __init__.py
├── __main__.py
└── server.py # Main implementation
MIT License - Use at your own risk