Skip to main content

DeepDNA MCP server

A remote Model Context Protocol server that gives AI agents cited pharmacogenomic and gene-variant lookups, so the model quotes CPIC and DPWG guidance instead of recalling it from memory. This repository also holds a local package that reads a raw DNA file on the user's own computer; nothing from the file is sent to DeepDNA.

https://deepdna.ai/mcp

Streamable HTTP, stateless, no API key, no account. Listed in the official MCP registry as ai.deepdna/knowledge.

Educational information only, not medical advice. The server reports what curated sources and guidelines say about a gene, a variant or a drug–gene pair. It does not diagnose, prescribe or recommend a dose.

Tools

Tool What it returns
list_genes The genes in the knowledge base, with a one-line summary and category for each
lookup_gene Everything curated about one gene: function, key variants with rsIDs, phenotypes, drug interactions, what a consumer genotyping array can and cannot tell you, and sources
lookup_variant One variant by dbSNP rsID: gene, star-allele or common name, alleles, effect, frequency note, sources, and a reading block (plus-strand GRCh37 alleles, countable, strand_ambiguous). Takes the rsID only, never a genotype
lookup_drug_gene Guidance for a gene, optionally for one drug: guideline (CPIC or DPWG where one exists), summary, phenotype groups and sources
check_medications Splits a list of generic drug names into drugs with a curated record (gene, and a basis field: CPIC or DPWG guideline, drug label, or primary literature) and drugs not covered. Needs no genotype
request_beta_access The only tool that writes: registers the user's interest in the private beta (email and optional use case). The agent must ask the user first and set user_consent: true. See the privacy policy

Two prompts, medication_review and explain_variant, package the common questions for clients that show MCP prompts.

