taskpaper-mcp-server
Click on "Deploy 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., "@taskpaper-mcp-server add task 'Buy milk' to Inbox project"
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.
taskpaper-mcp-server
Model Context Protocol server for automating TaskPaper on macOS.
This server talks to TaskPaper through JavaScript for Automation (osascript -l JavaScript) and TaskPaper's document.evaluate({ script, withOptions }) bridge. It exposes a small set of safe, fixed tools rather than arbitrary TaskPaper JavaScript execution.
Requirements
macOS
TaskPaper installed
Node.js 20+
Automation permission for the MCP host to control TaskPaper
Related MCP server: Things MCP
Tools
taskpaper_status- check install/running status and open document counttaskpaper_read_front_document- read the front document as TaskPaper texttaskpaper_read_file- read a.taskpaperfile from disktaskpaper_search_items- search tasks. Passfileto search a.taskpaperfile directlytaskpaper_add_task- add a task to root or a named project. Passfileto edit a.taskpaperfile directly; otherwise it tries the front TaskPaper document.taskpaper_complete_task- mark the first matching task as@done(yyyy-mm-dd). Passfileto edit a.taskpaperfile directlytaskpaper_list_projects- list projects in a.taskpaperfiletaskpaper_archive_done- move done tasks into an archive project in a.taskpaperfiletaskpaper_set_filter- set the front document's TaskPaper filter
For reliability, prefer passing an explicit file path. TaskPaper window ordering is not stable enough to make front-document writes the primary workflow.
Development
npm install
npm test
npm run buildRun locally over stdio:
npm run build
node dist/server.jsExample MCP configuration:
{
"mcpServers": {
"taskpaper": {
"command": "node",
"args": ["/absolute/path/to/taskpaper-mcp-server/dist/server.js"]
}
}
}Example direct file write:
{
"file": "/Users/you/tasks.taskpaper",
"project": "Inbox",
"text": "Buy milk",
"due": "today",
"tags": {
"home": true
}
}Humans can ask in natural language, for example "add buy milk to Inbox for today". The model should pass text, project, and friendly metadata such as due, start, or tags; the server writes valid TaskPaper tags like @due(today) into the file.
Example complete task in a file:
{
"file": "/Users/you/tasks.taskpaper",
"query": "Buy milk",
"date": "2026-07-07"
}Example archive done tasks:
{
"file": "/Users/you/tasks.taskpaper",
"archiveProject": "Archive"
}Available Tools
9 toolstaskpaper_add_taskAdd TaskPaper TaskC
Add a task to the root or a named project in the front TaskPaper document.
Inputs: text (required), due, file, tags, +4 more.
taskpaper_archive_doneArchive Done TaskPaper TasksB
Move done tasks in a TaskPaper file into an archive project.
Inputs: file (required), archiveProject.
taskpaper_complete_taskComplete TaskPaper TaskB
Mark the first item matching a TaskPaper query as done. Pass file to edit a .taskpaper file directly.
Inputs: query (required), date, file.
taskpaper_list_projectsList TaskPaper ProjectsC
List projects in a TaskPaper file.
Inputs: file (required).
taskpaper_read_fileRead TaskPaper FileC
Read a TaskPaper file from disk.
Inputs: file (required).
taskpaper_read_front_documentRead Front TaskPaper DocumentA
Read the serialized text of the front TaskPaper document.
Inputs: no named parameters.
taskpaper_search_itemsSearch TaskPaper ItemsC
Search TaskPaper items. Pass file to search a .taskpaper file directly.
Inputs: query (required), file.
taskpaper_set_filterSet TaskPaper FilterC
Set the item path filter on the front TaskPaper document.
Inputs: query (required).
taskpaper_statusTaskPaper StatusA
Check whether TaskPaper is installed/running and count open documents.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: adding, completing, archiving, listing, reading, searching, filtering, and checking status. No overlap between tools.
All tools start with 'taskpaper_' and mostly follow verb_noun pattern (e.g., 'add_task', 'complete_task'). However, 'status' is a noun without a verb, and 'archive_done' uses a past participle instead of a clear verb, creating minor inconsistency.
9 tools cover the essential operations for a TaskPaper server without being excessive or insufficient. The scope is well-balanced.
Core operations like read, add, complete, search, filter, and archive are covered. Missing features like task deletion or project creation are notable but not critical for basic workflow.
Maintenance
Related MCP Connectors
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables automation and management of OmniFocus tasks, projects, and tags using natural language and programmable interfaces from VS Code, command line, or any MCP-compatible client.12MIT
- AlicenseAqualityCmaintenanceAn MCP server for Things 3 on macOS that enables AI assistants to create, read, update, and manage tasks and projects. It utilizes the Things URL scheme for write operations and AppleScript for querying data from the app.1522 npm2MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to interact with OmniFocus on macOS via JXA, supporting task, project, folder, tag, perspective, and search operations.3134 npmMIT
- AlicenseBqualityBmaintenanceAn MCP server for AI assistants to query and manage OmniFocus tasks, projects, and tags on macOS.1130 PyPIMIT