ワンクリックで
pm-advanced-search
// Perform advanced PubMed search with field qualifiers - author, title, journal, MeSH, date range, article type. Constructs proper PubMed query syntax from natural language. Use for precise filtered searches.
// Perform advanced PubMed search with field qualifiers - author, title, journal, MeSH, date range, article type. Constructs proper PubMed query syntax from natural language. Use for precise filtered searches.
Export PubMed paper(s) to Zotero or save as RIS file. Supports single paper by PMID or batch export from search results. Use when user wants to save papers to their reference manager.
Find full-text download links for a PubMed paper by PMID - DOI, PMC open access, Sci-Hub, and publisher links. Use when user wants to read or download a paper's full text.
Navigate PubMed search result pages or change sort order. Use when user wants to see more results or change ordering.
Get full paper details for a PubMed article by PMID - title, authors with affiliations, abstract, MeSH terms, keywords, publication types, DOI, and citation info. Use when user needs detailed information about a specific paper.
Search PubMed for biomedical literature by keywords. Returns structured results with PMID, title, authors, journal, date, DOI. Use when the user wants to find papers on a topic.
| name | pm-advanced-search |
| description | Perform advanced PubMed search with field qualifiers - author, title, journal, MeSH, date range, article type. Constructs proper PubMed query syntax from natural language. Use for precise filtered searches. |
| argument-hint | [describe search criteria in natural language] |
Construct and execute a PubMed query using field qualifiers, boolean operators, and filters based on the user's natural language description.
$ARGUMENTS is a natural language description of the search criteria, e.g.:
Map the user's intent to PubMed field tags:
| Field | Tag | Example |
|---|---|---|
| Author | [AU] | Zhang W[AU] |
| First Author | [1AU] | Smith J[1AU] |
| Title words | [TI] | CRISPR[TI] |
| Title/Abstract | [TIAB] | machine learning[TIAB] |
| Journal | [TA] | Nature[TA] |
| MeSH term | [MESH] | Neoplasms[MESH] |
| Date range | [DP] | 2020/01:2025/12[DP] |
| Publication type | [PT] | Review[PT], Clinical Trial[PT], Meta-Analysis[PT], Systematic Review[PT], Randomized Controlled Trial[PT] |
| Affiliation | [AD] | Harvard[AD] |
| Language | [LA] | English[LA] |
| All fields | [ALL] | cancer[ALL] |
Boolean operators: AND, OR, NOT (must be uppercase).
Examples:
Zhang W[AU] AND CRISPR[TI] AND Nature[TA] AND Review[PT]COVID-19 vaccine[TIAB] AND Clinical Trial[PT] AND 2020:2026[DP]cancer immunotherapy[TIAB] AND Systematic Review[PT]Note: PubMed does not have a built-in impact factor filter. For IF filtering, search first and then the user can check journal IF manually.
Use mcp__chrome-devtools__navigate_page:
https://pubmed.ncbi.nlm.nih.gov/?term={URL_ENCODED_QUERY}&size=20Replace {URL_ENCODED_QUERY} with the constructed query string, URL-encoded.
Same pattern as pm-search, using the constructed query:
async () => {
const query = "CONSTRUCTED_QUERY";
const page = 1, size = 20;
const retstart = (page - 1) * size;
const searchResp = await fetch(
`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=${encodeURIComponent(query)}&retmax=${size}&retstart=${retstart}&retmode=json&sort=relevance`
);
const searchData = await searchResp.json();
const ids = searchData.esearchresult?.idlist || [];
const total = parseInt(searchData.esearchresult?.count || '0');
const queryTranslation = searchData.esearchresult?.querytranslation || '';
if (ids.length === 0) return { query, queryTranslation, total: 0, results: [] };
const sumResp = await fetch(
`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=${ids.join(',')}&retmode=json`
);
const sumData = await sumResp.json();
const results = ids.map((id, i) => {
const r = sumData.result?.[id] || {};
const doi = (r.articleids || []).find(a => a.idtype === 'doi')?.value || '';
return {
n: retstart + i + 1,
pmid: id,
title: r.title || '',
authors: (r.authors || []).map(a => a.name).join(', '),
journal: r.fulljournalname || '',
source: r.source || '',
pubdate: r.pubdate || '',
doi,
pubtype: (r.pubtype || []).join(', ')
};
});
return { query, queryTranslation, total, page, size, results };
}
Advanced search: {query}
PubMed translated query: {queryTranslation}
Found {total} results (page {page}):
1. {title}
PMID: {pmid} | DOI: {doi}
Authors: {authors}
Journal: {journal} ({pubdate}) | Type: {pubtype}
2. ...
Always show the queryTranslation so the user can see how PubMed interpreted the query.
| Chinese | English | PubMed tag |
|---|---|---|
| 综述 | Review | Review[PT] |
| 系统综述 | Systematic Review | Systematic Review[PT] |
| Meta分析 | Meta-Analysis | Meta-Analysis[PT] |
| 临床试验 | Clinical Trial | Clinical Trial[PT] |
| 随机对照试验 | RCT | Randomized Controlled Trial[PT] |
| 病例报告 | Case Report | Case Reports[PT] |
navigate_page + evaluate_scriptqueryTranslation in the response shows how PubMed actually interprets the query (MeSH expansion, etc.)