adhd-tasks-mcp

transform-ia/adhd-tasks-mcp

3.2

If you are the rightful owner of adhd-tasks-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

MCP server providing GraphQL interface to ADHD task management system via Hasura/PostgreSQL backend.

Tools
6
Resources
0
Prompts
0

adhd-tasks-mcp

MCP server providing GraphQL interface to ADHD task management system via Hasura/PostgreSQL backend.

Overview

This MCP server bridges LLM agents (via Google ADK) to the ADHD task management backend, enabling conversational task management with ADHD-specific design patterns:

  • One task at a time: Reduces cognitive load
  • Immediate gratification: Positive reinforcement on completion
  • Blocker management: Handle interruptions without demotivation
  • Location awareness: GPS, online, and fuzzy location support
  • Smart prioritization: Automatic urgency calculation based on deadlines

Architecture

ADK Agent → MCP Client → adhd-tasks-mcp (HTTP) → Hasura GraphQL → PostgreSQL
  • Protocol: Model Context Protocol (JSON-RPC over HTTP)
  • Backend: Hasura GraphQL engine with adhd-tasks schema
  • Deployment: Kubernetes pod in claude namespace
  • Endpoint: http://adhd-tasks-mcp.claude.svc.cluster.local:81/mcp

MCP Tools

1. get_next_task

Get the next actionable task for the user (one task at a time).

Parameters:

  • user_id (required): User UUID

Returns:

{
  "message": "Next task ready",
  "task": {
    "id": "uuid",
    "title": "Task title",
    "description": "Task description",
    "estimated_duration_minutes": 30,
    "calculated_priority": 85.5,
    "deadline": "2025-01-15T10:00:00Z",
    "location_name": "Home Office",
    "location_type": "physical",
    "location_latitude": 45.5017,
    "location_longitude": -73.5673
  }
}

2. assign_task

Assign a task to the user with optional GPS location.

Parameters:

  • user_id (required): User UUID
  • task_id (required): Task UUID
  • latitude (optional): Current GPS latitude
  • longitude (optional): Current GPS longitude

Returns:

{
  "id": "assignment-uuid",
  "task": {
    "id": "task-uuid",
    "title": "Task title",
    "description": "Task description"
  }
}

3. complete_task

Mark a task as completed and record gratification event.

Parameters:

  • assignment_id (required): Task assignment UUID
  • task_id (required): Task UUID
  • user_id (required): User UUID
  • gratification_message (optional): Custom gratification message

Returns:

{
  "status": "success",
  "message": "Great job! Task completed.",
  "task_id": "uuid",
  "result": {
    "update_task_assignments_by_pk": {...},
    "update_tasks_by_pk": {...},
    "insert_task_history_one": {...}
  }
}

4. create_blocker

Mark a task as blocked and create blocker record.

Parameters:

  • task_id (required): Task UUID to mark as blocked
  • user_id (required): User UUID
  • description (required): Blocker description

Returns:

{
  "status": "success",
  "message": "Blocker created. Task marked as blocked.",
  "result": {
    "update_tasks_by_pk": {...},
    "insert_blockers_one": {...},
    "insert_task_history_one": {
      "gratification_message": "Good job documenting this blocker. I'll help create sub-tasks to resolve it."
    }
  }
}

5. create_task

Create a new task from user input.

Parameters:

  • data (required): Task data object with fields:
    • title (string): Task title
    • description (string): Task description
    • location_id (uuid): Location reference
    • base_priority (integer): Base priority (0-100)
    • estimated_duration_minutes (integer): Estimated duration
    • deadline (timestamp): Optional deadline

Returns:

{
  "status": "success",
  "message": "Task created successfully",
  "task": {
    "id": "uuid",
    "title": "Task title",
    "description": "Task description",
    "status": "pending",
    "base_priority": 50,
    "calculated_priority": 50.0,
    "deadline": null,
    "location": {...}
  }
}

6. get_user_stats

Get task completion statistics and gratification count for user.

Parameters:

  • user_id (required): User UUID

Returns:

{
  "user_name": "John Doe",
  "completed_count": 42,
  "blocked_count": 3,
  "gratification_count": 45,
  "last_completion_at": "2025-01-22T14:30:00Z"
}

Configuration

Environment variables:

# Required
HASURA_ENDPOINT=http://test-graphql.graphql-dev.svc.cluster.local:8080/v1/graphql
HASURA_ADMIN_SECRET=your-secret-here

# Optional
HTTP_PORT=81
SERVER_SHUTDOWN_TIMEOUT_SECONDS=30
LOG_LEVEL=INFO

Development

# Install dependencies
go mod download

# Run locally
export HASURA_ENDPOINT=http://localhost:8080/v1/graphql
export HASURA_ADMIN_SECRET=your-secret
go run cmd/server/main.go

# Build
go build -o bin/adhd-tasks-mcp cmd/server/main.go

# Test MCP endpoint
curl http://localhost:81/health

Deployment

Deploy to Kubernetes cluster via Helm chart:

# See /workspace/applications/ for ArgoCD Application manifest
# Or deploy manually:
helm install adhd-tasks-mcp ./chart -n claude

Integration with ADK

Add to /workspace/.mcp.json:

{
  "adhd-tasks-mcp": {
    "type": "http",
    "url": "http://adhd-tasks-mcp.claude.svc.cluster.local:81/mcp"
  }
}

Then create ADK agent capability in /workspace/sandbox/agents/internal/capabilities/adhd_task_manager/.

Related Repositories

License

MIT