Skip to main content
Glama

GTDB-MCP

A Model Context Protocol (MCP) server for the Genome Taxonomy Database (GTDB)

中文文档 | English


⚠️ Disclaimer: This is an unofficial, third-party community implementation and is not affiliated with, endorsed by, or associated with the GTDB team or Anthropic. GTDB is developed by the Australian Centre for Ecogenomics (ACE) at the University of Queensland. This project independently builds an MCP server to facilitate access to GTDB data. All GTDB data and trademarks belong to their respective owners.


📋 Table of Contents


Related MCP server: ncbi-datasets-mcp

Overview

GTDB-MCP is a Model Context Protocol (MCP) server that provides seamless access to the Genome Taxonomy Database (GTDB). It enables LLM-powered applications to query bacterial and archaeal taxonomy data, search for genomes, navigate phylogenetic trees, and perform comparative analyses.

GTDB is a genome-based taxonomy database that provides standardized taxonomic classifications for bacterial and archaeal genomes based on over 120 conserved marker genes. This MCP server makes GTDB data accessible to AI assistants and other MCP-compatible tools.

Key Highlights

  • Zero-config startup: Ships with a curated built-in reference dataset covering major bacterial and archaeal taxa

  • Full database support: Can load complete GTDB TSV data files for comprehensive queries

  • 12 powerful tools: Search, taxonomy lookup, genome queries, tree navigation, and comparison

  • Type-safe: Written in TypeScript with full type definitions

  • MCP-compliant: Follows the Model Context Protocol specification for tool-based interactions


Features

🔍 Search & Discovery

  • Search for taxa or genomes by name (partial matching supported)

  • Browse taxonomy by rank (phylum, class, order, family, genus, species)

  • List all phyla for bacteria or archaea

🌿 Taxonomy Navigation

  • Get complete taxonomic lineages (domain → species)

  • Retrieve taxon summaries with genome counts and child taxa

  • Navigate the taxonomy tree (get children of any taxon)

  • Find the phylogenetic path between two taxa

🧬 Genome Information

  • Look up genome metadata (size, GC content, quality, type strain status)

  • Find all genomes for a given species

  • Find all genomes under any taxonomic group

📊 Comparison & Analysis

  • Compare two genomes taxonomically (shared lineage, LCA, differences)

  • Get phylogenetic tree paths between taxa

  • Access database-wide statistics


Available Tools

Tool

Description

search

Search for taxa or genomes by name

get_taxonomy

Get the full taxonomic lineage of a taxon or genome

get_taxon_summary

Get a comprehensive summary of a taxonomic group

get_children

Get direct child taxa of a given taxon

list_phyla

List all bacterial or archaeal phyla

list_taxa_by_rank

List all taxa at a specific rank

get_genome

Get detailed genome information by GTDB ID

get_genomes_for_species

Get all genomes for a species

get_genomes_for_taxon

Get all genomes under a taxonomic group

compare_genomes

Compare two genomes taxonomically

get_tree_path

Get the phylogenetic path between two taxa

get_database_stats

Get GTDB database statistics


Installation

Prerequisites

  • Node.js >= 18.0.0

  • npm or yarn

From Source

git clone <repository-url>
cd GTDB-MCP
npm install
npm run build

Global Installation (optional)

npm install -g .

Configuration

Environment Variables

Variable

Description

Default

GTDB_DATA_DIR

Path to external GTDB data directory

(none - uses built-in data)

Using Built-in Data

By default, the server uses a curated built-in reference dataset that covers:

  • 10 bacterial phyla (Bacillota, Pseudomonadota, Actinomycetota, Bacteroidota, Spirochaetota, Cyanobacteriota, Chlamydiota, Fusobacteriota, Mycoplasmatota, Campylobacterota)

  • 6 archaeal phyla (Methanobacteriota, Thermoproteota, Methanomicrobiota, Halobacteriota, Nanoarchaeota, Thermoplasmataota)

  • 100+ representative taxa across all ranks

  • 25+ reference genomes with metadata

Using Full GTDB Data

