GTEx Portal MCP Server - Comprehensive access to GTEx (Genotype-Tissue Expression) genomics data through 25 specialized tools for expression analysis, eQTL/sQTL analysis, and gene/variant lookups
The GTEx server has 18 tool definitions with reasonable naming conventions (verb-noun structure) and explicit input schemas, but suffers from significant quality gaps. All tools have descriptions and schemas, but many descriptions are too brief (under 50 chars) to fully guide LLM selection. Parameter descriptions vary widely in quality, some are specific (e.g., 'GENCODE gene ID (e.g., ENSG00000223972.5)'), others are generic ('Array of GENCODE gene IDs'). Tools 16 and 17 are near-duplicates of tools 8 and 9 (both named 'get_eqtl_genes' and 'get_single_tissue_eqtls'), indicating composition issues. Output schemas are completely undocumented, no tool specifies what fields the response contains, forcing LLMs to discover structure at runtime. Error handling is absent: no tool description indicates what errors might occur or how to recover. Most critically, several tools have duplicate names (tools 8 & 16, tools 9 & 17, tools 11 & 18), violating basic tool composition principles.
Calculate dynamic eQTL effects across tissues
Calculate expression correlation between genes across tissues
Get clustered gene expression data for visualization
Get differential gene expression between tissue groups
Get genes with eQTL associations for a genomic region
Get genes with eQTL associations for a genomic region
Get gene expression data across tissues for a specific gene
Duplicate tool names: tools 8 & 16 both named 'get_eqtl_genes', tools 9 & 17 both named 'get_single_tissue_eqtls', tools 11 & 18 both named 'get_multi_tissue_eqtls'. LLMs cannot distinguish between tools with identical names and will pick arbitrarily, causing incorrect calls.
No output schemas documented. Every tool lists inputs but zero tools specify response structure (fields, types, cardinality). LLMs must discover structure at runtime, leading to parsing errors and wasted context on trial-and-error extraction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get detailed gene information
Get median gene expression levels across tissues
Get multi-tissue eQTL meta-analysis results
Get multi-tissue eQTL meta-analysis results
Get neighboring genes around a genomic position
Get single-tissue eQTL results for a gene
Get single-tissue eQTL results for a gene
Get genes with tissue-specific expression patterns
Get top expressed genes in a specific tissue
Get transcripts for genes
Search for genes by symbol, ID, or keyword
Tool descriptions are too short and lack guidance on when to call each tool. Baseline is 194 chars; most GTEx tools range 35 - 70 chars. Descriptions do not explain WHEN to use a tool or how it differs from related tools. Example: 'Get gene expression data across tissues for a specific gene' vs. 'Get MEDIAN gene expression levels across tissues', the distinction is buried in the name, not the description.
Parameter descriptions are generic or missing nuance. Many describe only the data type, not the context or constraints. Example: 'Array of GENCODE gene IDs' (tools 5, 6) does not explain cardinality (how many is valid?), ordering, or whether duplicates are allowed. Contrast: 'Tissue site detail ID (e.g., Muscle_Skeletal, Brain_Cortex)' gives the LLM concrete examples.
No error handling guidance. Descriptions do not indicate what errors tools might return (invalid gene ID, non-existent tissue, rate limit, API timeout). LLMs cannot plan recovery or know whether to retry or suggest user corrections.
Pagination parameters inconsistently named. 'page' + 'itemsPerPage' in search_genes (tool 12) vs. no pagination info in most expression tools. Tool 16 uses 'page' + 'itemsPerPage'; tool 17 uses 'page' + 'itemsPerPage'. This inconsistency forces the LLM to reason about which tools support pagination and how.
Tools 16 and 17 have required: [] (no required parameters). This violates the principle that tool parameters should be self-documenting. A tool with zero required parameters is likely too flexible and forces LLMs to guess which combination of optional params is valid.