No description
  • Go 99.5%
  • Dockerfile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-03 14:58:12 -06:00
.github fix(ci): use Bedrock secret for PR Agent 2026-10-30 18:40:16 -05:00
internal fix: validate spec-backed tool inputs 2026-11-03 20:55:45 +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 feat(task-manager-mcp): update based on new api specs 2026-09-29 15:29:23 -05:00
README.md feat: sync tools with task manager spec 2026-11-03 20:51:29 +00:00

task-manager-mcp

MCP server for doit. Exposes task-manager API operations through MCP streamable HTTP.

Requirements

  • Go 1.22+
  • Running doit instance
  • DOIT_API_KEY

Build and run

go mod tidy
go build -o task-manager-mcp .
DOIT_BASE_URL=http://localhost:5001 \
DOIT_API_KEY=<key> \
./task-manager-mcp

Endpoint: POST http://localhost:8080/mcp

Configuration

Variable Default Purpose
DOIT_BASE_URL required doit base URL
DOIT_API_KEY required Bearer token (TD_API_KEY in doit)
MCP_ADDR :8080 MCP HTTP listen address

MCP client configuration

{
  "mcpServers": {
    "doit": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Server process must receive DOIT_BASE_URL and DOIT_API_KEY.

Tools

Tasks

Tool Purpose
list_tasks List/filter tasks by project, status, priority, tags, assignee, due-date range, due-date presence, search, limit, and offset
search_tasks Type-ahead search for open tasks; results include UUID and permanent numeric seq
get_task Get task by UUID, formatted key such as DO-142, or bare seq such as 142
create_task Create task; supports NLP or verbatim skip_nlp mode
update_task Update task by UUID, key, or seq
delete_task Soft-delete task; optional purge=true permanently deletes it
restore_task Restore soft-deleted task
reorder_tasks Update task positions/statuses for drag-and-drop
bulk_update_tasks Move or change status for up to 200 tasks
get_today_tasks List incomplete tasks due today
get_overdue_tasks List incomplete overdue tasks
get_upcoming_tasks List tasks due in next seven days

Task responses include permanent numeric seq. Format human-readable keys as <task_key_prefix>-<seq>; retrieve prefix with get_settings.

Projects

Tool Purpose
list_projects List projects and subprojects
create_project Create project or one-level subproject, with description/deadline support
update_project Update metadata, parent, deadline, sharing, or archive state
delete_project Delete project; tasks move to inbox and children promote to root
reorder_projects Reorder flat depth-first project IDs within sibling groups

Subtasks

Tool Purpose
add_subtask Add verbatim-title subtask or link existing task
update_subtask Update title/completion state
delete_subtask Delete subtask

Parent task references accept UUID, formatted key, or bare seq.

Context and discovery

Tool Purpose
get_agent_context Fetch today, overdue, upcoming, projects, and settings in one call
get_all_tags List distinct task tags
get_dashboard_stats Fetch counts, trends, project progress, at-risk deadlines, tags, and streaks
parse_nlp Parse natural-language task text

Settings

Tool Purpose
get_settings Read settings, including task_key_prefix
update_settings Merge typed common settings or arbitrary settings_json; supports validated task-key prefix

task_key_prefix must be 2-6 uppercase letters/digits and start with a letter.

AI results

Tool Purpose
get_task_ai_result Read stored AI result for task
store_task_ai_result Upsert AI result and model metadata

Users and authentication

Tool Purpose
get_auth_status Read authentication/current-user state
auth_login Log in with username/password
auth_logout Destroy session
list_users List users
create_user Create user; admin only
get_current_user Read current user
update_current_user Update display name or password
upload_current_user_avatar Upload base64-encoded avatar image
get_user_avatar Fetch user avatar

API-key deployments normally use bearer auth and do not need login tools.

Calendars and telemetry

Tool Purpose
get_gcal_status Read Google Calendar integration state
sync_gcal Push open dated tasks to Google Calendar
list_ics_calendars List ICS calendars
create_ics_calendar Add ICS calendar by URL or uploaded file
delete_ics_calendar Delete ICS calendar
get_ics_events List calendar events by month
send_otlp_traces Forward JSON or protobuf OTLP traces through doit

Project structure

.
├── main.go
└── internal/
    ├── client/client.go
    └── tools/
        ├── tasks.go
        ├── projects.go
        ├── subtasks.go
        ├── settings.go
        ├── context.go
        └── ...