Serveur MCP

Focuh

io.github.maxxthedeveloper/focuh
Productivité Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Provides an ADHD-oriented personal productivity system for goals, tasks, subtasks, calendars, journals, loops, scheduling, and focus statistics.

create_goal
Create Goal
Create a goal in a horizon, with optional bottleneck note and lever.
Schéma d’entrée
{'type': 'object', 'required': ['title', 'horizon'], 'properties': {'lever': {'type': 'string', 'maxLength': 5000}, 'title': {'type': 'string', 'maxLength': 500}, 'horizon': {'enum': ['week', 'month', 'year', 'decade'], 'type': 'string'}, 'bottleneckNote': {'type': 'string', 'maxLength': 5000}}}
create_tasks
Create Tasks
Create tasks, each with optional nested subtasks. Defaults: today, 30 min.
Schéma d’entrée
{'type': 'object', 'required': ['tasks'], 'properties': {'tasks': {'type': 'array', 'items': {'type': 'object', 'required': ['title'], 'properties': {'date': {'type': 'string', 'maxLength': 10, 'description': 'Date'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Title'}, 'goalId': {'type': 'string', 'maxLength': 64, 'description': 'Goal'}, 'parent': {'type': 'string', 'maxLength': 500, 'description': 'Parent'}, 'priority': {'enum': ['critical', 'important', 'nice-to-have'], 'type': 'string', 'description': 'Priority'}, 'subtasks': {'type': 'array', 'items': {'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'maxLength': 500}, 'estimatedMinutes': {'type': 'number', 'maximum': 1440, 'minimum': 0}}}, 'maxItems': 100}, 'loopBucket': {'enum': ['pressing', 'important', 'backlog', 'waiting'], 'type': 'string', 'description': 'Undated loop; excludes date/priority; waiting=parked'}, 'estimatedMinutes': {'type': 'number', 'maximum': 1440, 'minimum': 0, 'description': 'Minutes'}}}, 'maxItems': 100, 'description': 'Tasks to create'}}}
delete_goal
Delete Goal
Delete a goal by id. Linked tasks are kept and unlinked, never deleted.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}
delete_tasks
Delete Tasks
Delete tasks by ref, every task on a date, or all completed. Subtasks go too.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'date': {'type': 'string', 'maxLength': 10}, 'tasks': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500}, 'maxItems': 100}, 'filter': {'enum': ['completed'], 'type': 'string'}}}
get_calendar
View Calendar
Events + scheduled/unscheduled tasks for a date. Check before scheduling.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'date': {'type': 'string', 'maxLength': 10}}, 'additionalProperties': False}
get_focus_stats
Focus Statistics
Today/week focus minutes, streak, task completion rates.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_goals
View Goals
Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'status': {'enum': ['active', 'completed', 'all'], 'type': 'string'}, 'horizon': {'enum': ['week', 'month', 'year', 'decade'], 'type': 'string'}}, 'additionalProperties': False}
get_journal
Read Journal
Read a daily journal and recent dates. Preserve ^task markers when writing back.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'date': {'type': 'string', 'maxLength': 10}}, 'additionalProperties': False}
get_loops
View Loops
Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_subtasks
View Subtasks
List subtasks of a parent. Returns ids usable as refs.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'maxLength': 500, 'description': 'Task id, #N, or title'}}, 'additionalProperties': False}
get_tasks
View Tasks
Today/tomorrow tasks with id, date and priority. Call first to get refs.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
pull_loops
Pull Loops
Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['loops'], 'properties': {'date': {'type': 'string', 'maxLength': 10}, 'loops': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500}, 'maxItems': 100}}}
reorder_subtasks
Reorder Subtasks
Reorder a parent's subtasks. Pass the complete new order, every one once.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['ref', 'order'], 'properties': {'ref': {'type': 'string', 'maxLength': 500, 'description': 'Task id, #N, or title'}, 'order': {'type': 'array', 'items': {'type': ['number', 'string'], 'maxLength': 64}, 'maxItems': 100}}}
update_goal
Update Goal
Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 64}, 'lever': {'type': 'string', 'maxLength': 5000}, 'title': {'type': 'string', 'maxLength': 500}, 'status': {'enum': ['active', 'completed', 'paused', 'dropped'], 'type': 'string'}, 'horizon': {'enum': ['week', 'month', 'year', 'decade'], 'type': 'string'}, 'bottleneckNote': {'type': 'string', 'maxLength': 5000}}}
update_tasks
Update Tasks
Change tasks: date (moves the day), priority, title, estimate, done, time slot.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['tasks'], 'properties': {'tasks': {'type': 'array', 'items': {'type': 'object', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'maxLength': 500, 'description': 'Task id, #N, or title'}, 'date': {'type': 'string', 'maxLength': 10, 'description': 'Date'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Title'}, 'goalId': {'type': 'string', 'maxLength': 64}, 'endTime': {'type': 'string', 'maxLength': 5, 'description': 'End'}, 'priority': {'enum': ['critical', 'important', 'nice-to-have'], 'type': 'string', 'description': 'Priority'}, 'completed': {'type': 'boolean', 'description': 'Done'}, 'startTime': {'type': 'string', 'maxLength': 5, 'description': 'Start'}, 'loopBucket': {'enum': ['pressing', 'important', 'backlog', 'waiting'], 'type': 'string', 'description': 'Into Loops or re-bucket; excl. date; waiting=parked'}, 'estimatedMinutes': {'type': 'number', 'maximum': 1440, 'minimum': 0, 'description': 'Minutes'}}}, 'maxItems': 100, 'description': 'Changes to apply, one entry per task'}}}
write_journal
Write Journal
Append or replace a journal. Read before replacing and preserve ^task markers.
Schéma d’entrée
{'type': 'object', 'required': ['content'], 'properties': {'date': {'type': 'string', 'maxLength': 10}, 'mode': {'enum': ['append', 'replace'], 'type': 'string'}, 'content': {'type': 'string', 'maxLength': 100000}}, 'additionalProperties': False}
Ajouté
write_journal
17 September 2026 12:43
Ajouté
get_journal
17 September 2026 12:43
Ajouté
get_focus_stats
17 September 2026 12:43
Ajouté
delete_goal
17 September 2026 12:43
Ajouté
update_goal
17 September 2026 12:43
Ajouté
create_goal
17 September 2026 12:43
Ajouté
get_goals
17 September 2026 12:43
Ajouté
get_calendar
17 September 2026 12:43
Ajouté
pull_loops
17 September 2026 12:43
Ajouté
get_loops
17 September 2026 12:43
Ajouté
reorder_subtasks
17 September 2026 12:43
Ajouté
get_subtasks
17 September 2026 12:43
Ajouté
delete_tasks
17 September 2026 12:43
Ajouté
update_tasks
17 September 2026 12:43
Ajouté
create_tasks
17 September 2026 12:43
Ajouté
get_tasks
17 September 2026 12:43