Personal workflow management via Claude CLI and Notion API
notion-workflow-mcp
Personal workflow management via Claude CLI + Notion API, built as an MCP Server.
Inspired by google-keep-mcp — turns Notion into a personal task and knowledge system driven by slash commands.
Features
- 20 MCP tools covering task lifecycle, note-taking, subtask management, and aggregations
- 2 independent Notion databases: 工作流库 (tasks, with project & subtasks) + 笔记库 (notes)
- 12 slash commands:
/capture,/subtask,/task_list,/status,/progress,/note,/review,/standup,/overview,/detail,/done,/find - Project-based task management: tasks belong to projects, with embedded subtasks (priority + status)
- Conversation-to-note:
/noteauto-summarizes AI conversations into structured notes
Requirements
- Python 3.11+
- uv (recommended) or pip
- Notion account + Integration token
Setup
1. Clone & install
git clone https://github.com/<your-username>/notion-workflow-mcp
cd notion-workflow-mcp
uv venv --python python3.12
uv pip install -e .
2. Configure environment
cp .env.example .env
# Fill in your NOTION_TOKEN, WORKFLOW_DATABASE_ID, NOTES_DATABASE_ID
Getting your IDs:
NOTION_TOKEN: notion.so/my-integrations → New integration → copy token- Database IDs: Use the init script to auto-discover them (see step 4)
3. Share databases with your Integration
In Notion: open each database → ... → Connections → select your integration
4. Initialize database schema
python scripts/init_databases.py
This auto-adds all required properties (状态, 优先级, 项目, 截止日期, 标签, 备注) to your existing databases.
5. Register MCP Server with Claude CLI
claude mcp add notion-workflow -- /path/to/.venv/bin/python /path/to/server.py
Or add manually to ~/.claude/settings.json:
{
"mcpServers": {
"notion-workflow": {
"command": "/path/to/notion-workflow-mcp/.venv/bin/python",
"args": ["/path/to/notion-workflow-mcp/server.py"]
}
}
}
Restart Claude CLI — the MCP server loads automatically.
6. Install slash command skills
Slash commands (like /capture, /note, /review) are Claude Code skills defined in .claude/commands/. They need to be accessible from your working directory.
Option A: Work inside this project directory
If you run claude from the notion-workflow-mcp/ directory, skills are automatically available — Claude Code reads .claude/commands/ from the current directory.
Option B: Make skills globally available
To use the slash commands from any directory, copy them to your global Claude Code commands folder:
# Create global commands dir if it doesn't exist
mkdir -p ~/.claude/commands
# Copy all skills
cp notion-workflow-mcp/.claude/commands/*.md ~/.claude/commands/
Option C: Symlink (auto-sync with updates)
mkdir -p ~/.claude/commands
ln -sf $(pwd)/notion-workflow-mcp/.claude/commands/*.md ~/.claude/commands/
After installation, restart Claude CLI. Verify by typing /capture — it should be recognized as a slash command.
7. Install skills
Skills (like decompose-task) are AI-powered workflows in .claude/skills/. Unlike slash commands, skills are auto-discovered by Claude Code from the current directory — no manual registration needed.
Option A: Work inside this project directory
Skills are automatically available when you run claude from notion-workflow-mcp/.
Option B: Make skills globally available
# Copy all skills to global skills directory
cp -r notion-workflow-mcp/.claude/skills/* ~/.claude/skills/
Option C: Symlink (auto-sync with updates)
for dir in notion-workflow-mcp/.claude/skills/*/; do
ln -sf "$(cd "$dir" && pwd)" ~/.claude/skills/
done
After installation, restart Claude CLI. Skills will appear in the skill list automatically.
Workflow
# 1. Create a task under a project
/capture 重构Notion MCP -p MCP改造 -d 2026-03-28
# 2. Add subtasks
/subtask abc123 去掉关联功能 -pri 高
/subtask abc123 增加项目字段 -pri 紧急
/subtask abc123 创建skill
# 3. View all incomplete tasks
/task_list
# 4. Start working on a subtask
/status abc123 doing 去掉关联功能
# 5. Ask AI a question, then save the answer as a note
> Go 的 context 包怎么用?
> [AI explains...]
/note
# 6. Mark subtask done
/status abc123 done 去掉关联功能
# 7. Update progress
/progress abc123
# 8. End of day review
/review today
# 9. Friday weekly report
/review this week
MCP Tools
| Group | Tools |
|---|---|
| Workflow | list_tasks get_task create_task update_task start_task complete_task append_task search_tasks |
| Subtasks | get_subtasks update_subtasks update_subtask_detail |
| Notes | list_notes get_note create_note append_note search_notes |
| Aggregations | get_overview get_today_tasks `generate_st |
Tools (19)
list_tasksList all tasks from the workflow databaseget_taskRetrieve details for a specific taskcreate_taskCreate a new task in the workflow databaseupdate_taskUpdate an existing taskstart_taskMark a task as startedcomplete_taskMark a task as completedappend_taskAppend information to a tasksearch_tasksSearch for tasks based on criteriaget_subtasksRetrieve subtasks for a specific taskupdate_subtasksUpdate subtask informationupdate_subtask_detailUpdate specific details of a subtasklist_notesList all notes from the notes databaseget_noteRetrieve a specific notecreate_noteCreate a new noteappend_noteAppend content to an existing notesearch_notesSearch through notesget_overviewGet a high-level overview of tasksget_today_tasksList tasks due or active todaygenerate_summaryGenerate a summary of tasks or notesEnvironment Variables
NOTION_TOKENrequiredIntegration token from NotionWORKFLOW_DATABASE_IDrequiredID of the Notion database used for tasksNOTES_DATABASE_IDrequiredID of the Notion database used for notesConfiguration
{"mcpServers": {"notion-workflow": {"command": "/path/to/notion-workflow-mcp/.venv/bin/python", "args": ["/path/to/notion-workflow-mcp/server.py"]}}}