Skip to main content
Glama

pubmed-mcp

Polski

MCP server exposing NCBI PubMed/PMC APIs: E-utilities (search, summaries, full records, links, database info, spelling, citation matching), BioC full text, the Literature Citation Exporter, and the PMC ID Converter.

Table of contents

Related MCP server: mcp-pubmed

Tools

Tool

Parameters

Description

search_pubmed

term: str, db: str = "pubmed", retmax: int = 20, retstart: int = 0, sort: Optional[str] = None, mindate: Optional[str] = None, maxdate: Optional[str] = None, datetype: Optional[str] = None

ESearch — matching UIDs and total count

get_summaries

db: str, ids: str, select: str = "*"

ESummary — document metadata for a list of UIDs

fetch_records

db: str, ids: str, rettype: str, retmode: "xml"|"text" = "text", max_chars: int = 20000

EFetch — full records (abstracts, FASTA, GenBank, etc.)

find_related_links

ids: str, dbfrom: str = "pubmed", db: str = "pubmed", linkname: Optional[str] = None, cmd: str = "neighbor"

ELink — related/cross-referenced records

get_database_info

db: Optional[str] = None

EInfo — list of Entrez databases, or fields/links for one database

global_query_counts

term: str

EGQuery — result counts across all Entrez databases

spelling_suggestions

db: str, term: str

ESpell — spelling-corrected search term

match_citations

citations: str

ECitMatch — batch citation-to-PMID matching

get_full_text

id: str, id_type: "pmid"|"pmcid" = "pmid", encoding: "unicode"|"ascii" = "unicode", max_chars: int = 20000

BioC — full text of a PMC Open Access article

export_citation

ids: str, db: "pubmed"|"pmc" = "pubmed", format: "citation"|"csl"|"ris"|"nbib" = "citation"

Literature Citation Exporter — formatted citation

convert_ids

ids: str, idtype: Optional["pmcid"|"pmid"|"mid"|"doi"] = None, versions: bool = False

PMC ID Converter — convert between PMID/PMCID/MID/DOI

raw_request

service: "eutils"|"bioc"|"citexport"|"idconv", path: str, params: Dict[str, Any]

Raw GET request to any of the four underlying APIs

Environment variables

Variable

Required

Description

PUBMED_MCP_EMAIL

no

Email reported to NCBI (recommended by their usage policy)

PUBMED_MCP_API_KEY

no

NCBI E-utilities API key — raises the rate limit from 3 to 10 requests/second

Wiring it up

Only requirement: uv (https://docs.astral.sh/uv/). Nothing else to install.

Claude Code

claude mcp add pubmed-mcp -- uvx --from git+https://github.com/dam2452/pubmed-mcp.git pubmed-mcp

With optional email/API key:

claude mcp add pubmed-mcp -e PUBMED_MCP_EMAIL=<value> -e PUBMED_MCP_API_KEY=<value> -- uvx --from git+https://github.com/dam2452/pubmed-mcp.git pubmed-mcp

Claude Desktop / other MCP client

{
  "mcpServers": {
    "pubmed-mcp": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dam2452/pubmed-mcp.git", "pubmed-mcp"],
      "env": { "PUBMED_MCP_EMAIL": "<value>", "PUBMED_MCP_API_KEY": "<value>" }
    }
  }
}

After pushing a new version: uv cache clean and restart the client.

Local run

uv run --directory . pubmed-mcp

Tests (manual):

uv run --directory . --with pytest pytest test/

Available Tools

12 tools
convert_idsA

Convert between PubMed IDs, PMCIDs, Author Manuscript IDs, and DOIs via the PMC ID Converter API.

ids accepts up to 200 comma-separated IDs, all of the same type. Type is auto-detected from format unless idtype is set explicitly. Only returns results for articles present in PMC. Set versions=True to include manuscript/version history in the response.

Examples: convert_ids(ids="23193287") convert_ids(ids="3531190", idtype="pmcid") convert_ids(ids="10.1093/nar/gks1195", idtype="doi")

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
idtypeNo
versionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses key behaviors: auto-detection of ID type, limit of 200 comma-separated IDs of same type, only PMC articles returned, and the versions flag. However, it does not mention error handling (e.g., invalid IDs) or potential empty responses, leaving minor gaps.

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?

The description is concise: two short paragraphs and three examples. Every sentence adds value - no fluff. The purpose is front-loaded, constraints follow, and examples solidify understanding. Efficiently structured for quick comprehension.

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?

