Skip to main content
Glama

LPSN-MCP

Version 0.1.0

⚠️ Disclaimer: This is an unofficial, community-driven MCP server. It is not affiliated with, endorsed by, or officially associated with the Leibniz Institute DSMZ or the LPSN database.

An MCP (Model Context Protocol) server that provides AI assistants with access to the LPSN (List of Prokaryotic names with Standing in Nomenclature) database, hosted by DSMZ (Leibniz Institute DSMZ – German Collection of Microorganisms and Cell Cultures).


Table of Contents

  1. Overview

  2. What is LPSN?

  3. Features / Available Tools

  4. Prerequisites

  5. Installation

  6. Build

  7. Configuration

  8. Usage

  9. Tool Reference

  10. Architecture

  11. Development

  12. Limitations & Disclaimer

  13. License


Related MCP server: Open Tree of Life MCP

Overview

LPSN-MCP is a bridge between Large Language Model (LLM) assistants that support the Model Context Protocol and the LPSN prokaryotic nomenclature database. It allows an AI assistant (such as Claude Desktop, Cursor, or any MCP-compatible client) to:

  • Search for prokaryotic names (bacteria and archaea)

  • Retrieve detailed information about any taxon (etymology, type strain, status, synonyms, parent/child taxa, references, etc.)

  • Get the full classification (lineage) of any prokaryotic name from domain down to species

  • Browse taxa by taxonomic rank (domain, phylum, class, order, family, genus, species)

  • Read the nomenclature rules and classification information pages on LPSN

All data is fetched in real time from the public LPSN website at https://lpsn.dsmz.de/. No API key or registration is required.


What is LPSN?

The List of Prokaryotic names with Standing in Nomenclature (LPSN) is a publicly available, curated database maintained by the Leibniz Institute DSMZ. It provides:

  • Up-to-date information on all prokaryotic names (Bacteria and Archaea) that have standing in nomenclature under the International Code of Nomenclature of Prokaryotes (ICNP).

  • Taxonomic classification of each named taxon.

  • Nomenclatural status (e.g., validly published, illegitimate, rejected).

  • Etymology of names.

  • Type strains and type species.

  • Synonyms and basonyms.

  • References to the International Journal of Systematic and Evolutionary Microbiology (IJSEM) and other validation sources.

LPSN is widely used by microbiologists, taxonomists, bioinformaticians, and students worldwide.


Features / Available Tools

This MCP server exposes 7 tools:

#

Tool

Description

1

search_taxa

Search for prokaryotic names by full or partial name

2

get_taxon_detail

Get full detail for a specific taxon (etymology, type strain, synonyms, etc.)

3

get_classification

Get the complete lineage from domain to the target taxon

4

browse_by_rank

Browse all taxa at a given rank (domain, kingdom, phylum, class, order, family, genus, species), optionally filtered by first letter

5

get_nomenclature_info

Read the nomenclature rules page from LPSN

6

get_classification_info

Read the classification information page from LPSN

7

get_text_page

Read any LPSN informational text page by path


Prerequisites

  • Node.js ≥ 18.0.0 (required for native fetch and AbortController)

  • npm ≥ 9.0.0 (or pnpm / yarn – adjust commands accordingly)


Installation

Option A: Clone & Install

git clone <your-repo-url> lpsn-mcp
cd lpsn-mcp
npm install

Option B: Use in an existing project

npm install lpsn-mcp

Build

Compile the TypeScript source to JavaScript:

npm run build

This produces a dist/ directory containing the compiled index.js and lpsn-fetcher.js (along with .d.ts declaration files and source maps).

For development without compilation, you can use tsx:

npm run dev

Configuration

Claude Desktop

Add the following to your claude_desktop_config.json file:

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

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

Cursor

In Cursor, go to Settings → MCP Servers → Add Server, or edit your settings:

{
  "mcp.servers": {
    "lpsn": {
      "command": "node",
      "args": ["/absolute/path/to/lpsn-mcp/dist/index.js"]
    }
  }
}

Generic MCP Client

Any MCP-compatible client can launch this server via:

node /path/to/lpsn-mcp/dist/index.js

The server communicates over stdio using the standard MCP JSON-RPC protocol.


Usage

