hortusfox-mcp
This MCP server exposes the complete HortusFox REST API as tools, enabling AI assistants to manage a self-hosted plant management system across 7 domains:
Plants: Get details, add, update, or remove plants; list with filtering/pagination/sorting; free-text search; manage custom attributes; update main photo; manage gallery photos; add, edit, remove, or fetch plant log/journal entries.
Locations: List all locations (with optional plant counts/lists) and get details of a specific location.
Tasks: Fetch tasks (including completed ones), add with optional due dates, recurrence, and plant associations, edit (including toggling completion), and remove.
Inventory: Fetch full inventory, add new items, edit existing items, increment/decrement item amounts, and remove items.
Calendar: Fetch entries within a date range, add entries with start/end dates and optional class, edit, and remove.
Chat: Fetch recent workspace chat messages and post new messages as a bot.
Backup: Export backup archives for selected data categories (locations, plants, gallery, tasks, inventory, calendar) and import previously staged backup data.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hortusfox-mcplist all plants in the living room"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HortusFox MCP Server
A Model Context Protocol (MCP) stdio server for
HortusFox, the self-hosted plant
management system. It exposes the complete HortusFox REST API (/api/*) as MCP tools so
AI assistants can read and manage your plants, locations, tasks, inventory, calendar,
chat and backups.
Written in TypeScript for Node.js, using the official
@modelcontextprotocol/sdk.
Features
Every endpoint of the HortusFox ApiController is covered — 38 tools across 7 domains:
Domain | Tools |
Plants (18) | get, add, update, remove, list, search; custom attributes add/edit/remove; main photo update; gallery list/add/edit/remove; log add/edit/remove/fetch |
Locations (2) | list, get info |
Tasks (4) | fetch, add, edit, remove |
Inventory (6) | fetch, add, edit, increment, decrement, remove |
Calendar (4) | fetch, add, edit, remove |
Chat (2) | fetch, post message |
Backup (2) | export, import |
Related MCP server: farmbot-agent
Prerequisites
Node.js 18+ (uses the built-in
fetch).A running HortusFox instance.
A HortusFox API key. In HortusFox, go to Admin → API and create a key.
Installation
npm install
npm run buildThis produces the runnable server at dist/index.js.
Configuration
The server is configured entirely through environment variables:
Variable | Required | Description |
| ✅ | Base URL of your HortusFox instance, e.g. |
| ✅ | API key created in the HortusFox admin panel |
| ❌ | Request timeout in milliseconds (default |
See .env.example.
Usage
Run directly
HORTUSFOX_URL=https://garden.example.com \
HORTUSFOX_API_TOKEN=your-token \
node dist/index.jsThe server speaks MCP over stdio. Diagnostic messages are written to stderr; the
JSON-RPC protocol uses stdout.
Run with npx
Once published to npm, the server can be run without a local checkout:
HORTUSFOX_URL=https://garden.example.com \
HORTUSFOX_API_TOKEN=your-token \
npx @tomfrenzel/hortusfox-mcpRegister with an MCP client
Add the server to your client's MCP configuration. The recommended way is via
npx:
{
"mcpServers": {
"hortusfox": {
"command": "npx",
"args": ["-y", "@tomfrenzel/hortusfox-mcp"],
"env": {
"HORTUSFOX_URL": "https://garden.example.com",
"HORTUSFOX_API_TOKEN": "your-token"
}
}
}
}Alternatively, point at a local build:
{
"mcpServers": {
"hortusfox": {
"command": "node",
"args": ["/absolute/path/to/hortusfox-mcp/dist/index.js"],
"env": {
"HORTUSFOX_URL": "https://garden.example.com",
"HORTUSFOX_API_TOKEN": "your-token"
}
}
}
}If installed globally (npm install -g .), you can use the hortusfox-mcp binary
instead of node dist/index.js.
Tool reference
All tools are prefixed with hortusfox_. Each returns the raw HortusFox JSON response
(pretty-printed). Errors (network failures, auth rejection, or API error codes) are
returned as MCP tool errors with a descriptive message.
Plants
Tool | Endpoint | Key arguments |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Photos: the API-based photo tools support external image URLs (
external: truewith aphotoURL). Direct binary file uploads are not exposed over the token API.
Locations
Tool | Endpoint | Key arguments |
|
|
|
|
|
|
Tasks
Tool | Endpoint | Key arguments |
|
|
|
|
|
|
|
|
|
|
|
|
Inventory
Tool | Endpoint | Key arguments |
|
| – |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Calendar
Tool | Endpoint | Key arguments |
|
|
|
|
|
|
|
|
|
|
|
|
Chat
Tool | Endpoint | Key arguments |
|
|
|
|
|
|
Backup
Tool | Endpoint | Key arguments |
|
|
|
|
| same category flags |
Development
npm run dev # tsc --watch
npm run typecheck # type-check without emitting
npm run build # compile to dist/A dev container config is provided in
.devcontainer/ for a ready-to-use Node.js + TypeScript
environment.
Releasing
Releases are published to npm automatically by the
Release GitHub Actions workflow whenever a
v* tag is pushed. The workflow type-checks, builds, verifies the tag matches
the package.json version, and publishes with
npm provenance.
To cut a release:
npm version patch # or minor / major — bumps package.json and creates a tag
git push --follow-tagsThis requires an NPM_TOKEN secret to be configured in the repository settings.
How it works
The Asatru framework behind HortusFox merges POST body, query string and JSON body into a
single request argument bag, and the API authenticates via a token parameter. This
server therefore sends each request as an application/x-www-form-urlencoded POST
(including the token and all parameters), which works uniformly for every route and avoids
URL-length limits for larger text fields. Requests are retried up to 3 times on transient
network/timeout failures; deterministic API and auth errors are surfaced immediately.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA demo MCP server that enables users to interact with various tools through natural language, including note management, weather queries, calculations, file operations, and shell commands. Uses Ollama for intent detection and structured command parsing from free text input.Last updated
- Alicense-qualityDmaintenanceAn MCP server and CLI for controlling FarmBot hardware, enabling AI agents to manage gardening tasks through tools like gantry movement and device status monitoring. It supports executing Lua scripts and core hardware commands like homing and emergency stops via the Model Context Protocol.Last updated3MIT
- Alicense-qualityAmaintenanceA self-hostable MCP server that turns a folder of skills into callable tools via MCP and REST APIs.Last updated2MIT
- FlicenseCqualityCmaintenanceAn MCP server that exposes Homebox inventory management as tools for AI agents, enabling search, add, update, delete products, locations, tags, and maintenance entries.Last updated171
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Hosted MCP server to manage a restaurant menu from AI agents - 39 tools over the DuckHub API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomfrenzel/hortusfox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server