Skip to main content
Glama
musharna

plant-genomics-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PLANT_GENOMICS_MCP_CACHE_TTLNoPer-backend TTL+LRU cache entry lifetime, in seconds (200-only responses).600
PLANT_GENOMICS_MCP_HTTP_HOSTNoHTTP bind address.127.0.0.1
PLANT_GENOMICS_MCP_HTTP_JSONNo0 switches the response shape to streaming SSE events.1
PLANT_GENOMICS_MCP_HTTP_PORTNoHTTP TCP port.8765
PLANT_GENOMICS_MCP_CACHE_SIZENoMax entries per backend before LRU eviction.256
PLANT_GENOMICS_MCP_HTTP_TOKENNoBearer token for HTTP transport; must be ≥32 chars or HTTP server aborts at startup.
PLANT_GENOMICS_MCP_NCBI_EMAILNoNCBI etiquette contact for BLAST queries. Unset → placeholder + per-call warning; NCBI may throttle.
PLANT_GENOMICS_MCP_HTTP_MAX_BODYNoReject POSTs with Content-Length larger than this (in bytes).2097152
PLANT_GENOMICS_MCP_CACHE_DISABLEDNoAny non-empty value makes every cache a no-op.
PLANT_GENOMICS_MCP_HTTP_STATELESSNo0 keeps per-client session state (SSE-style).1
PLANT_GENOMICS_MCP_BLAST_CONCURRENCYNoMax in-flight BLAST searches per process (NCBI per-IP rate limit).2

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
ensembl_plants_lookup_locusA

Fetch metadata for a plant locus identifier from Ensembl Plants. Defaults to arabidopsis_thaliana; pass organism= for other plant species (oryza_sativa, zea_mays, ...). Locus is the TAIR-style identifier (e.g. AT1G01010 for Arabidopsis NAC001).

get_gene_xrefsA

Fetch cross-database references (UniProt, NCBI Gene, TAIR, ArrayExpress, …) for a plant locus from Ensembl Plants. Defaults to arabidopsis_thaliana; pass organism= for other Ensembl Plants species. Returns count + raw xref list + a by_db rollup keyed on Ensembl's dbname (e.g. 'Uniprot_gn', 'EntrezGene') for fast lookup of a single foreign identifier.

phytozome_lookup_locusA

Fetch a gene record from Phytozome BioMart (phytozome-next.jgi.doe.gov). Defaults to arabidopsis_thaliana; pass organism= for other Phytozome proteomes (slug, scientific/common name, or NCBI taxid — e.g. glycine_max, sorghum_bicolor). Locus is the source-genome gene name (e.g. AT1G01010, Glyma.01G000100). Returns organism_name, gene_name, chromosome, gene_start, gene_end, strand, description.

resolve_locus_to_uniprotA

Resolve a plant locus to its canonical UniProtKB record. Prefers reviewed (Swiss-Prot) entries; falls back to unreviewed (TrEMBL) when no curated record exists (common for non-Arabidopsis plants). organism accepts a canonical slug, scientific/common name, or NCBI taxid (default arabidopsis_thaliana; e.g. oryza_sativa, zea_mays). Returns primaryAccession, uniProtkbId, entryType, recommendedName, geneNames, organism, taxonId, sequenceLength, web_url. This is the protein-side entry point — pair with InterPro / AlphaFold / Reactome / structural-bio tools.

locus_literatureA

Search Europe PMC for literature mentioning a plant locus. Free, no API key. Returns up to size results (default 10, capped at 25) with title, authors, journal, year, DOI, PMID, open-access status, citation count, and abstract. For non-Arabidopsis species the species common name is appended to the query to disambiguate locus IDs (rice, maize, ...). Pair with resolve_locus_to_uniprot or ensembl_plants_lookup_locus to ground the locus before fanning out to the literature.

locus_go_annotationsA