Given the tool's moderate complexity (3 parameters, output schema present), the description covers input constraints, behavior, and an optional feature. Minor gaps exist: no mention of error cases or mixed-type handling, but the output schema likely covers return format. Overall, sufficiently complete for effective use.

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

Parameters5/5

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

The schema has 0% description coverage, so the description must compensate. It thoroughly explains each parameter: ids (comma-separated, up to 200, same type), idtype (auto-detected, optional explicit setting), and versions (booleans for manuscript history). Examples further clarify usage, adding significant value beyond the schema.

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 clearly states the tool converts between four specific ID types (PubMed IDs, PMCIDs, Author Manuscript IDs, DOIs) via the PMC ID Converter API. The verb 'Convert' and the resource specification make the purpose unambiguous and distinct from sibling tools like fetch_records and get_summaries.

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 includes examples that show typical usage, and it notes that results are only returned for articles present in PMC, implying a limitation. However, it does not explicitly compare to siblings or provide guidance on when to use this tool versus other similar tools (e.g., fetch_records). Some contextual tips are implied but not formalized.

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

export_citationA

Export formatted citation(s) for one or more articles via the Literature Citation Exporter.

ids is a comma-separated list of PMIDs (db="pubmed") or PMCIDs (db="pmc"). format: "citation" (formatted human-readable citation), "csl" (Citation Style Language JSON), "ris" (Research Info Systems), "nbib" (PubMed/MEDLINE tag format). ris/nbib are plain text.

Examples: export_citation(ids="28012456") export_citation(ids="28012456,29886577", format="ris")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbNopubmed
idsYes
formatNocitation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description does not disclose behavioral traits like auth needs, rate limits, or side effects. It only describes input requirements. With no annotations, transparency is minimal but not contradictory.

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 concise paragraphs plus examples. Purpose is front-loaded. Every sentence adds value. No redundancy or wasted words.

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?

Explains inputs and formats clearly. Output schema exists but not shown; description doesn't detail return format or errors. For a simple export tool, it is largely complete.

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?

With 0% schema description coverage, the description adds significant meaning: explains ids as comma-separated PMIDs/PMCIDs, db as source, format as enumeration with human-readable explanation. Compensates well for schema gaps.

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?

Clearly states verb 'Export' and resource 'formatted citation(s) for one or more articles'. Distinguishes from sibling tools like fetch_records or get_summaries by specifying the export action and citation focus.

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 clear context on when to use (export citations) and parameter details (ids, db, format) with examples. However, no explicit guidance on when not to use or alternatives among siblings.

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

fetch_recordsA

Fetch full records (EFetch) for a list of UIDs. USE SPARINGLY: records can be large.

rettype/retmode combinations are database-specific, e.g.: pubmed: rettype="abstract"|"medline", retmode="text"|"xml" pmc: rettype="full" (retmode="xml") protein/nuccore: rettype="fasta"|"gb"|"gp", retmode="text" Response is truncated to max_chars characters; check the "truncated" flag.

Examples: fetch_records(db="pubmed", ids="34523456", rettype="abstract") fetch_records(db="protein", ids="NP_000509.1", rettype="fasta")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
idsYes
retmodeNotext
rettypeYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Discloses truncation with max_chars and the 'truncated' flag, and mentions records can be large. However, with no annotations, it does not explicitly state that the tool is read-only or address authentication/rate limits, which are common behavioral concerns.

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?

Description is concise, front-loads purpose and warning, uses bullet points and examples efficiently. Every sentence contributes value without redundancy.

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?

Covers key aspects like database-specific formats and truncation, but lacks details on ids format (e.g., comma-separated) and does not explain the full output schema despite its existence. Adequate but with gaps.

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?

Schema description coverage is 0%, so description compensates well by explaining rettype/retmode combinations for multiple databases, max_chars truncation, and providing examples. Adds significant meaning beyond schema, though db and ids format are not fully elaborated.

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?

Clearly states 'Fetch full records' as verb+resource. Provides database-specific context but does not explicitly differentiate from sibling tools like get_summaries or get_full_text, though the purpose is evident.

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?

Includes warning 'USE SPARINGLY' and database-specific rettype/retmode combinations. However, lacks explicit guidance on when to use alternatives or when not to use, leaving usage context implied.

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

get_database_infoA

List available Entrez databases (EInfo), or describe searchable fields and link names for one database.

