notion_mcp

MCP.Pizza Chef: danhilse

The notion_mcp is a lightweight MCP server integration designed to connect Claude with a personal Notion todo list. It leverages Notion's API to allow real-time reading, adding, and updating of tasks within a minimalist todo list setup. The server supports basic task management features such as viewing all tasks, filtering today's tasks, and marking tasks as complete. Tailored for a simple Notion database with three properties—Task title, When (today or later), and a completion checkbox—this integration serves as a practical starting point for developers looking to build custom Notion-based productivity tools. Modifications may be required to adapt to different Notion database schemas.

Use This MCP server To

Manage personal todo lists via Notion API Add new tasks to Notion todo database View all tasks in a Notion todo list Filter tasks scheduled for today Mark tasks as completed in Notion Integrate Notion task management with Claude AI

README

Notion MCP Integration

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.

Important Note

This is a personal project designed for a very specific use case: my simple Notion todo list that has just three properties:

  • Task (title)
  • When (select with only two options: "today" or "later")
  • Checkbox (marks if completed)

Example Notion Database

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.

Features

  • Add new todo items
  • View all todos
  • View today's tasks
  • Check off a task as complete

Prerequisites

  • Python 3.10 or higher
  • A Notion account
  • A Notion integration (API key)
  • A Notion database that matches the exact structure described above (or willingness to modify the code for your structure)

Setup

  1. Clone the repository:
git clone https://github.com/yourusername/notion-mcp.git
cd notion-mcp
  1. Set up Python environment:
python -m venv .venv
source .venv/bin/activate  # On Windows use: .venv\Scripts\activate
uv pip install -e .
  1. Create a Notion integration:

  2. Share your database with the integration:

    • Open your todo database in Notion
    • Click "..." menu → "Add connections"
    • Select your integration
  3. Create a .env file:

NOTION_API_KEY=your-api-key-here
NOTION_DATABASE_ID=your-database-id-here
  1. Configure Claude Desktop:
{
  "mcpServers": {
    "notion-todo": {
      "command": "/path/to/your/.venv/bin/python",
      "args": ["-m", "notion_mcp"],
      "cwd": "/path/to/notion-mcp"
    }
  }
}

Running the Server

The server can be run in two ways:

  1. Directly from the command line:
# From the project directory with virtual environment activated
python -m notion_mcp
  1. Automatically through Claude Desktop (recommended):
  • The server will start when Claude launches if configured correctly in claude_desktop_config.json
  • No manual server management needed
  • Server stops when Claude is closed

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.

Usage

Basic commands through Claude:

  • "Show all my todos"
  • "What's on my list for today?"
  • "Add a todo for today: check emails"
  • "Add a task for later: review project"

Limitations

  • Only works with a specific Notion database structure
  • No support for complex database schemas
  • Limited to "today" or "later" task scheduling
  • No support for additional properties or custom fields
  • Basic error handling
  • No advanced features like recurring tasks, priorities, or tags

Customization

If you want to use this with a different database structure, you'll need to modify the server.py file, particularly:

  • The create_todo() function to match your database properties
  • The todo formatting in call_tool() to handle your data structure
  • The input schema in list_tools() if you want different options

Project Structure

notion_mcp/
├── pyproject.toml
├── README.md
├── .env                   # Not included in repo
└── src/
    └── notion_mcp/
        ├── __init__.py
        ├── __main__.py
        └── server.py      # Main implementation

License

MIT License - Use at your own risk

Acknowledgments

  • Built to work with Claude Desktop
  • Uses Notion's API

notion_mcp FAQ

How do I set up notion_mcp with my Notion account?
You need to create a Notion integration with API access, share your todo database with it, and configure the server with your integration token and database ID.
Can I use notion_mcp with a complex Notion database?
This server is designed for a simple todo list with three properties; you will need to modify the code to support more complex or different database schemas.
Does notion_mcp support multiple users?
The current implementation is personal and single-user focused; multi-user support would require additional development.
What LLMs can I use with notion_mcp?
While designed for Claude, notion_mcp can be adapted to work with other LLMs like OpenAI's GPT-4 and Google's Gemini by adjusting the client integration.
How does notion_mcp handle task completion?
It updates the checkbox property in the Notion database to mark tasks as completed.
Is notion_mcp secure?
Security depends on how you manage your Notion API tokens and server deployment; ensure tokens are kept private and use secure hosting.
Can I customize notion_mcp for different task properties?
Yes, but you will need to modify the server code to match your Notion database's structure and property names.
What programming languages or frameworks does notion_mcp use?
The project details are minimal, but typical MCP servers use lightweight frameworks compatible with REST APIs; check the repo for specifics.