Once configured, you can ask your AI assistant natural-language questions such as:

  • "Search LPSN for Escherichia coli"

  • "Get detailed information about the genus Bacillus from LPSN"

  • "What is the full classification of Methanococcus jannaschii?"

  • "Browse all families in LPSN starting with the letter 'A'"

  • "What are the prokaryotic nomenclature rules according to LPSN?"

The assistant will automatically invoke the appropriate MCP tool and present the results.

Direct CLI Testing

You can also test the server directly by sending MCP JSON-RPC messages via stdin:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | node dist/index.js

Tool Reference

1. search_taxa

Search the LPSN database for prokaryotic names.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

The name (or part of it) to search for, e.g. "Escherichia coli" or "Bacillus"

exact

boolean

No

If true, request an exact match. Default: false

Example output:

Found 3 result(s):

• Escherichia coli
  Rank: species
  Status: validly published
  URL: https://lpsn.dsmz.de/species/escherichia-coli

• Escherichia
  Rank: genus
  Status: validly published
  URL: https://lpsn.dsmz.de/genus/escherichia
  ...

2. get_taxon_detail

Retrieve detailed information about a specific taxon.

Parameters:

Parameter

Type

Required

Description

name_or_url

string

Yes

The scientific name (e.g. "Escherichia coli") or a full LPSN URL from a previous search

Returns: name, rank, URL, status, etymology, gender, type strain, type species, risk group, parent taxa, child taxa, synonyms, basonyms, notes, and references.


3. get_classification

Get the complete taxonomic lineage for a taxon.

Parameters:

Parameter

Type

Required

Description

name_or_url

string

Yes

The scientific name or LPSN URL

Returns: The full lineage from domain → phylum → class → order → family → genus → species, with the target taxon marked.


4. browse_by_rank

Browse the list of all taxa at a given rank.

Parameters:

Parameter

Type

Required

Description

rank

enum

Yes

One of: domain, kingdom, phylum, class, order, family, genus, species

letter

string

No

Optional first-letter filter (e.g. "A")


5. get_nomenclature_info

Read the LPSN nomenclature information page. No parameters.

Returns structured text about how prokaryotic nomenclature works under the ICNP.


6. get_classification_info

Read the LPSN navigation and classification information page. No parameters.

Returns structured text about how prokaryotes are organized and how to browse taxa on LPSN.


7. get_text_page

Read any LPSN text page.

Parameters:

Parameter

Type

Required

Description

path

string

Yes

The page path, e.g. "text/nomenclature", "text/navigation", "text/etymology"


Architecture

lpsn-mcp/
├── package.json          – NPM package definition & scripts
├── tsconfig.json         – TypeScript compiler configuration
├── src/
│   ├── index.ts          – MCP server entry point & tool definitions
│   └── lpsn-fetcher.ts   – LPSN website fetcher & HTML parser
├── dist/                 – Compiled output (generated by `npm run build`)
├── README.md             – English documentation (this file)
└── README.zh-CN.md       – Chinese documentation

lpsn-fetcher.ts

This module handles all HTTP communication with the LPSN website. It uses the native fetch API to download HTML pages and cheerio to parse them. Key exported functions:

  • searchLpsn(query, exact) — search for taxa

  • getTaxonDetail(nameOrUrl) — get full detail

  • getClassification(nameOrUrl) — get lineage

  • browseByRank(rank, letter) — browse by rank

  • getTextPage(path) — read a text page

  • getNomenclatureInfo() — read nomenclature page

  • getClassificationInfo() — read classification page

index.ts

This module implements the MCP server using @modelcontextprotocol/sdk. It registers all 7 tools, validates input with zod, calls the appropriate fetcher function, and formats the results as human-readable text returned to the LLM.


Development

Project Structure

The project is written in TypeScript (strict mode) and targets ES2022. It uses ES modules ("type": "module").

Scripts

Command

Description

npm run build

Compile TypeScript to dist/

npm run start

Run the compiled server

npm run dev

Run with tsx (no compilation needed)

Adding a New Tool

  1. Add a new export function in lpsn-fetcher.ts.

  2. Define a Zod schema and a format function in index.ts.

  3. Add the tool to the ListToolsRequestSchema handler's tools array.

  4. Add a case in the CallToolRequestSchema handler's switch statement.

Type Checking

npx tsc --noEmit

