SuperAPI AI Directory

plant-genomics-mcp

Plant genomics locus lookup across Ensembl Plants, Phytozome, UniProtKB, KEGG, STRING-DB, NCBI BLAST and more, with batch and cross-source queries.

Open website

About this tool

Purpose

plant-genomics-mcp is a plant genomics MCP (Model Context Protocol) server for querying plant loci across data sources. It provides tools to clients (such as Claude, etc.) through the Model Context Protocol, enabling users to ask questions in natural language, for example about the function, GO terms, KEGG pathways, protein interaction partners, and recent papers of the Arabidopsis gene AT1G01010. Users do not need to remember specific tool names or call order; the client decides on its own which tools to call and in what order.

Main capabilities

The server contains 56 tools distributed across 23 backend data sources. Specifically: 29 single-locus query tools, 1 motif query, 1 region query, 1 assembly list, 1 version report, 1 variant annotator, 1 gene set enrichment, 1 BLAST search, 2 member lists (family entries, gene trees), 13 parallel batch tools, and 5 cross-source synthesis variants.

The 23 free public data sources are: Ensembl Plants, Phytozome BioMart, UniProtKB, Europe PMC, QuickGO, Planteome, PlantCyc/PMN, g:Profiler, AlphaFold DB, PDBe, InterPro, JASPAR, PANTHER, OrthoDB, AraGWAS, 1001 Genomes, NCBI BLAST, Gramene, KEGG, STRING-DB, ATTED-II, ThaleMine, BAR (Bio-Analytic Resource for Plant Biology).

Most tools accept TAIR-style loci (for example AT1G01010), as well as an optional organism= parameter (supporting slug, scientific name, common name, or NCBI taxid). For cross-species queries, pass organism=, for example rice Os01g0100100 (oryza_sativa); each tool maps organism to that backend's own identifier. The 12-plant coverage matrix can be viewed in the MCP resource pgmcp://organisms/coverage.

All tools publish JSON outputSchema, EDAM ontology labels and behavioral annotations. Every tool is readOnlyHint + openWorldHint, so hosts can display them without triggering destructive-operation confirmation prompts.

Batch tools return {tool, count, results, errors}, where results[locus] has the same structure as the single-locus tool return, and errors[locus] is the same [ClassName] message string. Ensembl batching uses the native POST /lookup/id endpoint (one HTTP round trip); the rest fan out via asyncio.gather.

All live tools throw PlantGenomicsError subclasses; the MCP SDK stringifies them into the wire content with a [ClassName] prefix, so clients can route based on failure type without parsing the message.

Usage

After installation, the simplest call can return the Ensembl Plants record for NAC001. Users can ask Claude questions in natural language, such as "tell me everything about the Arabidopsis gene AT1G01010—function, GO terms, KEGG pathways, protein interaction partners, and recent papers." The server provides the tools; which ones to call, in what order, and in how many rounds is decided by the client. In the repository's recorded example (a narrower prompt), Claude Code chose the calls itself and returned a combined answer.

Transports support stdio and Streamable-HTTP. The HTTP transport is stateless, outputs JSON responses by default, and is suitable for registry indexers and remote hosting. There is no public hosted endpoint; to use the HTTP transport you must run it yourself: the same binary, controlled by your own bearer token (PLANT_GENOMICS_MCP_HTTP_TOKEN), with NCBI BLAST requests sent using your own contact email.

Regarding configuration, Stdio requires no configuration. Two important environment variables (the specific variable names are not explicitly listed in the official text, apart from the HTTP token). The cache is process-local—restarting the server discards all entries. Long-running calls (retry storms, multi-second Phytozome BioMart POSTs) emit MCP notifications/progress through the active session; the client, throughOpt in by requesting the progressToken in _meta.

Resources and prompts provided: the client discovers them via resources/list and prompts/list. The specific resources (resources/read) and prompts (prompts/get) lists are not detailed in the official text.

Installation and development: when using uv, pass --extra dev, because a bare uv sync omits (and removes) the test dependencies. CI runs the unit suite + a stdio smoke test on every push/PR (matrix: Python 3.11, 3.12, 3.13, 3.14), and sets a dead proxy so that ungated network calls fail. A separate live-smoke job runs two live test files (tests/test_verify_genes.py, tests/test_arf_mcp_client.py, InterPro and PANTHER) on Python 3.12; the results are reported but not treated as a required check, because they depend on third-party services. The remaining live suite (PLANT_GENOMICS_MCP_LIVE=1) is not run in CI.

Drift detection: scripts/benchmark_annotations.py runs a curated corpus containing 27 loci (spanning all 12 organisms) through 12 functions (the organism resolver plus 11 queries across 9 backends: ATTED-II, BAR, Ensembl Plants, Europe PMC, Gramene, KEGG, Phytozome, STRING-DB, UniProt), and compares the results with a frozen snapshot of earlier results (scripts/benchmark_annotations.expected.json), outputting PASS / DRIFT / FAIL plus two cross-source consistency invariants. Changes are detected relative to that snapshot, not against independent truth. BLAST and the integrated pipeline are already registered in the script, but no corpus locus triggers them. A planned GitHub Actions workflow (.github/workflows/benchmark.yml) runs weekly and alerts when the same locus fails on a rerun. The how-to guide is in docs/benchmarking.md.

Release notes are in CHANGELOG.md, including the v0.8 → v0.9 species= / organism_id= → organism= migration and the v1.0.1 HTTP token enforcement change. It is listed in the official MCP registry under a namespace.

When to use

Suitable for plant genomics research, such as querying loci of plants like Arabidopsis and rice for functional annotation, GO terms, pathways, protein interactions, literature, variant annotation, gene set enrichment, and BLAST searches, with support for cross-species and batch processing. Example workflow: examples/arf_family/PAGE.md documents a run of 64 calls covering 114 genes across three organisms, recording 51 gaps (39 of which were closed).

Limitations

There is no public hosted endpoint; the HTTP transport must be run by yourself. The cache is process-local. The underlying services (Ensembl Plants, Phytozome, TAIR, PlantCyc, BAR) have their own terms of use, which must be consulted before batch queries. Drift detection is relative to a snapshot, not independent truth. The live-smoke results in CI depend on third-party services and are not a required check. The remaining live suite is not run in CI. The code uses the MIT license. Beyond this, the official text provides no other limitation information.