streamable-httpMITupdated 2mo ago
The reference layer for dog DNA. A live, open API + MCP server over the Sniff Atlas β breed-stratified allele frequencies for 9,667,790 variants across 188 dog breeds (CanFam4), calibrated AI pathogenicity (ESM2, AUC 0.935 vs OMIA), Pangolin splice, Zoonomia phyloP conservation, and a variant β gene β breed β disease knowledge graph. Every response carries its own citation + provenance.
What can you do with sniff mcp?
sniff-mcp β agent-callable canine genomics
The reference layer for dog DNA. A live, open API + MCP server over the Sniff Atlas β breed-stratified allele frequencies for 9,667,790 variants across 188 dog breeds (CanFam4), calibrated AI pathogenicity (ESM2, AUC 0.935 vs OMIA), Pangolin splice, Zoonomia phyloP conservation, and a variant β gene β breed β disease knowledge graph. Every response carries its own citation + provenance.
Building anything with dogs, breeds, or canine health? This is the data layer. No key, no signup β point your agent or app at it and go.
- π MCP endpoint:
https://mcp.sniff.world/mcp/(Streamable HTTP, 15 tools) β includingask, a grounded canine-genetics Q&A that answers only from cited data or honestly abstains (no hallucinated dog-health advice), anddisease_bridge(inherited-disease atoms with ACMG-style pathogenicity grades + the dogβhuman homolog) - π REST API:
https://api.sniff.world/(OpenAPI docs Β·llms.txt) - π Dataset: 10.5281/zenodo.20566358 (CC-BY-4.0)
Add it to your coding agent (copy-paste)
The hosted server is open and needs no auth. Pick your tool:
Claude Code
claude mcp add --transport http sniff https://mcp.sniff.world/mcp/
Cursor / Windsurf / VS Code β add to your MCP config (.cursor/mcp.json, mcp.json, etc.):
{
"mcpServers": {
"sniff": { "url": "https://mcp.sniff.world/mcp/" }
}
}
Claude Desktop or any stdio-only client (uses the hosted server via a local bridge):
{
"mcpServers": {
"sniff": { "command": "npx", "args": ["-y", "sniff-mcp"] }
}
}
That's it. Ask your agent: "What's the frequency of CPT2 5:56189113 across breeds?" or "Find HIGH-impact variants in DLA genes."
Use the REST API (for web apps)
No SDK needed β it's plain HTTP/JSON.
curl https://api.sniff.world/v1/variant/5:56189113
{
"variant_id": "5:56189113", "ref": "A", "alt": "G",
"global_af": 0.0185, "popmax_af": 0.591, "popmax_breed": "akita",
"consequence": "missense_variant", "impact": "MODERATE",
"gene": "CPT2", "esm2_llr": -6.1, "deleteriousness_tier": "...",
"provenance": { "dataset_doi": "10.5281/zenodo.20566358",
"predicted_disease_relevance": "UNPROVEN", "...": "..." }
}
// JavaScript / TypeScript
const r = await fetch("https://api.sniff.world/v1/variant/5:56189113/context?breed=akita");
const ctx = await r.json(); // frequency + pathogenicity + gene + cross-breed + provenance
| Endpoint | What it returns |
|---|---|
GET /v1/variant/{pos} |
single variant: AF, popmax, consequence, gene, ESM2/Pangolin/phyloP |
GET /v1/variant/{pos}/context |
the joined query β everything about a variant in one call |
GET /v1/breed/{breed} |
breed profile (top variants, geometry, nearest breeds) |
GET /v1/breed/{breed}/nearest |
genetically nearest breeds (PCA distance) |
GET /v1/gene/{symbol} |
variants in a gene, ranked by impact |
GET /v1/semantic?q= |
natural-language search ("ancient arctic sled dogs") |
GET /v1/search |
filtered discovery across all 9.67M variants |
GET /v1/metadata |
release, DOI, counts, scope banner |
Positions are CanFam4 chrom:pos (e.g. 5:56189113). Full schema: https://api.sniff.world/openapi.json.
Self-host (optional)
uvx sniff-mcp # run the MCP server locally (needs the release data on disk)
pip install sniff-mcp # or install into your env
See ARCHITECTURE.md and Dockerfile. The hosted endpoint is the easy path; self-hosting is for air-gapped or high-volume use.
What it is (and isn't)
Built from CanVAS (14,478 dogs, Beagle-imputed, MAFβ₯1%) plus projected community cohorts. Pathogenicity is computational β every prediction is flagged predicted_disease_relevance: "UNPROVEN". This is a research and discovery resource, not a clinical diagnostic. The scope (common + low-frequency variants, MAFβ₯1%) and the UNPROVEN caveat ride in every response's provenance block, so anything an agent quotes stays honest and self-citing.
Citation
Gehring, M. (2026). Sniff Atlas. Zenodo. https://doi.org/10.5281/zenodo.20566358 (CC-BY-4.0)
@dataset{sniff_atlas_2026,
author = {Gehring, Matt},
title = {Sniff Atlas},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.20566358},
url = {https://sniff.world}
}
Code MIT Β· Data CC-BY-4.0 Β· world.sniff/sniff-mcp Β· https://sniff.world
Install
Add sniff mcp to your client. Pick the one you use.
claude mcp add --transport http sniff-mcp https://mcp.sniff.world/mcp/codex mcp add sniff-mcp --url https://mcp.sniff.world/mcp/{
"mcpServers": {
"sniff-mcp": {
"url": "https://mcp.sniff.world/mcp/"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"sniff-mcp": {
"type": "http",
"url": "https://mcp.sniff.world/mcp/"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"sniff-mcp": {
"url": "https://mcp.sniff.world/mcp/"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"sniff-mcp": {
"serverUrl": "https://mcp.sniff.world/mcp/"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance16/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 61 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 1.1.0Latest | Jul 2, 2026 |
| 0.1.0 | Jun 6, 2026 |