Limitations & Disclaimer

  1. Unofficial project: This is an unofficial, community-driven MCP server. It is not affiliated with, endorsed by, or officially associated with the Leibniz Institute DSMZ or the LPSN database.

  2. Web scraping, not official API: This server fetches data by parsing the public LPSN website HTML. If LPSN changes its page layout, some parsing may break. The code is designed with multiple fallback selectors to be resilient.

  3. Rate limiting: LPSN is a public resource. Please use this tool responsibly. Avoid making excessive requests in a short period.

  4. No warranty: The data is provided "as is" from LPSN. Always verify critical taxonomic information directly on the LPSN website.

  5. Network dependency: The server requires an active internet connection to reach https://lpsn.dsmz.de/.


License

MIT

Available Tools

7 tools
browse_by_rankB

Browse the list of all taxa at a given taxonomic rank on LPSN (domain, phylum, class, order, family, genus, species). Optionally filter by the first letter of the name.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankYesThe taxonomic rank to browse.
letterNoOptional first letter to filter (e.g. 'A').

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. It discloses that it returns a list of all taxa at a rank (implying potentially very large result sets), but says nothing about read-only safety, pagination, ordering, result caps, or rate limits.

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 primary action and scope, with the optional filter trailing. The enumerated rank list is somewhat redundant with the schema enum but serves as a quick reference.

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 with no output schema and no annotations, the description covers both parameters and the kind of result. It is still missing scale/pagination or result-limit guidance, which matters given 'all taxa' at ranks like domain.

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 the baseline is 3. The description restates the rank values and mentions the optional letter filter, which is redundant with the schema; notably its parenthetical rank list omits 'kingdom', which the schema enum includes.

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 (browse) and resource (all taxa at a given taxonomic rank on LPSN), and scopes it precisely with the rank enumeration. It is distinguishable from search_taxa and get_taxon_detail, though it does not name those siblings explicitly.

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: use this when you want to enumerate taxa at a rank rather than look up a specific one. There is no explicit when-to-use statement, no mention of when search_taxa would be preferable, and no prerequisites stated.

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

get_classificationB

Get the complete taxonomic classification (lineage) for a prokaryotic name, from domain down to the target taxon. Walks up the parent chain on LPSN.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_urlYesEither the full URL of a taxon page on LPSN or the scientific name.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the data source and mechanism ('Walks up the parent chain on LPSN'), which is useful behavioral context, but says nothing about failure behavior for an unresolved name, lookup cost, or result shape beyond the lineage span. Adequate for a low-risk read tool, but thin.

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 short sentences, front-loaded with the core action and followed by the scope detail. No filler, no redundancy.

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 and no annotations, the description does well to sketch the return value ('complete taxonomic classification... from domain down to the target taxon') and the data source. The notable gap is disambiguation from the similarly named sibling tools, which an agent needs in order to select correctly.

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% for the single parameter, which already documents that it accepts either a full LPSN taxon URL or a scientific name. The description adds only the 'prokaryotic name' constraint, which the schema does not state, so it is a marginal addition over the structured field.

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 the complete taxonomic classification (lineage)') and bounds the scope ('from domain down to the target taxon', 'for a prokaryotic name'). However, it does nothing to distinguish itself from the near-identically named sibling get_classification_info or from get_taxon_detail, so an agent must still guess which one to pick.

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?

There is no when-to-use or when-not-to-use guidance and no named alternative, despite a sibling (get_classification_info) whose name is almost indistinguishable from this one. The only implicit cue is 'for a prokaryotic name', which limits scope but does not route between tools.

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

get_classification_infoA

Read the navigation and classification information page from LPSN. Returns structured text explaining how prokaryotes are organized, how to browse taxa by rank, and what taxonomic ranks are used on LPSN.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does reasonably well: 'Read' establishes a non-mutating operation with no side effects, and it explicitly describes what is returned (structured explanatory text about organization, browsing, and ranks). It stops short of noting that the page is static/argument-free or anything about size or caching, but for a zero-parameter info tool the disclosure is solid.

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, no waste, and the action is front-loaded before the return-content detail. Each clause ('how prokaryotes are organized', 'how to browse taxa by rank', 'what taxonomic ranks are used') 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 simple, zero-parameter, read-only info tool with no output schema, the description adequately covers what the tool is and what it returns. The only meaningful omission is disambiguation from the sibling get_classification.

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 takes zero parameters, so per the rubric the baseline is 4. The description adds no parameter detail because none is needed or possible.

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 + resource: 'Read the navigation and classification information page from LPSN', which is clearly distinct from data-query tools like search_taxa or get_taxon_detail. However, it does not differentiate itself from the very similarly named sibling get_classification, so an agent could conflate the two without opening the schemas.

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 content described ('how prokaryotes are organized, how to browse taxa by rank') suggests this is orientation material to consult before browsing. There is no explicit when-to-use/when-not statement and no routing away from get_classification or get_text_page, which are plausible alternatives.

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

