notion-tasks
Manage tasks in Notion. List, create, update tasks. Use for any Notion task-related operations.
When & Why to Use This Skill
This Claude skill provides a comprehensive interface for managing Notion task databases via the Notion MCP server. It enables seamless project tracking by allowing users to list, fetch, create, and update tasks with full support for custom properties and markdown content, streamlining the transition from conversation to actionable project items.
Use Cases
- Automated Task Entry: Quickly create new Notion tasks directly from chat discussions or by converting external data like GitHub issues into database entries.
- Project Status Updates: Efficiently update task properties such as 'Status', 'Priority', and 'Due Date' to keep project boards synchronized in real-time.
- Documentation Management: Update and append detailed task descriptions or meeting notes within Notion pages using rich markdown support.
- Workflow Optimization: Search and filter through large task databases to identify 'Not started' items or high-priority blockers without leaving the AI interface.
| name | notion-tasks |
|---|---|
| description | Manage tasks in Notion. List, create, update tasks. Use for any Notion task-related operations. |
Notion Tasks Management
Manage tasks in a Notion database using the Notion MCP server.
Prerequisites
Requires the Notion MCP server to be configured. Add to your MCP settings:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.notion.com/mcp"]
}
}
}
Configuration
Before using this skill, configure your task database:
- Database URL: Your Notion database URL
- Data Source ID: The collection ID (get from fetching the database)
Example configuration (add to your project's skill copy):
Database URL: https://www.notion.so/{database_id}
Data Source ID: collection://{data_source_id}
Database Schema
Recommended schema for task tracking:
| Property | Type | Options/Description |
|---|---|---|
| Task name | title | Task title (required) |
| Status | status | Not started, In progress, Done |
| Priority | select | High, Medium, Low |
| Effort level | select | Small, Medium, Large |
| Description | text | Short summary |
| Task type | multi_select | Bug, Feature request, Polish |
| PR | url | GitHub PR link |
| Assignee | person | Who's responsible |
| Due date | date | Deadline |
Note: Multi-select options may include emojis (e.g., 🐞 Bug, 💬 Feature request, 💅 Polish). Always use the exact option names from your database schema.
Available Operations
1. List Tasks
Search and filter tasks in the database:
mcp__notion__notion-search
- query: "search term"
- data_source_url: "collection://{data_source_id}"
Note: Search doesn't filter by Status. Fetch individual pages to check properties.
2. Fetch Task Details
Get full task content and properties:
mcp__notion__notion-fetch
- id: {page_id_or_url}
3. Create a Task
mcp__notion__notion-create-pages
- parent: { "data_source_id": "{data_source_id}" }
- pages: [{
"properties": {
"Task name": "Task title",
"Status": "Not started",
"Priority": "High",
"Description": "Task description"
},
"content": "## Task Description\n..."
}]
4. Update Task Properties
mcp__notion__notion-update-page
- data: {
"page_id": "{page_id}",
"command": "update_properties",
"properties": {
"Status": "In progress",
"PR": "https://github.com/..."
}
}
5. Update Task Content
Replace all content:
mcp__notion__notion-update-page
- data: {
"page_id": "{page_id}",
"command": "replace_content",
"new_str": "## New content\n..."
}
Insert after specific text:
mcp__notion__notion-update-page
- data: {
"page_id": "{page_id}",
"command": "insert_content_after",
"selection_with_ellipsis": "## Section...end text",
"new_str": "\n## New Section\nContent here"
}
Critical: Always fetch the page first before using insert_content_after or replace_content_range.
Markdown Content Support
Notion supports these markdown elements:
- Bold, italic,
code,strikethrough - Headers:
#,##,### - Lists:
-,1. - Checkboxes:
- [ ],- [x] - Blockquotes:
> - Code blocks:
```language - Tables:
| col1 | col2 | - Dividers:
--- - Links:
[text](url)
Workflow Examples
Get all "Not started" tasks
- Search data source for tasks
- Fetch each result
- Filter where Status === "Not started"
Move task to "In progress" with PR link
- Fetch task to confirm current state
- Update properties: Status + PR
Create task from GitHub issue
- Create page in data source
- Set Task name, Status, Priority, Task type
- Add content with issue description
Limitations
- No status filtering in search - must fetch individual pages
- No bulk updates - update one page at a time
- Content sync timing - always re-fetch before content edits
- Page icons - cannot be set via MCP (set manually in Notion UI)
Tool Reference
| Tool | Purpose |
|---|---|
mcp__notion__notion-search |
Search pages/databases |
mcp__notion__notion-fetch |
Get page/database details |
mcp__notion__notion-create-pages |
Create new pages |
mcp__notion__notion-update-page |
Update page properties/content |
mcp__notion__notion-create-database |
Create new database |
mcp__notion__notion-update-database |
Update database schema |