Plant Genomics
PYPI · PLANT-GENOMICS-MCP · SCANNED SEP 20
Plant genomics MCP — 50 tools across 23 backends with cross-source synthesis.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 32 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 44 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9925 tokens (~183/item across 54 items; 50 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 50 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Plant Genomics MCP server?
Plant Genomics runs locally as a PyPI package, launched with uvx plant-genomics-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · plant-genomics-mcp
claude mcp add musharna-plant-genomics-mcp -- uvx plant-genomics-mcp
{
"mcpServers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} {
"servers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} codex mcp add musharna-plant-genomics-mcp -- uvx plant-genomics-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"musharna-plant-genomics-mcp": {
"type": "local",
"command": [
"uvx",
"plant-genomics-mcp"
],
"enabled": true
}
}
} openclaw mcp add musharna-plant-genomics-mcp --command uvx --arg plant-genomics-mcp
mcp_servers:
musharna-plant-genomics-mcp:
command: "uvx"
args: ["plant-genomics-mcp"] {
"McpServers": {
"musharna-plant-genomics-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"plant-genomics-mcp"
]
}
}
} assistant mcp add musharna-plant-genomics-mcp -t stdio -c uvx -a plant-genomics-mcp
{
"mcpServers": {
"musharna-plant-genomics-mcp": {
"command": "uvx",
"args": [
"plant-genomics-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 0
- Stability: 0.97 → pass security
- 19 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 17 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −18
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.80 functional
- 13 Sept 26 0
- Stability: 0.97 → pass security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/plant-genomics-mcp@1.21.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 32 packages
| Packages resolved | 32 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
orthodb_orthologs OrthoDB: Orthologs ~302
Resolve a locus to its OrthoDB ortholog group and cross-species member genes (data.orthodb.org; free, no key). Searches at the Viridiplantae level, then returns the group metadata (name, evolutionary rate) and member genes grouped by organism (organism, gene id, description). organism_count is the true cluster total; the member list is capped with truncated flagged. found=false when the locus maps to no ortholog group. Works for all 12 organisms. NOTE: unlike the other locus tools, organism= does NOT scope the search — the group is resolved from the locus id alone at the Viridiplantae level, and organism is only validated and echoed back. Passing a mismatched organism therefore still returns the locus's real group.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max ortholog member rows to return. 'member_count' always reports the true pre-cap total and 'truncated' says whether the cap bit. |
| locus | string | yes | e.g. AT1G01060 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid. Validated and echoed only: it does NOT scope the OrthoDB search, which keys on the locus id a… |
| Name | Type | Req | Description |
|---|---|---|---|
| found | boolean | yes | True if the locus maps to an ortholog group |
| group | – | – | Group metadata {id, name, evolutionary_rate, level_name, …} |
| locus | string | yes | – |
| member_count | integer | yes | Member genes returned (post-cap) |
| members | array | – | Per-gene {organism, gene_id, xref, description} |
| organism | string | yes | Canonical organism as requested — echoed, not inferred from the hit. Does not scope the search (see class docstring) |
| organism_count | integer | yes | Number of member organisms in the whole ortholog group (pre-cap) — the true cluster total, unaffected by the member cap below |
| truncated | boolean | yes | True if the member list was capped |
No examples provided.
panther_family PANTHER: Protein Family ~200
Fetch the PANTHER protein-family classification for a locus (pantherdb.org; free, no key). Returns the PANTHER family and subfamily (id + name) plus curated GO terms grouped by aspect (molecular_function / biological_process / cellular_component), the PANTHER protein class, and pathways. found=false when PANTHER cannot classify the locus. Complements the sequence-homology tools (gramene_homologs / consensus_homologs) with an evolutionary-family view. Works for all 12 organisms. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01060 (Arabidopsis), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | – | – | PANTHER mapped accession |
| family_id | – | – | PANTHER family id, e.g. PTHR12802 |
| family_name | – | – | – |
| found | boolean | yes | True if PANTHER classified the locus |
| go_biological_process | array | – | – |
| go_cellular_component | array | – | – |
| go_molecular_function | array | – | – |
| locus | string | yes | – |
| pathways | array | – | – |
| protein_class | array | – | – |
| subfamily_id | – | – | e.g. PTHR12802:SF176 |
| subfamily_name | – | – | – |
No examples provided.
phytozome_lookup_locus Phytozome: Locus Metadata ~193
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.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Glyma.01G000100 (soybean) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| chromosome | string | yes | – |
| description | string | yes | – |
| gene_end | string | yes | String — BioMart TSV is untyped |
| gene_name | string | yes | – |
| gene_start | string | yes | String — BioMart TSV is untyped |
| organism_name | string | yes | – |
| strand | string | yes | String — typically "1" or "-1" |
No examples provided.
plantcyc_locus_info PlantCyc: Metabolic Pathways ~275
Fetch metabolic annotation for a locus from PlantCyc / the Plant Metabolic Network (pmn.plantcyc.org; free BioCyc web-services API, no key). Walks gene → enzyme → catalyzed reactions → PlantCyc pathways in the organism's PGDB, returning enzymes[] + reactions[] (id/name) + pathways[] (id/name) — the metabolic-pathway view KEGG and GO don't provide. A non-enzymatic gene (e.g. a transcription factor) returns found=false with empty lists, not an error. reaction_count / pathway_count report true totals even when the lists are capped. 11 organisms have a PGDB (arabidopsis, rice, maize, soybean, grape, poplar, tomato, barley, sorghum, medicago, brachypodium); wheat is not yet mapped. Defaults to arabidopsis_thaliana (AraCyc, the best-curated); pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT3G51240 (Arabidopsis), Os11g0530600 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| enzymes | array | yes | Product monomer (enzyme) frame ids |
| found | boolean | yes | True if the locus resolved to a metabolic gene |
| gene_common_name | – | – | Gene common name in the PGDB |
| gene_frame | – | – | Resolved PGDB gene frame id |
| locus | string | yes | – |
| organism | string | yes | Canonical organism slug |
| orgid | string | yes | PlantCyc PGDB org id, e.g. ARA (AraCyc) |
| pathway_count | integer | yes | Total distinct pathways (pre-cap) |
| pathways | array | yes | – |
| reaction_count | integer | yes | Total distinct reactions (pre-cap) |
| reactions | array | yes | – |
No examples provided.
resolve_locus_to_uniprot Resolve Locus → UniProt ~218
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.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT1G01010 (Arabidopsis), Os01g0100100 (rice) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| entryType | string | yes | e.g. 'UniProtKB reviewed (Swiss-Prot)' or '... (TrEMBL)' |
| geneNames | array | – | Gene symbols, e.g. ['NAC001'] |
| locus_query | string | yes | The locus identifier the user asked about |
| organism | – | – | Scientific name |
| primaryAccession | string | yes | UniProt accession, e.g. Q0WV96 |
| recommendedName | – | – | Recommended protein name |
| reviewed | boolean | yes | True if Swiss-Prot (curated) |
| sequenceLength | – | – | Protein length in residues |
| taxonId | – | – | NCBI taxonomy ID |
| uniProtkbId | string | yes | UniProtKB ID, e.g. NAC1_ARATH |
| upstream_version | – | – | UniProt release that produced THIS record, as stated by the upstream's own header (e.g. '2026_02'). null means UniProt did not state one — never that no release exists, and never inferred from a sepa… |
| web_url | – | – | Browser URL for the UniProt entry |
No examples provided.
string_interactions STRING: Interaction Network ~175
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).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of partners to return |
| locus_or_accession | string | yes | UniProt accession (Q0WV96) or locus (AT1G01010) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | UniProt accession actually queried at STRING |
| organism | string | yes | Plant organism canonical slug, e.g. arabidopsis_thaliana |
| partners | array | yes | – |
| query | string | yes | The locus or accession the user passed |
No examples provided.
tair_locus_info TAIR-Style Locus Summary ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | Arabidopsis AGI locus, e.g. AT1G01010 |
| Name | Type | Req | Description |
|---|---|---|---|
| agi | – | – | AGI primary identifier echoed by ThaleMine, e.g. "AT1G01010" |
| aliases | array | – | Cross-DB aliases from /gaia/aliases/ (RefSeq accessions, UniProt accessions, TIGR locus-model IDs, and TAIR aliases). Empty list if /gaia degraded. |
| brief_description | – | – | Gene.briefDescription — short blurb (often same as full_name) |
| computational_description | – | – | Gene.tairComputationalDescription — Araport11-sourced computed description |
| curator_summary | – | – | Gene.tairCuratorSummary — the TAIR-curated functional summary prose |
| full_name | – | – | Gene name from ThaleMine |
| locus | string | yes | – |
| ncbi_gene_id | – | – | NCBI Gene ID from /gaia/aliases/ — None if BAR has no NCBI cross-ref |
| source_url | string | yes | ThaleMine endpoint URL for traceability |
| species | string | yes | – |
| symbol | – | – | Gene symbol, e.g. "NAC001" |
| synonyms | array | – | TAIR aliases (CSV from Gene.tairAliases, split on commas + stripped) |
| tair_locus_id | – | – | TAIR locus ID from Gene.secondaryIdentifier, e.g. "locus:2200935" |
| tair_short_description | – | – | Gene.tairShortDescription — TAIR-specific short description |
No examples provided.
tf_binding_motifs JASPAR: TF Binding Motifs ~394
Fetch curated transcription-factor DNA binding motifs for a locus from JASPAR (jaspar.elixir.no; free, no key) — the cis-regulatory view. Resolves the locus → UniProt accession + gene symbol, searches JASPAR by symbol scoped to the organism's taxid, then CONFIRMS each candidate by matching the accession against the profile's uniprot_ids. Returns per motif the JASPAR matrix id, TF class/family, assay type (SELEX / ChIP-seq / PBM / DAP-seq), an IUPAC consensus derived from the position-frequency matrix (e.g. CACGTG, the G-box/ABRE core), motif length, PubMed refs, and an SVG sequence-logo URL. IMPORTANT: JASPAR's name search is fuzzy, so name-similarity hits belonging to a DIFFERENT gene are returned separately in name_only_matches and must NOT be attributed to this locus; only `motifs` is UniProt-confirmed. found=false means the gene has no curated profile (not a TF, or its family is unprofiled for that species) — a normal outcome, not an error. Use jaspar_motif to retrieve the raw matrix for any matrix_id. Coverage is Arabidopsis-heavy (1236 profiles) and thin elsewhere (maize 131, soybean 91, wheat 58, tomato 51, rice 10; Brachypodium and sorghum have none). Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| locus | string | yes | e.g. AT2G46830 (Arabidopsis CCA1), Os01g0100100 (rice RAP-DB) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | Resolved UniProt accession |
| found | boolean | yes | True if any profile was UniProt-confirmed for this locus |
| gene_names_searched | array | – | Gene symbols used as JASPAR search keys |
| locus | string | yes | – |
| motif_count | integer | yes | Total confirmed profiles (pre-cap) |
| motifs | array | – | UniProt-confirmed binding profiles |
| name_only_matches | array | – | Name-similarity hits belonging to a DIFFERENT gene [{matrix_id, name, uniprot_ids}] — not this locus's motifs |
| tax_id | integer | yes | NCBI taxid the JASPAR search was scoped to |
| truncated | boolean | yes | True if the motif list was capped |
No examples provided.
vep_annotate VEP: Variant Effect ~236
Predict a variant's molecular consequences with Ensembl VEP (rest.ensembl.org; free, no key). Variant-first (not locus-first): supply an Ensembl region (chr:start-end:strand, e.g. '1:10000-10000:1') and an alternate allele (e.g. 'C'); returns the most-severe consequence plus one row per overlapping transcript (consequence terms, IMPACT, and SIFT/PolyPhen when the variant is coding-missense). found=false when Ensembl reports no overlapping feature. Works for all 12 organisms. Defaults to arabidopsis_thaliana; pass organism= for other species.
| Name | Type | Req | Description |
|---|---|---|---|
| allele | string | yes | Alternate allele, e.g. 'C' (or 'A/C', an insertion, etc.) |
| organism | string|integer | – | Plant organism — accepts canonical slug (arabidopsis_thaliana), scientific or common name, or NCBI taxid |
| region | string | yes | Ensembl region chr:start-end:strand, e.g. '1:10000-10000:1' |
| Name | Type | Req | Description |
|---|---|---|---|
| allele | string | yes | Alternate allele, e.g. 'C' |
| allele_string | – | – | – |
| assembly_name | – | – | Assembly the call is against |
| end | – | – | – |
| found | boolean | yes | True if VEP returned an overlapping feature |
| input | – | – | VEP echo of the parsed input |
| most_severe_consequence | – | – | Most severe SO term |
| organism | string | yes | Resolved Ensembl species slug |
| region | string | yes | Ensembl region, e.g. '1:10000-10000:1' |
| seq_region_name | – | – | – |
| start | – | – | – |
| transcript_consequences | array | – | Per-transcript {gene_id, transcript_id, consequence_terms, impact, sift_*, …} |
No examples provided.
What is the Plant Genomics MCP server?
Plant Genomics is an MCP server listed in the public MCP registry as io.github.musharna/plant-genomics-mcp. Plant genomics MCP, 50 tools across 23 backends with cross-source synthesis. This page covers its PyPI package (plant-genomics-mcp).
Is the Plant Genomics MCP server safe to use?
Plant Genomics scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Plant Genomics MCP server expose?
Plant Genomics exposes 50 tools: ensembl_plants_lookup_locus, get_gene_xrefs, get_sequence, ensembl_region_query, phytozome_lookup_locus, and 45 more. Their descriptions and schemas cost roughly 9,711 tokens of context every time the server is loaded.
Is the Plant Genomics MCP server still maintained?
Plant Genomics is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Plant Genomics MCP server under?
Plant Genomics declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.