claude-todo
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., "@claude-todoadd a todo to review the auth PR tomorrow, high importance"
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.
claude-todo
A lightweight MCP server that gives Claude Code a persistent todo list. Todos are stored in SQLite (built-in node:sqlite, WAL mode), so they survive restarts and are safe to use from several Claude sessions at once.
Requirements
Node.js >= 22.13
Related MCP server: Notion MCP Integration
Setup
npm installRegister it in .mcp.json (project) or ~/.claude/.mcp.json (user):
{
"mcpServers": {
"todo": {
"command": "node",
"args": ["/absolute/path/to/claude-todo/src/index.js"]
}
}
}Tools
Tool | Input | Output |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Output is Markdown. Each todo is a section with the checkbox and slug in the heading, one meta item per line, then the prompt as the body:
# Todos (2 open, 3 total)
## [ ] iiot-examen-pratique-1
Importance: high
Date: 2026-09-28 08:10
Study chapters 3-5.
Redo the Modbus lab.
## [ ] write-docs
Importance: medium
Date: 2026-10-01
Write the README.
## [x] old-task
Importance: low
Date: none
Old thing[ ]open,[x]done.DateisYYYY-MM-DDfor all-day todos, localYYYY-MM-DD HH:MMfor timed ones, ornone.The heading counts cover everything matched;
, showing Nis appended whenlimitcut the results.
Errors return isError: true with # Error <CODE> followed by the message, where CODE is one of NOT_FOUND, SLUG_EXISTS, INVALID_DATE, INVALID_INPUT.
Behavior
Ordering: by date (undated last), then importance (high first), then creation time.
Ranges:
day= due today or earlier,week= due by the end of this week (Monday–Sunday) or earlier. Overdue todos are always included; undated todos only appear withany.Dates: input without a timezone is taken in the local machine timezone.
All-day:
today,tomorrow,YYYY-MM-DDTimed:
HH:MM[:SS](today),today 14:00,tomorrow 09:30,YYYY-MM-DD HH:MM[:SS],YYYY-MM-DDTHH:MM[:SS]Relative:
+30m,+2h,+1d,+1wISO 8601 with
Zor an offset keeps its own zone; it is stored converted to local time.
Slugs: unique among open todos. Adding a slug that belongs to a done todo replaces it. Slugs cannot be changed after creation.
Updates: only the fields passed change. Done todos can be updated too and stay done.
Search: case-insensitive substring match on slug and prompt.
Configuration
Var | Default | Meaning |
|
| Directory holding |
Available Tools
6 toolstodo_addA
Create a todo. Fails with SLUG_EXISTS if an open todo already uses the slug; a done todo with the same slug is replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Due date. All-day: "today", "tomorrow", "YYYY-MM-DD". Timed, in the local machine timezone: "HH:MM" (today), "today 14:00", "tomorrow 09:30", "YYYY-MM-DD HH:MM[:SS]" or "YYYY-MM-DDTHH:MM[:SS]". Relative: "+30m", "+2h", "+1d", "+1w". An ISO 8601 datetime with Z or an offset keeps its own zone | |
| slug | Yes | Unique id, lowercase kebab-case, e.g. "fix-auth-timeout" | |
| prompt | Yes | The task, written as an instruction to yourself | |
| importance | No | medium |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does useful work: it discloses the SLUG_EXISTS failure mode and the non-obvious upsert behavior that a done todo with the same slug gets replaced. It still omits auth/permission needs, pagination, and the return shape, but the edge-case semantics are the highest-value disclosure here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core action front-loaded and the failure/replacement caveat immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param create tool with no annotations and no output schema, the description covers the action plus the two behavioral surprises an agent would otherwise get wrong. It could still say more about the optional date/importance fields' effect, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% and the schema documents all four parameters, including date formats and slug pattern. The description adds no parameter-level meaning beyond restating slug uniqueness, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("Create a todo") plus slug-based identity, which clearly separates it from read-oriented siblings like todo_list and todo_search. It doesn't explicitly name a sibling (e.g., todo_update) to route away from, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says nothing about when to choose this over todo_update (which likely also modifies todos) or whether to check todo_search first. The SLUG_EXISTS note hints at a precondition but is framed as an error, not as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_deleteBDestructive
Permanently delete a todo, open or done.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is covered. The description still adds real value by stating the deletion is permanent/irreversible and applies to todos in any state, which goes beyond the bare annotation. It says nothing about confirmation requirements, dependent items, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action verb front-loaded and no filler. It is efficiently sized, though it is terse enough that the scope qualifier carries a lot of weight on its own.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete with destructiveHint coverage and no output schema, the essentials (permanent, any state) are conveyed. It stops short of describing side effects such as removal of nested/sub-items or whether the action is hard-deletion vs archival, which an agent invoking a destructive tool would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter 'slug' has only a pattern and maxLength constraint, no meaningful description. The description offers no information about what the identifier refers to or where it comes from, so it does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete a todo') and adds scope with 'open or done', which usefully clarifies that state does not gate deletion. It does not explicitly name the sibling it contrasts with (todo_done / todo_update), so identification is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'permanently' implicitly contrasts with todo_done (mark complete) and the 'open or done' phrase implies deletion works regardless of state, so usage is inferable. However, no explicit when-to-use/when-not guidance or named alternative is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_doneAIdempotent
Mark a todo as done. Calling it on an already-done todo is a no-op and reports already_done: true.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare idempotentHint=true; the description goes further by concretely explaining the no-op semantics on an already-done todo and naming the response field already_done: true, which is valuable since no output schema exists. It still omits success-path return info or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the core action is front-loaded and the edge-case behavior follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation with no output schema, the description covers the key non-obvious behavior (idempotent no-op and the already_done flag). It could say more about the success response, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about the 'slug' parameter, so it does not compensate for the gap. The parameter is a single obvious identifier whose format is documented by the schema pattern and maxLength, so the omission is not severe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Mark a todo as done'), which is clearly distinguishable from siblings like todo_add and todo_delete. However, it does not explicitly differentiate from todo_update, which could plausibly also change a todo's state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the name and first sentence, and the description notes the already-done case is harmless, but there is no explicit guidance on when to prefer this over todo_update or other siblings, nor any stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_listBRead-only
List todos ordered by date (undated last), then by importance (high first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| order | No | Date order | asc |
| range | No | "day": due today or earlier. "week": due by the end of this week (Sunday) or earlier. "any": everything, including undated | any |
| status | No | open | |
| importance | No | Only return todos of this importance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the bar is lower, and the description does add real behavioral detail about ordering (undated last, high importance first). It omits the significant default that only open todos are returned, plus any mention of the limit/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste; the most surprising rule (undated last) leads. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with no output schema, the description covers sorting but not the default open-only filter or the 50-item limit, both of which materially affect what an agent gets back. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, with enums carrying their own inline descriptions for order, range, and importance. The description adds ordering meaning the schema lacks (the "order" param only says "Date order"), but says nothing about the status default or the limit parameter, leaving the filtering behavior undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List") and resource ("todos") plus the sort semantics, so the action is unambiguous. However it never distinguishes itself from the sibling todo_search, which is the obvious ambiguity an agent would face here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call todo_list versus todo_search, nor any mention of the default status filter that shapes the result set. Usage is only implied by the verb "List".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_searchCRead-only
Case-insensitive substring search over todo slugs and prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| status | No | open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a search operation, so the safety profile is already covered. The description adds matching semantics (case-insensitive, which fields are searched), but omits notable behavior: the default status filter of 'open' and any pagination/limit behavior, which materially affect results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key matching semantics front-loaded and no filler. Efficient, though it is arguably too spare given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, three parameters at 0% description coverage, and a non-obvious default status filter, the description leaves real gaps an agent needs before calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate. It explains what 'query' matches against, which is genuinely useful, but says nothing about 'limit' or the 'status' enum whose default is 'open' — a filter that silently narrows results without the agent knowing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (substring search) plus resource and match semantics (case-insensitive, over slugs and prompts), which is more than the bare name. It does not explicitly distinguish itself from the sibling todo_list, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus todo_list or when a substring search is preferable to listing. The only implied usage is 'you have a query string', with no exclusions or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_updateA
Update an existing todo, open or done. Only the fields you pass change. The slug cannot be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Due date. All-day: "today", "tomorrow", "YYYY-MM-DD". Timed, in the local machine timezone: "HH:MM" (today), "today 14:00", "tomorrow 09:30", "YYYY-MM-DD HH:MM[:SS]" or "YYYY-MM-DDTHH:MM[:SS]". Relative: "+30m", "+2h", "+1d", "+1w". An ISO 8601 datetime with Z or an offset keeps its own zone. Pass null to clear the date | |
| slug | Yes | Slug of the todo to update | |
| prompt | No | ||
| importance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses two facts not covered by the schema: updates are partial (unspecified fields are preserved) and the slug is immutable. It omits error behavior, whether updates are idempotent, and what happens when the slug does not match an existing todo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each doing distinct work: stating the operation and scope, defining patch behavior, and flagging the immutable field. The most important constraint (partial update) is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations and no output schema, the description covers the essentials of update semantics and the slug constraint, which is adequate. It still leaves gaps around prompt and importance handling, invalid-slug outcomes, and return behavior, so it is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: date is richly documented in the schema, but prompt and importance have no descriptions anywhere, and the tool description adds nothing about them. The description does contribute one parameter-level fact (slug immutability), so it adds some value but does not compensate for the undocumented fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing todo") and adds scope with "open or done," so the agent knows this handles both completion states rather than only pending items. It does not explicitly distinguish itself from siblings like todo_done, which appears to overlap, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Only the fields you pass change" communicates patch semantics, which tells the agent it can send partial updates, and "The slug cannot be changed" flags a constraint. However, there is no explicit routing guidance such as when to use this versus todo_done for marking completion, leaving the alternative selection implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
todo_add - First observed
todo_delete - First observed
todo_done - First observed
todo_list - First observed
todo_search - First observed
todo_update
TDQS
Scored across 6 tools
Each tool targets a distinct operation (list, search, add, delete, update, done) with no meaningful overlap; an agent can pick the right one unambiguously.
All names follow a consistent todo_ prefix with a short verb suffix, forming a predictable pattern throughout. The only slight quirk is todo_done being a state rather than a verb, but the convention is uniform.
Six tools is well-scoped for a todo manager, covering the core lifecycle without redundancy or bloat.
CRUD plus search and completion are covered, but there is no explicit reopen/un-done operation or single-item get, leaving a minor gap agents must work around.
Maintenance
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Notes and actions in one app. Let Claude or ChatGPT read and update them.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Claude to manage todo lists with full CRUD operations including creating, listing, toggling completion status, deleting, and searching todos. Uses SQLite database with Prisma ORM for reliable data persistence and includes optional due date functionality.1-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage a personal todo list in Notion, with capabilities to add, view, and complete tasks.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Todoist tasks and projects, including creating, listing, updating, completing tasks, and managing projects with natural language.25 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables users to manage a personal todo list with CRUD operations, keyword search, and local SQLite storage. Designed for AI agent productivity tools.-