No description
  • Go 98.9%
  • Dockerfile 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Miguel Valdes 8d3e6238cd
Merge pull request #2 from mvaldes14/claude/mcp-agent-affordances-kzh7u8
Add agent-affordance tools, task/subtask fields, and safety hints
2026-08-18 14:14:31 -05:00
.github chore: add pull request template 2026-08-17 14:23:49 -05:00
internal Add agent-affordance tools, task/subtask fields, and safety hints 2026-08-18 18:54:38 +00:00
.envrc feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
CLAUDE.md feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
devbox.json feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
devbox.lock feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
Dockerfile feat(doit-mcp): cicd 2026-04-22 14:05:56 -05:00
go.mod feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
go.sum feat(doit-mcp): initial commit 2026-04-21 22:53:47 -05:00
LICENSE Initial commit 2026-04-21 14:06:50 -05:00
main.go Add agent-affordance tools, task/subtask fields, and safety hints 2026-08-18 18:54:38 +00:00
README.md Add agent-affordance tools, task/subtask fields, and safety hints 2026-08-18 18:54:38 +00:00

task-manager-mcp

MCP server for doit — exposes tasks, projects, subtasks, and NLP parsing as MCP tools so any MCP-compatible client (Claude Code, Claude Desktop, etc.) can interact with your self-hosted doit instance.

Requirements

  • Go 1.22+
  • A running doit instance
  • DOIT_API_KEY set in your environment

Build

go mod tidy
go build -o task-manager-mcp .

Configuration

Env var Default Description
DOIT_BASE_URL (required) Base URL of your doit instance (e.g. http://localhost:5001)
DOIT_API_KEY (required) Bearer token (TD_API_KEY from doit's .env)
MCP_ADDR :8080 Address the HTTP server binds to

Transport

The server uses the MCP streamable HTTP transport — plain HTTP POST, no SSE keepalive. The endpoint is POST /mcp.

DOIT_BASE_URL=http://localhost:5001 DOIT_API_KEY=<key> ./task-manager-mcp
# listening on :8080/mcp

Claude Code setup

Add to ~/.claude/settings.json (or your project-level .mcp.json):

{
  "mcpServers": {
    "doit": {
      "type": "http",
      "url": "http://localhost:8080/mcp",
      "env": {
        "DOIT_BASE_URL": "http://localhost:5001",
        "DOIT_API_KEY": "your-key"
      }
    }
  }
}

Then restart Claude Code — the tools appear automatically.

Tools

Tasks

Tool Description
list_tasks List tasks; optional filters: project_id, status (todo|doing|done), search
get_task Get a single task by id
create_task Create a task (title required; optional: description, status, priority (low|medium|high), due_date, due_time, project_id, tags, recurrence, recurrence_end, assigned_to, links)
update_task Update any fields on a task by id
delete_task Delete a task by id
get_today_tasks Tasks due today
get_overdue_tasks Past-due tasks
get_upcoming_tasks Tasks due within the next 7 days

Projects

Tool Description
list_projects List all projects (includes task counts)
create_project Create a project (name required; optional: color, icon)
update_project Update a project by id
delete_project Delete a project by id (tasks moved to inbox)

Subtasks

Tool Description
add_subtask Add a subtask (task_id + title required; optional: due_date, due_time, labels, linked_task_id)
update_subtask Update a subtask (task_id, subtask_id required; optional: title, completed, due_date, due_time, labels)
delete_subtask Delete a subtask (task_id, subtask_id required)

Context & discovery

Tool Description
get_agent_context One-shot snapshot: today, overdue, next 7 days, and projects in a single call
get_all_tags All distinct tags in use across tasks
get_dashboard_stats Productivity stats over a rolling window (optional days, default 30)

NLP

Tool Description
parse_nlp Parse natural language (text required) → returns structured task fields

AI Results

Tool Description
get_task_ai_result Get the stored AI-generated result for a task (task_id required)
store_task_ai_result Store (upsert) an AI result for a task (task_id + content required; optional: model)

Project structure

.
├── main.go
└── internal/
    ├── client/
    │   └── client.go       # HTTP client with Get/Post/Patch/Delete/Put
    └── tools/
        ├── tasks.go
        ├── projects.go
        ├── subtasks.go
        ├── nlp.go
        └── ai.go