Skip to main content
Glama
kanaparthikiran

mcp-tasks-server

mcp-tasks-server

A small Model Context Protocol server that exposes a personal task tracker to any MCP-compatible client (Claude Desktop, Claude Code, custom agents). Tasks live in a local SQLite database; no cloud, no surprises.

This is a reference implementation of an MCP server that takes real write-actions on persistent state — the kind of integration you build between an agentic AI platform and an enterprise system, scaled down to a laptop.

Tools exposed

Tool

Effect on state

add_task

Insert a new task

list_tasks

Read; optional status filter

complete_task

Update status='done'

delete_task

Hard-delete a task

summarize_by_status

Read; aggregate counts

Each tool has a JSON schema declared in code, validated on every call.

Related MCP server: TaskMCP

Quick start

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py

Wire into Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "tasks": {
      "command": "python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}

Then restart Claude Desktop. The tools appear in the MCP picker.

Sandbox / safety notes

  • Database file lives at ~/.local/share/mcp-tasks/tasks.db by default; override with MCP_TASKS_DB. The path is normalized and confined to the user's home directory.

  • delete_task requires the task ID to be an integer; no SQL is built from string concatenation. All queries use parameterized statements.

  • The server has no network listeners — communication is over stdio per the MCP spec.

Sample tool calls

The full request/response shapes for every tool are in examples/tool-call-examples.md. Highlights:

Tool

Example call

Example result

add_task

{"title": "Review RFC", "notes": "..."}

{"id": 1, "title": "...", "status": "open"}

list_tasks

{"status": "open"}

{"tasks": [...]}

complete_task

{"id": 1}

{"id": 1, "status": "done"}

summarize_by_status

{}

{"counts": {"open": 2, "done": 1}}

Design notes

  • Why SQLite? Embedded, transactional, present on every Python install. A real enterprise integration would target a service API; the contract on the agent side is identical.

  • Why explicit JSON schemas? Some MCP clients display the schemas to the user before approving a tool call. Putting them inline in the server makes tool surfaces self-documenting and gives the LLM unambiguous parameter contracts.

  • Why no auth? Personal/local server. For an enterprise MCP server you'd add OIDC token verification at the tool boundary and scope each tool to the calling principal's permissions.

License

MIT — see LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A self-hosted Model Context Protocol server for Microsoft To Do. The key problem this solves: the Microsoft Graph API silently omits user-created lists on personal accounts (GET /me/todo/lists only returns well-known lists like "Flagged Emails"). This server works around it with a local SQLite registry that tracks every list you create, so your lists always show up.
    5
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A personal task management MCP server that allows LLM clients to create, read, update, and delete tasks with projects, labels, and comments, using a local SQLite database that can also be accessed via a web UI.
    -
  • F
    license
    A
    quality
    C
    maintenance
    A small Model Context Protocol (MCP) server that lets an AI assistant manage a to-do list on your behalf.
    4
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    This is a demo MCP server exposing SQLite-backed task management (CRUD), a calculator, and server metadata tools via the Model Context Protocol, and can be interacted with through natural language via any MCP-compatible client.
    -