Call without db to list all Entrez database names. Call with db set to get its indexed fields and available link names.

Examples: get_database_info() get_database_info(db="pubmed")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, but description fully discloses behavior: it calls EInfo, lists databases or fields. No side effects or hidden traits. Read-only nature is clear.

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?

Description is concise (3 lines plus examples), front-loaded with purpose. Every sentence adds value, no wasted words.

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

Completeness5/5

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

Covers both modes with examples. Output schema exists, so return values need not be described. Given low complexity, description is fully adequate.

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

Parameters5/5

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

Schema has one optional parameter with 0% description coverage. Description compensates fully by explaining that default lists all, and setting 'db' describes that database. Examples reinforce usage.

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?

Description clearly states the tool lists Entrez databases or describes fields for a specific database. It distinguishes between two modes (with and without 'db' parameter) and differentiates from sibling tools that handle fetching and searching.

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?

Explicitly states when to call without 'db' (list all) and with 'db' (describe fields). Provides examples but does not mention when not to use or alternatives; however, the tool's purpose is sufficiently scoped.

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

get_full_textA

Fetch the full text of a PMC Open Access article in BioC JSON format. USE SPARINGLY: full articles can be large.

Only articles in the PMC Open Access Subset or Author Manuscript Collection are available. id is a single PubMed ID (e.g. "17299597") or PMC ID (e.g. "PMC1790863") matching id_type. Response is truncated to max_chars characters; check the "truncated" flag.

Examples: get_full_text(id="17299597") get_full_text(id="PMC1790863", id_type="pmcid")

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
id_typeNopmid
encodingNounicode
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, description carries full burden. It discloses large size, truncation behavior with truncated flag, required ID formats, and subset limitations. Does not mention rate limits or permissions but covers main operational traits.

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?

Concise with front-loaded purpose, warnings, parameter usage, and examples. No unnecessary sentences. Could be slightly more structured but effective.

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?

Given 4 parameters and existing output schema, description covers main behavior, limitations, and truncation. Lacks error handling details but overall sufficient for agent to use 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 0%, so description must add meaning. It explains 'id' and 'max_chars' well. 'id_type' is implied via examples but not explicitly described. 'encoding' is not explained. Partial 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?

Description clearly states it fetches the full text of a PMC Open Access article in BioC JSON format. Specific verb (fetch), resource (full text of PMC article), and format (BioC JSON). This distinguishes it from siblings like get_summaries which likely return abstracts.

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?

Description advises to use sparingly due to large size and notes availability only in certain subsets. Provides examples. However, lacks explicit comparison to siblings or guidance on when not to use.

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

get_summariesA

Fetch document summaries (ESummary) for a list of UIDs from an Entrez database.

ids is a comma-separated list of UIDs (e.g. from search_pubmed). select limits returned fields by name (comma-separated); "*" (default) returns all fields.

Examples: get_summaries(db="pubmed", ids="34523456,34523457") get_summaries(db="pubmed", ids="34523456", select="title,pubdate,authors")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
idsYes
selectNo*

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It correctly conveys that the tool is a read operation (fetching summaries), but it does not disclose potential limitations, error behaviors, or required authentication. The description is adequate but lacks explicit safety or side-effect statements.

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?

The description is concise and front-loaded with the purpose. It consists of two brief paragraphs: the first explains the function and parameters, the second provides examples. Every sentence adds value without 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?

Given the tool has an output schema (not shown), the description need not detail return values. It adequately covers purpose, parameters, and provides examples. However, it lacks information on prerequisites or error handling, leaving some gaps for a complete picture.

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 schema has 0% description coverage, so the description must compensate. It explains the 'ids' parameter as a comma-separated list of UIDs from search_pubmed and the 'select' parameter with default '*'. Examples illustrate usage. However, the 'db' parameter is only implied through examples and not explicitly described.

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 clearly states the tool fetches document summaries (ESummary) for a list of UIDs from an Entrez database. The verb 'Fetch' and resource 'document summaries' are specific, and the context of 'from an Entrez database' distinguishes it from siblings like fetch_records (full records) and get_full_text (full text).

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?

The description implies when to use the tool: after obtaining UIDs from search_pubmed, as shown in examples. It provides clear context for the input (ids from search_pubmed) and the output (summaries). However, it does not explicitly state when not to use it or compare with alternatives like fetch_records or get_full_text.

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

global_query_countsA

Get the number of results a query would return in every Entrez database at once (EGQuery).