Fetch Gene Ontology annotations for a plant locus from QuickGO (EBI). Free, no API key. The locus is first resolved to a UniProt accession via the same logic as resolve_locus_to_uniprot, then QuickGO is queried by geneProductId. Returns annotations[] with goId/goName/goAspect/qualifier/evidence + a by_aspect rollup ({molecular_function: [{goId, goName}, ...], biological_process: [...], cellular_component: [...]}) deduped on goId so the high-level term set is one read away.

gramene_homologsA

Fetch orthologs and paralogs for a plant locus from Gramene compara (data.gramene.org v69). Default homology_type='ortholog'; pass 'paralog' for in-species duplicates or 'all' for everything. Returns target_locus + homology category (type) + shared gene_tree_id per hit. The fl=homology projection does not carry per-row taxon, identity, or protein ID; pair with resolve_locus_to_uniprot for protein-level enrichment and with blast_sequence for sequence similarity discovery.

kegg_pathwaysA

Fetch KEGG pathway memberships for an Arabidopsis locus from rest.kegg.jp. Returns a list of pathway IDs + names + KEGG category classes the locus participates in. Pairs with locus_go_annotations for the GO-level functional view. Multi-organism caveat (v1.1.0): the organism= field accepts any plant in the matrix for symmetry with the other backends, but only arabidopsis_thaliana resolves — KEGG uses NCBI Entrez Gene IDs for rice/maize/etc. and our cross-backend locus contract can't produce those yet, so any other organism raises OrganismNotSupported before any HTTP call. KEGG v118+ is case-sensitive on the locus: pass AGI loci as uppercase.

bar_gene_summaryA

Fetch the BAR (Bio-Analytic Resource, U Toronto) merged ThaleMine + GAIA-aliases summary for an Arabidopsis locus. Returns the TAIR curator summary + Araport11 computational description from /thalemine/gene_information/ together with the NCBI Gene ID and cross-DB aliases (RefSeq, UniProt, TIGR locus-model IDs) from /gaia/aliases/. Arabidopsis only — ThaleMine carries taxon 3702 plus yeast/human for ortholog cross-reference. BAR is keyless and a Global Core Biodata Resource (2023); replaces the v0.9 subscription-gated tair_locus_info stub for the curator-summary use case.

bar_efp_expressionA

Fetch BAR/eFP world-map natural-variation expression for an Arabidopsis locus. Wraps the world-eFP view at /microarray_gene_expression/world_efp/arabidopsis/{locus} — returns expression across ~36 ecotypes (Bay-0, Col-0, Cvi-1, Ler-2, ...) with per-replicate values, control samples, collection lat/lng, and a per-ecotype mean computed client-side. Arabidopsis only. BAR is keyless and a Global Core Biodata Resource (2023).

bar_aiv_interactionsA

Fetch BAR AIV (Arabidopsis Interactions Viewer) interactions for an Arabidopsis or rice locus. Dispatches by organism: Arabidopsis returns curated GRN paper refs from /interactions/get_paper_by_agi/{locus} (PubMed ID, title, image, comments, pipe-split tags); rice returns predicted PPI partners from /interactions/rice/{locus} with Pearson co-expression r (pcc), evidence hits, and quality score. The kind field discriminates the response shape (grn_papers vs ppi_predictions). Rice requires the MSU LOC_Os* locus format — RAP-DB Osg is rejected upstream. Only Arabidopsis and rice are supported by AIV; other organisms raise OrganismNotSupported.

string_interactionsA

Fetch protein-protein interaction partners from STRING-DB (string-db.org). Accepts either a UniProt accession or a locus identifier — the latter is resolved via UniProt first. Defaults to arabidopsis_thaliana; pass organism= for other plant species (slug, scientific/common name, or NCBI taxid). Returns first-neighbor partners with the combined STRING score plus per-channel sub-scores (experimental, database, textmining, predicted).

tair_locus_infoA

Fetch the TAIR curator-vetted Arabidopsis locus summary. Served via BAR/ThaleMine (U Toronto, Global Core Biodata Resource 2023) since TAIR's free per-locus REST API is gated behind a paid Phoenix Bioinformatics subscription. Returns TAIR curator summary + Araport11 computational description + NCBI Gene ID + cross-DB aliases (RefSeq, UniProt, TIGR locus-model IDs). Arabidopsis only. Alias of bar_gene_summary.

