The Notion_mcp server integrates Claude with Notion's API to manage a personal todo list, providing tools to add new tasks, view all todos or today's tasks, and mark items as complete. It is purpose-built for a minimalist Notion database structure with three properties (Task, When, and Checkbox) and requires users to modify the code if their database schema differs. The server solves the problem of managing todos conversationally through Claude without leaving the chat interface, though its functionality is limited to the specific database structure it was designed for.
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.jsonNote: 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
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc