mcp-greenthumb
An MCP server that gives any MCP-compatible AI client persistent memory of my garden: what’s planted, where it is, and what’s happened to it. I was asking LLMs for gardening advice and kept having to retype the same paragraph of context every time. Now the context is just there, and I can ask a question and get an answer that accounts for my actual beds, plants, and zone.
Once again, I’ve built in a default workflow that incorporates Emacs'
Org mode file format. While I’m out in the garden can hit the Orgzly
widget on my phone to quickly save a note. That syncs to my laptop
with Syncthing, and when I have the chance I separate out
(org-refile) my garden notes into their own file. later I can ask
the LLM to import my notes, and it calls sync_notes to parse the Org
file and interpret the entries.
Underneath it’s a SQLite database of plants, locations, and activity history. The client does all the natural language work; the server only does structured storage and retrieval. It exposes tools for the writes (registering a plant, recording a planting, logging activities, updating a location) plus a read-only SQL escape hatch, and a handful of resources that give the AI ambient context without it having to ask.
An important point in the schema: a plant is registered once, and each instance/group of it growing somewhere is a separate planting. So peppers started in a seed tray and then split between a raised bed and some pots are three plantings of one plant, tracked independently. When a planting is finished, or a bed gets torn out, it’s marked inactive rather than deleted, so the history stays intact.
* Transplanted tomatoes outdoors
:PROPERTIES:
:CREATED: [2026-04-21 Tue 15:32]
:END:
Put them in pots 3, 4, and 5.
From that the model can check which of those pots already exist, create the missing ones, add a planting for each, and log the transplant. Re-importing the same file is safe; entries are deduplicated by timestamp and content.
Nothing about the design (aside from the prompts and database schema) is really specific to gardening. It’s a structured, persistent memory an LLM can read and write, and it wouldn’t take much to point it at something else entirely. Though, if that’s all you want, I’m sure other programs do it better.
The code is here on GitHub.