plantcyc_locus_infoA

Returns subscription-access info and alternatives for a PlantCyc locus. Does NOT fetch annotation or pathway data — PlantCyc requires paid SRI/Phoenix subscription. Use ensembl_plants_lookup_locus or phytozome_lookup_locus for canonical gene annotation; PlantCyc's pathway-membership value-add is not currently substituted. Returns structured redirect with rationale and probed_at date.

batch_ensembl_plants_lookup_locusA

Batch variant of ensembl_plants_lookup_locus. Uses Ensembl's native POST /lookup/id endpoint — one HTTP round-trip for up to 50 loci, materially cheaper than N parallel GETs. Successes in results[] with the same shape as the single-locus tool. Retries 429/5xx via the shared _http helper (Retry-After capped at 60 s). Misses (loci with no record) still land in errors[] with the [NotFoundError] prefix; the whole batch only fails when the retry budget is exhausted.

batch_get_gene_xrefsA

Batch variant of get_gene_xrefs. Fans out per-locus xref lookups over Ensembl Plants in parallel (up to 50 loci). Each results[locus] is the full single-locus shape (count + xrefs[] + by_db rollup).

batch_phytozome_lookup_locusA

Batch variant of phytozome_lookup_locus. Fans out per-locus BioMart queries in parallel (up to 50 loci). Each results[locus] is the full single-locus row (organism_name, gene_name, chromosome, start/end/strand, description).

batch_resolve_locus_to_uniprotA

Batch variant of resolve_locus_to_uniprot. Fans out per-locus UniProtKB searches in parallel (up to 50 loci). Each results[locus] is the full single-locus record (primaryAccession + uniProtkbId + entryType + geneNames + organism + sequenceLength + web_url + …).

batch_locus_literatureA

Batch variant of locus_literature. Fans out per-locus Europe PMC searches in parallel (up to 50 loci). Each results[locus] is the full single-locus payload (query + hitCount + returned + hits[]).

blast_sequenceA