Useful for scoping a search before committing to a specific database with search_pubmed.

Examples: global_query_counts(term="alzheimer's disease")

ParametersJSON Schema
NameRequiredDescriptionDefault
termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/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 burden but adequately states it returns counts per database. The existence of an output schema likely covers return structure, so behavioral disclosure is sufficient for this simple read-only 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 concise sentences plus a highly relevant example. No extraneous words, front-loaded with purpose, and efficient in conveying key information.

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 tool with one parameter and an output schema, the description covers purpose and usage context adequately, though it omits potential edge cases or error scenarios.

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 parameter 'term' is described only implicitly as the query term, with an example provided. Given 0% schema coverage, the description adds basic meaning but lacks detail on format or constraints, resulting in minimal compensation.

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 clearly states the tool retrieves the number of results a query would return across all Entrez databases, distinguishing it from sibling tools like search_pubmed by noting it's for scoping before committing to a specific database.

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

Usage Guidelines5/5

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

Explicitly advises using this tool before search_pubmed to scope a search, providing clear when-to-use guidance and implying when not to (when actual records from a specific database are needed).

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

match_citationsA

Batch match free-text citations against PubMed to retrieve their PMIDs (ECitMatch).

citations holds one or more citation strings in the pipe-delimited ECitMatch format: "journal_title|year|volume|first_page|author_name|your_key|", one per line, e.g. "proc natl acad sci u s a|1991|88|3248|mann bj|key1|". ECitMatch only supports plain-text output; the raw response is returned under "raw_text".

Examples: match_citations(citations="proc natl acad sci u s a|1991|88|3248|mann bj|key1|")

ParametersJSON Schema
NameRequiredDescriptionDefault
citationsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that ECitMatch only supports plain-text output and returns raw response under 'raw_text'. Adds important behavioral context about output format and limitation.

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?

Description is front-loaded with purpose, then format, then example. No wasted words; every sentence adds value. Appropriate length for a single-parameter tool.

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?

Given the tool has one parameter and an output schema (not shown but mentioned), the description explains input format and raw output. Complete enough for a batch query tool, though lacks error handling or rate limits. Minor gap.

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

Parameters5/5

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

Schema has 0% coverage with no description for the citations parameter. Description fully compensates by explaining the pipe-delimited ECitMatch format and providing an explicit example, adding critical meaning beyond the schema.

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?

Description clearly states the tool batch matches free-text citations against PubMed to retrieve PMIDs. It specifies the verb 'match', the resource 'citations against PubMed', and the output 'PMIDs'. Distinguishes from sibling tools like search_pubmed and convert_ids.

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?

Description implies usage when you have citation strings and need PMIDs, but does not explicitly state when to use vs alternatives or when not to use. No when-not or alternative guidance provided.

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

raw_requestA

Make a raw GET request to one of the four supported NCBI PubMed/PMC APIs. Safety valve for endpoints not covered by other tools.

service selects the base URL: "eutils" (E-utilities), "bioc" (BioC full text), "citexport" (Literature Citation Exporter), "idconv" (PMC ID Converter). path is appended to the service base URL (e.g. "esearch.fcgi" for eutils, "BioC_json/17299597/unicode" for bioc, "pubmed/" for citexport, "" for idconv). params is a dict of query-string parameters specific to that endpoint.

Examples: raw_request(service="eutils", path="einfo.fcgi", params={"retmode": "json"}) raw_request(service="bioc", path="BioC_xml/PMC1790863/unicode", params={})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
paramsYes
serviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It specifies GET request and lists services, but does not mention error handling, rate limits, or authentication requirements, which would be helpful for a raw request 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?

The description is well-structured with bullet points and clear examples. Every sentence adds value; no wasted words.

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

Completeness2/5

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

Despite being complete in usage instructions, the description lacks any mention of what the tool returns (output format). Since no output schema is provided in the input, the description should hint at the response structure or error behavior.

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?

Schema has 0% description coverage. The description adds meaning by explaining the purpose of each parameter, examples of correct usage, and specifics for each service, which compensates well.

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 clearly states it makes a raw GET request to four supported NCBI APIs, acting as a safety valve. It distinguishes itself from sibling tools by being a raw interface.

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

Usage Guidelines5/5

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

Explicitly says 'safety valve for endpoints not covered by other tools', indicating when to use. Provides examples and explains how to construct requests with service, path, and params.

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

search_pubmedA

Search an NCBI Entrez database (ESearch) and return matching UIDs plus the total result count.

db defaults to "pubmed" but accepts any Entrez database name (e.g. "pmc", "gene", "protein"). sort accepts database-specific values such as "relevance" or "pub_date" (pubmed). mindate/maxdate use YYYY/MM/DD, YYYY/MM, or YYYY and require datetype ("pdat" or "edat"). Result is capped at 10000 UIDs per NCBI policy; use retstart to page through more.

Examples: search_pubmed(term="CRISPR AND cancer", retmax=50) search_pubmed(term="covid-19", db="pmc", sort="pub_date", mindate="2024/01/01", maxdate="2024/12/31", datetype="pdat")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbNopubmed
sortNo
termYes
retmaxNo
maxdateNo
mindateNo
datetypeNo
retstartNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, description fully discloses behavior: defaults, result cap of 10000, paging via retstart, date format requirements. Comprehensive coverage of operational constraints.

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?

Well-structured with bullet points and examples, but somewhat lengthy. Could be tightened slightly, but content earns its place.

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

Completeness5/5

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

For a complex search tool with 8 parameters and no schema descriptions, the description covers all essential behaviors, constraints, and examples. Output schema exists, so return format disclosure is adequate.

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

Parameters5/5

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

Schema has 0% description coverage, but description explains all key parameters (db, sort, mindate/maxdate/datetype, retmax, retstart) in detail with examples. Provides meaning well beyond the schema.

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?

Description clearly states it searches an NCBI Entrez database and returns UIDs with total count. Distinguishes from siblings by listing examples and noting defaults for pubmed vs other databases.

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 clear context on parameter usage (date format, sorting, paging) and examples. No explicit when-not-to-use or sibling comparisons, but sufficient for correct agent selection.

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

spelling_suggestionsA

Get a spelling-corrected version of a search term for a given Entrez database (ESpell).

ESpell only supports XML output; the raw XML is returned under "raw_text".

Examples: spelling_suggestions(db="pubmed", term="asthmaa treatment")

ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 discloses that ESpell only returns XML output and the format ('raw_text'). However, it does not mention side effects, authentication needs, or rate limits. The information is adequate for a simple read-only 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?

The description is concise with two sentences and an example. It front-loads the main purpose and adds necessary detail about output format without extraneous content.

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?

Given the tool's simplicity and the presence of an output schema (though not shown), the description covers the core functionality and output format. It lacks details on error handling or required authentication, but is adequate for basic usage.

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 input schema has 0% description coverage, so the description compensates by stating the roles of 'db' and 'term' and providing an example. However, it does not elaborate on valid values or formatting requirements.

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 clearly states the verb 'Get' and the resource 'spelling-corrected version of a search term' for a given database. The example reinforces the purpose, and it is distinct from sibling tools like search_pubmed or get_summaries.

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 does not provide explicit guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or when another tool would be more appropriate.

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 observedconvert_ids
    • First observedexport_citation
    • First observedfetch_records
    • First observedfind_related_links
    • First observedget_database_info
    • First observedget_full_text
    • First observedget_summaries
    • First observedglobal_query_counts
    • First observedmatch_citations
    • First observedraw_request
    • First observedsearch_pubmed
    • First observedspelling_suggestions

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation5/5

Every tool has a clearly distinct purpose: searching, retrieving summaries/full records/full text, converting IDs, exporting citations, finding related links, spelling suggestions, global query counts, database info, and raw requests. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_pubmed, get_summaries, convert_ids). The naming is predictable and clearly conveys the action and resource.

Tool Count5/5

12 tools is well-scoped for a PubMed/MEDLINE API wrapper. Each tool serves a specific need in the retrieval workflow, and the count is neither overly large nor too small for the domain.

Completeness5/5

The tool set covers the entire search and retrieval lifecycle: searching, spelling correction, global counts, database info, summaries, full records, full text, citation export, ID conversion, batch citation matching, and related links. A raw_request tool handles edge cases. No obvious gaps for a read-only PubMed client.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that provides access to PubMed and NCBI's biomedical literature database for searching articles, retrieving metadata, and tracking citations. It enables users to explore related research, browse MeSH vocabulary, and find free full-text links.
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that provides direct access to PubMed and PubMed Central via the NCBI E-utilities API. It enables AI models to search biomedical literature, retrieve detailed article metadata, and download open-access full texts.
    5
    MIT