just-prs-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRS_MCP_HOST | No | HTTP server host | |
| PRS_MCP_MODE | No | Server mode: essentials or extended | essentials |
| PRS_MCP_PORT | No | HTTP server port | |
| PRS_MCP_HF_TOKEN | No | HuggingFace token for catalog upload | |
| PRS_MCP_CACHE_DIR | No | Root directory for cached data | |
| PRS_MCP_LOG_LEVEL | No | Logging level | |
| PRS_MCP_TRANSPORT | No | Transport type (stdio, http, etc.) | |
| FASTMCP_DOCKET_URL | No | Redis URL for background task backend | |
| PRS_MCP_DEFAULT_PANEL | No | Default reference panel | |
| PRS_MCP_DUCKDB_MEMORY_LIMIT | No | Memory limit for DuckDB | |
| PRS_MCP_DEFAULT_GENOME_BUILD | No | Default genome build (e.g., GRCh37, GRCh38) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_scores | Search the PGS Catalog for polygenic scores by free text. Case-insensitive substring match across PGS ID, score name, reported
trait, and EFO trait. Optionally filter to a genome build (GRCh37 /
GRCh38, harmonized cross-build scores included). Returns up to |
| score_info | Get cleaned metadata for a single PGS score by its ID (e.g. 'PGS000001'). |
| best_performance | Look up the best evaluation performance for a score (largest sample, EUR-preferred). Returns parsed effect sizes (OR/HR/Beta) and classification metrics (AUROC/C-index) plus pre-formatted display strings. |
| search_traits | Search the PGS Catalog REST API for traits by term. Upstream matching is exact-substring over labels and synonyms, so this
wrapper retries a few punctuation/order variants when the first query is
empty. By default, results include counts of directly associated PGS IDs
and child-trait PGS IDs; set |
| trait_info | Fetch a trait by ontology ID (EFO or MONDO) with its associated PGS IDs. |
| normalize_vcf | Normalize a VCF to a quality-filtered genotype Parquet (background task). Strips the chr prefix, renames id→rsid, computes genotype from GT, applies
optional quality filters (FILTER allow-list, min DP, min QUAL), and writes
zstd-compressed Parquet. The output is a drop-in genotype source for
Idempotent: if the target Parquet already exists it is reused and the
(slow) normalization is skipped — Runs as a real MCP background task, though some clients transparently collapse the task/poll handshake and return the final result inline. Normalization is the slow step (seconds to minutes depending on VCF size). The result echoes the effective genome build assumed for downstream PRS scoring; build inference from VCF contigs is deferred to just-prs. |
| download_sample_genome | Download a public sample WGS VCF from Zenodo to try PRS without your own data. Two whole-genome sequencing (WGS) datasets open-sourced by the just-dna-lite project are pre-configured:
Pass The downloaded VCF lands under
Use Idempotent: if the target VCF already exists with the size Zenodo
reports, the ~hundreds-of-MB download is skipped and the cached file is
reused; likewise a present Parquet skips re-normalization. Returns an |
| list_genomes | List genomes available in the server's cache directory. Scans Use this to discover:
No network access required — reads the local filesystem only. |
| compute_prs | Compute a polygenic risk score for one VCF against one PGS score. Downloads the harmonized scoring file (cached) and scores the genotypes.
Pass Set Recommended follow-up: after computing the score, call |
| compute_prs_batch | Compute PRS for one VCF against many PGS scores (background task). Memory-safe DuckDB engine with spill-to-disk; reuses the parsed VCF and
scoring caches across scores. Returns one result per PGS ID. Set
|
| compute_prs_by_trait | Compute the PRS scores associated with a trait ontology ID.
Profile (curation): Filters (apply in both profiles, before
|
| percentile | Estimate the population percentile (0-100) for a computed PRS value. Uses the 3-tier fallback: precomputed reference-panel distributions
(best), then a theoretical distribution, then an AUROC approximation.
Important next step: for disease traits, feed the returned
|
| absolute_riskA | Estimate absolute disease risk from a PRS z-score and population prevalence. Joins the score's trait to prevalence + effect-size data. |
| assess_quality | Classify and interpret a PRS result's quality (pure logic — no I/O).
|
| compare_genomes | Compare PRS results across multiple genomes for the same trait(s).
Returns a |
| plot_trait_panel | Build a Plotly figure spec for a saved by-trait PRS report. Pass the |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| compute_prs_for_trait | Prompt template: find and compute PRS for a trait against a VCF. |
| interpret_prs_for_trait | Prompt template: the end-to-end methodology for an interpretable by-trait PRS read. Encodes the 5-stage recipe (resolve → confirm ancestry → curated by-trait → read shortlist concordance → caveats) so every client gets the methodology, not just agents with it in local context (dogfooding F21). |
| interpret_prs_result | Prompt template: interpret a single PRS result for a citizen scientist. |
| interpret_trait_results | Prompt template: interpret combined PRS results across multiple models for one trait. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| panels | Reference panels, supported genome builds, and the active cache directory. |
| genomes | Genomes cached on the server: downloaded VCFs and normalized Parquets. Resource mirror of the ``list_genomes`` tool — the discovery surface a client enumerates to find the server-side paths it may pass as ``vcf_path`` / ``genotypes_path``, plus the pre-configured samples it can fetch via ``download_sample_genome``. JSON, no network access. |
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/dna-seq/just-prs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server