GTD MCP Server
Allows deploying the GTD MCP server as a Databricks App, using Unity Catalog and Delta tables for storage and SQL warehouse for queries.
Allows running the GTD MCP server locally with SQLite storage for tasks, projects, inbox, and statistics.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GTD MCP Server capture in inbox: finish the quarterly report"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GTD MCP Server: Python FastMCP on Databricks Apps
A practical, self-learning Model Context Protocol (MCP) server tutorial built with Python, FastMCP, FastAPI, and Databricks Apps. The project implements a Getting Things Done assistant with typed MCP tools for tasks, projects, inbox capture, next actions, and statistics.
Run the same MCP server locally with Codex and SQLite, or deploy it as a custom
Databricks App backed by a Unity Catalog Delta table and SQL warehouse. The
server supports both stdio and Streamable HTTP at /mcp, and can be attached to
Databricks AI Playground through its Tools panel.
What You Will Learn
how to build an MCP server in Python with FastMCP,
how MCP tools, schemas, transports, and structured responses work,
how to connect a local MCP server to Codex,
how to deploy an MCP server with Databricks Apps,
how to use Databricks App resources, service-principal authentication, Unity Catalog, Delta tables, and a SQL warehouse,
how to keep domain logic portable between SQLite and Databricks storage.
Start with QUICKSTART.md for setup and deployment. Use ARCHITECTURE.md as the complete workshop and extension guide.
Keywords: Model Context Protocol, MCP server, Python MCP, FastMCP, FastAPI, Databricks Apps, Databricks AI Playground, Codex MCP, Unity Catalog, Delta Lake, SQL Warehouse, AI agents, GTD assistant.
The operational code lives in src/; setup notebooks and client integration
guides live in docs/.
Related MCP server: Agentic Tools MCP Server
Repository Map
gtd-mcp-server/
├── README.md # how to navigate and work with this repo
├── QUICKSTART.md # local and Databricks Apps startup paths
├── ARCHITECTURE.md
├── LICENSE
├── pyproject.toml # uv project metadata
├── uv.lock # locked local dependency set
├── src/ # server package and Databricks app config
└── docs/
├── databricks_setup_storage.py
├── databricks_playground.md
└── local_llm_ide.mdLocal runs create a SQLite database at .local/gtd.sqlite3 by default.
Databricks Apps use Delta storage.
Main Concepts
src/gtd_mcp_server/server.py: FastMCP tools, FastAPI routes, launchers.src/gtd_mcp_server/storage.py: storage abstraction, SQLite backend, Delta backend.src/gtd_mcp_server/models.py: GTD task, project, inbox, and stats models.src/app.yaml: Databricks Apps startup command.src/requirements.txt: dependencies installed by Databricks Apps.pyproject.toml: localuvproject metadata.uv.lock: locked local dependency set.docs/databricks_setup_storage.py: Databricks notebook that creates the Unity Catalog catalog, schema, and Delta table.docs/databricks_playground.md: how to attach the deployed app through the Playground Tools panel.docs/local_llm_ide.md: how to connect the local server to Codex.
Storage Modes
Local default:
GTD_STORAGE_BACKEND=sqlite
GTD_SQLITE_PATH=.local/gtd.sqlite3Databricks Apps:
GTD_STORAGE_BACKEND=delta
GTD_DELTA_TABLE=gtd_mcp.app.gtd_mcp_records
DATABRICKS_WAREHOUSE_ID=<warehouse-id>
DATABRICKS_HOST=<injected-by-databricks-apps>Before deployment, attach a SQL warehouse resource with key sql-warehouse
and a UC table resource with key table. app.yaml maps both resources into
environment variables with valueFrom; Databricks Apps injects
DATABRICKS_HOST and service-principal credentials.
Before deploying on Databricks, run docs/databricks_setup_storage.py as a
Databricks notebook. It creates the gtd_mcp catalog, app schema, and
gtd_mcp_records Delta table used by the server.
When DATABRICKS_APP_NAME is present and GTD_STORAGE_BACKEND is unset, the
server assumes delta.
Databricks Apps installs requirements.txt and starts the command from app.yaml:
uvicorn gtd_mcp_server.server:app --host 0.0.0.0 --port $DATABRICKS_APP_PORTDaily Workflow
From this folder:
uv sync
uv run gtd-mcp-serverThen use:
REST health check:
http://localhost:8000/healthMCP streamable HTTP endpoint:
http://localhost:8000/mcpOpenAPI docs for the helper REST API:
http://localhost:8000/docs
Use /mcp from an MCP client.
Available Tools
17 toolscapture_taskB
Capture raw text to the GTD inbox.
Inputs: text (required). Returns: object
complete_taskC
Mark a task as completed.
Inputs: task_id (required). Returns: object
create_projectC
Create a project to group related tasks.
Inputs: name (required), description, goal, context. Returns: object
create_taskC
Create a structured actionable task.
Inputs: title (required), description, project_id, priority, +3 more. Returns: object
delete_projectB
Delete a project and unassign its tasks.
Inputs: project_id (required). Returns: object
delete_taskC
Delete a task by ID.
Inputs: task_id (required). Returns: object
get_inboxB
Return all raw inbox captures.
Inputs: no named parameters. Returns: result
get_next_actionsC
Get high-priority actionable tasks to work on next.
Inputs: limit. Returns: result
get_projectC
Get project details and task IDs.
Inputs: project_id (required). Returns: object
get_statsB
Get task, project, priority, and attention-needed statistics.
Inputs: no named parameters. Returns: object
get_taskA
Get full task details by ID.
Inputs: task_id (required). Returns: object
healthA
Check server health and selected storage backend.
Inputs: no named parameters. Returns: object
list_projectsA
List projects, filtered by active/completed/paused or all.
Inputs: status. Returns: result
list_tasksA
List tasks with optional filters by status, priority, project, context, or tag.
Inputs: status, priority, project_id, context, +1 more. Returns: result
start_taskC
Mark a task as in progress.
Inputs: task_id (required). Returns: object
update_projectC
Update project fields by ID.
Inputs: project_id (required), name, description, goal, +1 more. Returns: object
update_taskC
Update task fields by ID.
Inputs: task_id (required), title, description, status, +4 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Each tool has a distinct and clearly defined purpose, with no overlapping functionality. For example, capture_task is for raw inbox items while create_task is for structured actionable tasks, and specialized tools like get_next_actions, get_inbox, and get_stats serve unique aggregation roles.
All tool names follow a consistent verb_noun pattern using lowercase snake_case (e.g., capture_task, get_next_actions, delete_project). This predictability aids agent comprehension and selection.
With 17 tools, the set is well-scoped for a GTD methodology server. Each tool addresses a specific operation in the GTD workflow without redundancy or bloat, balancing coverage with conciseness.
The tool surface covers core GTD operations: capture, creation, update, deletion, status tracking, and listing for both tasks and projects. Minor gaps exist, such as lack of batch operations or explicit 'review' tools, but core workflows are fully supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Getting Things Done (GTD) board for AI agents: capture to Inbox, next actions by context, projects, waiting-for, someday/maybe. Remote Streamable HTTP server with OAuth 2.1 login (passwordless email code). 16 tools + 4 prompts. Setup guide: https://gtdbrain.com/connect?source=glama
Model Context Protocol server for todo.vu task management and time tracking.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceA local Model Context Protocol server providing backend tools for AI agents to manage projects and tasks with persistent storage in SQLite, enabling structured tracking of project tasks with dependencies, priorities, and statuses.127 npm25GPL 3.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server providing AI assistants with comprehensive project, task, and subtask management capabilities with project-specific storage.2924 npm88MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with TickTick/Dida365 task management API, supporting operations like creating, reading, updating, and deleting tasks and projects.1131 npm33MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language task management including logging, updating, and summarizing productivity activities across multiple categories using a local SQLite database. It allows users to manage workflows and generate time-based summaries through standardized Model Context Protocol tools.1-