Skip to main content
Glama
README.md
# minimal mcp server

A single file MCP server backed by an in memory todo list. It touches all
three MCP primitives (tools, resources, prompts) plus elicitation, in about
250 lines.

## Architecture

The list lives in memory only. Nothing is written to disk, so every restart
starts fresh with two seeded todos.

Three tools let Claude add a todo, mark one done, or delete one. Deleting is
the only action that pauses mid call and asks you to confirm first, since it
can't be undone; the other two just run.

Two resources expose the same data as read only content instead of actions.
One returns the whole list as a markdown checklist. The other takes an id
through a URI template and returns just that one item, converting the id from
text to a number itself since URI segments always arrive as strings.

One prompt, `plan_my_day`, bundles the full list with an instruction asking
Claude to pick the three most important undone items. Triggering it attaches
the resource and sends the request in a single click instead of doing both by
hand.

## Run it

```bash
uv sync
uv run python smoke_test.py     # drives the server as a real client, 13 checks
uv run mcp dev todo_server.py   # opens the MCP Inspector
```

## Connect it to a host

```bash
claude mcp add todos -- uv --directory "<path to this repo>" run python todo_server.py
```

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct action on todos: adding, completing, and removing. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: add_todo, complete_todo, remove_todo. This makes the tool set predictable and easy to navigate.

Tool Count5/5

With only 3 tools, the set is appropriately scoped for a minimal todo server. Each tool is essential and there is no unnecessary complexity.

Completeness4/5

The tools cover create (add), update (complete), and delete (remove) operations. Reading is handled via a resource (todos://all), but there is no dedicated update for task text; still, the core lifecycle is covered for a minimal todo server.

Maintenance

ActivitySlowing
ResponsivenessNo issues