Notion Schedule Agent

Notion Schedule Agent

An MCP server that turns your Notion task list into an AI-optimized daily schedule, reading tasks with page content and priorities from an Eisenhower matrix, and writing a clean schedule back to Notion.

Category
Visit Server

README

Notion Schedule Agent

An MCP server that turns your Notion task list into an AI-optimized daily schedule.

Every night you pull tomorrow's tasks from your "Upcoming Tasks" database and manually slot them into half-hour blocks. This agent does that for you — it reads your tasks (including page body content like workout plans and watchlists), understands priorities via the Eisenhower matrix, respects fixed-time commitments parsed from task names, and writes a clean schedule back to Notion.

Demo

1. Tasks in Notion with Eisenhower priorities and weekday assignments

Upcoming Tasks database

2. The agent reads full page content for smarter scheduling

Task detail with body content

3. One command generates an AI-optimized daily schedule

CLI schedule generation

4. Schedule written back to Notion as a half-hour block table

Schedule written to Notion

5. Built as an MCP server — usable from Claude Desktop, Cursor, or any MCP client

MCP server code

How It Works

┌──────────────────┐       ┌──────────────────┐       ┌──────────────────┐
│  Upcoming Tasks  │──────▶│   AI Scheduler   │──────▶│  Schedule Today  │
│  (Notion DB)     │       │   (OpenAI)       │       │  (Notion Table)  │
│                  │       │                  │       │                  │
│  • Task name     │       │  • Reads page    │       │  6:00  Free time │
│  • Priority      │       │    body content  │       │  9:00  LeetCode  │
│  • Weekday       │       │  • Parses times  │       │  9:30  Standup   │
│  • Page content  │       │  • Sorts by      │       │ 10:00  Deep work │
│                  │       │    priority      │       │  ...             │
└──────────────────┘       └──────────────────┘       └──────────────────┘

Priority System (Eisenhower Matrix)

Status Meaning Scheduling
Imp Urg Important & Urgent Peak focus hours first
Urg ~Imp Urgent, not important Soon, lighter slots
Imp ~Urg Important, not urgent Focused time available
In Progress Currently being worked on Dedicated blocks
~Imp ~Urg Neither important nor urgent Fill remaining gaps
Pinned Recurring/daily tasks Spread across the day

Key Features

  • Deep content reading — reads the body of each task page (bullet lists, paragraphs) so the AI understands what "Gym - upper body" actually involves
  • Time-locked tasks — parses times from task names (e.g. "Team standup 9:30am") and locks them to the correct slot
  • Eisenhower priority — schedules Important & Urgent tasks in peak focus hours, lighter tasks in the evening
  • Two-step workflow — preview the schedule before writing it to Notion
  • MCP server — any MCP client can invoke plan_day, get_tasks, and apply_schedule

Setup

1. Install dependencies

pip install -r requirements.txt

2. Create a Notion Integration

  1. Go to notion.so/my-integrations
  2. Click New integration, give it a name (e.g. "Schedule Agent")
  3. Copy the Internal Integration Secret — this is your NOTION_API_KEY

3. Share your Notion pages with the integration

  1. Open your Upcoming Tasks database in Notion
  2. Click ...Connections → select your integration
  3. Do the same for your Getting Things Done page (the one with "Schedule Today")

4. Get your database and page IDs

  • Open Upcoming Tasks in Notion. The URL looks like: https://notion.so/workspace/YOUR_DB_ID?v=... Copy the 32-character hex ID.

  • Open Getting Things Done page. Same format — copy the page ID.

5. Configure environment

cp .env.example .env

Edit .env with your keys:

NOTION_API_KEY=ntn_your_key_here
OPENAI_API_KEY=sk-your_key_here
NOTION_TASKS_DB_ID=your_database_id
NOTION_SCHEDULE_PAGE_ID=your_page_id

Usage

CLI Mode

# List tomorrow's tasks
python -m src.cli tasks tomorrow

# Generate and apply a schedule for tomorrow
python -m src.cli plan tomorrow

# Plan a specific day
python -m src.cli plan monday

The plan command shows a preview and asks for confirmation before writing to Notion.

MCP Server Mode

Run the server for use with Claude Desktop, Cursor, or any MCP client:

python -m src.mcp_server

Claude Desktop configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "notion-schedule-agent": {
      "command": "python",
      "args": ["-m", "src.mcp_server"],
      "cwd": "/path/to/notion-mcp-v2",
      "env": {
        "NOTION_API_KEY": "ntn_...",
        "OPENAI_API_KEY": "sk-...",
        "NOTION_TASKS_DB_ID": "...",
        "NOTION_SCHEDULE_PAGE_ID": "..."
      }
    }
  }
}

Available MCP Tools

Tool Description
get_tasks(day) List tasks for a given day from Notion
plan_day(day) Generate an AI-optimized schedule (preview)
apply_schedule() Write the previewed schedule to Notion

day accepts "today", "tomorrow", or a weekday name like "Monday".

Tech Stack

  • Python — core language
  • Notion API via notion-client — reads task database + page content, writes schedule table
  • OpenAI (gpt-4o-mini) — intelligent scheduling with priority awareness
  • MCP (Model Context Protocol) via mcp SDK — exposes tools to any MCP client

Project Structure

src/
  config.py        — environment config, time slots, priority mapping
  notion_ops.py    — Notion API operations (read tasks + page content, write schedule)
  scheduler.py     — OpenAI-powered schedule generation
  mcp_server.py    — MCP server entry point with tool definitions
  cli.py           — standalone CLI for direct usage

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured