kenotex-mcp
v1.1.0
Published
MCP server for Kenotex ── expose local todo/event/category/reminder CRUD to any MCP-compatible LLM client (Claude Desktop, Cursor, Zed, OpenClaw, etc.)
Maintainers
Readme
kenotex-mcp
MCP (Model Context Protocol) server that exposes Kenotex todo / event / category / reminder CRUD to any MCP-compatible LLM client.
Works with Claude Desktop, Cursor, Zed, OpenClaw, and any other agent that speaks MCP over stdio.
Prerequisites
- The Kenotex macOS app must be running (it hosts the local HTTP server on port 21519).
- Node.js 20+ or Bun.
Install
Globally:
npm install -g kenotex-mcp
# or
bun add -g kenotex-mcpOr use it directly via npx / bunx (no install):
npx kenotex-mcpConfigure in an MCP client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"kenotex": {
"command": "npx",
"args": ["-y", "kenotex-mcp"]
}
}
}Restart Claude Desktop. You'll see the Kenotex tools appear in the 🛠️ menu.
Cursor / Zed / OpenClaw
Same pattern: point the MCP config at kenotex-mcp as the command.
Environment overrides
KENOTEX_HOST— override base URL (defaulthttp://127.0.0.1:21519).KENOTEX_TOKEN— skip filesystem token discovery and use this token.
Tools exposed
| Category | Tool |
| ---------- | --------------------------------------------------- |
| Todo | create_todo list_todos get_todo update_todo complete_todo delete_todo |
| Event | create_event list_events get_event update_event delete_event |
| Category | list_categories create_category |
| Reminder | add_reminder remove_reminder |
create_todo requires a categoryId — todos can no longer be created uncategorized. The flow is: call list_categories and reuse a matching category's id; if none fits, call create_category and use the returned id, then create_todo.
Recurrence DSL: 'daily' / 'weekly:mon,wed,fri' / 'monthly:15' / 'yearly' / 'after:daily' (todos only) / 'none'.
Virtual event occurrences: get_event accepts ids like {parentId}__occ__{yyyy-MM-dd}. Recurring parents materialize past occurrences on delete.
How auth works
On each HTTP request the server reads the Kenotex bearer token from (in order):
~/Library/Containers/com.kenxcomp.kenotex/Data/Library/Application Support/Kenotex/local-http-token~/Library/Application Support/Kenotex/local-http-token~/.kenotex-local-token
The token is rotated each time the Kenotex app starts, so a stale MCP session just re-reads the file on its next tool call.
Troubleshooting
"Kenotex app not running or token not accessible" — launch Kenotex.app. If running, the token file should exist at one of the three paths above.
Requests time out — check that no firewall is blocking localhost:21519; tools are hardcoded to 10-second timeout.
License
MIT © kenxcomp
