Farm OS MCP Server
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., "@Farm OS MCP Servershow me the summary for farm 1"
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.
Farm OS MCP Server
A Model Context Protocol (MCP) server for Farm OS using FastMCP, built with Python and managed with uv.
Features
This MCP server provides tools for managing farm data including:
Farm information and summaries
Field management and crop tracking
Livestock monitoring
Equipment tracking
Sensor readings
All data is currently static for testing purposes.
Related MCP server: MCP Server
Setup
Prerequisites
Python 3.10 or higher
uvpackage manager (install from https://docs.astral.sh/uv/)
Installation
Install
uv(if not already installed):Windows (PowerShell):
irm https://astral.sh/uv/install.ps1 | iexmacOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shSync dependencies:
uv syncInstall the project:
uv pip install -e .
Usage
Run the MCP Server
uv run python farmos_server.pyTest the Tools
Run the test script to see all available tools in action:
uv run python test_server.pyAvailable Tools
get_farm_info(farm_id)- Get detailed information about a specific farmlist_all_farms()- List all available farmsget_field_info(field_id)- Get information about a specific fieldlist_fields_by_farm(farm_id)- List all fields for a farmget_livestock_info(livestock_id)- Get information about livestocklist_livestock_by_farm(farm_id)- List all livestock for a farmget_equipment_info(equipment_id)- Get information about equipmentlist_equipment_by_farm(farm_id)- List all equipment for a farmget_sensor_readings(field_id)- Get sensor readings for a fieldsearch_by_crop_type(crop_type)- Search fields by crop typeget_farm_summary(farm_id)- Get comprehensive farm summary with statistics
Project Structure
fastmcp/
├── farmos_server.py # Main MCP server with all tools
├── static_data.py # Static test data
├── test_server.py # Test script
├── pyproject.toml # Project configuration
└── setup.py # Setup helper scriptStatic Test Data
The project includes static test data for:
3 farms
4 fields
3 livestock groups
3 equipment items
3 sensor devices
All data is defined in static_data.py and can be modified for testing purposes.
Available Tools
11 toolsget_equipment_infoC
Get information about specific equipment.
Args: equipment_id: The unique identifier for the equipment
Returns: Dictionary containing equipment information
| Name | Required | Description | Default |
|---|---|---|---|
| equipment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get information', implying a read-only operation, but doesn't clarify permissions, rate limits, error conditions, or what specific information is returned. For a tool with no annotations, this leaves significant gaps in understanding its behavior and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear purpose statement followed by 'Args' and 'Returns' sections. Every sentence earns its place, and there's no unnecessary verbosity. However, the 'Returns' section could be more informative, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema, the description is somewhat complete. The output schema handles return values, so the description doesn't need to detail them. However, with no annotations and minimal parameter guidance, it lacks sufficient context for optimal use, especially compared to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal semantics beyond the input schema. It explains that 'equipment_id' is 'The unique identifier for the equipment', which clarifies its purpose, but the schema description coverage is 0%, and the description doesn't elaborate on format, examples, or constraints. With one parameter and an output schema present, the baseline is met, but no additional value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get information about specific equipment.' It specifies the verb ('Get') and resource ('equipment'), making it easy to understand what the tool does. However, it doesn't distinguish this tool from its siblings (e.g., get_farm_info, get_field_info), which all follow a similar 'get information about X' pattern, so it doesn't fully differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or compare it to sibling tools like 'list_equipment_by_farm' or 'search_by_crop_type'. The agent must infer usage from the tool name and context alone, which is insufficient for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_farm_infoB
Get information about a specific farm.
Args: farm_id: The unique identifier for the farm (e.g., 'farm_001')
Returns: Dictionary containing farm information
| Name | Required | Description | Default |
|---|---|---|---|
| farm_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states that the tool retrieves information, implying it is read-only, but does not cover aspects like authentication requirements, error handling, rate limits, or data freshness. For a tool with no annotation coverage, this is insufficient, as it leaves key operational details unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with a clear purpose statement followed by 'Args' and 'Returns' sections. Each sentence adds value without redundancy, making it easy to parse and understand quickly. This efficient use of space earns the highest score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return value documentation), the description is minimally complete. It covers the basic purpose and parameter semantics but lacks usage guidelines and behavioral transparency, which are important for effective tool invocation. This results in an adequate but incomplete overall context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'farm_id' is a 'unique identifier for the farm' and provides an example ('e.g., 'farm_001''), which clarifies the parameter's purpose beyond the bare schema. However, it does not detail format constraints or validation rules, resulting in an adequate but not comprehensive score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get information about a specific farm.' It specifies the verb ('Get') and resource ('farm'), but does not differentiate it from sibling tools like 'get_farm_summary' or 'list_all_farms,' which might provide similar or overlapping information. This omission prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools such as 'get_farm_summary' (which might offer aggregated data) or 'list_all_farms' (which might list multiple farms), leaving the agent without context for tool selection. This lack of comparative information results in a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_farm_summaryC
Get a comprehensive summary of a farm including all its assets.
Args: farm_id: The unique identifier for the farm
Returns: Dictionary containing comprehensive farm summary
| Name | Required | Description | Default |
|---|---|---|---|
| farm_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that it returns a 'comprehensive summary' and a 'dictionary', but lacks details on permissions, rate limits, error handling, or what 'comprehensive' entails (e.g., depth of assets). This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first. The 'Args' and 'Returns' sections are structured but slightly redundant with the opening sentence. It could be more concise by integrating these details, but overall it's efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which handles return values), the description is somewhat complete but lacks context for usage and behavioral traits. It covers the basic purpose and parameter, but without annotations, it should do more to guide the agent, such as explaining scope or sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the input schema: it specifies that 'farm_id' is a 'unique identifier for the farm', which is slightly helpful but basic. With 0% schema description coverage and only one parameter, the baseline is 4, but the description doesn't fully compensate by explaining format or constraints, so it scores lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('comprehensive summary of a farm including all its assets'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_farm_info' or 'list_all_farms', which could provide overlapping or related functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_farm_info' (likely more basic) and 'list_all_farms' (likely a list without details), the agent is left to infer usage context without explicit direction, which could lead to incorrect tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_field_infoB
Get information about a specific field.
Args: field_id: The unique identifier for the field (e.g., 'field_001')
Returns: Dictionary containing field information
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information (implying read-only), but does not mention permissions, rate limits, error handling, or what specific information is returned (e.g., field metadata, status). This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first, followed by structured sections for Args and Returns. Each sentence adds value, though the Returns section is somewhat vague ('Dictionary containing field information') and could be more specific if not for the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema, the description is minimally adequate. It covers the basic purpose and parameter semantics, but lacks usage guidelines and behavioral details. The output schema likely handles return values, reducing the need for description here, but overall completeness is moderate with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema. The schema has 0% description coverage and only defines 'field_id' as a string. The description clarifies it as 'The unique identifier for the field (e.g., 'field_001')', providing an example and context that the schema lacks. This compensates well for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get information about a specific field.' It uses a specific verb ('Get') and resource ('field'), but does not differentiate from sibling tools like 'get_farm_info' or 'get_equipment_info' beyond specifying 'field' as the target. This makes it clear but not sibling-distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'list_fields_by_farm' for broader queries or 'search_by_crop_type' for different filtering, nor does it specify prerequisites or exclusions. Usage is implied only by the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_livestock_infoC
Get information about specific livestock.
Args: livestock_id: The unique identifier for the livestock group
Returns: Dictionary containing livestock information
| Name | Required | Description | Default |
|---|---|---|---|
| livestock_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it 'Get[s] information' but doesn't disclose behavioral traits like whether it's a read-only operation, requires authentication, has rate limits, or what happens with invalid IDs. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly. The Args/Returns sections are structured but could be more concise (e.g., merging into one sentence). No wasted sentences, though it could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 0% schema coverage and an output schema exists (so return values are documented elsewhere), the description is minimally complete. It covers the basic purpose and parameter meaning but lacks behavioral context, usage guidance, and detailed parameter semantics. For a simple lookup tool, this is adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter details. The description adds minimal semantics: it defines 'livestock_id' as 'The unique identifier for the livestock group', which clarifies the parameter's purpose. However, it doesn't explain format, constraints, or examples, leaving the agent to guess valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get information about specific livestock' - a specific verb ('Get') and resource ('livestock'). It distinguishes from siblings like 'list_livestock_by_farm' (which lists multiple) by focusing on retrieving details for a specific ID. However, it doesn't explicitly mention what 'information' includes or how it differs from other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid livestock_id), contrast with 'list_livestock_by_farm' for browsing, or indicate when other get_* tools might be more appropriate. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sensor_readingsC
Get all sensor readings for a specific field.
Args: field_id: The unique identifier for the field
Returns: List of sensor readings for the field
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Get all sensor readings' but doesn't disclose behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or what 'all' entails (e.g., pagination, time range). The description is minimal and lacks critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with a clear main sentence followed by structured 'Args' and 'Returns' sections. It's front-loaded with the core purpose, and each sentence adds value without redundancy, though the formatting could be more integrated for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which handles return values), the description is somewhat complete but lacks depth. It covers the basic purpose and parameter semantics but misses behavioral details and usage guidelines, making it adequate but with clear gaps for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter details. The description adds meaning by explaining 'field_id' as 'The unique identifier for the field', which clarifies its purpose. However, it doesn't specify format (e.g., UUID, integer) or constraints, leaving gaps. With one parameter and some added semantics, this meets the baseline for minimal compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'sensor readings' with scope 'for a specific field', making the purpose unambiguous. However, it doesn't differentiate from potential sibling tools like 'get_field_info' or 'search_by_crop_type' that might also return sensor data, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_field_info' or other sibling tools. It mentions 'specific field' but doesn't clarify prerequisites, exclusions, or comparative use cases, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_farmsB
List all available farms.
Returns: List of all farms with basic information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'Returns: List of all farms with basic information', which implies a read-only operation, but lacks details on permissions, rate limits, pagination, or error handling. For a tool with zero annotation coverage, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences: one stating the purpose and another describing the return. It is front-loaded with the core function. However, the second sentence could be integrated more seamlessly, and there's minor redundancy in 'List all available farms' and 'List of all farms'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, simple list operation) and the presence of an output schema, the description is somewhat complete but lacks context. It covers the basic purpose and return, but without annotations, it should provide more behavioral details like safety or performance considerations to be fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate here. Baseline is 4 for zero parameters, as no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with 'List all available farms' which is a specific verb+resource combination. It distinguishes from siblings like 'get_farm_info' or 'get_farm_summary' by emphasizing 'all' and 'basic information', though it could be more explicit about the distinction. It avoids tautology by not just restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_farm_info', 'get_farm_summary', or 'search_by_crop_type'. It mentions 'all farms' but doesn't specify contexts where this broad listing is preferred over filtered or detailed queries, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_equipment_by_farmB
List all equipment for a specific farm.
Args: farm_id: The unique identifier for the farm
Returns: List of equipment belonging to the farm
| Name | Required | Description | Default |
|---|---|---|---|
| farm_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return type ('List of equipment'), but does not cover critical aspects like whether this is a read-only operation, pagination, error handling, or authentication needs. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the main purpose, followed by clear sections for arguments and returns. It avoids unnecessary details, but the 'Args' and 'Returns' labels add slight redundancy that could be integrated more seamlessly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema, the description is adequate but not complete. It covers the basic purpose and parameter semantics but lacks usage guidelines and behavioral details, which are important for effective tool selection and invocation by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'farm_id' by explaining it as 'The unique identifier for the farm', which clarifies its role beyond the schema's basic type definition. With 0% schema description coverage, this compensation is effective, though it could be more detailed (e.g., format examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('equipment for a specific farm'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'list_fields_by_farm' or 'list_livestock_by_farm', which follow a similar pattern but target different resources, so it lacks sibling differentiation for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_equipment_info' or 'search_by_crop_type'. It only states the basic function without context, prerequisites, or exclusions, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fields_by_farmB
List all fields for a specific farm.
Args: farm_id: The unique identifier for the farm
Returns: List of fields belonging to the farm
| Name | Required | Description | Default |
|---|---|---|---|
| farm_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists fields, implying a read-only operation, but doesn't address key behaviors like pagination, error handling, authentication needs, or rate limits. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence clearly states the purpose, followed by structured 'Args' and 'Returns' sections. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return values), the description is adequate but has gaps. It covers the basic purpose and parameter semantics but lacks usage guidelines and behavioral details (e.g., error cases, pagination). This makes it minimally viable but not fully complete for informed use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter: 'farm_id: The unique identifier for the farm.' Since schema description coverage is 0% (the schema only specifies type 'string'), this compensates by explaining what the parameter represents. However, it doesn't provide format details (e.g., numeric ID, UUID) or examples, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all fields for a specific farm.' It specifies the verb ('List') and resource ('fields'), and distinguishes it from siblings like 'get_field_info' (which likely retrieves details for a single field) and 'list_all_farms' (which lists farms, not fields). However, it doesn't explicitly differentiate from 'search_by_crop_type' (which might also involve fields), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_field_info' (for detailed info on a single field) or 'search_by_crop_type' (for filtering fields by crop), nor does it specify prerequisites or exclusions. Usage is implied by the purpose but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_livestock_by_farmB
List all livestock for a specific farm.
Args: farm_id: The unique identifier for the farm
Returns: List of livestock belonging to the farm
| Name | Required | Description | Default |
|---|---|---|---|
| farm_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists livestock, implying a read-only operation, but does not cover aspects like pagination, error handling, authentication needs, or rate limits. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with a clear purpose statement followed by structured 'Args' and 'Returns' sections. Every sentence earns its place, and there is no redundant or verbose content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks details on behavioral traits and usage guidelines, making it incomplete for optimal agent operation without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by specifying that 'farm_id' is 'The unique identifier for the farm', which clarifies its purpose beyond the schema's type declaration. With 0% schema description coverage and only one parameter, this compensates adequately, though it could provide more context like format examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'livestock for a specific farm', making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'get_livestock_info' or 'list_fields_by_farm', which could cause confusion about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_livestock_info' or 'list_all_farms'. The description implies usage for a specific farm but lacks explicit context, exclusions, or prerequisites, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_crop_typeA
Search for fields by crop type.
Args: crop_type: The type of crop to search for (e.g., 'Corn', 'Wheat')
Returns: List of fields matching the crop type
| Name | Required | Description | Default |
|---|---|---|---|
| crop_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool searches and returns a list, which implies a read-only operation, but doesn't address key behavioral aspects such as whether the search is case-sensitive, if it supports partial matches, what happens with no results, or any performance considerations like rate limits. This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with zero wasted words. It starts with a clear purpose statement, followed by an 'Args' section explaining the parameter with examples, and a 'Returns' section specifying the output. Every sentence adds value, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, simple search operation), no annotations, but with an output schema present (which handles return values), the description is mostly complete. It covers the purpose, parameter semantics, and return type adequately. However, it lacks behavioral details like search behavior or error handling, which would be beneficial for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema, which has 0% coverage. It explains that 'crop_type' is 'The type of crop to search for (e.g., 'Corn', 'Wheat')', providing examples and clarifying the parameter's purpose. Since there's only one parameter and the schema lacks descriptions, this compensation is effective, though it could be more detailed (e.g., format constraints).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for fields by crop type.' It specifies the verb ('search') and resource ('fields'), and distinguishes it from siblings like 'get_field_info' or 'list_fields_by_farm' by focusing on crop-based filtering. However, it doesn't explicitly differentiate from potential similar tools not in the sibling list, such as a hypothetical 'search_by_location'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying it searches for fields based on crop type, suggesting it should be used when crop filtering is needed. However, it provides no explicit guidance on when to use this tool versus alternatives like 'list_fields_by_farm' or 'get_field_info', nor does it mention prerequisites or exclusions. The usage is inferred but not clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v1.0.0- First observed
get_equipment_info - First observed
get_farm_info - First observed
get_farm_summary - First observed
get_field_info - First observed
get_livestock_info - First observed
get_sensor_readings - First observed
list_all_farms - First observed
list_equipment_by_farm - First observed
list_fields_by_farm - First observed
list_livestock_by_farm - First observed
search_by_crop_type
TDQS
Every tool has a clearly distinct purpose targeting specific resources (equipment, farms, fields, livestock, sensors) with no overlap in functionality. The get_* tools retrieve specific entities, list_* tools enumerate resources by farm, and search_by_crop_type provides unique filtering capability.
All tools follow a consistent verb_noun pattern with snake_case throughout. The naming convention is perfectly predictable: get_* for retrieving specific entities, list_* for enumerating collections, and search_* for filtering operations.
With 11 tools, this is well-scoped for a farm management system. Each tool earns its place by covering distinct aspects of farm operations including equipment, farms, fields, livestock, and sensors without being overwhelming.
The server provides excellent read operations but lacks any write/update capabilities. For a farm management system, obvious gaps include creating/updating farms, fields, equipment, or livestock records, and managing sensor data. The surface is complete for querying but incomplete for full lifecycle management.
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 Connectors
- MaplithOAuthcom.maplith
Data-ontology maps of your business systems, served to AI agents over MCP.
Public, read-only MCP server for FarmNeural company facts, packages, and capabilities.
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceFacilitates interaction and context sharing between AI models using the standardized Model Context Protocol (MCP) with features like interoperability, scalability, security, and flexibility across diverse AI systems.1-
- AlicenseNot gradedqualityDmaintenanceA FastAPI-based Model Context Protocol server that exposes herd data through a discoverable API, with local and containerized deployment options.MIT
- AlicenseNot gradedqualityDmaintenanceAn 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.3MIT
- AlicenseNot gradedqualityCmaintenanceExposes real-time soil sensor metrics as MCP Resources and irrigation valve controls as MCP Tools, enabling AI-driven agronomic decisions with built-in safety guardrails.Apache 2.0
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/ramprasadchauhan/fast-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server