Skip to main content
Glama
X4MU-L

Todo MCP Server

by X4MU-L

📝 Todo MCP Server

A simple Todo List MCP server built for learning!

What is this?

This is an MCP (Model Context Protocol) server that gives AI assistants (like Claude) the ability to manage a todo list for you.

Tools Included:

  • add_todo - Add a new task

  • list_todos - See all your tasks

  • complete_todo - Mark a task as done ✅

  • delete_todo - Remove a task 🗑️


Related MCP server: mcp-server-interview

🚀 Quick Start

1. Install dependencies

cd todo-mcp
npm install

2. Build the project

npm run build

3. Test it works

node index.js

(Press Ctrl+C to stop - it will just wait for input)


🔌 Connect to Claude Desktop

Edit your Claude Desktop config file:

Mac: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Add this to the file:

{
  "mcpServers": {
    "todo": {
      "command": "node",
      "args": ["/FULL/PATH/TO/todo-mcp/index.js"]
    }
  }
}

⚠️ Replace /FULL/PATH/TO/ with the actual path to your todo-mcp folder!

Then restart Claude Desktop.


🔌 Connect to Codebuff

Create or edit .codebuff/config.json in your project:

{
  "mcpServers": {
    "todo": {
      "command": "node",
      "args": ["/FULL/PATH/TO/todo-mcp/index.js"]
    }
  }
}

Or add to global config at ~/.codebuff/config.json.

Then restart Codebuff.


💡 How to Use

Once connected, just talk to Claude naturally:

  • "Add 'buy groceries' to my todo list"

  • "What's on my todo list?"

  • "Mark todo #1 as complete"

  • "Delete todo #2"

Claude will automatically use the right tools!


📚 Learning More

Look at index.ts - it's full of comments explaining every part!

Key concepts:

  1. Tools = Actions the AI can take

  2. inputSchema = What info each tool needs

  3. Request Handlers = Code that runs when tools are used


⚠️ Note

Todos are stored in memory only - they disappear when the server restarts. This is intentional for learning! A real app would save to a file or database.

Available Tools

4 tools
add_todoA

Add a new todo item to the list. Returns the created todo with its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe todo text - what needs to be done

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses that the created todo is returned with its ID, which is useful. However, it omits details like error conditions or idempotency, though for a simple add operation these may be less critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. Action and return value are stated upfront, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema or annotations, the description adequately covers the action and return value. It lacks explicit usage context, but the simplicity of the operation makes this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with text described as 'The todo text - what needs to be done'. The description adds no extra parameter details, but the baseline of 3 applies when the schema already documents the parameter adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Add a new todo item to the list' with a specific verb and resource, clearly distinguishing from sibling tools list_todos, complete_todo, and delete_todo. Also mentions return value, further clarifying its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'Add' implies usage for creating todos, but there is no explicit guidance on when to use this tool versus alternatives. No exclusions or sibling comparisons are provided, leaving the agent to infer usage from the name and action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_todoA

Mark a todo item as done/completed by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID number of the todo to mark as done

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states the state change ('done/completed') without mentioning irreversibility, error handling for non-existent IDs, required permissions, or side effects. This is a significant gap for a state-changing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler or repetition. It conveys the essential information efficiently without redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a form with one simple parameter and no output schema, the description is mostly adequate, but it lacks behavioral transparency (e.g., return value, error behavior) that would be helpful. It is a minimal viable description but leaves gaps relevant to agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole param is self-explanatory ('The ID number of the todo to mark as done'). The tool description adds no extra meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Mark') and resource ('todo item') with a clear mechanism ('by its ID'), making the action unambiguous. It also differentiates from siblings (add, list, delete) by focusing on the completion state change.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a todo ID and want to mark it as done, but it does not explicitly state when to use this over alternatives like delete_todo or add_todo. No exclusions or context are given, so guidance is merely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_todoB

Remove a todo item from the list by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID number of the todo to delete

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that a todo is removed, implying destructiveness, but does not disclose whether the removal is permanent, whether it is idempotent, what happens if the ID does not exist, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear, front-loaded sentence with no wasted words. It effectively communicates the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is incomplete. It does not describe the return value, error handling, or consequences of deletion. While the operation is simple, an agent would benefit from knowing whether the deletion is permanent or what response to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single parameter 'id' with 100% coverage, describing it as 'The ID number of the todo to delete'. The description's phrase 'by its ID' adds no additional meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (remove) and the resource (todo item) and specifies the mechanism (by its ID). This distinguishes it from sibling tools like complete_todo, add_todo, and list_todos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that complete_todo is for marking as done, or that this is for permanent deletion. The only hint is the verb 'Remove', which is implicit rather than explicit usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_todosA

Get all todo items as a structured list with IDs, text, completion status, and creation dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFilter todos: 'all' (default), 'pending' (not done), or 'completed' (done)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses that the tool returns a structured list with IDs, text, completion status, and creation dates, and that it returns all items. It does not mention caveats like filtering behavior, but that is covered by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, 17 words, front-loaded with the action and resource, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one optional parameter (covered by schema), the description adequately describes the return payload and scope. No output schema exists, but the description covers the return fields directly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the single 'filter' parameter with an enum and description (100% coverage). The description adds no parameter-specific semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('todo items'), states the return format (structured list with IDs, text, completion status, and creation dates), and clearly distinguishes from sibling tools (add, complete, delete) which are mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is for retrieving todo items, which distinguishes it from the mutation siblings. However, it does not explicitly state when-not-to-use or name alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool performs a distinct operation on todos: add, list, complete, and delete. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (add_todo, list_todos, complete_todo, delete_todo), making the API predictable.

Tool Count5/5

Four tools is a well-scoped set for a todo server, covering the essential operations without unnecessary bloat.

Completeness4/5

The core lifecycle of create, read, update status, and delete is covered. The only notable gap is the lack of an update_todo tool for editing todo text, but this is minor for the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/X4MU-L/todo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server