Obsidian Tasks MCP Server
Provides tools for managing tasks in an Obsidian vault, including CRUD operations, querying with Obsidian Tasks syntax, and support for due dates, priorities, tags, and recurrence.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Obsidian Tasks MCP ServerAdd a task to buy groceries due tomorrow"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Obsidian Tasks MCP Server
An Obsidian plugin that exposes task management functionality via MCP (Model Context Protocol), enabling AI assistants like Claude to interact with your tasks directly.
Features
Full CRUD operations: Add, update, remove, and toggle tasks programmatically
Query tasks using Obsidian Tasks syntax with powerful filtering
Smart defaults: Tasks are added to today's Daily Note by default
Tasks plugin integration: When available, leverages Tasks plugin API for proper recurrence handling
Real-time vault sync: Uses Obsidian's Vault API for reliable file operations
Rich metadata support: Dates, priority, tags, recurrence rules
Related MCP server: Dida365 MCP Server
Installation
From GitHub Release
Go to Releases
Download
main.jsandmanifest.jsonfrom the latest releaseIn your vault, create folder:
.obsidian/plugins/tasks-mcp/Copy the downloaded files into this folder
Open Obsidian Settings > Community plugins
Turn off "Restricted mode" if enabled
Find "Tasks MCP Server" and enable it
Build from Source
git clone https://github.com/dss99911/obsidian-tasks-mcp.git
cd obsidian-tasks-mcp
npm install
npm run buildCopy main.js and manifest.json to your vault's .obsidian/plugins/obsidian-tasks-mcp/ folder.
Local Development
Setup
Clone the repository:
git clone https://github.com/dss99911/obsidian-tasks-mcp.gitInstall dependencies:
cd obsidian-tasks-mcp npm installIdentify your Obsidian vault's plugin folder:
# Example: <YOUR_VAULT>/.obsidian/plugins/obsidian-tasks-mcp/
Development Workflow
Option 1: Symlink (Recommended)
Create a symlink from your vault's plugin folder to the source:
# Remove existing plugin folder if exists
rm -rf <YOUR_VAULT>/.obsidian/plugins/obsidian-tasks-mcp
# Create symlink
ln -s /path/to/obsidian-tasks-mcp <YOUR_VAULT>/.obsidian/plugins/obsidian-tasks-mcpNow builds will automatically be available to Obsidian.
Option 2: Manual Copy
After each build, copy files to the plugin folder:
npm run build
cp main.js manifest.json <YOUR_VAULT>/.obsidian/plugins/obsidian-tasks-mcp/Build Commands
# Production build
npm run build
# Development build with watch mode
npm run devReload Plugin
After building, reload the plugin in Obsidian:
Settings → Community plugins
Toggle off "Tasks MCP Server"
Toggle on "Tasks MCP Server"
Or restart Obsidian.
Configuration
MCP Client Setup
Add to your Claude Code MCP configuration (~/.claude/mcp.json or project .mcp.json):
{
"mcpServers": {
"obsidian-tasks": {
"type": "http",
"url": "http://localhost:3789/mcp"
}
}
}Plugin Settings
In Obsidian Settings > Tasks MCP Server:
Server Port: Default 3789, configurable
Auto-start: Server starts automatically when Obsidian launches (default: on)
Tools
add_task
Add a new task to a file. If no filePath is provided, adds to today's Daily Note.
Parameters:
description(required): Task descriptionfilePath: Target file path (defaults to Daily Note)dueDate: Due date in YYYY-MM-DD formatscheduledDate: Scheduled date in YYYY-MM-DD formatstartDate: Start date in YYYY-MM-DD formatpriority: One ofhighest,high,medium,low,lowesttags: Array of tags (with or without # prefix)recurrence: Recurrence rule (e.g., "every day", "every week")
update_task
Update an existing task. Provide either taskId (from query results) or both filePath and lineNumber.
Parameters:
taskId: Task ID in format "filePath:lineNumber"filePath+lineNumber: Alternative to taskIddescription: New task descriptionstatus: One ofincomplete,complete,cancelled,in_progressdueDate: Due date (empty string to remove)scheduledDate: Scheduled date (empty string to remove)startDate: Start date (empty string to remove)priority: Priority level ornoneto removetags: Array of tags (replaces existing)recurrence: Recurrence rule (empty string to remove)
remove_task
Remove a task from a file.
Parameters:
taskId: Task ID in format "filePath:lineNumber"filePath+lineNumber: Alternative to taskId
toggle_task
Toggle a task's completion status. When Tasks plugin is available, properly handles:
Completion dates
Recurring tasks (creates next occurrence)
Custom status symbols
Parameters:
taskId: Task ID in format "filePath:lineNumber"filePath+lineNumber: Alternative to taskId
query_tasks
Search tasks using Obsidian Tasks query syntax. Each line is a filter with AND logic.
Supported filters:
Category | Filters |
Status |
|
Due date |
|
Scheduled |
|
Start date |
|
Tags |
|
Path |
|
Description |
|
Priority |
|
Recurrence |
|
Boolean |
|
Example:
not done
due before 2025-05-01
tag includes #work
priority is highlist_tasks
Lists all tasks from a specific file or all markdown files with metadata including:
Status, description, file path, line number
Due date, scheduled date, start date, created date
Tags, priority, recurrence rules
get_tasks_by_date
Gets tasks for a specific due date with optional overdue task inclusion.
Parameters:
date(required): Due date in YYYY-MM-DD formatincludeOverdue: Include overdue tasks (default: false)
API Endpoints
POST /mcp- MCP JSON-RPC endpointGET /sse- Server-Sent Events connectionGET /health- Health check (returns Tasks plugin availability)
Requirements
Obsidian v1.0.0+
Tasks plugin (optional, recommended for recurrence handling)
The plugin works without Tasks plugin installed. When Tasks plugin is available,
toggle_taskuses its API for proper recurrence handling.
Commands
Toggle MCP Server: Start/stop the server manually
Show MCP Server Status: Display current server status
Task Format
Recognizes standard Obsidian Tasks format:
Checkbox:
- [ ](incomplete),- [x](complete),- [-](cancelled),- [/](in progress)Due date:
📅 YYYY-MM-DDor🗓️ YYYY-MM-DDScheduled date:
⏳ YYYY-MM-DDStart date:
🛫 YYYY-MM-DDCreated date:
➕ YYYY-MM-DDPriority:
⏫⏫(highest),⏫(high),🔼(medium),🔽(low),⏬(lowest)Recurrence:
🔁 every day/week/monthTags:
#tag1 #tag2
Example:
- [ ] Complete project report 📅 2025-05-01 ⏳ 2025-04-25 #work ⏫Security Note
This plugin runs an HTTP server on localhost. Only local applications can connect to it. If you need remote access, consider using a secure tunnel.
Documentation
Blog: Manage Obsidian Tasks with AI - Tasks MCP Plugin Guide - Detailed guide with use cases and examples
License
MIT License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dss99911/obsidian-tasks-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server