Focus ToDo
Servidor MCP que lê seus dados do Focus To-Do diretamente do banco de dados local do aplicativo Windows — sem conta, sem chave de API, sem necessidade de exportação.
Documentação
focus-todo-mcp
Servidor MCP que lê seus dados do Focus To-Do diretamente do seu banco de dados local (aplicativo Windows ou Extensão do Chrome no Linux/Pop!_OS/macOS) — sem login em conta, sem chave de API, sem necessidade de exportação.
O que ele faz
Expõe suas tarefas, projetos, subtarefas e sessões Pomodoro do Focus To-Do para o Claude (ou qualquer cliente compatível com MCP) analisando o IndexedDB do aplicativo (formato Chrome LevelDB) armazenado localmente.
Requisitos
- Linux (Pop!_OS, Debian, Ubuntu, etc.), macOS ou Windows
- Focus To-Do instalado via:
- Extensão do Chrome (
ngceodoilcgpmkijopinlkmohnfifjfb) no Chrome, Chromium, Brave, Edge, Vivaldi (padrão, Flatpak ou Snap) - Aplicativo da Microsoft Store (Windows UWP)
- Extensão do Chrome (
- Node.js 22+
Instalação
git clone https://github.com/b0r1sOm4g0/focus-todo-mcp
cd focus-todo-mcp
npm install
Configuração com Claude Code
claude mcp add --scope user focus-todo node "/path/to/focus-todo-mcp/index.mjs"
Em seguida, reinicie o Claude Code.
Detecção automática e caminho personalizado
O servidor detecta automaticamente seu banco de dados do Focus To-Do em:
- Linux (Pop!_OS / Debian / Ubuntu):
~/.config/google-chrome/<Profile>/IndexedDB/chrome-extension_ngceodoilcgpmkijopinlkmohnfifjfb_0.indexeddb.leveldb(assim como perfis do Chromium, Brave, Edge, Vivaldi, Flatpak e Snap) - Windows: Aplicativo da Microsoft Store (%LOCALAPPDATA%\Packages) ou perfis da Extensão do Chrome
- macOS:
~/Library/Application Support/Google/Chrome/<Profile>/IndexedDB/...
Se você usar um caminho de perfil de navegador não padrão, substitua a detecção automática com:
FOCUS_TODO_IDB_PATH="/path/to/IndexedDB/chrome-extension_ngceodoilcgpmkijopinlkmohnfifjfb_0.indexeddb.leveldb" node index.mjs
Configuração de escrita: instância dedicada do Chrome (Linux)
As escritas passam pelo próprio código da extensão do Focus To-Do via Chrome DevTools Protocol. O Chrome 136+ recusa a depuração remota no seu perfil padrão do Chrome, então o Focus To-Do roda em uma instância separada do Chrome:
- Inicie uma vez:
google-chrome --user-data-dir="$HOME/.config/focustodo-chrome" --remote-debugging-port=9222 - Instale a extensão do Focus To-Do pela Chrome Web Store nessa janela e faça login.
- Aguarde a primeira sincronização. Contas grandes levam alguns minutos e o aplicativo não mostra progresso.
- Execute
npm run setup:launcherpara adicionar um lançador "Focus To-Do" que o abre como janela de aplicativo, e use essa janela daqui em diante.
Com o lançador instalado, uma escrita abre a instância (via gtk-launch) quando ela está fechada. O servidor também lê do banco de dados dessa instância quando ele existe. Após uma escrita, a janela é recarregada apenas quando nenhum pomodoro está em execução ou pausado.
Variáveis de ambiente: FOCUS_TODO_USER_DATA_DIR (padrão ~/.config/focustodo-chrome), FOCUS_TODO_CDP_PORT (padrão 9222), FOCUS_TODO_CHROME_PATH.
Segurança: a porta de depuração escuta apenas em localhost, mas qualquer processo local pode controlar esta instância do Chrome. Mantenha apenas o Focus To-Do nela: sem conta Google e sem outros logins. No Linux, o servidor recusa uma porta de depuração mantida por um processo de outro usuário.
Duplicatas: executar o Focus To-Do em vários clientes ao mesmo tempo (outros perfis do Chrome, outros dispositivos) parece criar ocorrências duplicadas de tarefas recorrentes. Usar um único cliente de desktop reduz isso; find_duplicate_tasks e remove_duplicate_tasks limpam as duplicatas.
Ferramentas
Ferramentas de leitura (somente leitura)
| Ferramenta | Descrição |
|---|---|
list_projects | Lista todos os projetos (oculta projetos do sistema por padrão) |
list_tasks | Lista tarefas filtradas por projeto e status (active/overdue/completed/all, usando as regras do aplicativo) |
search_tasks | Busca tarefas por nome |
get_task | Obtém detalhes completos da tarefa, incluindo subtarefas |
list_subtasks | Lista subtarefas de uma tarefa |
get_pomodoro_stats | Estatísticas de Pomodoro por dia para os últimos N dias |
find_duplicate_tasks | Encontra ocorrências duplicadas de tarefas recorrentes (mesma série, mesmo dia) |
Ferramentas de escrita (exigem a instância dedicada do Chrome)
| Ferramenta | Descrição |
|---|---|
complete_tasks | Conclui tarefas; tarefas recorrentes ganham a próxima ocorrência, a menos que a série já tenha uma |
skip_occurrences | Pula a ocorrência atual de tarefas recorrentes sem contá-la como concluída |
remove_duplicate_tasks | Exclui cópias extras encontradas por find_duplicate_tasks; a cópia mantida nunca é excluída |
Toda escrita é confirmada por você em um formulário (elicitação MCP, suportada pelo Claude Code). Clientes sem formulários de confirmação podem ler, mas não podem escrever, então a aprovação nunca depende do modelo. As alterações são sincronizadas com a nuvem do Focus To-Do pelo próprio aplicativo.
Como funciona
O Focus To-Do (tanto o aplicativo Windows quanto a extensão do Chrome) armazena dados no IndexedDB (formato LevelDB do Chrome). Para leituras, este servidor:
- Detecta automaticamente o caminho ativo do LevelDB para perfis do Windows UWP ou da Extensão do Chrome
- Lê os arquivos SSTable do LevelDB (
.ldb) e o Write-Ahead Log (.log) diretamente em modo somente leitura - Analisa os prefixos de chave do IndexedDB do Chrome para extrair registros de object store
- Decodifica valores usando o
v8.deserializedo Node.js com patch automático de cabeçalho V8 para versões modernas do Chrome - Armazena dados em cache na memória por 30 segundos para evitar releituras a cada chamada de ferramenta
Para escritas, ele se conecta à instância dedicada do Chrome pelo DevTools Protocol, localiza os serviços de tarefas e sincronização do aplicativo e os chama, para que recorrência e sincronização na nuvem se comportem exatamente como no aplicativo.
Object stores lidos:
os1→ Projetosos2→ Tarefasos3→ Subtarefasos4→ Sessões Pomodoro
Notas
- As leituras abrem arquivos de banco de dados em modo somente leitura. As escritas acontecem apenas pelas ferramentas de escrita, dentro do aplicativo Focus To-Do, após sua confirmação.
- Os dados são lidos diretamente do disco, refletindo o último estado gravado pelo Chrome/Focus To-Do.
Licença
MIT