GWAS Catalog (EBI/NHGRI) MCP — curated catalog of genome-wide association studies. Look up SNPs by rsID, get trait associations with p-values and effect sizes, or find studies for diseases/traits. Keyless REST API.
Three well-named, read-only tools with clear descriptions (150 - 200 chars each) and complete input schemas. All parameters are typed and described. However, output schemas are not formally documented, only inferred from code. Error handling is minimal (generic error objects). No parameter constraints (enums, ranges) despite opportunities (e.g., limit should have min/max). Missing idempotent/readOnly hints. Descriptions avoid examples but lack dependency guidance (e.g., 'Call get_snp first to verify the SNP exists before querying associations'). Tool composition is sound, each does one thing, names are action-verb clear, and chaining is feasible (rsid flows through all three).
GWAS Catalog: look up a single-nucleotide polymorphism (SNP) by rsID. Returns functional class, chromosome/region locations, and mapped genes (with up/downstream + distance). Keyless, from EBI/NHGRI.
GWAS Catalog: get trait/disease associations for a SNP (rsID) — risk allele, p-value, odds ratio per copy, beta/effect size, and risk allele frequency. Keyless, from EBI/NHGRI.
GWAS Catalog: find genome-wide association studies for a disease/trait (EFO trait, e.g. "asthma" or "type 2 diabetes"). Returns accession, PubMed ID, title, journal, date, sample size. Keyless, from EBI/NHGRI.
Output schemas not formally documented. LLMs cannot plan downstream calls or extract fields reliably without knowing the response structure (e.g., studies_by_trait returns 'studies' array with fields accession, pubmed_id, title, journal, date, sample_size, but this is only visible in code, not in tool metadata).
Numeric parameters (limit) lack min/max constraints. LLMs could pass negative, zero, or absurdly large values. Should declare limit as integer with minimum 1, maximum 100 (or appropriate cap).
Error responses are generic objects with 'error' field. No recovery guidance. E.g., 'SNP not found' should suggest 'Try a different rsID or call studies_by_trait to find relevant SNPs for a trait.' Errors do not classify as retryable vs. user-fixable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Tool descriptions do not include readOnlyHint or idempotentHint annotations. All three tools are read-only and safe to retry, but this is not formally declared in the tool metadata, LLMs must infer it.
No pagination guidance in descriptions. snp_associations and studies_by_trait accept 'limit' but do not document whether results are truncated, whether a next_cursor or offset is available, or how to fetch more. Large result sets could exhaust context.