eutils-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NCBI_TOOL | No | Name that identifies this software in the NCBI logs. Optional. | eutils-mcp-server |
| NCBI_EMAIL | No | Contact address sent with every request. NCBI uses it to warn you before an IP block. Optional. | |
| NCBI_API_KEY | No | Raises the request ceiling from 3 to 10 requests per second. Get one from the Settings page of your NCBI account. Optional. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| eutils_einfoA | List Entrez databases, or describe one database's searchable fields and links. Call with no arguments to list all Entrez databases. Call with db to get that database's record count, last update time, searchable field names, and the links available to other databases. Args:
Returns: Without db: { count, databases: string[] } With db: { database, menu_name, description, record_count, last_update, build, field_count, fields: [{ name, fullname, description, termcount? }], link_count, links: [{ name, dbto, menu }] } Examples:
Error Handling:
|
| eutils_egqueryA | Search every Entrez database at once and report how many records each one matches. Use this to find which database holds data for a topic before committing to a search. It returns counts only, never records. Args:
Returns: { term, databases_searched, databases_with_hits, hits: [{ db, menu, count, status }] (sorted by count, descending), empty_databases: string[] } Examples:
Error Handling:
|
| eutils_espellA | Get NCBI's spelling suggestion for a query in one database. Args:
Returns: { database, query, corrected_query, changed } Examples:
Error Handling:
|
| eutils_esearchA | Search an Entrez database and return matching UIDs. This is the entry point for a retrieval pipeline. It returns UIDs, never records. By default it also stores the result set on the NCBI History server and returns a history handle, so later calls can page through the whole set without re-searching. Entrez field tags go in square brackets: gene[tiab], 2008[pdat], mouse[orgn]. Boolean operators AND, OR, NOT must be uppercase. Args:
Returns: { database, term, total, count, offset, has_more, next_offset, uids: string[], query_translation, term_translations: [{ from, to }], history? } Examples:
Error Handling:
|
| eutils_epostA | Upload a list of UIDs to the NCBI History server and get a reusable handle. Use this when you already have UIDs from somewhere other than an ESearch, or when you want to combine several sets. Many thousands of UIDs fit in one call. Args:
Returns: { database, uploaded, history: { db, web_env, query_key } } Examples:
Error Handling:
|
| eutils_esummaryA | Fetch compact summaries (DocSums) for a set of UIDs. Use this to screen records by title, authors, journal, and date before paying the cost of downloading full records. Args:
Supply either uids or history, never both. Returns: { database, total, count, offset, has_more, next_offset?, batches?, records: [{ uid, title, authors[], journal, source, pubdate, volume, issue, pages, doi?, pmcid?, pubtype[], lang[] }] } Non-PubMed databases return whichever scalar fields the DocSum carries. Examples:
Error Handling:
|
| eutils_efetchA | Download full records in a chosen format. Defaults are chosen for readability: PubMed returns plain-text abstracts, and sequence databases return FASTA. Returned record text is external data and is fenced with an explicit marker. Args:
Supply either uids or history, never both. Returns: { database, rettype, retmode, record_count?, batches?, text } Examples:
Error Handling:
|
| eutils_elinkA | Find records linked to a set of UIDs, either in another database or within the same one. This is how you move between databases: gene to protein, pubmed to pmc, nucleotide to snp, and so on. With cmd="neighbor_history" the linked set is stored on the NCBI History server and returned as a handle you can feed straight into eutils_efetch. Args:
Supply either uids or history, never both. Returns: { dbfrom, dbto?, command, groups_found, total_linked, groups: [{ dbto, linkname, count, ids[], query_key? }], histories? } Examples:
Error Handling:
|
| eutils_ecitmatchA | Resolve formatted citation strings to PubMed IDs. Use this when you have a reference list but no PMIDs. It is far more reliable than free-text searching for a specific article. Args:
Returns: { submitted, matched, records: [{ input, journal, year, volume, first_page, author, key, pmid, matched }] } Examples:
Error Handling:
|
| eutils_search_then_fetchA | Search a database and download the matching records in one call. This is the shortcut for the common "find me the papers about X" request. It runs ESearch with a History handle, then EFetch, saving a round trip. Use the individual tools when you want to screen titles before downloading. Args:
Returns: { database, term, total, retrieved, rettype, retmode, history, text } Examples:
Error Handling:
|
| eutils_link_then_fetchA | Follow links from one database to another and download the target records in one call. Typical uses: gene IDs to protein sequences, PMIDs to PMC full text, nucleotide records to SNPs. Give it either a query or a UID list in the source database, and it returns records from the target database. Args:
Returns: { dbfrom, dbto, source_total, retrieved, rettype, source_history, history, text } Examples:
Error Handling:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool maps to a distinct E-utilities operation (search, fetch, summary, link, post, spell, cite-match, database listing, cross-db counts), and descriptions include explicit 'Don't use when' cross-references. The two composite tools (search_then_fetch, link_then_fetch) could overlap with manual chains, but the descriptions clearly state when to prefer each, e.g. use esummary first to screen titles.
All tools share the eutils_ prefix and mostly follow the NCBI API names (esearch, efetch, elink), giving a predictable pattern. The two convenience tools use snake_case (search_then_fetch, link_then_fetch), which is readable but a slight deviation from the concatenated style.
11 tools is well-scoped, essentially covering the standard NCBI E-utilities suite plus two pragmatic shortcuts. Each tool earns its place with no redundant entries.
The surface covers the full E-utilities lifecycle: discovery (einfo, egquery), searching (esearch), history management (epost), retrieval (esummary, efetch), linking (elink), and utilities (espell, ecitmatch), plus end-to-end combos. No obvious dead ends for the domain.