sniff-mcp
Officialsniff-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 + provenanceEndpoint | What it returns |
| single variant: AF, popmax, consequence, gene, ESM2/Pangolin/phyloP |
| the joined query — everything about a variant in one call |
| breed profile (top variants, geometry, nearest breeds) |
| genetically nearest breeds (PCA distance) |
| variants in a gene, ranked by impact |
| natural-language search ("ancient arctic sled dogs") |
| filtered discovery across all 9.67M variants |
| 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 envSee 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sniffscore/sniff-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server