Model Context Protocol server for gnomAD (Genome Aggregation Database) GraphQL API
The gnomad-mcp-server defines 10 tools with complete input schemas and descriptions, but shows significant gaps in production readiness. All tools have verb-noun naming and descriptions (10-100 chars), meeting baseline naming conventions. However, parameter annotations are sparse, most parameters lack inline constraint documentation, and no output schemas are documented. Error handling is absent from tool definitions. The server is READ_ONLY and well-scoped to gnomAD graph QL queries, but lacks recovery guidance, error categorization, and composition hints that would enable robust agentic use.
Get sequencing coverage information for a gene
Get detailed information about a gene including constraint scores
Get mitochondrial variants from gnomAD
Get all variants in a genomic region
Get structural variants in a genomic region
Get information about a specific transcript
Get detailed information about a specific variant
No output schemas documented. Tool descriptions do not explain what fields are returned, what structure users should expect, or how to extract chaining IDs for downstream calls. LLMs cannot predict downstream requirements without knowing response shape.
Error handling completely absent. No guidance on retryability, user-fixable errors, or recovery paths. If gnomAD API returns a 400 for invalid variant_id format, the LLM has no instruction on how to recover or what constraint was violated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get all variants in a gene with frequency and prediction information
Search for genes, variants, or regions in gnomAD
Search for variants by ID, rsID, or other identifiers
Parameter descriptions lack constraint details. 'reference_genome' accepts 'GRCh37' or 'GRCh38' but description does not enumerate these as an enum or state the constraint. Similarly, 'dataset' parameter descriptions mention 'gnomad_r4, gnomad_r3, gnomad_r2_1, etc.' but do not formally constrain to an enum. LLMs will hallucinate invalid values like 'gnomad_r5' or 'GRCh36'.
Parameter relationships not documented. For tools with both gene_id and gene_symbol (get_gene, get_variants_in_gene, get_transcript, get_coverage, get_structural_variants), the descriptions do not clarify: Are both required? Is one sufficient? Which takes precedence if both provided? Undocumented dependencies cause silent misuse.
No pagination support documented. Tools like get_variants_in_gene and get_region_variants can return large result sets. No limit, offset, or cursor parameters present, and no indication of result count caps. Large result sets will blow context windows and degrade LLM reasoning.
Descriptions lack discovery context. 'Search for variants' is functional but does not tell LLM when to use search_variant vs get_variant vs get_variants_in_gene. No hints about prerequisites ('If you only have a chromosome position, call get_region_variants') or when to call tools in sequence.
Parameter format constraints missing. 'variant_id' is described as 'Variant ID in format chrom-pos-ref-alt (e.g., 1-123456-A-G)' but provides no pattern validation or min/max for pos. 'chrom' accepts 1-22, X, Y, MT but is unconstrained in schema. 'start' and 'stop' are numbers but have no min (0) or max bounds documented.