For comprehensive database access, download GTDB data files from https://gtdb.ecogenomic.org/downloads and set the data directory:

# Set the data directory
export GTDB_DATA_DIR=/path/to/gtdb/data

# Expected files in the data directory:
# - bac120_taxonomy.tsv (bacterial taxonomy)
# - ar122_taxonomy.tsv (archaeal taxonomy)

Usage

Starting the Server

# Using built-in data
node dist/index.js

# Using external GTDB data
GTDB_DATA_DIR=/path/to/gtdb/data node dist/index.js

Programmatic API

import { GTDBClient } from "gtdb-mcp";

const client = new GTDBClient();

// Search for organisms
const results = client.search("Bacillus");

// Get taxonomy
const lineage = client.getLineage("Escherichia coli");

// Get taxon summary
const summary = client.getTaxonSummary("Enterobacteriaceae");

// Compare genomes
const comparison = client.compareGenomes("GCF_000005845.2", "GCF_000007865.2");

Integration with MCP Clients

Claude Desktop

Add the server to your Claude Desktop configuration file (claude_desktop_config.json):

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "gtdb": {
      "command": "node",
      "args": ["/absolute/path/to/GTDB-MCP/dist/index.js"]
    }
  }
}

With External GTDB Data

{
  "mcpServers": {
    "gtdb": {
      "command": "node",
      "args": ["/absolute/path/to/GTDB-MCP/dist/index.js"],
      "env": {
        "GTDB_DATA_DIR": "/path/to/gtdb/data"
      }
    }
  }
}

Example Queries

Once connected, you can ask your AI assistant questions like:

  • "What is the taxonomy of Escherichia coli?"

  • "List all bacterial phyla in GTDB"

  • "Compare the genomes GCF_000005845.2 and GCF_000007865.2"

  • "What are the child taxa of Bacillales?"

  • "Find all genomes in the family Enterobacteriaceae"

  • "Show me the phylogenetic path from Bacillus to Escherichia"

  • "Get statistics about the GTDB database"


Data Sources

GTDB Taxonomy Format

GTDB uses a standardized taxonomy format with rank prefixes:

d__Domain;p__Phylum;c__Class;o__Order;f__Family;g__Genus;s__Species

Example:

d__Bacteria;p__Pseudomonadota;c__Gammaproteobacteria;o__Enterobacterales;f__Enterobacteriaceae;g__Escherichia;s__Escherichia coli

Genome Identifiers

GTDB uses NCBI assembly accessions as genome identifiers:

  • GCF_ prefix: RefSeq assemblies

  • GCA_ prefix: GenBank assemblies

  • UBA_ prefix: Unclassified Binned Assemblies

  • G_ prefix: GTDB-assigned identifiers for non-NCBI genomes

Taxonomic Ranks

GTDB follows a seven-rank hierarchy:

  1. Domain (d__) - Bacteria or Archaea

  2. Phylum (p__) - e.g., Bacillota, Pseudomonadota

  3. Class (c__) - e.g., Bacilli, Gammaproteobacteria

  4. Order (o__) - e.g., Bacillales, Enterobacterales

  5. Family (f__) - e.g., Bacillaceae, Enterobacteriaceae

  6. Genus (g__) - e.g., Bacillus, Escherichia

  7. Species (s__) - e.g., Bacillus subtilis, Escherichia coli


Development

Project Structure

GTDB-MCP/
├── package.json              # Project configuration and dependencies
├── tsconfig.json             # TypeScript configuration
├── README.md                 # English documentation (this file)
├── README_CN.md              # Chinese documentation
├── LICENSE                   # MIT license
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── types.ts              # TypeScript type definitions
│   ├── taxonomy.ts           # Taxonomic rank definitions and utilities
│   ├── gtdb-client.ts        # GTDB database client (core logic)
│   ├── test.ts               # Test suite
│   └── data/
│       └── reference-data.ts # Built-in reference taxonomy data
└── dist/                     # Compiled output (generated)

Building

npm run build      # Compile TypeScript
npm run dev        # Watch mode for development
npm run clean      # Remove dist directory

Testing

