Bioportal Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Bioportal Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server for interacting with the BioPortal API to search and retrieve ontology terms.
You can install the package from source:
pip install -e .Or using uv:
uv pip install -e .Before using this MCP server, you need to obtain a BioPortal API key:
export BIOPORTAL_API_KEY="your_api_key_here"Run the MCP server:
bioportal-mcp#### search_ontology_terms
Search for ontology terms in BioPortal.
Parameters:
query (str): The search term (e.g., "melanoma", "breast cancer", "neuron")ontologies (str, optional): Comma-separated list of ontology acronyms (e.g., "NCIT,GO,HP")max_results (int, default=10): Maximum number of results to returnrequire_exact_match (bool, default=False): Whether to require exact matchesapi_key (str, optional): BioPortal API key (uses environment variable if not provided)Returns: List of tuples containing:
Examples:
# Search for cancer terms
results = search_ontology_terms("cancer")
# Search for cell types in Cell Ontology
results = search_ontology_terms("neuron", ontologies="CL")
# Search for exact matches only
results = search_ontology_terms("melanoma", require_exact_match=True)
# Limit results
results = search_ontology_terms("disease", max_results=5)#### search_ontology_properties
Search for ontology properties (object properties, annotation properties, datatype properties) by their labels and IDs.
Parameters:
query (str): The search term (e.g., "has part", "related to", "has dimension")ontologies (str, optional): Comma-separated list of ontology acronyms (e.g., "NCIT,GO,HP")max_results (int, default=10): Maximum number of results to returnrequire_exact_match (bool, default=False): Whether to require exact matches by property id, label, or generated labelrequire_definitions (bool, default=False): If True, only return properties that have definitionsproperty_types (str, optional): Comma-separated list of property types to filter by: "object", "annotation", "datatype"api_key (str, optional): BioPortal API key (uses environment variable if not provided)Returns: List of tuples containing:
Examples:
# Search for properties containing "part"
results = search_ontology_properties("part")
# Search for object properties only
results = search_ontology_properties("related", property_types="object")
# Search for properties with definitions in specific ontologies
results = search_ontology_properties("has", ontologies="GO,CHEBI", require_definitions=True)#### get_ontology_analytics
Get visitor analytics for BioPortal ontologies using Google Analytics data.
Parameters:
ontology_acronym (str, optional): Ontology acronym to get analytics for (e.g., "NCIT", "GO"). If None, returns analytics for all ontologiesmonth (int, optional): Month number (1-12) to filter analytics. Only valid when ontology_acronym is Noneyear (int, optional): Year to filter analytics (e.g., 2024). Only valid when ontology_acronym is Noneapi_key (str, optional): BioPortal API key (uses environment variable if not provided)Returns: Dictionary containing visitor statistics:
Examples:
# Get analytics for all ontologies
analytics = get_ontology_analytics()
# Get analytics for a specific ontology
analytics = get_ontology_analytics(ontology_acronym="NCIT")
# Get analytics for all ontologies in April 2024
analytics = get_ontology_analytics(month=4, year=2024)
# Get analytics for all ontologies in 2024
analytics = get_ontology_analytics(year=2024)This MCP server can be integrated with AI assistants like Claude Desktop. Add the following to your MCP configuration:
{
"mcpServers": {
"bioportal": {
"command": "bioportal-mcp",
"env": {
"BIOPORTAL_API_KEY": "your_api_key_here"
}
}
}
}A streamable version of this MCP is also available from the following URL:
https://bioportal.fastmcp.app/mcpThis means it may be used through any agentic framework supporting HTTP streaming of MCPs.
This MCP server provides access to the following BioPortal API endpoints:
/search): Search for ontology terms/classes across all ontologies/property_search): Search for ontology properties (object, annotation, datatype)/analytics): Retrieve visitor statistics and usage analytics for ontologiesBioPortal hosts hundreds of ontologies. Some popular ones include:
# Clone the repository
git clone https://github.com/ncbo/bioportal-mcp.git
cd bioportal-mcp
# Install development dependencies
uv pip install -e ".[dev]"BSD-3-Clause
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.