todo-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
todo-mcp
The foro.sh example project: a small, stateful todo-list MCP server. Every new foro.sh workspace gets a deployed copy, so there is a live MCP endpoint to poke at before deploying anything of your own.
Tools
Tool | Description |
| Add a task ( |
| List tasks ( |
| Mark a task as done |
| Mark a task as not done |
| Delete a task |
It also exposes two resources: tasks://board, the current board rendered as
markdown, and ui://todo/list, the interactive view described below.
Related MCP server: Todo MCP Server
The interactive view
Every todo tool carries _meta.ui.resourceUri pointing at ui://todo/list,
per the MCP Apps extension. A host that supports the extension fetches
that resource — view.html, served as text/html;profile=mcp-app — and
renders it in a sandboxed iframe beside the tool result: a checkbox list you
can tick to complete and untick to reopen.
The view talks back over postMessage using
@modelcontextprotocol/ext-apps: callServerTool to mutate the list,
updateModelContext to tell the model what is on screen, and ontoolresult
to re-render when the model changes the list itself. Because that SDK loads
from a CDN, the resource declares unpkg.com under _meta.ui.csp — hosts
build the iframe's Content-Security-Policy from that, and an undeclared origin
means a blank view.
Hosts without the extension are unaffected: they ignore the metadata and show the plain tool results.
Skills
The server also serves two Agent Skills over the
Skills extension (io.modelcontextprotocol/skills), each a
folder under skills/:
Skill | What it does |
| Clean up the board: close finished work, merge duplicates, re-rank priorities (with a supporting |
| Turn the open tasks into a short, ordered plan for today |
FastMCP's SkillProvider serves their files as skill://<name>/<path>
resources. The extension's skills/list is not in the Python SDK yet, so
SkillsListMiddleware in server.py answers it over HTTP, listing each
skill's frontmatter and file manifest (URI, size, sha256 digest). To add a
skill, add a folder with a SKILL.md whose frontmatter name matches the
folder name. uv run test_skills.py checks the result.
State
Tasks live in the server's memory. That is the point of the example: a tool call in one session mutates state the next call sees, because the container keeps running between calls. The ceiling is just as real: state resets whenever the server restarts or redeploys. For anything that must survive a restart, back your server with a database or external store.
Run it locally
uv run server.pyThe server speaks MCP over streamable HTTP at http://localhost:8000/mcp
(set PORT to change the port - the same name foro injects when it deploys
you).
Deploy it
Its pyproject.toml is all foro.sh needs, so this repo deploys as-is: sign
in, pick this repo, deploy.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
ADHD-friendly task management MCP server for ChaTodo: organize tasks, lists, and priorities.
Create, list, and complete todo items through MCP.
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP server that allows AI assistants to manage todo lists stored in a simple markdown file, supporting creation, reading, updating, and deletion of todo items with persistent IDs.57 npm6MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server provides tools to manage a todo list with CRUD operations, enabling listing, creating, updating, and deleting todos.-
- AlicenseNot gradedqualityDmaintenanceA CRUD todo list server that exposes tools to create, list, and conclude tasks, compatible with any MCP host.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceA demo MCP server exposing an in-memory todo list via tools (add_task, list_tasks, complete_task), a resource, and a prompt, over both stdio and HTTP transports.4 npmISC