farmos-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FARMOS_URL | Yes | Base URL of the farmOS instance, e.g. https://farm.example.com | |
| FARMOS_SCOPE | No | OAuth scope (farm_manager, farm_worker, farm_viewer, ...) | farm_manager |
| FARMOS_TIMEOUT | No | Request timeout, seconds | 30 |
| FARMOS_PASSWORD | No | farmOS password for the password grant (if set, it takes precedence over the client credentials grant) | |
| FARMOS_USERNAME | No | farmOS username for the password grant | |
| FARMOS_CLIENT_ID | No | OAuth client id | farm |
| FARMOS_TOKEN_PATH | No | Token endpoint path | /oauth/token |
| FARMOS_ALLOW_DELETE | No | Enable delete_record (also needs writes) | false |
| FARMOS_ALLOW_WRITES | No | Enable create/update/archive/status tools | false |
| FARMOS_INSECURE_TLS | No | Skip TLS verification (not recommended) | false |
| FARMOS_CLIENT_SECRET | No | OAuth client secret (client credentials grant) | |
| FARMOS_ALLOW_INSECURE_HTTP | No | Allow http:// to a non-local host | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| farm_infoA | Show the farmOS server name, version, the authenticated user, which resource types exist, and whether this MCP server currently allows writes and deletes. Call this first when unsure what the instance supports. |
| list_resource_typesA | List entity types and their bundles (e.g. asset: land, plant, animal; log: activity, harvest, ...). Which bundles exist depends on the farmOS modules that are enabled. |
| query_recordsA | Query one bundle of records with filtering, sorting and paging. This is the general read tool; search_assets, list_logs and list_plans cover the common cases. |
| get_recordB | Fetch a single record by UUID. |
| search_assetsA | Find assets across bundles (land, plants, animals, equipment, structures, ...) by name, optionally restricted to active or archived assets. |
| list_logsA | List logs across bundles, newest first by default, filtered by status, asset, text or date range. |
| list_plansA | List plans (e.g. crop or grazing plans). Plan types only exist when the matching farmOS modules are installed. |
| list_termsA | List taxonomy terms in one vocabulary. Use the returned UUIDs when linking logs and assets to categories, units, seasons and plant types. |
| create_recordA | Create any record. Prefer create_log for logs with quantities. Requires writes to be enabled. Names are not unique in farmOS, so search first to avoid duplicates. |
| update_recordA | Update fields on an existing record (PATCH). Only the fields you pass change. Requires writes to be enabled. |
| delete_recordA | Permanently delete a record. This cannot be undone and may leave other records with dangling references. For assets and plans, set_archived is almost always what is wanted. Requires FARMOS_ALLOW_DELETE=true; confirm with the user first. |
| set_archivedA | Archive or restore an asset or plan. In farmOS 4 this sets the 'archived' boolean (assets no longer have a status). On farmOS 3 it falls back to the status field. Requires writes to be enabled. |
| set_log_statusA | Mark a log pending, done, or abandoned (never going to happen, kept for history). Requires writes to be enabled. |
| create_logA | Create a log, optionally with locations, categories and quantities. Quantities are created first and then linked; if the log fails to save, the new quantities are removed again. Requires writes to be enabled. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
The tools are highly differentiated by their scope and action. General record operations are distinct from specific asset, log, and plan operations, making selection intuitive.
The majority of tools follow the 'verb_noun' convention (e.g., list_logs, create_record). While there are variations like 'set_archived', these follow a predictable pattern for state modification.
With 14 tools, the set is perfectly scoped. It covers the entire lifecycle and metadata needs of a complex system without being overly granular or sparse.
The set provides solid CRUD and state management coverage for its core entities (records, logs, assets). While highly complete, advanced relational query logic might require chaining multiple tools.