BioOntology MCP Server
Provides comprehensive access to the BioOntology API for searching, annotating, and exploring over 1,200 biological ontologies, including features for term searching, text annotation, ontology navigation, and analytics.
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., "@BioOntology MCP Serversearch for diabetes terms in NCIT and DOID ontologies"
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.

Unofficial BioOntology MCP Server
A production-ready Model Context Protocol (MCP) server that provides comprehensive access to the BioOntology API for searching, annotating, and exploring over 1,200 biological ontologies.
Features
Search & Discovery
search_terms - Search across ontology terms with advanced filtering options
search_properties - Search ontology properties by labels and IDs
search_ontologies - Find ontologies by name, description, or domain
get_ontology_info - Get detailed information about specific ontologies
Text Analysis
annotate_text - Analyze text and identify relevant ontology terms
recommend_ontologies - Get ontology recommendations for text or keywords
batch_annotate - Process multiple texts for annotation efficiently
Ontology Navigation
get_class_info - Get detailed information about ontology classes
Analytics & Metadata
get_ontology_metrics - Get usage statistics and quality metrics
get_analytics_data - Get visitor statistics and popularity trends
Related MCP server: biothings-mcp
Installation
Clone or download this server
Install dependencies:
npm installBuild the server:
npm run build
Configuration
You need a BioOntology API key to use this server. Get one from BioPortal:
Create an account at https://bioportal.bioontology.org/
Generate an API key from your account settings
Set the environment variable:
export BIOONTOLOGY_API_KEY=your_api_key_here
Usage
Running the Server
node build/index.jsThe server runs on stdio and implements the MCP protocol for communication with MCP-compatible clients.
Resource Templates
The server provides several resource templates for direct data access:
bioontology://ontology/{acronym}- Complete ontology informationbioontology://class/{ontology}/{class_id}- Ontology class detailsbioontology://search/{query}- Term search resultsbioontology://annotations/{text}- Text annotation resultsbioontology://recommendations/{input}- Ontology recommendationsbioontology://analytics/{ontology}- Analytics data
Example Tool Calls
Search for terms:
{
"tool": "search_terms",
"arguments": {
"query": "diabetes",
"ontologies": "NCIT,DOID",
"require_definitions": true,
"pagesize": 10
}
}Annotate text:
{
"tool": "annotate_text",
"arguments": {
"text": "The patient has diabetes mellitus and hypertension",
"ontologies": "NCIT,DOID,HP",
"longest_only": true
}
}Get ontology recommendations:
{
"tool": "recommend_ontologies",
"arguments": {
"input": "cancer treatment protocols",
"input_type": 1,
"output_type": 1
}
}Batch annotate multiple texts:
{
"tool": "batch_annotate",
"arguments": {
"texts": ["diabetes mellitus", "cardiac arrest", "lung cancer"],
"ontologies": "NCIT",
"longest_only": true
}
}Supported Ontologies
The server works with all ontologies available in BioPortal (1,200+), including:
Medical/Clinical:
NCIT - NCI Thesaurus (cancer terminology)
DOID - Disease Ontology
HP - Human Phenotype Ontology
MESH - Medical Subject Headings
Biological/Chemical:
GO - Gene Ontology
UBERON - Anatomy ontology
CHEBI - Chemical entities of biological interest
And 1,190+ more specialized ontologies
Integration with MCP Clients
This server is compatible with any MCP-enabled client. Popular options include:
Claude Desktop - Add to your MCP configuration
VSCode Extensions - Use with MCP-compatible extensions
Custom Applications - Integrate via the MCP protocol
MCP Configuration Example
Add to your MCP client configuration:
{
"servers": {
"bioontology": {
"command": "node",
"args": ["/path/to/bioontology-server/build/index.js"],
"env": {
"BIOONTOLOGY_API_KEY": "your_api_key_here"
}
}
}
}Advanced Features
Input Validation
Comprehensive parameter validation with proper error messages
Type checking for all inputs
Range validation for numeric parameters
Enum validation for restricted values
Error Handling
Graceful handling of API errors
Structured error responses
Network timeout management
Authentication error reporting
Performance
Efficient API request handling
Proper timeout management
Memory usage optimization
Concurrent request support
API Documentation
For detailed BioOntology API documentation, see: https://data.bioontology.org/documentation
Production Use
This server has been thoroughly tested and is ready for production use. It provides:
Reliable API integration with robust error handling
Comprehensive input validation for all tools
Full MCP protocol compliance for seamless integration
Support for 1,200+ ontologies across all biological domains
High performance with optimized response times
License
MIT License - see LICENSE file for details.
Citation
If you use this project in your research or publications, please cite it as follows:
Available Tools
10 toolsannotate_textC
Analyze text and identify relevant ontology terms with configurable parameters
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to annotate with ontology terms | |
| ontologies | No | Comma-separated ontology acronyms to use for annotation | |
| semantic_types | No | Comma-separated semantic types to filter by | |
| expand_semantic_types_hierarchy | No | Include children of semantic types (default: false) | |
| expand_class_hierarchy | No | Include class ancestors in annotation (default: false) | |
| class_hierarchy_max_level | No | Maximum hierarchy depth (default: 0) | |
| expand_mappings | No | Use manual mappings (UMLS, REST, CUI, OBOXREF) (default: false) | |
| stop_words | No | Comma-separated custom stop words | |
| minimum_match_length | No | Minimum character length for matches | |
| exclude_numbers | No | Exclude numeric matches (default: false) | |
| whole_word_only | No | Match whole words only (default: true) | |
| exclude_synonyms | No | Exclude synonym matches (default: false) | |
| longest_only | No | Return only longest matches (default: false) |
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. While 'analyze' and 'identify' imply a read-only operation, it doesn't clarify if this is computationally intensive, has rate limits, requires specific permissions, or what the output format looks like. For a tool with 13 parameters and no annotations, 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 a single, efficient sentence that front-loads the core purpose without unnecessary details. It's appropriately sized for the tool's complexity, with zero waste or redundancy, making it easy for an agent to parse 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 complexity (13 parameters, no output schema, and no annotations), the description is insufficient. It doesn't cover behavioral aspects like performance, error handling, or output structure, and while the schema handles parameters, the lack of annotations means the description should compensate more for transparency gaps. This leaves the agent under-informed for effective 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 mentions 'configurable parameters,' but doesn't add specific meaning beyond what the input schema provides. Since schema description coverage is 100%, the schema already documents all 13 parameters thoroughly. The description doesn't explain parameter interactions, defaults, or usage examples, so it meets the baseline but doesn't enhance understanding.
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: 'Analyze text and identify relevant ontology terms with configurable parameters.' It specifies the verb ('analyze' and 'identify'), the resource ('text'), and the action ('annotate with ontology terms'). However, it doesn't explicitly differentiate from sibling tools like 'batch_annotate' or 'search_terms,' which 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 doesn't mention sibling tools like 'batch_annotate' for multiple texts or 'search_terms' for different search functionalities, nor does it specify prerequisites or contexts for usage. This leaves the agent without clear direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_annotateC
Process multiple texts for annotation efficiently
| Name | Required | Description | Default |
|---|---|---|---|
| texts | Yes | Array of texts to annotate (max 10) | |
| ontologies | No | Comma-separated ontology acronyms | |
| longest_only | No | Return only longest matches (default: true) | |
| whole_word_only | No | Match whole words only (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral information. It mentions 'efficiently' but doesn't disclose performance characteristics, rate limits, authentication requirements, error handling, or what happens when texts exceed the 10-item limit. For a batch processing tool with zero annotation coverage, this is insufficient.
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 a single, efficient sentence that directly states the tool's function. Every word earns its place with no redundancy or unnecessary elaboration.
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?
For a batch processing tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what annotation means in this context, what the output looks like, error conditions, or performance expectations. The agent would need to guess about the tool's behavior and results.
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 100%, so the schema fully documents all parameters. The description adds no additional parameter semantics beyond what's already in the schema (e.g., doesn't explain what 'ontologies' are, what 'annotation' entails, or provide examples). Baseline 3 is appropriate when schema does all the work.
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 action ('process multiple texts') and purpose ('for annotation efficiently'), distinguishing it from single-text annotation tools like 'annotate_text'. However, it doesn't specify what type of annotation (e.g., entity recognition, classification) or what 'efficiently' means operationally.
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 about when to use this tool versus the sibling 'annotate_text' tool. The description mentions 'efficiently' but doesn't explain what makes batch processing more efficient or under what conditions batch processing is preferred over single-text annotation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analytics_dataC
Get visitor statistics and popularity trends with optional date filtering
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Month (1-12) for specific data | |
| year | No | Year for specific data (2013+) | |
| ontology | No | Specific ontology acronym (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does, not behavioral traits. It doesn't disclose if this is a read-only operation, rate limits, authentication needs, or what format the statistics/trends are returned in. 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 a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, stating the core purpose first ('Get visitor statistics and popularity trends') followed by a key feature ('with optional date filtering'). Every word earns its place.
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 no annotations, no output schema, and 3 parameters, the description is incomplete. It doesn't explain what 'visitor statistics and popularity trends' includes, how data is returned, or behavioral aspects like safety or performance. For a data retrieval tool with zero structured context, the description should provide more operational details.
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 100%, so the schema fully documents all 3 parameters. The description adds marginal value by mentioning 'optional date filtering' which aligns with month/year parameters, but doesn't provide additional semantics beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 visitor statistics and popularity trends' specifies the verb (get) and resource (analytics data). It distinguishes from siblings like 'get_ontology_metrics' by focusing on visitor data rather than ontology metrics. However, it doesn't explicitly differentiate from all siblings, keeping it at 4 rather than 5.
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 minimal guidance with 'with optional date filtering' hinting at when to use parameters, but offers no explicit when-to-use context, no alternatives among siblings, and no prerequisites. It lacks comparison to tools like 'get_ontology_metrics' for analytics, leaving the agent with little direction on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_class_infoB
Get detailed information about a specific ontology class
| Name | Required | Description | Default |
|---|---|---|---|
| ontology | Yes | Ontology acronym | |
| class_id | Yes | Class ID/URI (URL-encoded if necessary) | |
| include | No | Comma-separated attributes to include (e.g., prefLabel,definition,parents,children) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'gets' information (implying a read operation) but doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what happens with invalid inputs. The description adds minimal behavioral context beyond the implied read operation.
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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information.
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?
For a read operation with 100% schema coverage but no output schema or annotations, the description is minimally adequate. It clarifies the scope ('specific ontology class') but doesn't address behavioral aspects like error handling or response format. Given the lack of output schema, more detail about return values would be beneficial but isn't critical for basic functionality.
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 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., it doesn't explain format examples for 'include' beyond the schema's description). Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('detailed information about a specific ontology class'), making the purpose unambiguous. It distinguishes from siblings like 'get_ontology_info' (which likely provides ontology-level details) and 'search_terms' (which searches rather than retrieves specific class data). However, it doesn't explicitly contrast with these siblings in the description text 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 when to choose 'get_class_info' over 'get_ontology_info' (for ontology-level data) or 'search_terms' (for finding classes), nor does it specify prerequisites or contextual constraints for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ontology_infoB
Get detailed information about a specific ontology
| Name | Required | Description | Default |
|---|---|---|---|
| acronym | Yes | Ontology acronym (e.g., NCIT, GO, MESH) | |
| include_views | No | Include ontology views (default: false) |
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 the tool retrieves information, implying a read-only operation, but doesn't disclose behavioral traits such as whether it requires authentication, has rate limits, returns structured data, or handles errors. 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 a single, clear sentence with zero waste. It's appropriately sized and front-loaded, efficiently conveying the core purpose without unnecessary elaboration.
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 moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks context on usage, behavior, or output, leaving gaps that could hinder an AI agent's understanding, especially with multiple sibling tools.
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 100% description coverage, so the schema already documents both parameters ('acronym' and 'include_views') thoroughly. The description adds no additional meaning beyond what the schema provides, such as examples of acronym usage beyond the schema's list or implications of including views. Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('detailed information about a specific ontology'), making the purpose understandable. However, it doesn't explicitly differentiate from siblings like 'get_class_info' or 'get_ontology_metrics', which might also retrieve ontology-related information, 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. With siblings like 'get_class_info' and 'get_ontology_metrics', there's no indication of what distinguishes this tool (e.g., general metadata vs. specific metrics or class details), leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ontology_metricsC
Get usage statistics and quality metrics for an ontology
| Name | Required | Description | Default |
|---|---|---|---|
| ontology | Yes | Ontology acronym |
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 metrics but does not describe any behavioral traits such as permissions needed, rate limits, response format, or whether it's a read-only operation. 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 a single, clear sentence that efficiently conveys the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse 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 lack of annotations and output schema, the description is incomplete. It does not address what the metrics include, how they are returned, or any operational context, which is insufficient for a tool that retrieves data without structured output documentation.
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 100% description coverage, with the single parameter 'ontology' documented as 'Ontology acronym'. The description does not add any additional meaning beyond this, such as examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.
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 action ('Get') and the target ('usage statistics and quality metrics for an ontology'), which is specific and informative. However, it does not explicitly differentiate this tool from its siblings like 'get_analytics_data' or 'get_ontology_info', which might also involve retrieving data about ontologies, leaving some ambiguity in sibling distinction.
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 such as 'get_analytics_data', 'get_ontology_info', and 'get_class_info', there is no indication of context, prerequisites, or exclusions, leaving the agent to infer usage 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.
recommend_ontologiesC
Get ontology recommendations for text or keywords with customizable weights
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Input text or comma-separated keywords | |
| input_type | No | Input type: 1=text, 2=keywords (default: 1) | |
| output_type | No | Output type: 1=individual ontologies, 2=ontology sets (default: 1) | |
| max_elements_set | No | Max ontologies per set (2-4, default: 3) | |
| wc | No | Weight for coverage criterion (0-1, default: 0.55) | |
| wa | No | Weight for acceptance criterion (0-1, default: 0.15) | |
| wd | No | Weight for detail criterion (0-1, default: 0.15) | |
| ws | No | Weight for specialization criterion (0-1, default: 0.15) | |
| ontologies | No | Comma-separated ontology acronyms to limit evaluation to |
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 mentions 'customizable weights' which hints at configuration, but doesn't explain what the tool returns (e.g., ranked list, scores), whether it's a read-only operation, potential rate limits, or authentication needs. For a tool with 9 parameters and no annotations, 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 a single, efficient sentence that front-loads the core purpose. Every word earns its place: 'Get ontology recommendations' (action), 'for text or keywords' (input scope), 'with customizable weights' (key feature). There's no redundancy or unnecessary elaboration.
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 complexity (9 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the output format, behavioral traits like whether it's read-only or has side effects, or how recommendations are generated. For a tool with this many configuration options and no structured output documentation, the description should provide more context about what users can expect.
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 mentions 'text or keywords' and 'customizable weights', which loosely maps to the 'input' and weight parameters (wc, wa, wd, ws). However, with 100% schema description coverage, the schema already documents all 9 parameters thoroughly. The description adds minimal value beyond what's in the schema, so it meets the baseline of 3.
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 ontology recommendations for text or keywords with customizable weights'. It specifies the action ('Get ontology recommendations'), the target resource ('ontologies'), and the input types ('text or keywords'). However, it doesn't differentiate this tool from sibling tools like 'search_ontologies' or 'get_ontology_info', which is why it doesn't reach a score of 5.
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 sibling tools like 'search_ontologies' or 'get_ontology_info', nor does it specify scenarios where this recommendation tool is preferred over direct search or info retrieval. The description only states what the tool does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ontologiesC
Search for ontologies by name, description, or domain
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for ontologies (optional for listing all) | |
| also_search_views | No | Include ontology views (default: false) | |
| include_views | No | Include views in results (default: false) | |
| display_context | No | Include JSON-LD context (default: true) | |
| display_links | No | Include hypermedia links (default: true) |
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 mentions search functionality but fails to describe key traits like whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or what the output format looks like (e.g., list of ontologies with fields). This leaves significant gaps for an agent to understand how to invoke 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 a single, efficient sentence that front-loads the core purpose without any wasted words. It directly states what the tool does, making it easy for an agent to parse quickly. Every part of the sentence earns its place by specifying the action and scope.
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 complexity of a search tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain behavioral aspects (e.g., read-only nature, authentication needs) or what the results look like, leaving the agent to guess about invocation and interpretation. This is inadequate for a tool with multiple optional parameters and no structured output guidance.
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 100%, so the input schema fully documents all 5 parameters with descriptions. The description adds no additional semantic meaning beyond implying a search across name, description, and domain, which aligns with the 'query' parameter but doesn't elaborate on the other parameters (e.g., differences between 'also_search_views' and 'include_views'). Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('Search') and resource ('ontologies'), specifying searchable fields ('by name, description, or domain'). It distinguishes from siblings like 'search_properties' and 'search_terms' by focusing on ontologies, but doesn't explicitly differentiate from 'recommend_ontologies' or 'get_ontology_info' in terms of use case.
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 'recommend_ontologies' (for suggestions) or 'get_ontology_info' (for detailed info on a specific ontology). It lacks context about prerequisites, such as whether authentication is needed, and doesn't mention any exclusions or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_propertiesC
Search ontology properties by their labels and IDs
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for properties | |
| ontologies | No | Comma-separated list of ontology acronyms | |
| require_exact_match | No | Require exact match (default: false) | |
| also_search_views | No | Include ontology views (default: false) | |
| require_definitions | No | Only return properties with definitions (default: false) | |
| include | No | Attributes to include (default: label,labelGenerated,definition,parents) | |
| ontology_types | No | Ontology types to include (e.g., ONTOLOGY,VALUE_SET_COLLECTION) | |
| property_types | No | Property types (object,annotation,datatype) | |
| page | No | Page number (default: 1) | |
| pagesize | No | Results per page (default: 50, max: 500) |
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 ontology properties but doesn't describe key behaviors like pagination handling (implied by 'page' and 'pagesize' parameters), rate limits, authentication needs, error conditions, or the format of returned results. For a search tool with 10 parameters, this leaves significant gaps in understanding how the tool behaves in practice.
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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does ('Search ontology properties by their labels and IDs') and earns its place by being clear and to-the-point, with no redundant information.
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 complexity (10 parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like pagination, result formatting, or error handling, which are critical for a search tool. Without annotations or an output schema, the description should compensate by providing more context on how the tool operates and what to expect from results, but it fails to do so.
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 100%, so the input schema already documents all 10 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain parameter interactions, default behaviors beyond schema defaults, or usage examples. This meets the baseline for high schema coverage but doesn't provide extra value.
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 ontology properties by their labels and IDs'. It specifies the verb ('search'), resource ('ontology properties'), and scope ('by their labels and IDs'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_ontologies' or 'search_terms', which is why it doesn't achieve 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 sibling tools like 'search_ontologies' or 'search_terms', nor does it specify prerequisites or contexts for usage. The agent must infer usage from the tool name and parameters alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_termsC
Search across ontology terms with advanced filtering options
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for ontology terms | |
| ontologies | No | Comma-separated list of ontology acronyms to search in | |
| require_exact_match | No | Require exact match (default: false) | |
| suggest | No | Enable suggestion mode for type-ahead (default: false) | |
| also_search_views | No | Include ontology views in search (default: false) | |
| require_definitions | No | Only return terms with definitions (default: false) | |
| also_search_properties | No | Search in properties as well (default: false) | |
| also_search_obsolete | No | Include obsolete terms (default: false) | |
| cui | No | Comma-separated CUIs to filter by | |
| semantic_types | No | Comma-separated semantic types to filter by | |
| include | No | Comma-separated attributes to include (e.g., prefLabel,synonym,definition) | |
| page | No | Page number (default: 1) | |
| pagesize | No | Results per page (default: 50, max: 500) | |
| language | No | Language code (e.g., en, fr) |
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 'advanced filtering options,' which aligns with the many parameters in the schema, but doesn't describe key behaviors like whether this is a read-only operation, if it requires authentication, rate limits, pagination handling, or what the output format looks like. For a tool with 14 parameters and no annotations, this leaves significant gaps.
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 a single, efficient sentence that directly states the tool's purpose. It's front-loaded with the core action ('search across ontology terms') and avoids unnecessary words. Every part of the sentence contributes meaning, making it appropriately concise.
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 complexity (14 parameters, no output schema, no annotations), the description is insufficient. It doesn't explain the return values, error conditions, or behavioral traits like pagination or authentication needs. While the schema covers parameters well, the description fails to address broader usage context, making it incomplete for effective agent 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 schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds minimal value beyond the schema by mentioning 'advanced filtering options,' which loosely corresponds to the boolean and filter parameters. However, it doesn't provide additional semantic context, syntax examples, or clarify interactions between parameters. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('search') and resource ('ontology terms'), making the purpose evident. However, it doesn't differentiate this tool from sibling tools like 'search_ontologies' or 'search_properties', which appear to search different resources. The mention of 'advanced filtering options' adds specificity but doesn't clarify sibling distinctions.
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 'search_ontologies' and 'search_properties' that likely search different aspects of ontologies, there's no indication of when this tool is appropriate or when to choose another. The phrase 'advanced filtering options' hints at capabilities but doesn't offer usage context.
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.
10 tool updates
- First observed
annotate_text - First observed
batch_annotate - First observed
get_analytics_data - First observed
get_class_info - First observed
get_ontology_info - First observed
get_ontology_metrics - First observed
recommend_ontologies - First observed
search_ontologies - First observed
search_properties - First observed
search_terms
TDQS
Most tools have clearly distinct purposes, such as annotate_text for text analysis, get_class_info for class details, and search_ontologies for ontology discovery. However, get_analytics_data and get_ontology_metrics both involve statistics, which could cause some confusion as they overlap in tracking usage or popularity data.
All tool names follow a consistent verb_noun pattern, such as annotate_text, get_class_info, and search_ontologies. This uniformity makes it easy for agents to predict and understand the tool functions without any deviations in style.
With 10 tools, the server is well-scoped for bio-ontology tasks, covering annotation, retrieval, search, and analytics. Each tool serves a specific function, such as batch processing or recommendation, ensuring a comprehensive yet manageable set.
The tool set provides strong coverage for ontology exploration, including search, annotation, and information retrieval. A minor gap exists in update or management operations, such as modifying ontology data, but core workflows for analysis and discovery are well-supported.
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
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
MCP server for querying BrainKB, a knowledge base for neuroscience knowledge graphs.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Related MCP Servers
- FlicenseAqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that provides access to the Ensembl REST API for genomic data, comparative genomics, and biological annotations.193-
- AlicenseAqualityFmaintenanceProvides a Model Context Protocol server for accessing and querying biomedical data from BioThings services, including gene, variant, chemical, and taxon annotations.1934MIT
- FlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server for interacting with the BioPortal API to search and retrieve ontology terms.36-
- AlicenseAqualityAmaintenanceA high-performance MCP server that gives LLMs access to 25 biomedical tools federated across 50+ upstream APIs for genes, variants, drugs, diseases, literature, clinical trials, and structural biology.412,0542Apache 2.0
Appeared in Searches
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/Augmented-Nature/BioOntology-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server