Skip to main content
Glama
todo list mcp server

todo list mcp server

📝 Personal To-Do List MCP Server

Python 3.10+ MCP License: MIT

AI 어시스턴트에게 강력한 로컬 할 일 목록 관리자를 제공하는 미니멀하면서도 실용적인 Model Context Protocol (MCP) 서버입니다. 이 서버는 외부 API나 복잡한 데이터베이스 없이도 AI가 로컬 상태를 관리하고 영구 데이터(CRUD 작업)와 상호작용하는 방법을 보여줍니다.

🌐 라이브 데모 및 미디어

Related MCP server: Todo MCP Server

📸 스크린샷

MCP Inspector Testing

✨ 주요 기능

  • 🤖 네이티브 AI 통합: Claude Desktop, Cursor, Antigravity와 완벽하게 연동됩니다.

  • 🛠️ 완전한 CRUD 작업: 작업 추가, 목록 보기, 완료, 삭제가 가능합니다.

  • 📊 실시간 요약: 대기 중인 작업과 완료된 작업을 요약하는 읽기 전용 리소스를 제공합니다.

  • 🔒 프라이빗 로컬 저장소: JSON을 사용하여 데이터를 전적으로 로컬 머신에 저장합니다.

  • ⚙️ 제로 구성: 최신 Python 패키징으로 별도 설정 없이 바로 작동합니다.

🛠️ 기술 스택 표

카테고리

기술

용도

프로토콜

Model Context Protocol (MCP)

AI-도구 통신 표준

언어

Python 3.10+

핵심 로직 및 실행

SDK

mcp[cli] (FastMCP)

공식 Anthropic Python SDK

패키지 관리자

pip / pyproject.toml

최신 의존성 관리

데이터베이스

로컬 JSON 파일

영구 로컬 상태 저장

⚙️ 작동 방식

  1. 도구 호출: AI 클라이언트가 MCP 서버에 JSON-RPC 요청을 보냅니다 (예: add_task).

  2. 실행: Python 서버가 로컬 todos.json 파일을 파싱합니다.

  3. 수정: 서버가 새 작업으로 JSON 파일을 업데이트하고 저장합니다.

  4. 응답: 서버가 AI 클라이언트에 성공 확인을 반환합니다.

🏗️ 프로젝트 아키텍처

graph LR
    A[AI Assistant] <-->|JSON-RPC via stdio| B[Todo MCP Server]
    B -->|Read/Write| C[(todos.json)]
    B --> D[Tools: add, list, delete, complete]
    B --> E[Resources: todo://summary]

📂 프로젝트 구조

├── docs/                      # Learning outcomes and documentation
│   ├── inspector.png
│   └── resend-experience.md
├── src/
│   └── todo_mcp/              # Core MCP server package
│       ├── __init__.py
│       ├── __main__.py        # Execution entrypoint
│       └── server.py          # Tools and resources logic
├── .gitignore
├── pyproject.toml             # Modern Python package configuration
└── README.md

💻 로컬 설정 및 설치

사전 요구 사항

  • Python 3.10 이상

  • Node.js (Inspector 사용 시 npx 용)

설치

저장소를 클론하고 pip를 사용하여 로컬에 설치합니다:

git clone https://github.com/Arslan-Codes097/todo-list-mcp-server.git
cd todo-list-mcp-server
pip install .

로컬 실행 (Inspector)

대화형 MCP Inspector UI에서 도구를 테스트하려면:

npx @modelcontextprotocol/inspector python -m todo_mcp

AI 클라이언트에 연결 (무설치)

이 서버를 사용하는 가장 쉬운 방법은 uvx를 이용하는 것입니다. 저장소를 수동으로 클론할 필요 없이 서버를 자동으로 다운로드하고 실행합니다.

클라이언트의 config.json에 다음을 추가하세요:

{
  "mcpServers": {
    "todo-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Arslan-Codes097/todo-list-mcp-server.git",
        "python",
        "-m",
        "todo_mcp"
      ]
    }
  }
}

👤 작성자 및 크레딧

Arslan

Model Context Protocol에 대한 실습 탐구로 제작되었습니다.

Available Tools

4 tools
add_taskB

Add a new task to the todo list.

NameRequiredDescriptionDefault
taskYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/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 carry the full burden. It states 'Add a new task' but does not disclose permissions, idempotency, duplicate handling, or effects on existing tasks; the output schema exists but is not described in the text. This is a mutation tool with minimal behavioral disclosure.

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

Conciseness4/5

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

The description is a single sentence with no filler, and the key verb/resource are front-loaded. It is appropriately brief for a simple tool, though it could include more context without becoming verbose.

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?