npm run build      # Build first
node dist/test.js  # Run the test suite

Adding New Taxa

To add new taxa to the built-in reference data, edit src/data/reference-data.ts and add entries to the BUILTIN_TAXONOMY array:

{
  name: "YourTaxonName",
  rank: "genus",
  domain: "Bacteria",
  lineage: makeLineage("Bacteria", "PhylumName", "ClassName", "OrderName", "FamilyName", "YourTaxonName", ""),
  genomeCount: 1000,
  speciesCount: 200,
  children: ["Species1", "Species2"],
  description: "A brief description of this taxon."
}

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments


Version: 0.1.0
GTDB Version: R220 (2024-04-17)

Available Tools

12 tools
compare_genomesA

Compare two genomes taxonomically. Returns the shared lineage, lowest common ancestor (LCA), differing ranks, and genome metric differences (size, GC content).

ParametersJSON Schema
NameRequiredDescriptionDefault
gid1YesFirst genome ID (e.g., 'GCF_000005845.2')
gid2YesSecond genome ID (e.g., 'GCF_000007865.2')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the output contents (lineage, LCA, differing ranks, metrics), which is genuinely useful, but says nothing about permissions, error cases (e.g., mismatched or missing genomes), or result size/limits. The operation is obviously a non-mutating read, so the safety gap is minor, but the completeness gap is real.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler. The purpose is front-loaded and the return summary follows immediately, each sentence earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields, and a two-parameter read tool needs little else. It stops short of covering failure modes or edge cases (missing/invalid genome IDs, cross-domain comparison behavior), which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both gid1 and gid2 are documented with example accession formats directly in the schema. The description adds only that the arguments are genomes being compared; it contributes no format, ordering, or constraint detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compare two genomes taxonomically') and enumerates exactly what is computed (shared lineage, LCA, differing ranks, metric diffs). This cleanly distinguishes it from single-genome siblings like get_genome, get_taxonomy, and get_tree_path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is strongly implied by the comparative framing — an agent can infer this is the tool for pairwise genome comparison versus the single-entity siblings — but there is no explicit when-to-use, when-not, or named alternative. Adequate but with a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_childrenA

Get the direct child taxa of a given taxon in the GTDB taxonomy. For example, children of 'Bacillales' include 'Bacillaceae', 'Staphylococcaceae', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesParent taxon name (e.g., 'Bacillales', 'Enterobacteriaceae')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses the one-level (direct) semantics and the shape of the result (child taxon names), but says nothing about read-only safety, case sensitivity of the name, empty results, or error behavior for an unknown taxon.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the core action front-loaded and the example placed after it for illustration. Nothing is wasted and no filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter lookup with no output schema and no annotations, the description covers what the tool does and the form of the return values. Only the boundary behaviors (unknown taxon, non-matching name) remain unaddressed, which is minor for this tool class.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'name' parameter is already documented in the schema. The description's examples ('Bacillales') reinforce but add no syntax or constraint detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Get') + resource ('direct child taxa') + scope ('in the GTDB taxonomy'), with a concrete example naming real children of 'Bacillales'. This clearly distinguishes it from siblings like get_taxonomy, get_taxon_summary, and get_tree_path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'direct child' implicitly scopes the request (one level, not the full subtree), which helps the agent choose it over deeper-traversal siblings. However, no explicit when-to-use, when-not, or named alternative is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_database_statsA

Get statistics about the GTDB database, including version, release date, total genome counts, and taxonomic diversity metrics for both bacteria and archaea.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It discloses the content returned and the tool takes no parameters, making its read-only, side-effect-free nature self-evident, but it says nothing about cost of computing diversity metrics, caching, or freshness of the release data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that identifies the resource first and then lists the returned metrics. Every clause carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey the return content, and it does so by enumerating version, release date, counts, and diversity metrics. It stops short of indicating the shape or naming of those metrics, which would help an agent parse results, but the essentials are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter semantics to explain; the baseline for a parameterless tool is 4. The description correctly makes no parameter claims and focuses on output content instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Get statistics about the GTDB database') and enumerates the content returned: version, release date, genome counts, and taxonomic diversity metrics for bacteria and archaea. No sibling tool (search, get_taxonomy, compare_genomes, etc.) overlaps with this purpose, so it is unambiguously distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — an agent should call this when it needs database version or aggregate counts — but the description never states when to use it versus navigating the taxonomy with get_taxonomy or get_taxon_summary. For a zero-parameter tool this is a minor gap, yet no explicit context or exclusion is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_genomeA

Get detailed information about a specific genome by its GTDB genome ID (e.g., GCF_000005845.2). Returns taxonomy, genome size, GC content, quality metrics, and type strain status.

ParametersJSON Schema
NameRequiredDescriptionDefault
gidYesGTDB genome identifier (e.g., 'GCF_000005845.2', 'GCA_000091565.1')

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose the return payload (taxonomy, genome size, GC content, quality metrics, type strain status), which is valuable since no output schema exists. It does not state read-only semantics explicitly or describe behavior for an unrecognized/invalid genome ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the purpose and lookup key front-loaded before the return-field enumeration. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read lookup with no output schema, the description covers the return fields an agent would need to know and the required identifier format. The only real gap is error behavior for invalid IDs, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's description already supplies the same example identifiers ('GCF_000005845.2', 'GCA_000091565.1') that the tool description repeats. The description therefore adds no meaning beyond the schema, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Get) and resource (genome), and pins the lookup key as a GTDB genome ID, which implicitly separates it from ID-less siblings like list_phyla or get_genomes_for_species. It does not explicitly name an alternative, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this is the tool to reach for when it already holds a genome ID rather than a species or taxon name. There is no explicit when-to-use statement, no when-not-to-use, and no sibling named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_genomes_for_speciesA

Get all genome assemblies classified under a given species in GTDB. Useful for finding reference genomes and type strains.

ParametersJSON Schema
NameRequiredDescriptionDefault
speciesYesSpecies name (e.g., 'Escherichia coli', 'Bacillus subtilis')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'Get' and clarifies the data scope, but does not state return format, pagination behavior, or explicitly confirm no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and immediately followed by the main use case. No filler or redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-parameter lookup with full schema coverage and no output schema, the description is largely complete. It misses explicit routing to get_genomes_for_taxon for broader queries, but otherwise covers purpose and usage adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'species' parameter is fully documented in the schema with examples, so the schema already carries the semantic load. The description adds no additional parameter meaning beyond what the schema provides, matching the baseline 3 for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all genome assemblies'), scoped to a species in GTDB. An agent can distinguish it from get_genome (single genome) and get_genomes_for_taxon (higher taxonomic level) without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear use case ('finding reference genomes and type strains'), which gives useful context for when to call it. However, it does not name alternatives or state when not to use it (e.g., for broader taxa).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_genomes_for_taxonB

Get all genome assemblies classified under a given taxonomic group. For example, get all genomes in the family Enterobacteriaceae or phylum Bacillota.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of genome IDs to return (default: 100)
taxonYesTaxon name (e.g., 'Enterobacteriaceae', 'Bacillota')

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it says nothing about result ordering, truncation behavior, pagination, or that results are capped by the limit parameter. For a listing tool whose default silently returns only 100 IDs, that silence is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and a single illustrative clause that earns its place by clarifying taxonomic scope. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter lookup this is largely adequate, but with no output schema and no annotations the description should at least indicate what is returned (genome IDs/accessions) and how the limit interacts with large taxa. The current text leaves that to the schema's terse parameter description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, and the baseline is 3. The description's taxon examples ('Enterobacteriaceae', 'Bacillota') reinforce the expected value format but add little beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all genome assemblies classified under a given taxonomic group') and grounds it with concrete examples at family and phylum rank. It implicitly distinguishes itself from the species-level sibling, but never names get_genomes_for_species or other alternatives explicitly, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples ('family Enterobacteriaceae or phylum Bacillota') imply the intended granularity of use, but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as get_genomes_for_species or get_taxon_summary. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_taxonomyB

Get the complete taxonomic lineage of an organism or taxon from GTDB. Returns the full classification from domain down to species level (d__Domain; p__Phylum; c__Class; o__Order; f__Family; g__Genus; s__Species).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTaxon name or genome ID (e.g., 'Escherichia coli', 'Bacillus', 'GCF_000005845.2')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return structure (d__; p__; c__; o__; f__; g__; s__ lineages), which compensates for the missing output schema, but says nothing about behavior for unknown/nonexistent taxa, name-matching rules, or whether ambiguous names resolve to multiple lineages.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and resource, and the parenthetical lineage format is a justified elaboration given the absence of an output schema. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-annotation tool with no output schema, the description adequately covers the return shape (lineage ranks). It falls short only on failure/edge behavior and sibling differentiation, which are minor gaps for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and includes concrete examples for the single 'name' parameter, so the schema does the heavy lifting. The description adds only the notion that name may be an organism or taxon, no format or resolution details beyond the schema examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (complete taxonomic lineage) plus the data source (GTDB), and specifies scope from domain to species. It is clear what the tool does, though it does not explicitly differentiate itself from the sibling get_taxon_summary or get_tree_path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what can be fetched but gives no explicit when-to-use guidance, no conditions distinguishing it from get_taxon_summary or get_tree_path, and no prerequisites or exclusions. Usage is only inferred from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_taxon_summaryA

Get a comprehensive summary of a taxonomic group, including genome counts, species counts, child taxa, and description. Useful for understanding the diversity and composition of any taxonomic level.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTaxon name (e.g., 'Bacillota', 'Gammaproteobacteria', 'Enterobacteriaceae', 'Bacillus')

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. The 'Get' prefix and summary framing imply a read-only aggregation, and it discloses what categories of data are returned, but it says nothing about permissions, rate limits, or whether counts are cached/approximate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and returned fields, with no redundant restatement of the name. The closing benefits sentence is mildly generic but still adds usage signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately enumerates the return contents (genome counts, species counts, child taxa, description), which is what an agent needs to decide to call it. The absence of annotations leaves permission/safety behavior unspecified, a minor gap for a read-style tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents the single 'name' parameter with concrete taxon examples (Bacillota, Gammaproteobacteria, etc.). The description adds no format or level-specific semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('summary of a taxonomic group') and enumerates the returned content (genome counts, species counts, child taxa, description). It does not explicitly contrast itself with close siblings like get_taxonomy or get_children, so an agent must infer the distinction from the 'comprehensive summary' framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a reason to call it ('understanding the diversity and composition of any taxonomic level'), which implies usage but names no alternatives and provides no when-not conditions. There is no guidance on choosing it over get_taxonomy or get_children.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tree_pathA

Get the phylogenetic tree path between two taxa. Shows the route through the taxonomy tree from one taxon to another via their lowest common ancestor (LCA).

ParametersJSON Schema
NameRequiredDescriptionDefault
to_taxonYesEnding taxon name
from_taxonYesStarting taxon name

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the conceptual return (the route via LCA), which is useful, but says nothing about permissions, whether it is a pure read, or how the path is formatted/ordered. The verb 'Get' weakly implies read-only, but nothing is confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler, front-loaded with the core action and followed by a clarifying mechanism. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read query with no output schema and full schema coverage, the description is nearly complete — it explains both the action and the conceptual result. Only the concrete output shape and ordering are left unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both params documented as 'Starting taxon name' and 'Ending taxon name'), so the baseline is 3. The description reinforces directionality with 'from one taxon to another' but adds no syntax, format, or naming conventions beyond what the schema already supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get tree path between two taxa) and clarifies the mechanism — the route through the taxonomy tree via the lowest common ancestor. This is far more informative than a tautology, though it never explicitly names a sibling to contrast with (e.g., get_children or get_taxonomy), so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool applies — computing a relationship between two taxa rather than fetching one node — but gives no explicit when-to-use guidance, no exclusions, and no named alternatives. Usage must be inferred from the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_phylaA

List all bacterial or archaeal phyla in GTDB. This is the starting point for exploring the taxonomy tree from the top level.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoDomain to list phyla for. If omitted, lists all phyla.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'List' plus the read-only nature of taxonomy browsing makes the safety profile reasonably clear, but it says nothing about ordering, result volume, or what the entries look like when returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action front-loaded and the positional hint second. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, fully documented, read-only listing tool with no output schema, the definition covers what an agent needs: what it returns conceptually and that it operates at the root of the taxonomy. A note on how the returned phyla feed into other tools would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single domain parameter has an enum plus an 'If omitted, lists all phyla' note, so the schema already does the work. The description only echoes the Bacteria/Archaea choice without adding format or behavior detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('List all bacterial or archaeal phyla in GTDB') and states its position as the top-level entry point, which helps separate it from get_children and list_taxa_by_rank. It is clear, though it does not explicitly name the sibling tools that cover other ranks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'This is the starting point for exploring the taxonomy tree from the top level' implies when to reach for it, but no alternatives or exclusions are named (e.g. when to prefer list_taxa_by_rank or get_children for deeper levels). Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_taxa_by_rankB

List all taxa at a specific taxonomic rank, optionally filtered by domain. Useful for browsing the taxonomy at any level.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankYesTaxonomic rank to list
domainNoOptional domain filter

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no mention of result volume, pagination, ordering, or return shape for what could be a very large listing. The read-only nature is only inferable from the word 'list'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and constraint. The trailing 'useful for browsing' clause is mildly filler but does add usage framing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool this is close to adequate, but with no annotations and no output schema the description leaves out anything about result size or pagination, which matters for a 'list all' operation. Minimum viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters carry enums with descriptions, so the schema already does the work. The description restates rank and the optional domain filter without adding format, default, or interaction semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (taxa at a given rank) with scope ('all taxa'). However, it never differentiates itself from the sibling list_phyla, which would be an obvious overlap when rank='phylum', nor from get_children.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for browsing the taxonomy at any level' implies a browse/discovery use case but names no alternative and gives no when-not condition. An agent choosing between this, list_phyla, and get_children gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedcompare_genomes
    • First observedget_children
    • First observedget_database_stats
    • First observedget_genome
    • First observedget_genomes_for_species
    • First observedget_genomes_for_taxon
    • First observedget_taxon_summary
    • First observedget_taxonomy
    • First observedget_tree_path
    • First observedlist_phyla
    • First observedlist_taxa_by_rank
    • First observedsearch

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but a few overlap: list_phyla is a special case of list_taxa_by_rank, get_children is subsumed by get_taxon_summary, and get_genomes_for_species is a convenience wrapper around get_genomes_for_taxon. Descriptions help clarify intended use, so misselection is unlikely but not impossible.

Naming Consistency4/5

All tools use snake_case with a predictable verb_noun or verb_object pattern (get_taxonomy, list_phyla, compare_genomes, get_database_stats). The lone exception is 'search', which lacks an explicit noun, but this is a minor deviation from an otherwise consistent convention.

Tool Count5/5

12 tools is well-scoped for a taxonomic and genomic reference database; each tool covers a distinct exploration or retrieval operation without excessive fragmentation. No tool feels redundant enough to remove, and the set is not bloated.

Completeness4/5

The surface covers search, taxonomy traversal, genome retrieval, comparison, and database statistics, which is comprehensive for a read-only reference database. Minor gaps such as batch operations or sequence retrieval are outside the apparent scope and do not create dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query clinical genomics databases, retrieve supporting literature, analyze population genetics, and visualize biological pathways.
    18
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An MCP server that gives Claude access to NCBI Datasets v2 — search genome assembly metadata, retrieve taxonomy records, and download data packages without leaving your conversation.
    10
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying NCBI genome assemblies, gene details with cross-references, and taxonomy trees with per-node assembly and gene counts, providing structured answers about genomes, genes, and taxonomy.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to resolve scientific names to Taxonomic Serial Numbers, traverse complete taxonomic lineages from kingdom to children, and retrieve vernacular names in all languages from an authoritative US-government taxonomy.
    9 npm
    1
    MIT