LPSN-MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LPSN-MCPShow me the full classification of Escherichia coli"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
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 for prokaryotic names by full or partial name |
2 |
| Get full detail for a specific taxon (etymology, type strain, synonyms, etc.) |
3 |
| Get the complete lineage from domain to the target taxon |
4 |
| Browse all taxa at a given rank (domain, kingdom, phylum, class, order, family, genus, species), optionally filtered by first letter |
5 |
| Read the nomenclature rules page from LPSN |
6 |
| Read the classification information page from LPSN |
7 |
| Read any LPSN informational text page by path |
Prerequisites
Node.js ≥ 18.0.0 (required for native
fetchandAbortController)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 installOption B: Use in an existing project
npm install lpsn-mcpBuild
Compile the TypeScript source to JavaScript:
npm run buildThis 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 devConfiguration
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.jsThe 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.jsTool Reference
1. search_taxa
Search the LPSN database for prokaryotic names.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | The name (or part of it) to search for, e.g. |
| boolean | No | If |
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 |
| string | Yes | The scientific name (e.g. |
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 |
| 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 |
| enum | Yes | One of: |
| string | No | Optional first-letter filter (e.g. |
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 |
| string | Yes | The page path, e.g. |
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 documentationlpsn-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 taxagetTaxonDetail(nameOrUrl)— get full detailgetClassification(nameOrUrl)— get lineagebrowseByRank(rank, letter)— browse by rankgetTextPage(path)— read a text pagegetNomenclatureInfo()— read nomenclature pagegetClassificationInfo()— 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 |
| Compile TypeScript to |
| Run the compiled server |
| Run with |
Adding a New Tool
Add a new export function in
lpsn-fetcher.ts.Define a Zod schema and a format function in
index.ts.Add the tool to the
ListToolsRequestSchemahandler'stoolsarray.Add a
casein theCallToolRequestSchemahandler'sswitchstatement.
Type Checking
npx tsc --noEmitLimitations & Disclaimer
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.
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.
Rate limiting: LPSN is a public resource. Please use this tool responsibly. Avoid making excessive requests in a short period.
No warranty: The data is provided "as is" from LPSN. Always verify critical taxonomic information directly on the LPSN website.
Network dependency: The server requires an active internet connection to reach
https://lpsn.dsmz.de/.
License
MIT
Available Tools
7 toolsbrowse_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.
| Name | Required | Description | Default |
|---|---|---|---|
| rank | Yes | The taxonomic rank to browse. | |
| letter | No | Optional first letter to filter (e.g. 'A'). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_url | Yes | Either the full URL of a taxon page on LPSN or the scientific name. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_url | Yes | Either the full URL of a taxon page on LPSN (from a previous search) or the scientific name, e.g. 'Escherichia coli'. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path of the LPSN text page, e.g. 'text/nomenclature', 'text/navigation', or 'text/etymology'. |
TDQS
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.
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.
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.
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.
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.
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/
| Name | Required | Description | Default |
|---|---|---|---|
| exact | No | If true, request an exact-name match. Default is false (fuzzy search). | |
| query | Yes | The prokaryotic name (or part of it) to search for, e.g. 'Escherichia coli' or 'Bacillus'. |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.1.0- First observed
browse_by_rank - First observed
get_classification - First observed
get_classification_info - First observed
get_nomenclature_info - First observed
get_taxon_detail - First observed
get_text_page - First observed
search_taxa
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Read-only search of 2,189 AI agent tools (MCP servers, x402 APIs) with daily automated trust scores.
41Connect AI clients to biomedical data and tools.
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Knowledge base for AI agents: search, read, tasks; write, correct, report outcomes via /mcp/write.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables 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 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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 npmMIT
- AlicenseBqualityBmaintenanceEnables 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.5851 npmMIT
- AlicenseAqualityCmaintenanceEnables 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.121MIT