get_nomenclature_infoA

Read the nomenclature rules and guidelines page from LPSN. Returns structured text explaining how prokaryotic nomenclature works according to the International Code of Nomenclature of Prokaryotes (ICNP).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it signals a read-only operation ('Read') and discloses the return shape ('Returns structured text'), which is useful. However, it says nothing about authentication, rate limits, or whether the page is static or versioned, leaving the behavioral profile thin for a no-annotation tool.

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, no filler, with the resource and the return content front-loaded. Every clause earns its place and an agent can parse intent at a glance.

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 zero-parameter read tool with no output schema, the description adequately covers what the tool does and what it returns. The only minor gap is the absence of any routing hint against get_text_page, which is a small omission given the tool's simplicity.

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 takes zero parameters, so parameter semantics are trivially satisfied; the baseline for 0-parameter tools is 4. Nothing in the description misrepresents the call signature.

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 ('Read') and resource ('the nomenclature rules and guidelines page from LPSN') and clarifies the content domain (ICNP rules for prokaryotic nomenclature). It does not explicitly differentiate itself from the potentially overlapping sibling get_text_page, which could also fetch text pages, 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 content domain (nomenclature rules) implies when an agent would want this page versus taxonomic lookups, but there is no explicit when-to-use or when-not-to-use guidance and no mention of the competing get_text_page sibling. Usage is inferred 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_taxon_detailB

Retrieve detailed information about a specific prokaryotic taxon from LPSN, including etymology, type strain, status, synonyms, basonyms, parent and child taxa, notes, and references. Provide either a scientific name or a full LPSN URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_urlYesEither the full URL of a taxon page on LPSN (from a previous search) or the scientific name, e.g. 'Escherichia coli'.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it discloses the data source (LPSN) and the two accepted input forms, and implies a read-only retrieval. It does not say what happens for an unknown or ambiguous name (error vs. suggestions), whether the lookup is exact-match, or any rate/latency characteristics.

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, no filler: the capability and its content coverage come first, the input constraint follows. Nothing is redundant enough to remove.

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 tool with no output schema and no annotations, enumerating the returned fields largely substitutes for a return-value spec. The remaining gap is failure/ambiguity behavior when a name does not resolve uniquely.

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% for the single name_or_url parameter, so the schema already documents both accepted forms and supplies the 'Escherichia coli' example. The description's sentence about name-or-URL restates the schema rather than adding format or validation detail, so the 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 and resource ('Retrieve detailed information about a specific prokaryotic taxon from LPSN') and enumerates the returned content (etymology, type strain, status, synonyms, basonyms, parent/child taxa, notes, references), which distinguishes it from narrower siblings like get_classification or get_nomenclature_info. It never names those siblings, so the differentiation is implicit rather than explicit.

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 only guidance is 'Provide either a scientific name or a full LPSN URL,' which is input formatting, not when-to-use. There is no statement of when to prefer this over search_taxa, get_classification_info, or get_text_page, and no prerequisites or exclusion conditions.

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

get_text_pageB

Read any informational text page from the LPSN website. Useful for pages like 'text/nomenclature', 'text/navigation', 'text/etymology', 'text/faq', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path of the LPSN text page, e.g. 'text/nomenclature', 'text/navigation', or 'text/etymology'.

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 behavioral burden. 'Read' implies a non-mutating fetch, but the description says nothing about authentication, error behavior for an invalid path, response format, or rate limits.

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 short sentences, front-loaded with the purpose followed by concrete examples. No filler and nothing that fails to earn its place.

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?

