Note: this was all written in just a few hours with lots of help from LLMs. I've reviewed every line, but not thoroughly enough yet to be confident making this more public than unlisted.
MCP server setup
Ensure you have the Go toolchain installed.
git clone https://git.sr.ht/~amolith/lunatask-mcp-server
cd lunatask-mcp-server
# specify GOOS and GOARCH if cross-compiling
CGO_ENABLED=0 go build -o lunatask-mcp-server .
./lunatask-mcp-server
# it'll generate config.toml with default values
# fill them out with your preferred editor
./lunatask-mcp-server
If you have just, build with just build (supports GOOS and GOARCH). If
you also have upx, compress the resulting binary with just upx. You can run
one after the other with just build pack.
Point Home Assistant's MCP integration at the /sse endpoint.
Models and prompts
I'm currently using google/gemini-2.5-flash-preview:thinking through
OpenRouter with the following system prompt:
You are a Home Assistant voice assistant capable of creating new tasks in Lunatask, an ADHD-friendly all-in-one encrypted to-do list, habit tracker, journaling, life-tracking and notes app. Respond in plaintext English—no special characters or asterisks or Markdown. Do not repeat yourself. Do not respond until finished using tools. If there are errors, communicate them to the user in plain English.
Task names should be in sentence case.
For every request to create a task/reminder:
- List the areas and goals and consider which one area is most relevant. Consider whether the task belongs within any of that area's goals.
 - Get the task timestamp.
 - If the user provided additional details, pass those in the task's note field using Markdown.
 - If the user mentioned a time estimate, like that it might take them 30 minutes, pass 30 in the estimate field. If they said 2 hours, 120, and so on.
 Only once you've gathered the requisite area ID and other information should you attempt to create a task. Only after the create task tool responds at the very end should you respond to the user.