Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PUBMED_MCP_EMAILNoEmail reported to NCBI (recommended by their usage policy)
PUBMED_MCP_API_KEYNoNCBI E-utilities API key — raises the rate limit from 3 to 10 requests/second

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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")

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")

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")

find_related_linksA

Find related or cross-referenced records (ELink) for a list of UIDs.

dbfrom is the source database of ids; db is the target database to link into. linkname restricts results to one specific link category (e.g. "pubmed_pubmed_citedin"), which is more efficient than returning every link category. cmd selects the ELink mode: "neighbor" (default, full link data), "neighbor_score" (adds relevance scores), "acheck" (list all available linknames for the given ids).

Examples: find_related_links(ids="34523456", linkname="pubmed_pubmed_citedin") find_related_links(ids="34523456", dbfrom="pubmed", db="pmc")

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")

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")

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")

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|")

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")

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")

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")

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={})

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dam2452/pubmed-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server