Coverage today is 12 genes: CYP2C19, CYP2C9, CYP2D6, SLCO1B1, VKORC1, UGT1A1, G6PD, MTHFR, COMT, HFE, APOE and BRCA1, with 51 curated drug–gene pairs across 11 of them: 40 cite a CPIC or DPWG guideline, the rest a drug label or the primary literature; the basis field in check_medications says which (guideline is null, or "drug label", when no guideline exists). It is a small, reviewed set, not a mirror of PharmGKB/ClinPGx. Every record lists its sources. The level field (the guideline's evidence grade) is null for every pair today.

Connect

Claude Code

claude mcp add --transport http deepdna https://deepdna.ai/mcp

Cursor (~/.cursor/mcp.json) and other clients that use an mcpServers file:

{
  "mcpServers": {
    "deepdna": { "type": "http", "url": "https://deepdna.ai/mcp" }
  }
}

VS Code (.vscode/mcp.json):

{
  "servers": {
    "deepdna": { "type": "http", "url": "https://deepdna.ai/mcp" }
  }
}

Claude Desktop and claude.ai: add https://deepdna.ai/mcp as a custom connector.

Try it without a client

curl -s https://deepdna.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"lookup_drug_gene","arguments":{"gene":"CYP2C19","drug":"clopidogrel"}}}'

The answer carries the CPIC recommendation for clopidogrel by CYP2C19 metabolizer group, the sources it was written from, and the disclaimer. The same data is available as plain REST, documented in the API docs and the OpenAPI spec:

GET https://deepdna.ai/api/v1/pgx/CYP2C19/clopidogrel
GET https://deepdna.ai/api/v1/variants/rs4244285

Read a raw DNA file on your own computer

The remote server takes no genotype: its tools have no field for one. For a raw DNA file there is a local package in this repository. It reads the file on the user's computer and reports what it shows at each position DeepDNA curates, with the cited records. Nothing from the file is sent to deepdna.ai: the package downloads the same public records for every user, and lookup_drug_gene sends only the gene and drug names. What read_dna_file returns (the letters and counts at the curated positions) becomes part of the conversation with the AI model your client uses, under that provider's terms.

Claude Code (needs uv; the package is on PyPI):

claude mcp add deepdna-local -- uvx deepdna-mcp@0.1.1

Clients that use an mcpServers file (if the client cannot find uvx, put its full path, from which uvx, in command):

{
  "mcpServers": {
    "deepdna-local": { "command": "uvx", "args": ["deepdna-mcp@0.1.1"] }
  }
}
Tool What it returns
read_dna_file What a 23andMe, AncestryDNA or MyHeritage/FamilyTreeDNA export (.txt, .csv or .zip) shows at each curated position
lookup_drug_gene Guidance for a gene, optionally for one drug, from the public API. Sends only the gene and drug names
  • Each position gets one of four states: read, no_call, not_in_file, or unexpected_letters (letters that fit neither the record nor its complement). A missing or unreadable position is unknown, never normal.
  • For positions the record marks as countable (no phasing or other variants are needed to read them), it gives how many copies of the variant allele the file shows, with the record's text and sources.
  • genes limits the answer to what the user asked about. APOE, BRCA1 and HFE are disease-risk genes: they are read only when named in genes, so the user chooses what to learn.
  • sex is needed only for some chromosome X positions (G6PD).
  • It checks the file's strand first: at least three positions that are not A/T or C/G must agree, and none disagree. A/T and C/G positions, whose two letters look the same on either strand, are counted only on a confirmed strand.

A count at one position is not a metabolizer status, a diplotype, a diagnosis or a dose. The tools tell the model never to suggest starting, stopping or changing a medication: that stays with the prescriber. VCF files are not supported.

Try it with: "My 23andMe file is at /Users/me/Downloads/genome.txt. What does it show at the CYP2C19 positions DeepDNA curates, and what do the sources say about clopidogrel?" (on Windows, a path such as C:\Users\me\Downloads\genome.txt).

What it is not

  • The remote server does not read DNA files. Parsing on DeepDNA's servers is specified in the API but is in private beta and not deployed. A remote lookup carries a gene symbol, an rsID or a drug name. Its tools have no genotype field, and an undeclared argument is refused and not used. An agent that reads a raw DNA file itself compares the user's genotype with the reading block, outside DeepDNA. The reading block gives the reference and variant alleles on the plus strand of GRCh37, as 23andMe raw data reports it.
  • Neither server calls phenotypes or doses. Turning a genotype into a metabolizer status needs phasing and the other variants in the gene, which a single lookup or a chip file does not give. Tools such as PharmCAT do that from a VCF.
  • Remote usage is counted, people are not. Each request to the remote server is counted (method, tool, the lookup label described below, whether there was an answer, the client's name and version, its user-agent, a country code). IP addresses, request bodies and medication lists are not stored. A value typed into a declared field is recorded only as a short lookup label: an rsID in the form rs123, a gene from a fixed list of known pharmacogenes, or a drug DeepDNA covers; anything else, whatever it is, is recorded as "(other)". Please don't type a personal genetic result into these fields. The one exception is request_beta_access: it keeps the email and use case the user agrees to send, the signup metadata listed in the privacy policy (time, source, country code and the client's name), and a hashed IP for one hour to limit abuse. The local package's downloads are ordinary requests to the public API, with the user-agent deepdna-mcp-local/<version>.
  • A consumer chip is not a clinical test. Arrays are reliable for common variants and much less so for rare ones; anything that could affect a health decision needs a validated test and a clinician.

This repository holds the documentation and the local package; the remote server is hosted by DeepDNA. Questions and bug reports go in the issues; please don't post a raw DNA file, genotypes or medications there.

Written with AI assistance.

Metadata

Release files for deepdna-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deepdna-mcp 0.1.1
File Size Uploaded
deepdna_mcp-0.1.1.tar.gz 19.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for deepdna-mcp 0.1.1
File Interpreter ABI Platform
deepdna_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 33.8 kB

Release files / deepdna_mcp-0.1.1.tar.gz

Download URL deepdna_mcp-0.1.1.tar.gz
Size 19.0 kB
Tags Source
SHA-256 checksum
How to use checksums
700de06da83e2d65023efd34d61ea80dfd2c92d00b626eb460af5e6e8e775c4a
BLAKE2b-256 checksum
How to use checksums
297176ac37ecb1cf76c9fdae806f678a24a744ae3ce4c330ee5bd8ab95aaad40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / deepdna_mcp-0.1.1-py3-none-any.whl

Download URL deepdna_mcp-0.1.1-py3-none-any.whl
Size 14.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
36b97a0eb66044d9b53135a2d86a10525f4f5a040dda7f2b201f6e450995e203
BLAKE2b-256 checksum
How to use checksums
9578d85dcfcba3560a1489061bd502f603ef32fd32bab85fec67e1837c274c7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page