Unofficial HPO MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Unofficial HPO MCP ServerSearch for HPO terms related to seizure"
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 HPO MCP Server
An MCP (Model Context Protocol) server that provides access to the Human Phenotype Ontology (HPO) API. The HPO contains over 18,000 terms describing human phenotypic abnormalities and is widely used in genetic research and clinical diagnostics.
Developed by Augmented Nature
Features
This MCP server provides 12 comprehensive tools to interact with the HPO API:
Core Search & Information Tools
search_hpo_terms - Search for HPO terms by keyword, ID, or synonym with pagination support
get_hpo_term - Get detailed information about a specific HPO term by its ID
get_all_hpo_terms - List all HPO terms with pagination
batch_get_hpo_terms - Retrieve multiple HPO terms in a single request (up to 20 terms)
Hierarchical Navigation Tools
get_hpo_ancestors - Get all ancestor terms (all terms higher in the hierarchy)
get_hpo_parents - Get direct parent terms (one level up)
get_hpo_children - Get direct child terms (one level down)
get_hpo_descendants - Get all descendant terms (all terms lower in the hierarchy)
Analysis & Utility Tools
validate_hpo_id - Validate HPO ID format and verify term exists
get_hpo_term_path - Get the full hierarchical path from root to a specific term
compare_hpo_terms - Compare two terms and find their relationship and common ancestors
get_hpo_term_stats - Get comprehensive statistics and analysis for an HPO term
Related MCP server: Unofficial BioThings.io MCP Server
Prerequisites
Node.js: Version 18 or higher
Internet connection: Required for accessing the HPO API
Installation
Clone or download this server:
cd hpo-server
npm installBuild the server:
npm run buildUsage
Running the Server
npm start
# or
node build/index.jsConfiguration
Add the server to your MCP settings file:
{
"mcpServers": {
"hpo-server": {
"command": "node",
"args": ["/path/to/hpo-server/build/index.js"]
}
}
}Usage Examples
Search and Discovery
Search for seizure-related terms:
Search for HPO terms related to "seizure" using search_hpo_termsSearch with pagination:
Search for "heart defect" terms with 20 results per page using search_hpo_termsGet detailed term information:
Get detailed information about seizure (HP:0001250) using get_hpo_term
Hierarchical Navigation
Explore term hierarchy:
Get all ancestors of seizure term using get_hpo_ancestorsFind related terms:
Get direct children of nervous system abnormality using get_hpo_childrenBrowse term descendants:
Get all descendant terms of seizure using get_hpo_descendants
Analysis and Utilities
Validate HPO IDs:
Validate if "HP:0001250" is a correct HPO ID using validate_hpo_idGet hierarchical path:
Show the complete path from root to seizure term using get_hpo_term_pathCompare two terms:
Compare seizure and nervous system abnormality terms using compare_hpo_termsGet term statistics:
Get comprehensive statistics for seizure term using get_hpo_term_statsBatch processing:
Get information for multiple terms (HP:0001250, HP:0000707, HP:0001626) using batch_get_hpo_termsList all terms:
Browse all HPO terms with pagination using get_all_hpo_terms
API Features
HPO ID Format Support
HPO IDs can be provided in multiple formats:
Full format:
HP:0001250Short format:
0001250The server automatically handles format conversion
Pagination Support
Search and listing tools support pagination:
max- Maximum results per page (varies by tool)offset- Number of results to skip (default: 0)
Parameter Details
id (string, required for most tools): HPO term ID
query (string, required for search): Search query - keyword, HPO ID, or synonym
category (array, optional): Filter by specific HPO categories
max (number, optional): Maximum results to return
offset (number, optional): Pagination offset
API Details
Base URL: https://ontology.jax.org/api/hp/
Authentication: None required (public API)
Rate Limiting: Managed by client with 30-second timeout
Error Handling: Comprehensive error messages and graceful degradation
Project Structure
hpo-server/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── types/
│ │ └── hpo.ts # TypeScript interfaces for HPO data
│ ├── utils/
│ │ └── api-client.ts # HPO API HTTP client
│ └── handlers/
│ └── hpo-handlers.ts # MCP tool implementations
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.mdDevelopment
Building the Server
cd hpo-server
npm run buildDependencies
@modelcontextprotocol/sdk- MCP SDK for server implementationaxios- HTTP client for HPO API requests
About the Human Phenotype Ontology
The HPO provides a standardized vocabulary of phenotypic abnormalities encountered in human disease. Each term describes a phenotypic abnormality, such as "Atrial septal defect" or "Intellectual disability". The HPO is:
A flagship product of the Monarch Initiative
Part of the Global Alliance for Genomics and Health (GA4GH)
Actively developed using medical literature, Orphanet, DECIPHER, and OMIM
Used for phenotype-driven differential diagnostics and genomic analysis
Error Handling
The server includes comprehensive error handling:
Invalid HPO IDs are properly formatted when possible
Network errors provide clear user-friendly messages
API errors are passed through with context
Parameter validation with helpful error messages
Limitations
Maximum result limits are enforced to prevent overwhelming responses
Network timeouts are set to 30 seconds for stability
Some HPO API endpoints may have their own rate limiting (handled gracefully)
Available Tools
12 toolsbatch_get_hpo_termsA
Retrieve multiple HPO terms in a single request (maximum 20 terms)
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Array of HPO term IDs to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only discloses the max batch size (20). It omits error behavior, authorization needs, or what happens with invalid IDs. Minimal behavioral disclosure.
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?
Single sentence with no redundancy. Front-loaded key information (action, resource, limit). Every word is necessary.
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?
No output schema; description does not mention return format (list of terms, errors). Lacks authentication or prerequisites. Adequate but incomplete for a batch tool.
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 covers all parameters (100% coverage). The description adds max batch size, which is also in schema's maxItems. No additional meaning beyond schema.
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 (Retrieve), resource (HPO terms), and batching constraint (multiple, max 20). It distinguishes from the single-term sibling get_hpo_term.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies batching multiple terms but does not explicitly state when to use this over alternatives like get_hpo_term or search_hpo_terms. No when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_hpo_termsB
Compare two HPO terms and find their relationship and common ancestors
| Name | Required | Description | Default |
|---|---|---|---|
| term1 | Yes | First HPO term ID (e.g., HP:0001234) | |
| term2 | Yes | Second HPO term ID (e.g., HP:0005678) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'compare' and 'find', but does not specify that the tool is read-only, what side effects exist, or any performance or rate limits. It lacks 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 concise sentence, front-loaded with the key action. It could be slightly more informative but contains no unnecessary words.
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?
The tool has no output schema, so the description should explain what the return value looks like or the nature of the relationship. It does not, leaving the agent uncertain about the output format.
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 coverage is 100% with parameter descriptions already present. The tool description does not add extra meaning beyond the schema, but also does not detract. Baseline 3 is appropriate.
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 'compare', the resource 'HPO terms', and the outcome 'find their relationship and common ancestors'. It distinguishes this tool from siblings that retrieve terms, ancestors, etc.
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 given on when to use this tool vs alternatives like get_hpo_ancestors or search_hpo_terms. The description does not provide usage context or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_hpo_termsA
Get a list of all HPO terms with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Maximum number of terms to return (default: 20, max: 100) | |
| offset | No | Number of terms to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses pagination behavior but omits details on whether the tool is read-only, potential large data volume, rate limits, or idempotency. The mention of 'all terms' implies a broad scope but lacks safety or behavioral cues.
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?
Very concise single sentence covering purpose and key feature. No wasted words, but could include more useful details without becoming verbose. Slightly under-specified for a tool with no annotations or output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (list of all terms with pagination) and no output schema, the description lacks completeness. It does not mention return format, field structure, or behavior when paginated (e.g., order, total count). Sibling tools exist but no comparative context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema; 'pagination support' is already evident from the max and offset parameters. Does not explain default values or ordering.
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?
Description clearly states 'Get a list of all HPO terms with pagination support', specifying the verb (get), resource (all HPO terms), and key feature (pagination). This distinguishes it from siblings like get_hpo_term (single term) and search_hpo_terms (filtered).
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 mentions pagination but provides no explicit guidance on when to use this tool versus alternatives like batch_get_hpo_terms or search. It lacks context on when pagination is necessary or recommended, and does not state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_ancestorsA
Get all ancestor terms for a given HPO term (all terms higher in the hierarchy)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) | |
| max | No | Maximum number of ancestors to return (default: 50) | |
| offset | No | Number of results to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only states the action without mentioning that it's read-only, pagination, or any side effects. The offset and max parameters hint at pagination, but this is not explained.
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?
Single sentence, front-loaded with the core purpose. No wasted words.
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 output schema, description should briefly describe the return structure. It does not mention that the result is a list of HPO terms or any fields. For a simple ancestor lookup, this is a minor gap.
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 coverage is 100% and already explains parameters well (e.g., ID format, max, offset). Description adds no new semantic value beyond what schema provides.
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?
Description clearly states 'Get all ancestor terms for a given HPO term' with explicit mention of hierarchy direction ('higher in the hierarchy'). This distinguishes well from siblings like get_hpo_children and get_hpo_parents.
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?
Description implies use case (retrieving all ancestors) but lacks explicit guidance on when not to use it or alternatives. The context of sibling tools like get_hpo_parents suggests a need for differentiation, which is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_childrenA
Get direct child terms for a given HPO term (one level down in the hierarchy)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) | |
| max | No | Maximum number of children to return (default: 20) | |
| offset | No | Number of results to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden. It accurately states the tool returns only direct children (one level down). However, it does not disclose potential edge cases like behavior for invalid or obsolete IDs, or what happens if the term has no children. This is adequate but minimal.
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, well-structured sentence that immediately conveys the core action. No extraneous information. It is appropriately sized and front-loaded.
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?
The description is complete for a straightforward retrieval tool with three well-documented parameters. It lacks mention of pagination behavior or return format, but the schema covers pagination parameters, and the lack of output schema is not critical for this simple operation. Overall, fairly complete.
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 baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions (id format, max bounds, offset). The schema already provides sufficient detail.
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 gets direct child terms of an HPO term, specifying 'one level down in the hierarchy'. This distinguishes it from siblings like get_hpo_descendants (all descendants) and get_hpo_ancestors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not clarify when to use get_hpo_children instead of get_hpo_descendants or batch_get_hpo_terms. The agent receives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_descendantsB
Get all descendant terms for a given HPO term (all terms lower in the hierarchy)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) | |
| max | No | Maximum number of descendants to return (default: 50, max: 100) | |
| offset | No | Number of results to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It mentions the hierarchical scope but omits important behaviors like pagination (evident from schema), side-effect-free read operation, or any rate limits or permission requirements.
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, front-loaded sentence that efficiently conveys the core purpose. No fluff, but it could provide slightly more context (e.g., about pagination) without becoming verbose.
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 output schema and no annotations, the description is insufficient. It does not describe the return format, pagination behavior, or the recursive nature of descendant retrieval. This leaves the agent with incomplete information for a tool with 3 parameters and no output schema.
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 baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions, which are already clear for 'id', 'max', and 'offset'.
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 retrieves all descendant terms for a given HPO term, specifying the hierarchy direction ('all terms lower in the hierarchy'). This distinguishes it from siblings like get_hpo_children (immediate) and get_hpo_ancestors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for obtaining all descendants rather than immediate children, providing implicit guidance. However, it lacks explicit when-not-to-use or alternative suggestions, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_parentsA
Get direct parent terms for a given HPO term (one level up in the hierarchy)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) | |
| max | No | Maximum number of parents to return (default: 20) | |
| offset | No | Number of results to skip for pagination (default: 0) |
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 accurately states that it returns direct parent terms one level up, but does not disclose pagination behavior, error handling, or result format. This is adequate but minimal.
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?
A single, information-dense sentence that front-loads the core purpose. No redundant or wasted words.
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?
The description, combined with the complete input schema, is adequate for a simple query tool. However, it lacks information about the return format (e.g., list of terms, IDs, or objects) and does not describe any edge cases or error scenarios.
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 provides descriptions for all three parameters (100% coverage), so the description adds no additional parameter meaning beyond the schema. The description's mention of 'one level up' refers to the result, not the parameters.
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), the resource (direct parent terms), and the scope (one level up in the hierarchy). This distinguishes it from sibling tools like get_hpo_ancestors or get_hpo_children.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to get direct parents), but does not explicitly mention when not to use it or suggest alternatives. Given the large number of sibling tools, more guidance would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_termA
Get detailed information about a specific HPO term by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks annotations, so it carries the full burden. It states the tool retrieves information but does not disclose what 'detailed information' includes, expected side effects (likely none), or response format. For a read-only retrieval, it is minimally adequate but not transparent.
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 sentence with no wasted words. It is front-loaded with the action. Could be slightly more informative without increasing length, but it is 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 tool's simplicity (1 parameter, no output schema), the description is mostly complete but does not mention return value or confirm read-only nature. For a simple retrieve-by-ID tool, it is adequate but not thorough.
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% (the 'id' parameter is described in the schema). The description adds no new meaning beyond the schema, just restates 'by its ID'. Baseline is 3, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get' and the resource 'detailed information about a specific HPO term by its ID'. It uniquely identifies the tool's purpose among siblings like 'search_hpo_terms' and 'get_all_hpo_terms'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one has a specific HPO term ID and wants detailed info, but it does not explicitly contrast with siblings like 'batch_get_hpo_terms' or 'search_hpo_terms'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_term_pathA
Get the full hierarchical path from root to a specific HPO term
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explains that the tool returns the full hierarchical path, but omits details such as whether the path includes the term itself, the format (array or string), or any error handling. The core behavior is clear but not fully comprehensive.
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, front-loaded sentence with no extraneous words. It efficiently conveys the tool's purpose.
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 simple tool with one parameter and no output schema, the description is minimal. It lacks information about the result format, whether the term itself is included in the path, and potential error cases. While sufficient for basic understanding, it could be more complete.
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 parameter 'id' is already well-documented. The description adds no further detail about the parameter beyond the schema. Baseline score of 3 is appropriate.
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 the resource 'full hierarchical path' from root to a specific HPO term. It distinguishes this tool from siblings like 'get_hpo_ancestors' and 'get_hpo_parents' by specifying the full path from root.
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 explicit guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or situations where other tools (e.g., 'get_hpo_ancestors') might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hpo_term_statsA
Get comprehensive statistics and analysis for an HPO term including hierarchy counts and properties
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | HPO term ID (e.g., HP:0001234 or just 0001234) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the purpose and does not mention that the tool is read-only, any required authentication, rate limits, or side effects. This leaves the agent uninformed about critical behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence (14 words) that conveys the essential purpose and key outputs ('hierarchy counts and properties'). No unnecessary words.
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 tool with one parameter and no output schema, the description adequately hints at the output components (hierarchy counts and properties). It could be slightly improved by mentioning the output format (e.g., object or array), but it is reasonably complete.
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% for the single parameter 'id', which already explains the format. The description does not add any new information about the parameter beyond what the schema provides, 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?
Clearly states the tool returns comprehensive statistics and analysis for an HPO term, including hierarchy counts and properties. This distinguishes it from sibling tools like 'get_hpo_term' (basic info) and 'get_hpo_children' (specific relation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining comprehensive statistics but does not explicitly specify when to use this tool versus alternatives like 'compare_hpo_terms' or 'search_hpo_terms'. No guidance on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hpo_termsB
Search for HPO terms by keyword, ID, or synonym. Supports pagination and filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Maximum number of results to return (default: 20, max: 100) | |
| query | Yes | Search query - can be a keyword, HPO ID (e.g., HP:0001234), or synonym | |
| offset | No | Number of results to skip for pagination (default: 0) | |
| category | No | Filter by specific HPO categories (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only mentions pagination and filtering but lacks details on case sensitivity, wildcards, result ordering, or error behavior. Does not compensate for missing annotations.
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?
Single sentence is concise but not efficient—it repeats what schema already conveys. Could be more informative without extra length.
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?
With 4 parameters, no output schema, and no behavioral details, the description under-informs agents. Missing info on output format, ordering, and limitations.
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 coverage is 100%; description adds little beyond restating schema info. 'Supports pagination and filtering' is implicit from parameters.
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?
Description clearly states the action (Search), resource (HPO terms), and methods (by keyword, ID, or synonym). It distinguishes from siblings like get_all_hpo_terms by emphasizing free-text query support.
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 on when to use this tool versus siblings. With 11 related tools, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_hpo_idA
Validate if a given string is a valid HPO ID format and check if the term exists
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID to validate (e.g., HP:0001234, 0001234, or any string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must cover behavior. It mentions format validation and existence check but doesn't specify outcomes for invalid formats or nonexistent terms (e.g., error vs false) or whether the operation is read-only.
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?
Single sentence, clear and direct, with no unnecessary words.
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 simple one-parameter tool with no output schema, the description covers the core purpose but lacks detail on return format or error behavior, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds valuable examples of valid formats (HP:0001234, 0001234) that go beyond the schema's generic 'any string'.
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 validates both format and existence of an HPO ID, distinguishing it from sibling tools that get, search, or compare terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validation but lacks explicit guidance on when to use versus alternatives or any exclusions.
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.
12 tool updates
v0.1.0- First observed
batch_get_hpo_terms - First observed
compare_hpo_terms - First observed
get_all_hpo_terms - First observed
get_hpo_ancestors - First observed
get_hpo_children - First observed
get_hpo_descendants - First observed
get_hpo_parents - First observed
get_hpo_term - First observed
get_hpo_term_path - First observed
get_hpo_term_stats - First observed
search_hpo_terms - First observed
validate_hpo_id
TDQS
All tools have clearly distinct purposes: single/batch retrieval, hierarchy navigation (ancestors, parents, children, descendants, path), comparison, search, validation, and statistics. No meaningful overlap.
All tool names follow a consistent verb_noun pattern, predominantly using the prefix 'hpo'. Variations like 'batch_get' vs 'get' are logical and maintain clarity.
12 tools is an appropriate scope for an HPO term server, covering all essential operations without unnecessary bloat or shortage.
The server provides comprehensive coverage for a read-only HPO term service: retrieval, hierarchy traversal, comparison, search, validation, and statistics. There are no obvious gaps for its intended domain.
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
Human Phenotype Ontology — clinical phenotype terms + gene/disease annotations
Search biomedical papers, inspect publication records, and traverse citation or semantic graphs.
Search biomedical literature, get article details, find related articles, and explore MeSH terms
Query STRING interactions, enrichment, annotations, homology, and PPI networks.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to the Ensembl genomics REST API with 30+ tools for genomic data including gene lookup, sequence retrieval, genetic variants, cross-species homology, phenotypes, and regulatory features.25ISC
- AlicenseNot gradedqualityDmaintenanceProvides access to BioThings.io APIs for comprehensive gene and variant annotations, enabling seamless integration of biological data into workflows.1,0756MIT
- AlicenseNot gradedqualityAmaintenanceEnables querying ClinGen curated evidence for gene-disease validity, dosage, actionability, and variant pathogenicity via MCP tools.MIT
- AlicenseAqualityAmaintenanceMCP server that provides tools for querying the Human Phenotype Ontology (HPO) including term lookup, hierarchy exploration, cross-ontology mappings, and gene-phenotype-disease associations, all grounded in a local SQLite database for fast offline lookups.171MIT
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/openpharma-org/hpo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server