Run a BLAST sequence-similarity search against NCBI BLAST URLAPI. Async Put/Get under the hood — submits the query, polls the RID (honoring NCBI's per-RID 60s floor), and returns the parsed top hits + raw text report excerpt. Programs: blastn / blastp / blastx / tblastn / tblastx. Database defaults to swissprot for protein programs, core_nt for nucleotide. Emits notifications/progress on each poll. Long searches (>10 min) raise [NotFoundError] with the RID preserved so the client can re-poll. Set PLANT_GENOMICS_MCP_NCBI_EMAIL to identify the request per NCBI etiquette.

batch_locus_go_annotationsA

Batch variant of locus_go_annotations. Two-stage fanout — each locus is resolved to UniProt and then queried in QuickGO. Per-locus NotFoundError from either stage lands in errors[] with the typed prefix preserved. Capped at 50 loci.

batch_gramene_homologsA

Batch version of gramene_homologs. Up to 50 loci per call; shares the homology_type filter across all loci. Returns the standard batch envelope (count + results dict + errors dict).

batch_kegg_pathwaysA

Batch version of kegg_pathways. Up to 50 loci per call. v1.1.0: only arabidopsis_thaliana resolves — KEGG uses NCBI Entrez Gene IDs for other plants and our cross-backend locus contract can't produce those yet, so a non-ath organism= raises OrganismNotSupported before any HTTP fan-out.

batch_bar_gene_summaryA

Batch variant of bar_gene_summary. Fans out per-locus BAR ThaleMine + GAIA-aliases calls in parallel (up to 50 loci). Each results[locus] is the full single-locus payload (curator summary, computational description, NCBI Gene ID, cross-DB aliases). Arabidopsis only.

batch_bar_aiv_interactionsA

Batch variant of bar_aiv_interactions. Fans out per-locus BAR AIV calls in parallel (up to 50 loci); all loci in a single call share the same organism. Each results[locus] is the full single-locus payload (kind=grn_papers for Arabidopsis with papers list, kind=ppi_predictions for rice with partners list).

batch_string_interactionsB

Batch version of string_interactions. Up to 50 inputs per call.

atted_coexpressionA

Fetch co-expressed gene neighbors from ATTED-II (atted.jp, API v5) for a plant locus. Returns top_n neighbors with target locus + NCBI Entrez gene ID + z-score (higher = stronger coexpression). The ATTED-II release (e.g. Ath-u.c4-0 for Arabidopsis, Osa-u.c1-0 for rice) is resolved per-organism; wheat, sorghum, barley, poplar, and brachypodium have no published release and raise OrganismNotSupported. Pairs with string_interactions to surface high-confidence functional partners (interactors that are also coexpressed).

batch_atted_coexpressionC

Batch version of atted_coexpression. Up to 50 loci per call.

analyze_locus_synthA

Synthesis: one-call equivalent of the analyze_locus prompt. Resolves a locus through Ensembl Plants, then fans out to xrefs, UniProt, Europe PMC, and QuickGO in parallel. Returns a SynthesisEnvelope with per-step status and a reconciled summary flagging cross-source name/accession disagreements.

find_homologs_synthA

Synthesis: one-call equivalent of the find_homologs prompt. Runs BLAST then resolves UniProt-shaped subject accessions via the batch UniProt helper. Returns ranked hits each annotated with their UniProt record (or null if subject_id is not a UniProt accession).

biological_context_synthA

Synthesis: one-call equivalent of the biological_context prompt. Resolves UniProt accession, then fans out to Gramene homologs, KEGG pathways, STRING-DB partners, and ATTED-II coexpression in parallel. Adds a consensus_partners ranking that merges STRING + ATTED scores.

consensus_homologsA

Synthesis: cross-source homology consensus. Resolves UniProt + FASTA sequence, then runs Gramene homology calls and NCBI BLAST in parallel. Dedupes hits by normalized locus token and scores by n_sources * mean_identity — Gramene contributes identity=1.0, BLAST contributes pident/100.

Prompts

Interactive templates invoked by user choice

NameDescription
analyze_locusWalk the assistant through a full gene profile for a plant locus: Ensembl annotation, cross-references, UniProt protein record, recent literature, and GO term summary. Chains five tools in a deterministic order.
find_homologsRun a BLAST sequence-similarity search against NCBI and resolve the top hits against Ensembl Plants / UniProt. Chains blast_sequence with the per-hit lookup tools.
biological_contextBuild a biological-context profile for a plant locus by chaining homology (Gramene) → pathways (KEGG, Arabidopsis only) → interactions (STRING) → coexpression (ATTED-II, Arabidopsis only). Cross-references the result lists to surface high-confidence functional partners. For non-Arabidopsis organisms, KEGG + ATTED steps are omitted automatically because those backends only ship Arabidopsis data — the chain still runs Gramene + UniProt + STRING.

Resources

Contextual data attached and managed by the client

NameDescription
Cache statisticsPer-backend TTL+LRU cache stats (hits / misses / size). Sourced from each backend module's process-local _CACHE.
Phytozome organismsMap of canonical slug → Phytozome organism_id, derived from the ORGANISMS registry. Only includes organisms with a non-None phytozome_int. See pgmcp://organisms/coverage for the full coverage matrix across all backends.
Backend statusPer-backend rollup (name, base_url, kind=live|stub, subscription_gated, probed_at). Lets a client enumerate the live and stubbed backends without parsing the server docstring.
Organism coverage matrixMarkdown table of all 12 supported plants × 7 ID slots (ncbi_taxid, ensembl, phytozome, string, europe_pmc, kegg, atted). Missing slots render as em-dash. Lets a client introspect coverage in one read instead of probing resolve_organism per organism.

Latest Blog Posts

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/musharna/plant-genomics-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server