transform-ia/adhd-tasks-mcp
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.
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
claudenamespace - 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 UUIDtask_id(required): Task UUIDlatitude(optional): Current GPS latitudelongitude(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 UUIDtask_id(required): Task UUIDuser_id(required): User UUIDgratification_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 blockeduser_id(required): User UUIDdescription(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 titledescription(string): Task descriptionlocation_id(uuid): Location referencebase_priority(integer): Base priority (0-100)estimated_duration_minutes(integer): Estimated durationdeadline(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
- Backend Schema: transform-ia/adhd-tasks
- MCP Server: transform-ia/adhd-tasks-mcp (this repo)
- ADK Agent:
/workspace/sandbox/agents(not yet created)
License
MIT