There is no output schema and no annotations, so the description is the only source of behavioral and return information. It covers what the tool fetches but leaves the returned content format and failure modes unspecified, which is a gap for an unannotated 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 single 'path' parameter is already documented with example values. The description's own examples merely echo the schema, adding no syntax or constraint detail beyond it, 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 ('Read') and resource ('informational text page from the LPSN website'), which clearly separates it from the taxa-oriented siblings. It stops short of explicitly naming a sibling or drawing the boundary against them, so it is clear but not fully differentiated.

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 phrase 'Useful for pages like text/nomenclature, text/navigation, text/etymology, text/faq' implies the intended use cases, giving more than nothing. However there is no explicit when-to-use vs when-not, no mention of alternatives for retrieving this content, and no prerequisites.

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

search_taxaA

Search the LPSN database for prokaryotic names (bacteria and archaea). Returns matching taxon names with their rank, status, and LPSN URL. Use this tool to find taxa by scientific name or partial name. LPSN URL: https://lpsn.dsmz.de/

ParametersJSON Schema
NameRequiredDescriptionDefault
exactNoIf true, request an exact-name match. Default is false (fuzzy search).
queryYesThe prokaryotic name (or part of it) to search for, e.g. 'Escherichia coli' or 'Bacillus'.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the return shape (matching names with rank, status, and LPSN URL) and existence of fuzzy matching, but says nothing about permissions, rate limits, pagination, or how many results are returned.

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?

Three short sentences, front-loaded with the core action and followed by return values and usage. The trailing bare URL is largely redundant given the return-value sentence already mentions LPSN URLs, but overall very little waste.

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, read-only two-parameter search with no output schema, the description covers what the tool does and what it returns. It is adequate, though it lacks result-count, pagination, or ambiguity-handling details an agent might need.

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%, with both query and exact fully documented in-schema, so the schema does the heavy lifting. The description's "scientific name or partial name" phrasing only restates the query parameter without adding format constraints or examples beyond the schema.

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: search the LPSN database for prokaryotic names (bacteria and archaea), returning names with rank, status, and URL. That is clearly distinct from get_taxon_detail or browse_by_rank in spirit, but no sibling tool is named explicitly, so it stops short of the top mark.

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?

"Use this tool to find taxa by scientific name or partial name" states a use case, but gives no when-not-to-use guidance and never points to get_taxon_detail or browse_by_rank as the follow-up or alternative path. Usage is implied rather than fully directed.

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. 7 tool updatesv0.1.0
    • First observedbrowse_by_rank
    • First observedget_classification
    • First observedget_classification_info
    • First observedget_nomenclature_info
    • First observedget_taxon_detail
    • First observedget_text_page
    • First observedsearch_taxa

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation3/5

Most tools target distinct operations (search, detail, lineage, rank browsing), but get_nomenclature_info and get_classification_info are essentially specific instances of get_text_page, whose description explicitly names 'text/nomenclature' and 'text/navigation' as targets. This overlap means an agent could reasonably pick either route for the same content, and get_classification vs get_taxon_detail also partially overlap on lineage data.

Naming Consistency4/5

The set is dominated by a predictable verb_noun pattern (search_taxa, get_taxon_detail, get_classification, browse_by_rank, get_text_page). Minor deviations like the prepositional browse_by_rank and the redundant *_info suffixes are readable but slightly less uniform than a strict scheme.

Tool Count4/5

Seven tools is a well-scoped size for a taxonomic reference database covering search, detail, lineage, browsing, and documentation. The only excess is the two specialized *_info readers that duplicate part of get_text_page.

Completeness4/5

The surface covers the core lifecycle for a read-only reference: find taxa, inspect a taxon, resolve its full lineage, browse by rank, and read informational pages. Coverage is solid, though there is no dedicated tool for related entities like strain/culture collection records or cross-database lookups.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to resolve scientific (Latin binomial) names to Open Tree of Life taxon IDs, retrieve full taxonomic details, synonyms, and ancestor lineages, and find the most recent common ancestor of up to 10 taxa within the synthetic tree of life. Runs keylessly over a hosted gateway endpoint or locally via npx.
    8 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to search and retrieve global biodiversity data — species taxonomy, occurrence records, datasets, map tiles, literature citations and controlled vocabularies — through a standard tool interface. It exposes the source's API as dozens of typed, paginated tools that any MCP client can call.
    58
    51 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLM-powered applications to look up bacterial and archaeal taxonomy, search genomes, browse and navigate the taxonomic tree, and compare genomes or find phylogenetic paths between taxa. It works out of the box with a built-in reference dataset covering major phyla and can be pointed at full Genome Taxonomy Database TSV files for comprehensive queries.
    12
    1
    MIT