Task Tracker MCP Server
# ๐ Task Tracker MCP Server
[](https://www.python.org/downloads/)
[](https://gofastmcp.com)
[](https://docs.astral.sh/uv/)
[](LICENSE)
A practical **Model Context Protocol (MCP)** server built in Python using **[FastMCP](https://gofastmcp.com/)** and managed with **[uv](https://docs.astral.sh/uv/)**. This server provides AI assistants (like Claude Desktop, Cursor, Antigravity, etc.) with structured task management capabilities.
---
## ๐ Overview
The **Model Context Protocol (MCP)** is an open standard that allows LLMs and AI applications to interact safely and seamlessly with external tools and data sources.
This project implements the three core MCP primitives:
- ๐ ๏ธ **Tools**: Callable functions allowing the model to perform actions (`add_task`, `complete_task`, `delete_task`).
- ๐ฆ **Resources**: Read-only data URIs allowing the model to inspect state (`tasks://all`, `tasks://pending`).
- ๐ก **Prompts**: Predefined prompt templates that guide the AI to perform complex workflows (e.g., task analysis & prioritization).
```mermaid
flowchart LR
Host["AI Host / Application<br/>(Claude Desktop / Cursor / Antigravity)"]
Client["MCP Client<br/>(Protocol Handler)"]
Server["Task Tracker MCP Server<br/>(FastMCP)"]
Host <--> Client
Client <--> Server
subgraph ServerCapabilities ["Server Capabilities"]
Tools["๐ ๏ธ Tools<br/>add_task, complete_task, delete_task"]
Resources["๐ฆ Resources<br/>tasks://all, tasks://pending"]
Prompts["๐ก Prompts<br/>task_summary_prompt"]
end
Server --- ServerCapabilities
```
---
## ๐ Features & MCP Primitives
### 1. Tools (Actions)
| Tool | Arguments | Description |
| :--- | :--- | :--- |
| `add_task` | `title: str`, `description: str = ""` | Adds a new task with a unique ID and ISO timestamp. |
| `complete_task` | `task_id: int` | Marks a task status as `"completed"` and adds a completion timestamp. |
| `delete_task` | `task_id: int` | Removes a task by ID and returns the deleted object. |
### 2. Resources (Read-Only Data)
| Resource URI | Description |
| :--- | :--- |
| `tasks://all` | Formats and returns all tasks with emojis (`โ
` for completed, `โณ` for pending). |
| `tasks://pending` | Filters and returns only active/pending tasks. |
### 3. Prompts (Guided Workflows)
| Prompt | Description |
| :--- | :--- |
| `task_summary_prompt` | Guides the AI assistant to analyze pending vs completed tasks, identify overdue items, and recommend next actions using `tasks://all`. |
---
## ๐ฆ Getting Started with `uv`
This project is built and managed with **[uv](https://docs.astral.sh/uv/)**, an extremely fast Python package and project manager written in Rust by Astral.
### 1. Install `uv`
**macOS / Linux:**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**Windows:**
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
Verify installation:
```bash
uv --version
```
### 2. Clone and Setup Repository
```bash
git clone https://github.com/<your-username>/task-tracker-mcp.git
cd task-tracker-mcp
```
### 3. Install Dependencies
`uv` will automatically create a virtual environment (`.venv`) and install all required dependencies:
```bash
uv sync
```
---
## ๐งช Testing the Server
You can run the built-in async client (`test_client.py`) which exercises every tool, resource, and prompt:
```bash
uv run test_client.py
```
### Expected Output:
```text
๐ Starting FastMCP Test Client...
==================================================
1. Listing Available Tools:
Found 3 tools: ['add_task', 'complete_task', 'delete_task']
2. Calling 'add_task' Tool:
Task 1 Response: {"id":1,"title":"Learn MCP", ...}
Task 2 Response: {"id":2,"title":"Master uv", ...}
3. Listing Available Resources:
Found 2 resources: [AnyUrl('tasks://all'), AnyUrl('tasks://pending')]
4. Reading 'tasks://all' Resource:
Current Tasks:
โณ [1] Learn MCP
โณ [2] Master uv
5. Completing Task ID 1:
Completed Result: {"id":1, "status":"completed", ...}
6. Reading 'tasks://pending' Resource:
Pending Tasks:
โณ [2] Master uv
7. Listing Available Prompts:
Found 1 prompts: ['task_summary_prompt']
8. Deleting Task ID 2:
Delete Result: {"success": true, "deleted": {"id": 2, ...}}
==================================================
โจ All MCP Server tests completed successfully!
```
---
## ๐ Connecting & Inspecting
### 1. FastMCP CLI Inspector & Dev Tools
FastMCP 3.x provides built-in CLI commands to inspect and debug your server:
- **Interactive Web Inspector**:
```bash
uv run fastmcp dev inspector task_server.py
```
- **Inspect Server Summary**:
```bash
uv run fastmcp inspect task_server.py
```
- **List All Tools**:
```bash
uv run fastmcp list task_server.py
```
- **Run Standalone Server**:
```bash
uv run fastmcp run task_server.py
```
### 2. Claude Desktop Integration
Add the server configuration to your `claude_desktop_config.json`:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"task-tracker": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/task-tracker-mcp",
"run",
"task_server.py"
]
}
}
}
```
---
## ๐ Project Structure
```
Task Tracker MCP/
โโโ pyproject.toml # Dependency & project metadata (managed by uv)
โโโ task_server.py # MCP Server definitions (tools, resources, prompts)
โโโ test_client.py # FastMCP async automated test client
โโโ src/
โ โโโ task_tracker_mcp/ # Python package entrypoint
โ โโโ __init__.py
โโโ .python-version # Locked Python version
โโโ .gitignore # Python & uv exclusions
โโโ README.md # Documentation
```
---
## ๐ก Key `uv` Commands Cheat Sheet
| Command | Description |
| :--- | :--- |
| `uv init` | Initialize a new Python project with `pyproject.toml` |
| `uv add <pkg>` | Add a dependency to `pyproject.toml` and install it in `.venv` |
| `uv remove <pkg>` | Remove a dependency |
| `uv run <script.py>` | Run any Python script within the isolated project environment |
| `uv sync` | Sync installed packages with `uv.lock` |
| `uv venv` | Create a virtual environment explicitly |
---
## ๐ ๏ธ Next Steps & Extensions
- [ ] **Persistent Storage**: Replace in-memory list with SQLite via `aiosqlite` or `sqlite3`.
- [ ] **Priority & Due Dates**: Add task priority flags (`low`, `medium`, `high`) and due date filters.
- [ ] **Search Tool**: Add a `search_tasks(query: str)` tool to search title and descriptions.
- [ ] **Authentication**: Secure endpoints with FastMCP auth providers.
---
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
TDQS
Scored across 3 tools
Each tool targets a clearly distinct action on a task: add, delete, complete. There is no overlap or ambiguity between them, so an agent can easily select the right tool.
All three tools follow the exact same verb_noun snake_case pattern (add_task, delete_task, complete_task). Naming is fully predictable.
Three tools is a reasonable, well-scoped set for a minimal task tracker, and each earns its place. It is slightly thin, since a small surface like this leaves little room for the read/lifecycle operations expected of the domain.
The set covers create, delete, and a status update, but there is no way to list or retrieve tasks, which is arguably the most essential operation for a tracker. This is a notable gap that will leave agents unable to inspect the task list.