@pipeworx/ncbi-variation

Connect: https://gateway.pipeworx.io/ncbi-variation/mcp · Install: one-click buttons

No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.

Tools: 3

dbSNP refSNP records and HGVS ↔ SPDI ↔ rsID normalization from NCBI Variation Services — the service that turns any spelling of a human genetic variant into the canonical coordinates the rest of genomics keys on.

Tools

  • variation_refsnp(rsid, assembly?, max_frequencies?) — the full refSNP record: genomic placement on the build you ask for, HGVS genomic/transcript/ protein forms, SPDI, gene context, ClinVar clinical significance, and population allele frequencies (gnomAD, ExAC, 1000 Genomes, TOPMED, ALFA). Answers “what is rs113488022”.
  • variation_hgvs_to_spdi(hgvs) — normalize an HGVS expression to contextual SPDI alleles, and validate that the HGVS is well-formed at all.
  • variation_spdi_to_rsids(spdi) — the reverse: coordinate + alleles from a VCF or pipeline → the rsIDs other databases key on.

Auth

Keyless. NCBI asks unauthenticated clients to stay under ~3 requests/second; the pack sends an identifying User-Agent.

Data sources

Traps

GRCh37 vs GRCh38 is the whole game. One refSNP carries placements on both builds at different coordinates — rs113488022 (BRAF V600E) is 7:140753336 on GRCh38 and 7:140453136 on GRCh37, 300kb apart. A caller who takes a coordinate from one build into a dataset annotated on the other gets “not found”, which reads as “this variant does not exist”. So assembly is an explicit argument (default GRCh38), every response states assembly_requested and assemblies_available, and an assembly with no placement says so in assembly_note instead of coming back as an empty array.

SPDI is 0-based, HGVS is 1-based. NC_000007.14:140753335:A:T and NC_000007.14:g.140753336A>T are the same variant. The off-by-one is the most common reason variation_spdi_to_rsids returns nothing.

A retired rsID is not an error. dbSNP merges rsIDs; a merged one returns merged_snapshot_data with no primary_snapshot_data at all. The pack detects that and returns status: "merged" plus the rsID to re-query (rs3735962 → rs328), rather than an empty record.

Reference alleles are in the allele list. dbSNP lists the reference as an allele whose deleted_sequence equals its inserted_sequence. Filtering those out is what separates alternate_alleles from noise.

The raw record is huge. rs328 carries thousands of citations and dozens of placements. The pack summarizes and caps (max_frequencies, 25 citations) — counts are always reported alongside so a truncation is visible.

Tools

  • variation_refsnp — The dbSNP record for an rsID: coordinates on GRCh38 or GRCh37, HGVS, ClinVar significance, and population allele frequencies.
  • variation_hgvs_to_spdi — Normalizes an HGVS variant string to canonical SPDI coordinates, and validates it, via NCBI Variation Services.
  • variation_spdi_to_rsids — Maps a SPDI genomic coordinate and alleles back to the dbSNP rsIDs, via NCBI Variation Services.

Tools

  • variation_hgvs_to_spdi — Normalizes an HGVS variant string to canonical SPDI coordinates, and validates it, via NCBI Variation Services.
  • variation_refsnp — The dbSNP record for an rsID: coordinates on GRCh38 or GRCh37, HGVS, ClinVar significance, and population allele frequencies.
  • variation_spdi_to_rsids — Maps a SPDI genomic coordinate and alleles back to the dbSNP rsIDs, via NCBI Variation Services.

Regenerated from source · build September 18, 2026