Given the trivial complexity and presence of an output schema, the description covers the basic purpose. However, with no annotations and no usage guidance, it leaves gaps around behavior and choice among sibling tools; it is minimally adequate.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no meaning beyond the schema's 'task' string titled 'Task'. It does not explain expected format, length, or whether the task string includes status/priority; the single parameter's semantics are only obvious from its name.

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 ('Add') and resource ('task'), clearly indicating the operation on the todo list. This differentiates it from siblings (complete_task, delete_task, list_tasks) by naming the create action.

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?

No guidance is given about when to use this tool over alternatives; siblings are listed but no exclusions or context are mentioned. The description only states the action, leaving the agent to infer usage from the tool name.

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

complete_taskA

Mark a task as completed using its ID (index).

NameRequiredDescriptionDefault
task_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states the mutation ('Mark as completed') but does not disclose side effects, idempotency, error behavior on invalid IDs, or prerequisites. Minimal but not misleading, so a low-average score is appropriate.

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, tightly written sentence that immediately conveys purpose and key parameter usage. No wasted words.

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 simple one-parameter tool with an output schema, the description covers the core action. It omits details like required existence of the task or error handling, but given the simplicity and clear sibling context, it is reasonably complete.

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

Parameters4/5

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

The description clarifies that 'task_id' is an ID and also an index, giving practical meaning beyond the integer type. Although schema coverage is 0%, the description compensates sufficiently for the single parameter, though it could add more on valid ranges or required existence.

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?

Specific verb 'Mark' + resource 'task' + action 'completed' clearly states the tool's function. The parenthetical 'using its ID (index)' adds the key parameter context. It is easily distinguished from sibling tools like delete_task and add_task.

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 that the tool requires an existing task ID, which establishes when to use it. However, it does not explicitly mention when not to use it or suggest alternatives, but the sibling names make the distinctions obvious.

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

delete_taskA

Delete a task from the list using its ID.

NameRequiredDescriptionDefault
task_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Delete') but does not disclose that this is a permanent, destructive operation or whether it requires any prerequisites or has irreversible consequences. The description is minimal and fails to add transparency beyond the action itself.

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, concise sentence that immediately states the action and parameter use. There is no wasted wording, and it is front-loaded with the verb 'Delete'.

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?

Given the tool's simplicity (one parameter, obvious action), the description is reasonably complete. It explains what the tool does and how to specify the target. However, it omits any details about return values or potential error cases, though an output schema exists that might cover that. For a straightforward delete, it is adequate.

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

Parameters4/5

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

The schema provides only the parameter type (integer) with no description (0% coverage). The description compensates by stating 'using its ID', clarifying that task_id is the identifier of the task to be deleted. This adds meaningful context to the parameter, making it clear how to populate it.

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 ('Delete a task') and the resource ('from the list'), using 'its ID' to specify the means. It is distinct from sibling tools like add_task, list_tasks, and complete_task, which perform different operations.

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 usage is implied: you use this when you need to permanently remove a task. However, there is no explicit guidance on when to use it versus alternatives, and no mention of prerequisites or exclusions. It does not mislead, but it lacks explicit direction.

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

list_tasksA

List all tasks in the todo list.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral transparency burden. It accurately implies a read-only listing of all tasks, but provides no additional behavioral context such as ordering, pagination, or performance implications. For a zero-parameter list tool this is acceptable, though not rich.

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, front-loaded sentence that expresses exactly what the tool does with no wasted words. It is appropriately concise for the tool's simplicity.

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?

This is a very simple zero-parameter tool with an output schema available. The description fully covers its externally visible behavior: it lists all tasks. Given the tool's simplicity and the presence of an output schema, no further contextual detail is required.

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

Parameters4/5

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

The input schema has zero parameters and schema description coverage is 100%. Since there are no parameters to explain, the description does not need to provide additional parameter semantics; the baseline of 4 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 ('list'), identifies the resource ('tasks'), and states the scope ('all tasks in the todo list'). It is clearly distinct from the mutating sibling tools complete_task, delete_task, and add_task.

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 makes the use case clear: call this to view every task in the todo list. It does not explicitly mention when not to use it, but the distinction from mutating sibling tools is straightforward and unlikely to confuse an agent.

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.

  1. 4 tool updatesv0.1.0
    • First observedadd_task
    • First observedcomplete_task
    • First observeddelete_task
    • First observedlist_tasks

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: add, list, complete, and delete tasks. There is no ambiguity or overlap between them.

Naming Consistency5/5

All tools follow the consistent verb_noun pattern (add_task, list_tasks, complete_task, delete_task), making the naming predictable and clear.

Tool Count5/5

With just 4 tools, the server is tightly scoped to the core operations of a todo list, and each tool is necessary and sufficient for basic task management.

Completeness5/5

The tools cover the full lifecycle of a todo item: create (add_task), read (list_tasks), update (complete_task), and delete (delete_task). No essential operations are missing for a simple todo list.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers