Skip to main content
Glama

Logo

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

  1. Clone or download this server

  2. Install dependencies:

    npm install
  3. Build the server:

    npm run build

Configuration

You need a BioOntology API key to use this server. Get one from BioPortal:

  1. Create an account at https://bioportal.bioontology.org/

  2. Generate an API key from your account settings

  3. Set the environment variable:

    export BIOONTOLOGY_API_KEY=your_api_key_here

Usage

Running the Server

node build/index.js

The 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 information

  • bioontology://class/{ontology}/{class_id} - Ontology class details

  • bioontology://search/{query} - Term search results

  • bioontology://annotations/{text} - Text annotation results

  • bioontology://recommendations/{input} - Ontology recommendations

  • bioontology://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 tools
annotate_textC

Analyze text and identify relevant ontology terms with configurable parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to annotate with ontology terms
ontologiesNoComma-separated ontology acronyms to use for annotation
semantic_typesNoComma-separated semantic types to filter by
expand_semantic_types_hierarchyNoInclude children of semantic types (default: false)
expand_class_hierarchyNoInclude class ancestors in annotation (default: false)
class_hierarchy_max_levelNoMaximum hierarchy depth (default: 0)
expand_mappingsNoUse manual mappings (UMLS, REST, CUI, OBOXREF) (default: false)
stop_wordsNoComma-separated custom stop words
minimum_match_lengthNoMinimum character length for matches
exclude_numbersNoExclude numeric matches (default: false)
whole_word_onlyNoMatch whole words only (default: true)
exclude_synonymsNoExclude synonym matches (default: false)
longest_onlyNoReturn only longest matches (default: false)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textsYesArray of texts to annotate (max 10)
ontologiesNoComma-separated ontology acronyms
longest_onlyNoReturn only longest matches (default: true)
whole_word_onlyNoMatch whole words only (default: true)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
monthNoMonth (1-12) for specific data
yearNoYear for specific data (2013+)
ontologyNoSpecific ontology acronym (optional)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ontologyYesOntology acronym
class_idYesClass ID/URI (URL-encoded if necessary)
includeNoComma-separated attributes to include (e.g., prefLabel,definition,parents,children)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
acronymYesOntology acronym (e.g., NCIT, GO, MESH)
include_viewsNoInclude ontology views (default: false)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ontologyYesOntology acronym

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesInput text or comma-separated keywords
input_typeNoInput type: 1=text, 2=keywords (default: 1)
output_typeNoOutput type: 1=individual ontologies, 2=ontology sets (default: 1)
max_elements_setNoMax ontologies per set (2-4, default: 3)
wcNoWeight for coverage criterion (0-1, default: 0.55)
waNoWeight for acceptance criterion (0-1, default: 0.15)
wdNoWeight for detail criterion (0-1, default: 0.15)
wsNoWeight for specialization criterion (0-1, default: 0.15)
ontologiesNoComma-separated ontology acronyms to limit evaluation to

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query for ontologies (optional for listing all)
also_search_viewsNoInclude ontology views (default: false)
include_viewsNoInclude views in results (default: false)
display_contextNoInclude JSON-LD context (default: true)
display_linksNoInclude hypermedia links (default: true)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for properties
ontologiesNoComma-separated list of ontology acronyms
require_exact_matchNoRequire exact match (default: false)
also_search_viewsNoInclude ontology views (default: false)
require_definitionsNoOnly return properties with definitions (default: false)
includeNoAttributes to include (default: label,labelGenerated,definition,parents)
ontology_typesNoOntology types to include (e.g., ONTOLOGY,VALUE_SET_COLLECTION)
property_typesNoProperty types (object,annotation,datatype)
pageNoPage number (default: 1)
pagesizeNoResults per page (default: 50, max: 500)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for ontology terms
ontologiesNoComma-separated list of ontology acronyms to search in
require_exact_matchNoRequire exact match (default: false)
suggestNoEnable suggestion mode for type-ahead (default: false)
also_search_viewsNoInclude ontology views in search (default: false)
require_definitionsNoOnly return terms with definitions (default: false)
also_search_propertiesNoSearch in properties as well (default: false)
also_search_obsoleteNoInclude obsolete terms (default: false)
cuiNoComma-separated CUIs to filter by
semantic_typesNoComma-separated semantic types to filter by
includeNoComma-separated attributes to include (e.g., prefLabel,synonym,definition)
pageNoPage number (default: 1)
pagesizeNoResults per page (default: 50, max: 500)
languageNoLanguage code (e.g., en, fr)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 10 tool updates
    • First observedannotate_text
    • First observedbatch_annotate
    • First observedget_analytics_data
    • First observedget_class_info
    • First observedget_ontology_info
    • First observedget_ontology_metrics
    • First observedrecommend_ontologies
    • First observedsearch_ontologies
    • First observedsearch_properties
    • First observedsearch_terms

TDQS

B3.4/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Provides a Model Context Protocol server for accessing and querying biomedical data from BioThings services, including gene, variant, chemical, and taxon annotations.
    19
    34
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server for interacting with the BioPortal API to search and retrieve ontology terms.
    3
    6
    -
  • A
    license
    A
    quality
    A
    maintenance
    A 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.
    41
    2,054
    2
    Apache 2.0

Latest Blog Posts

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