UCSC Genome Browser MCP Server
Click on "Deploy 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., "@UCSC Genome Browser MCP Serverget the DNA sequence for BRCA1 gene region in human genome hg38"
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.
UCSC Genome Browser MCP Server
A Model Context Protocol (MCP) server that provides comprehensive access to the UCSC Genome Browser API. This server enables LLM applications to query genomic data, sequences, tracks, and metadata from the UCSC Genome Browser.
Features
This MCP server exposes 12 tools that cover all major UCSC Genome Browser API endpoints:
Listing & Discovery Tools
find_genome - Search for genomes using keywords, accession IDs, or organism names
list_public_hubs - List all available public track hubs
list_ucsc_genomes - List all UCSC database genomes
list_genark_genomes - List GenArk assembly hub genomes
list_hub_genomes - List genomes from a specific hub
list_files - List downloadable files for a genome
list_tracks - List data tracks in a genome or hub
list_chromosomes - List chromosomes in a genome or track
list_schema - Get schema/field definitions for a track
Data Retrieval Tools
get_sequence - Retrieve DNA sequences from genomes
get_track_data - Get track data (genes, variants, annotations, etc.)
search_genome - Search within a genome assembly
Related MCP server: gnomAD MCP Server
Installation
Prerequisites
Python 3.10 or higher
pip
Install from source
# Clone or download the repository
cd ucsc-genome-mcp-server
# Install in development mode
pip install -e .Required Dependencies
mcp>=0.9.0- Model Context Protocol SDKhttpx>=0.27.0- HTTP client for API requests
Usage
Running the Server
The server communicates over stdio, following the MCP protocol:
python ucsc_genome_mcp_server.pyConfiguration with Claude Desktop
Add this to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"ucsc-genome-browser": {
"command": "/Users/You/.local/bin/uv",
"args": [
"--directory",
"/Users/Path/To/Repository/ucsc-genome-mcp",
"run",
"ucsc-genome-mcp.py"
],
"env": {},
"metadata": {
"description": "UCSC Genome Browser API",
"version": "1.0.0"
}
}
}Tool Examples
1. Find Genomes
Search for dog genomes:
{
"query": "dog"
}Search with advanced operators:
{
"query": "+white +rhino* -southern",
"browser": "mustExist"
}2. List Available Tracks
List all tracks for human genome (hg38):
{
"genome": "hg38"
}List tracks without container information:
{
"genome": "hg38",
"track_leaves_only": true
}3. Get DNA Sequence
Get entire mitochondrial chromosome:
{
"genome": "hg38",
"chrom": "chrM"
}Get specific region:
{
"genome": "hg38",
"chrom": "chrM",
"start": 4321,
"end": 5678
}Get reverse complement:
{
"genome": "hg38",
"chrom": "chrM",
"start": 4321,
"end": 5678,
"reverse_complement": true
}4. Get Track Data
Get gene annotations for a region:
{
"genome": "hg38",
"track": "knownGene",
"chrom": "chr1",
"start": 47000,
"end": 48000
}Get track data from an assembly hub:
{
"hub_url": "http://hgdownload.gi.ucsc.edu/hubs/mouseStrains/hub.txt",
"genome": "CAST_EiJ",
"track": "assembly",
"chrom": "chr1"
}5. Search Within a Genome
Search for BRCA1 in human genome:
{
"search": "brca1",
"genome": "hg38"
}Search only in help documentation:
{
"search": "bigBed",
"genome": "hg38",
"categories": "helpDocs"
}API Details
Base URL
All requests go to: https://api.genome.ucsc.edu
Rate Limits
Recommended: Maximum 1 request per second
The API has a botDelay system to prevent overload
Excessive queries may result in restricted access
Coordinate Systems
Start coordinates: 0-based (first base is 0)
End coordinates: 1-based (exclusive)
Example:
start=0, end=10retrieves the first 10 bases
Supported Track Types
The get_track_data tool supports these track types:
bed, bigBed, bigWig
genePred, bigGenePred
bigChain, bigPsl, bigMaf
narrowPeak, bigNarrowPeak
wiggle/wig, barChart/bigBarChart
interact/bigInteract
And many more...
Advanced Features
Working with Large Datasets
For tracks with over 1 million items, use pagination:
Query by chromosome:
{
"genome": "hg19",
"track": "knownGene",
"chrom": "chr1"
}Use start/end coordinates for smaller regions:
{
"genome": "hg19",
"track": "knownGene",
"chrom": "chr1",
"start": 1000000,
"end": 2000000
}Working with Track Hubs
Track hubs allow accessing external genomic data:
{
"hub_url": "http://hgdownload.gi.ucsc.edu/hubs/mouseStrains/hub.txt",
"genome": "CAST_EiJ",
"track": "ensGene",
"chrom": "chr1"
}Error Handling
The server handles various error conditions:
HTTP errors (404, 500, etc.)
Invalid parameters
Non-existent genomes/tracks/chromosomes
Request timeouts (30 second default)
Errors are returned as text responses with descriptive messages.
Use Cases
This MCP server enables LLM applications to:
Genomic Research: Query gene locations, sequences, and annotations
Variant Analysis: Retrieve SNP and variant data
Comparative Genomics: Access data from multiple species
Sequence Analysis: Get DNA/RNA sequences for analysis
Data Discovery: Find available datasets and assemblies
Educational: Learn about genomics through interactive queries
API Documentation
For complete API documentation, visit: https://genome.ucsc.edu/goldenpath/help/api.html
License
This project interfaces with the UCSC Genome Browser, which has its own terms of use: https://genome.ucsc.edu/conditions.html
Support
For issues with the UCSC Genome Browser API, contact UCSC. For issues with this MCP server, please file an issue in the repository.
Development
Project Structure
.
├── ucsc_genome_mcp_server.py # Main server implementation
├── pyproject.toml # Project metadata and dependencies
└── README.md # This fileAdding New Tools
To add new endpoints:
Add the tool definition in
list_tools()Add the handler in
call_tool()Update this README with examples
Testing
Test individual endpoints manually:
# Using curl
curl -L 'https://api.genome.ucsc.edu/list/ucscGenomes'
# Using wget
wget -O- 'https://api.genome.ucsc.edu/getData/sequence?genome=hg38;chrom=chrM;start=4321;end=5678'Changelog
Version 0.1.0
Initial release
Support for all major UCSC Genome Browser API endpoints
12 tools covering listing, discovery, and data retrieval
Full documentation and examples
Available Tools
12 toolsfind_genomeB
Search for a genome in the UCSC browser using a search string. Supports advanced search with +word (force inclusion), -word (exclusion), and word* (wildcard).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search string to find genomes (e.g., 'dog', 'GRCh38', 'GCF_028858775.2') | |
| browser | No | Filter by browser availability (default: mustExist) | |
| stats_only | No | Only show statistics about search results | |
| year | No | Filter results by year | |
| category | No | Filter by NCBI category | |
| status | No | Filter by NCBI status | |
| level | No | Filter by NCBI assembly level | |
| max_items | No | Maximum number of items to return (default: 1000000, use -1 for max) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions search capabilities and syntax but lacks critical details like authentication requirements, rate limits, pagination behavior, error handling, or what the output looks like (e.g., format, structure). For a search tool with 8 parameters, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first states the core purpose, and the second details advanced search syntax. Every word contributes directly to understanding the tool's functionality, with no wasted text.
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 complex search tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., performance, limits), output format, and usage context relative to siblings. The agent would struggle to use this effectively without additional 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 the schema fully documents all 8 parameters. The description adds minimal value by mentioning advanced search syntax (+word, -word, word*), which relates to the 'query' parameter but doesn't provide additional semantic context beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for a genome'), target resource ('in the UCSC browser'), and method ('using a search string'), distinguishing it from sibling tools like list_ucsc_genomes or search_genome by focusing on search functionality with advanced operators.
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 like search_genome or list_ucsc_genomes. The description mentions advanced search features but doesn't specify use cases or exclusions, leaving the agent without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sequenceB
Retrieve DNA sequence from a specified genome assembly. Can retrieve entire chromosome or specific coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name (e.g., 'hg38') | |
| chrom | Yes | Chromosome name (e.g., 'chr1', 'chrM') | |
| start | No | Start coordinate (0-based, optional, requires end) | |
| end | No | End coordinate (1-based, optional, requires start) | |
| hub_url | No | URL of assembly hub (optional) | |
| reverse_complement | No | Return reverse complement of sequence |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool can retrieve sequences but doesn't disclose critical traits: whether it's read-only (implied by 'retrieve' but not explicit), potential rate limits, authentication needs, error handling, or output format. For a tool with 6 parameters and no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: a single sentence states the core purpose, followed by a second sentence clarifying scope. Every sentence earns its place by adding value (e.g., distinguishing between entire chromosome and coordinate-based retrieval). There's no wasted verbiage or redundancy.
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 (6 parameters, no annotations, no output schema), the description is minimally adequate. It covers the basic purpose and scope but lacks details on behavioral traits, output format, or error conditions. For a retrieval tool with multiple parameters, more context would be helpful, but it meets the minimum viable threshold.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it implies that 'start' and 'end' are for specific coordinates, but this is already clear in the schema descriptions. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieve DNA sequence from a specified genome assembly.' It specifies the resource (DNA sequence) and the action (retrieve), and distinguishes it from siblings like 'find_genome' or 'list_chromosomes' by focusing on sequence retrieval rather than metadata listing. However, it doesn't explicitly differentiate from 'get_track_data' which might also retrieve genomic data, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage guidance: it mentions retrieving 'entire chromosome or specific coordinates,' which suggests when to use optional parameters. However, it doesn't explicitly state when to use this tool versus alternatives like 'search_genome' or 'get_track_data,' nor does it provide exclusions or prerequisites. The guidance is functional but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_dataB
Retrieve data from a specified track in a hub or UCSC database genome. Can be filtered by chromosome and coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name | |
| track | Yes | Track name | |
| chrom | No | Chromosome name (optional) | |
| start | No | Start coordinate (0-based, optional, requires end) | |
| end | No | End coordinate (1-based, optional, requires start) | |
| hub_url | No | URL of track/assembly hub (optional) | |
| max_items | No | Maximum number of items to return (default: 1000000) | |
| json_output_arrays | No | Return data as JSON arrays instead of objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions retrieval and filtering, it doesn't describe important behaviors like rate limits, authentication requirements, error conditions, response format details, or whether this is a read-only operation. The mention of 'max_items' in the schema suggests pagination/limiting behavior that should be 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?
The description is appropriately sized (two sentences) and front-loaded with the core purpose. The second sentence adds useful filtering context without redundancy. However, it could be slightly more structured by explicitly separating required vs optional parameters.
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 8 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what kind of data is returned (track data format), error handling, performance characteristics, or important behavioral constraints. The agent would struggle to understand the full context of using this tool effectively.
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?
With 100% schema description coverage, the baseline is 3. The description adds minimal value beyond the schema by mentioning chromosome and coordinate filtering, but doesn't provide additional context about parameter interactions (like how hub_url relates to genome/track selection) or usage patterns that would help the agent understand the parameter relationships.
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 data') and target resource ('from a specified track in a hub or UCSC database genome'), with specific filtering capabilities mentioned. However, it doesn't explicitly differentiate from sibling tools like 'get_sequence' or 'search_genome' which might retrieve different types of genomic data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning filtering capabilities, but doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_sequence' (for sequence data) or 'search_genome' (for searching). No when-not-to-use scenarios or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chromosomesB
List chromosomes in an assembly hub, track hub, or UCSC database genome. Optionally filter by specific track.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name | |
| hub_url | No | URL of track/assembly hub (optional) | |
| track | No | Specific track name to list chromosomes from (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the action of listing chromosomes with optional filtering, but lacks details on permissions, rate limits, output format, or error handling. For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes key details without waste. It is appropriately sized for the tool's complexity, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It covers the basic action but lacks crucial behavioral context (e.g., response format, error cases) and does not compensate for the absence of structured data. For a tool with 3 parameters and no annotations, this leaves significant gaps in understanding how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by mentioning optional filtering by track, which aligns with the 'track' parameter, but does not provide additional syntax, format, or usage details beyond what the schema specifies. Baseline 3 is appropriate as the schema handles most of the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('chromosomes'), specifying the sources (assembly hub, track hub, or UCSC database genome) and optional filtering by track. However, it does not explicitly differentiate from sibling tools like 'list_ucsc_genomes' or 'list_hub_genomes', which focus on listing genomes rather than chromosomes, leaving some ambiguity in sibling tool distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning optional filtering by track, but it does not provide explicit guidance on when to use this tool versus alternatives like 'list_tracks' or 'list_ucsc_genomes'. No exclusions or prerequisites are stated, leaving usage context partially inferred rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesB
List download files available for a specified UCSC genome assembly.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name (e.g., 'hg38', 'mm10') | |
| format | No | Output format (default: json) | |
| max_items | No | Maximum number of items to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that files are 'available for download' but doesn't specify whether this is a read-only operation, if it requires authentication, what the return format looks like beyond the format parameter, or any rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without any wasted words. It's front-loaded with the essential information and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output structure, which would be helpful for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any additional meaning beyond what the schema provides (e.g., it doesn't explain what 'download files' includes or provide examples beyond the schema's enum for format). This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('download files') with a specific scope ('for a specified UCSC genome assembly'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from similar siblings like 'list_tracks' or 'list_chromosomes', which also list resources for genome assemblies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_tracks' or 'list_chromosomes', nor does it mention prerequisites or exclusions. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_genark_genomesB
List UCSC Genome Browser database genomes from assembly hub host (GenArk). Can also test for existence of a specific genome.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | No | Specific genome to test for existence (optional) | |
| max_items | No | Maximum number of items to return (default: 1000000) |
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 mentions listing genomes and testing existence, but doesn't disclose behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or what happens when testing for a non-existent genome. The description is minimal and lacks critical operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that directly state the tool's functions. It's front-loaded with the primary purpose and includes an additional capability without unnecessary details. However, it could be slightly more structured by separating the listing and testing functions more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of genome listing/testing, lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error handling, or how results are formatted. For a tool with 2 parameters and no structured safety hints, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('genome' and 'max_items') fully. The description adds marginal value by implying that 'genome' is used for testing existence, but doesn't provide additional semantics beyond what the schema states. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List UCSC Genome Browser database genomes from assembly hub host (GenArk)' with the specific action 'list' and resource 'genomes'. It also mentions an alternative function 'test for existence of a specific genome', which adds clarity. However, it doesn't explicitly differentiate from sibling tools like 'list_ucsc_genomes' or 'list_hub_genomes', which appear similar.
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 by stating the tool can 'list' genomes and 'test for existence', but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'list_ucsc_genomes' or 'search_genome'. No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hub_genomesC
List all genomes available in a specified track or assembly hub.
| Name | Required | Description | Default |
|---|---|---|---|
| hub_url | Yes | URL of the track hub or assembly hub |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List all genomes') but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, error handling, or the format of the returned data. This is a significant gap for a tool with no structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any redundant or unnecessary information. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, fields included) or address behavioral traits like permissions or errors. For a tool with no structured context, this leaves the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'hub_url' parameter clearly documented. The description adds no additional meaning beyond what the schema provides, such as examples or constraints on the URL format. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('genomes available in a specified track or assembly hub'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_ucsc_genomes' or 'list_genark_genomes', which might serve similar purposes but for different data sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to siblings such as 'list_public_hubs' or 'search_genome', leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_public_hubsB
List all available public track hubs in the UCSC Genome Browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying it's likely read-only and non-destructive, but doesn't confirm this or add details like rate limits, authentication needs, or response format. This leaves gaps in understanding the tool's behavior beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any redundant or unnecessary information. It's front-loaded and efficiently conveys the essential information, making it highly concise and well-structured.
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 has 0 parameters, no annotations, and no output schema, the description is minimal but covers the basic purpose. However, for a list operation in a context with many sibling tools, it lacks details on output format, limitations, or how it fits into the broader workflow, making it only adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it could have mentioned implicit constraints (e.g., no filtering options). Since there are no parameters, a baseline of 4 is applied as it adequately handles the lack of 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 verb ('List') and resource ('all available public track hubs in the UCSC Genome Browser'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_hub_genomes' or 'list_ucsc_genomes', which might have overlapping domains, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage based on the tool name alone, which is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schemaB
List the schema (field definitions) for a specified data track.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name | |
| track | Yes | Track name | |
| hub_url | No | URL of track/assembly hub (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as whether it's read-only, what the output format looks like, potential rate limits, or error conditions. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word earning its place. No structural issues or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on output format, error handling, or usage context. Without annotations or output schema, the agent has incomplete information about what to expect from the 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?
The schema description coverage is 100%, with all parameters documented in the schema (genome, track, hub_url). The description adds no additional parameter semantics beyond what the schema provides, such as examples or constraints. With high schema coverage, the 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 tool's purpose with the verb 'list' and resource 'schema (field definitions) for a specified data track.' It distinguishes from siblings like list_tracks (which lists tracks) and list_genomes (which lists genomes), but doesn't explicitly differentiate from them. The purpose is specific but lacks explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not-to-use scenarios, or compare with sibling tools like list_tracks or get_track_data. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tracksC
List all data tracks available in a specified hub or UCSC database genome.
| Name | Required | Description | Default |
|---|---|---|---|
| genome | Yes | Genome assembly name | |
| hub_url | No | URL of track/assembly hub (optional, required with genome for hub tracks) | |
| track_leaves_only | No | Only show tracks without composite container information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions listing tracks but doesn't describe key behaviors like whether this is a read-only operation, potential rate limits, authentication needs, or what the output format looks like (e.g., list structure, pagination). This leaves significant gaps for an agent to understand how to handle the tool effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without any wasted words. It is front-loaded and appropriately sized for the tool's complexity.
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 (3 parameters, no output schema, no annotations), the description is insufficient. It lacks details on behavioral traits, output format, and usage context, making it incomplete for an agent to fully leverage the tool without relying heavily on the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so parameters are well-documented there. The description adds no additional semantic context beyond implying a scope ('specified hub or UCSC database genome'), which aligns with the schema but doesn't provide extra value. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all data tracks') and the resource ('available in a specified hub or UCSC database genome'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'list_hub_genomes' or 'list_ucsc_genomes', which might also involve listing operations in similar contexts, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'list_hub_genomes' or 'list_ucsc_genomes', nor does it mention prerequisites or exclusions. It states what the tool does but offers no context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ucsc_genomesA
List all UCSC Genome Browser database genomes available on the database host.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a read-only list operation but lacks details on potential limitations (e.g., rate limits, authentication needs, or what 'available on the database host' entails). The description is minimal and does not compensate for the absence of 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?
The description is a single, clear sentence with no wasted words. It is front-loaded with the core action and resource, making it easy for an agent to parse quickly. Every part of the sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose but lacks details on behavioral aspects like response format or constraints, which could be helpful for a tool interacting with a database host.
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 tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately does not discuss parameters, earning a baseline score of 4 for not introducing unnecessary information.
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 specific action ('List all') and resource ('UCSC Genome Browser database genomes available on the database host'), distinguishing it from siblings like 'list_genark_genomes' or 'list_hub_genomes' by specifying the exact database source. It uses precise terminology that helps the agent understand the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_genark_genomes' or 'search_genome', nor does it mention any prerequisites or exclusions. It merely states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_genomeC
Search for matches within a UCSC Genome Browser genome assembly across tracks, help docs, and public hubs.
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Search term | |
| genome | Yes | Genome assembly to search in | |
| categories | No | Restrict search to specific categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool performs a search operation, implying it's read-only, but doesn't cover critical aspects like authentication needs, rate limits, pagination, error handling, or what the search results look like. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It uses clear terminology and avoids redundancy, making it easy to parse quickly. Every word contributes to understanding the tool's scope, earning a top score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (searching across multiple categories in a genome assembly) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the search returns, how results are formatted, or any behavioral constraints. For a tool with three parameters and no structured output information, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal value beyond the input schema, which has 100% coverage. It mentions searching 'across tracks, help docs, and public hubs,' which loosely relates to the 'categories' parameter with enum values like 'trackDb' and 'publicHubs', but doesn't explain the semantics of these categories or how they affect the search. Since the schema already documents all parameters well, the 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 tool's purpose: 'Search for matches within a UCSC Genome Browser genome assembly across tracks, help docs, and public hubs.' It specifies the verb ('Search'), resource ('UCSC Genome Browser genome assembly'), and scope ('across tracks, help docs, and public hubs'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'find_genome' or 'list_tracks', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'find_genome', 'list_tracks', and 'list_public_hubs', it's unclear if this tool is for broad searches or specific scenarios. There's no mention of prerequisites, exclusions, or comparative contexts, leaving the agent to infer usage based on the name and parameters alone.
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.
12 tool updates
- First observed
find_genome - First observed
get_sequence - First observed
get_track_data - First observed
list_chromosomes - First observed
list_files - First observed
list_genark_genomes - First observed
list_hub_genomes - First observed
list_public_hubs - First observed
list_schema - First observed
list_tracks - First observed
list_ucsc_genomes - First observed
search_genome
TDQS
Scored across 12 tools
Most tools have distinct purposes, but there is some overlap between 'find_genome' and 'search_genome'—both involve searching genomes, which could cause confusion. The other tools target specific resources like sequences, tracks, chromosomes, files, and hubs with clear boundaries.
All tool names follow a consistent verb_noun pattern using snake_case, such as 'find_genome', 'get_sequence', and 'list_tracks'. This predictability makes it easy for agents to understand and use the toolset without confusion.
With 12 tools, the count is well-suited for the UCSC Genome Browser domain, covering key operations like searching, retrieving data, and listing resources. Each tool serves a specific function without redundancy, making the set comprehensive yet manageable.
The toolset provides strong coverage for browsing and retrieving genomic data, including search, sequence access, track management, and hub listings. A minor gap is the lack of tools for modifying or updating data, but this aligns with the server's likely read-only focus on the UCSC Browser.
Maintenance
Related MCP Connectors
Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.
Ensembl REST — vertebrate genomes, sequences, comparative genomics, variation
Query STRING interactions, enrichment, annotations, homology, and PPI networks.
Access SEC filings, insider transactions, and financial data via the ShareSEER API.
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
- AlicenseBqualityDmaintenanceProvides a programmatic interface to the Genome Aggregation Database (gnomAD) API across versions v2.1.1, v3.1.2, and v4.1.0. It enables users to query gene metadata, variant information, population frequencies, and ClinVar data through a unified schema.126Apache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides access to UniProt protein sequence and function knowledge base, enabling search and retrieval of protein entries, proteomes, taxonomy, and feature annotations.7 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive access to the NCBI Datasets API, enabling genomic, taxonomic, and biological data operations through 31 specialized tools.16-