@doist/todoist-mcp 10.1.0 → 10.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/main-http.js +2 -2
- package/dist/main.js +1 -1
- package/dist/{mcp-server-EQIi2OR6.js → mcp-server-CHiDRAcf.js} +1 -1
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/{require-valid-todoist-token-C6anvAtX.js → require-valid-todoist-token-CUPBlKed.js} +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { f as s, s as a, l as e, m as t, a as o, u as d, r as i, d as r, b as n, c as l, e as c, h as p, i as m, j as f, k, n as T, o as u, p as g, q as j, t as v, v as P, w as h, x as S, y as b, z as A, A as y, B as C, C as G, D as F, E as x, F as E, G as L, H as O, I as w, J as H, K as I, L as M, M as q, N as z, O as B, P as D, Q as N, R, S as W } from "./mcp-server-
|
|
2
|
-
import { T as V, g as _ } from "./mcp-server-
|
|
3
|
-
import { r as Y, v as Z } from "./require-valid-todoist-token-
|
|
1
|
+
import { f as s, s as a, l as e, m as t, a as o, u as d, r as i, d as r, b as n, c as l, e as c, h as p, i as m, j as f, k, n as T, o as u, p as g, q as j, t as v, v as P, w as h, x as S, y as b, z as A, A as y, B as C, C as G, D as F, E as x, F as E, G as L, H as O, I as w, J as H, K as I, L as M, M as q, N as z, O as B, P as D, Q as N, R, S as W } from "./mcp-server-CHiDRAcf.js";
|
|
2
|
+
import { T as V, g as _ } from "./mcp-server-CHiDRAcf.js";
|
|
3
|
+
import { r as Y, v as Z } from "./require-valid-todoist-token-CUPBlKed.js";
|
|
4
4
|
const K = {
|
|
5
5
|
// Task management tools
|
|
6
6
|
addTasks: W,
|
package/dist/main-http.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { StreamableHTTPServerTransport as i } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
3
3
|
import p from "dotenv";
|
|
4
4
|
import c from "express";
|
|
5
|
-
import { g as l } from "./mcp-server-
|
|
6
|
-
import { r as d } from "./require-valid-todoist-token-
|
|
5
|
+
import { g as l } from "./mcp-server-CHiDRAcf.js";
|
|
6
|
+
import { r as d } from "./require-valid-todoist-token-CUPBlKed.js";
|
|
7
7
|
p.config({ quiet: !0 });
|
|
8
8
|
const s = Number.parseInt(process.env.PORT || "3000", 10);
|
|
9
9
|
function m() {
|
package/dist/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport as s } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import c from "dotenv";
|
|
4
|
-
import { g as i } from "./mcp-server-
|
|
4
|
+
import { g as i } from "./mcp-server-CHiDRAcf.js";
|
|
5
5
|
function p() {
|
|
6
6
|
const e = process.env.TODOIST_BASE_URL, r = process.env.TODOIST_API_KEY;
|
|
7
7
|
if (!r)
|
package/dist/mcp-server.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { FEATURE_NAMES, Feature, FeatureName, Features } from './mcp-helpers.js';
|
|
3
|
+
export declare const instructions = "\n## Todoist Task and Project Management Tools\n\nYou have access to comprehensive Todoist management tools for personal productivity and team collaboration. Use these tools to help users manage tasks, projects, sections, comments, and assignments effectively.\n\n### Core Capabilities:\n- Create, update, complete, and search tasks with rich metadata (priorities, due dates, durations, assignments)\n- Manage projects and sections with flexible organization\n- Handle comments and collaboration features\n- Bulk assignment operations for team workflows\n- Get overviews and insights about workload and progress\n\n### Tool Usage Guidelines:\n\n**Task Management:**\n- **add-tasks**: Create tasks (max 25 per call) with content, description, priority (`p1`, `p2`, `p3`, `p4` strings only; `p1` highest and `p4` lowest/default; integers are not accepted), dueString (natural language like \"tomorrow\", \"next Friday\", \"2024-12-25\"), deadlineDate (ISO 8601 format like \"2025-12-31\" for immovable constraints), duration (formats like \"2h\", \"90m\", \"2h30m\"), and assignments to project collaborators\n- **update-tasks**: Modify existing tasks - get task IDs from search results first, only include fields that need changes. Supports priority updates using `p1`/`p2`/`p3`/`p4` string values (`p1` highest, `p4` lowest/default; integers are not accepted), due date updates via dueString and due date removal via \"dueString: remove\", plus deadlineDate (ISO 8601 format like \"2025-12-31\") updates and removals via \"deadlineDate: remove\". **IMPORTANT: Do NOT use update-tasks to reschedule/move task dates \u2014 use reschedule-tasks instead.** update-tasks replaces the entire due string which destroys recurrence patterns on recurring tasks.\n- **reschedule-tasks**: **Always use this tool when moving/rescheduling task due dates to a different date.** This tool preserves recurring schedules and existing time-of-day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. Works for both recurring and non-recurring tasks. Do NOT use update-tasks for rescheduling.\n- **complete-tasks**: Mark tasks as done using task IDs\n- **uncomplete-tasks**: Reopen completed tasks using task IDs\n- **find-tasks**: Search by text, project/section/parent container, responsible user, labels, a raw Todoist `filter` string (e.g. \"today\", \"p1\", \"##Work\", \"(today | overdue) & p1\"), or a saved filter by ID or name (`filterIdOrName`). Requires at least one search parameter. `filter`/`filterIdOrName` cannot be combined with projectId/sectionId/parentId, and `filter` and `filterIdOrName` are mutually exclusive.\n- **find-tasks-by-date**: Get tasks by date range (startDate: YYYY-MM-DD or 'today' which includes overdue tasks) or specific day counts\n- **find-completed-tasks**: View completed tasks by completion date or original due date; if since/until are omitted, defaults to the last 7 days (returns all collaborators unless filtered)\n\n**Project & Organization:**\n- **add-projects/update-projects/find-projects**: Manage project lifecycle with names, favorites, view styles (list/board/calendar), and workspace assignment for new projects (by name or ID)\n- **project-management**: Archive or unarchive projects by ID\n- **project-move**: Move projects between personal and workspace contexts\n- **add-sections/update-sections/find-sections**: Organize tasks within projects using sections\n- **find-goals/add-goals/update-goals**: Manage goals (personal or workspace). Goals track progress via linked tasks\n- **complete-goals**: Complete or uncomplete goals by ID\n- **link-goal-tasks**: Link or unlink tasks to/from a goal\n- **get-overview**: Get comprehensive Markdown overview of entire account or specific project with task hierarchies. Project data includes parentId (sub-projects), folderId (workspace folder membership), and childOrder (sibling ordering)\n- **list-workspaces**: Get all workspaces for the user with details like plan type, role, and settings\n\n**Reminders:**\n- **add-reminders**: Create reminders for tasks. Three types: \"relative\" (minutes before due), \"absolute\" (specific date/time), or \"location\" (geofence-triggered). Each reminder must specify a taskId.\n- **find-reminders**: Find reminders by task ID (returns both time-based and location reminders), or get a specific reminder by ID (use reminderId for time-based, locationReminderId for location-based).\n- **update-reminders**: Update existing reminders. Must specify the reminder type (\"relative\", \"absolute\", or \"location\") and ID.\n- Relative and absolute reminders support an **isUrgent** flag to mark a reminder as urgent.\n- Reminders can be deleted using **delete-object** with type \"reminder\" (time-based) or \"location_reminder\" (location-based).\n\n**Collaboration & Comments:**\n- **add-comments/update-comments/find-comments**: Manage task and project discussions\n- **view-attachment**: View file attachments from comments. Pass the fileUrl from a comment's fileAttachment. Returns images inline, text files as text, and binary files as embedded resources.\n- **find-project-collaborators**: Look up Todoist users (collaborators, teammates) by name or email to get their user ID \u2014 use for \"find/who is X\" questions or any time you need to resolve a person's name to an ID. By default searches collaborators of every shared project the authenticated user can access (plus the authenticated user themselves). An empty result means the person is not a collaborator on any shared project, not that they do not exist. Pass projectId to scope to a single project\n- **manage-assignments**: Bulk assign/unassign/reassign up to 50 tasks with atomic operations and dry-run validation\n\n**Filters:**\n- **find-filters**: List all personal filters or search by name; filters are saved task views using query syntax\n- **add-filters**: Create personal filters with name, query (e.g. \"today & p1\"), color, and favorite flag\n- **update-filters**: Modify existing filters' name, query, color, or favorite status\n\n**Activity & Audit:**\n- **find-activity**: Retrieve recent activity logs to monitor and audit changes. Shows events from all users by default; use initiatorId to filter by specific user. Filter by object type (task/project/comment), event type (added/updated/deleted/completed/uncompleted/archived/unarchived/shared/left), and specific objects (objectId, projectId, taskId). Useful for tracking who did what and when. Note: Date-based filtering is not supported.\n- **get-productivity-stats**: Get comprehensive productivity statistics including daily/weekly completion breakdowns, goal streaks (current, last, max), karma score and trends, and historical karma data. No parameters required.\n\n**Project Health & Insights:**\n- **get-project-health**: Get comprehensive health assessment for a project including completion progress (completed/active counts, percentage), health status (EXCELLENT/ON_TRACK/AT_RISK/CRITICAL), description, and task-level recommendations. Use includeContext=true for detailed metrics (overdue tasks, weekly activity, avg completion time) and full task data. Health data may be stale \u2014 check isStale flag.\n- **get-project-activity-stats**: Get daily and optional weekly activity statistics for a project over a configurable time window (1-12 weeks). Useful for identifying activity trends.\n- **analyze-project-health**: Trigger a new health analysis for a project. Use when health data is stale. The analysis may take time \u2014 use get-project-health afterward to see updated results.\n- **get-workspace-insights**: Get aggregated health and progress insights across all projects in a workspace. Accepts workspace name or ID, with optional project ID filtering.\n\n**General Operations:**\n- **delete-object**: Remove projects, sections, tasks, comments, labels, filters, reminders, or location reminders by type and ID\n- **fetch-object**: Fetch a single task, project, comment, or section by its ID\n- **reorder-objects**: Reorder sibling projects or sections, and optionally move projects to a new parent. For projects: set order to reorder siblings, and/or set parentId to move under a new parent (use \"root\" for top level). For sections: set order to reorder within a project\n- **user-info**: Get user details including timezone, goals, and plan information\n\n### Best Practices:\n\n1. **Task Creation**: Write clear, actionable task titles. Use natural language for due dates (\"tomorrow\", \"next Monday\"). Set appropriate priorities and include detailed descriptions when needed.\n\n2. **Search Strategy**: Use specific search queries combining multiple filters for precise results. When searching for tasks, start with broader queries and narrow down as needed.\n\n3. **Assignments & user lookup**: Always validate project collaborators exist before assigning tasks. Use find-project-collaborators to verify user access. Also use find-project-collaborators (with just a searchTerm and no projectId) to resolve a user's ID whenever the user references a person by name or email \u2014 it searches collaborators of all shared projects you can access, plus yourself.\n\n4. **Bulk Operations**: When working with multiple items, prefer bulk tools (complete-tasks, manage-assignments) over individual operations for better performance.\n\n5. **Date Handling**: All dates respect user timezone settings. Use 'today' keyword for dynamic date filtering (includes overdue tasks). **When rescheduling/moving tasks to a different date, always use reschedule-tasks** \u2014 never update-tasks with dueString, as that destroys recurrence on recurring tasks.\n\n6. **Labels**: Use label filtering with AND/OR operators for advanced task organization. Most search tools support labels parameter. Use **find-labels** to discover personal and shared labels \u2014 use label **names** (not IDs) when filtering tasks, and use label **IDs** only with **delete-object** and **update-labels** (for personal label updates). Use **add-labels** to create new personal labels. Use **update-labels** to rename or recolor personal labels (by ID), or to rename shared labels (by name) \u2014 note that shared labels support renaming only, not color/order/favorite changes.\n\n7. **Pagination**: Large result sets use cursor-based pagination. Use limit parameter to control result size (default varies by tool).\n\n8. **Error Handling**: All tools provide detailed error messages and next-step suggestions. Pay attention to validation feedback for corrective actions.\n\n### Common Workflows:\n\n- **Daily Planning**: Use find-tasks-by-date with 'today' and get-overview for project status\n- **Team Assignment**: find-project-collaborators \u2192 add-tasks with responsibleUser \u2192 manage-assignments for bulk changes\n- **User Lookup**: find-project-collaborators with just a searchTerm (no projectId) to resolve a name or email to a Todoist user ID across all shared-project collaborators you can access\n- **Task Search**: find-tasks with multiple filters \u2192 update-tasks or complete-tasks based on results\n- **Project Organization**: add-projects \u2192 add-sections \u2192 add-tasks with projectId and sectionId\n- **Progress Reviews**: find-completed-tasks (defaults to last 7 days; optionally use explicit date ranges) \u2192 get-overview for project summaries\n- **Activity Auditing**: find-activity with event/object filters to track changes, monitor team activity, or investigate specific actions\n- **Productivity Analysis**: Use the productivity-analysis prompt for comprehensive analysis combining user-info, get-productivity-stats, and find-completed-tasks data into actionable insights\n- **Project Health Reviews**: get-project-health \u2192 analyze-project-health if stale \u2192 get-project-health with includeContext=true for detailed metrics \u2192 get-workspace-insights for cross-project overview\n\nAlways provide clear, actionable task titles and descriptions. Use the overview tools to give users context about their workload and project status.\n";
|
|
3
4
|
/**
|
|
4
5
|
* Create the MCP server.
|
|
5
6
|
* @param todoistApiKey - The API key for the todoist account.
|
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EACH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEhB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EACH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEhB,MAAM,kBAAkB,CAAA;AAsDzB,eAAO,MAAM,YAAY,ywXAoGxB,CAAA;AAED;;;;;;GAMG;AACH,iBAAS,YAAY,CAAC,EAClB,aAAa,EACb,OAAO,EACP,QAAa,GAChB,EAAE;IACC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACtB,aA+HA;AAED,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/todoist-mcp",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"@vitejs/plugin-react": "5.2.0",
|
|
86
86
|
"concurrently": "9.2.1",
|
|
87
87
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
88
|
+
"gpt-tokenizer": "3.4.0",
|
|
88
89
|
"husky": "9.1.7",
|
|
89
90
|
"lint-staged": "16.4.0",
|
|
90
91
|
"morgan": "1.10.1",
|