PubMed Search
Multi-source biomedical literature search: PubMed, Europe PMC, OpenAlex, full text, citations
Connector by u9401066 · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/u9401066-pubmed-search-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: deep-research, web-search
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 33 read · 5 write · 2 delete · 4 not yet classified
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 44
Read from the source code; the running server may list different tools.
Read 33 · Look things up without changing anything.
analyze_search_querybudget_statusconvert_icd_meshfetch_article_detailsfind_citing_articlesfind_related_articlesgenerate_search_queriesget_article_figuresget_article_referencesget_citation_metricsget_compound_detailsget_compound_literature
Show 21 more tools
get_fulltextget_gene_detailsget_gene_literatureget_institutional_linkget_pipeline_historyget_text_mined_termslist_pipelineslist_resolver_presetsload_pipelineprepare_figure_searchreadread_research_chronicleread_sessionsearchsearch_biomedical_imagessearch_clinvarsearch_compoundsearch_geneunified_searchvalidate_pico_planverify_reference_list
Write 5 · Create, change, send or run things.
build_citation_treebuild_research_chroniclesave_literature_notessave_pipelineschedule_pipeline
Delete 2 · Delete, drop, revoke or wipe things.
delete_pipelineunschedule_pipeline
Not yet classified 4 · We could not tell from the name and description.
configure_institutional_accessdiagnose_institutional_accessprepare_exporttest_institutional_access
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
NCBI_API_KEY
Other settings (environment variables or headers).
NCBI_EMAIL
Network hosts it talks to 60
::1· found in codeaccess.identity.elsevier.com· found in codeagent-plugins.org· found in codeapi-us.digital.elsevier.com· found in codeapi.biorxiv.org· found in codeapi.clarivate.com· found in codeapi.core.ac.uk· found in codeapi.crossref.org· found in codeapi.elsevier.com· found in codeapi.medrxiv.org· found in codeapi.openalex.org· found in codeapi.semanticscholar.org· found in codeapi.unpaywall.org· found in codearxiv.org· found in codebiorxiv.org· found in codeclinicaltrials.gov· found in codecore.ac.uk· found in codedashboard.ngrok.com· found in codedev.elsevier.com· found in codedeveloper.clarivate.com· found in codedoaj.org· found in codedoi.org· found in codedx.doi.org· found in codeebi.ac.uk· found in codeeuropepmc.org· found in codeeutils.ncbi.nlm.nih.gov· found in codeexport.arxiv.org· found in codeezproxy.lib.x.edu· found in codefiles.pythonhosted.org· found in codegithub.com· found in code
Show 30 more hosts
graphml.graphdrawing.org· found in codehelp.openalex.org· found in codehollis.harvard.edu· found in codeicite.od.nih.gov· found in codeidiscover.lib.cam.ac.uk· found in codejamanetwork.com· found in codekmuh-ai.ngrok.dev· found in codelibrary.primo.exlibrisgroup.com· found in codemedrxiv.org· found in codemit.primo.exlibrisgroup.com· found in codenature.com· found in codencbi.nlm.nih.gov· found in codencku.primo.exlibrisgroup.com· found in codengrok-agent.s3.amazonaws.com· found in codenthu.primo.exlibrisgroup.com· found in codentu.primo.exlibrisgroup.com· found in codenycu.primo.exlibrisgroup.com· found in codeopenalex.org· found in codeopeni.nlm.nih.gov· found in codeorcid.org· found in codepmc.ncbi.nlm.nih.gov· found in codepublic.ukp.informatik.tu-darmstadt.de· found in codepubmed-search-mcp.local· found in codepubmed.ncbi.nlm.nih.gov· found in coderaw.githubusercontent.com· found in coderesolver.ebscohost.com· found in coderesolver.library.edu· found in codeu9401066.github.io· found in codeyour.library.edu· found in codezenodo.org· found in code
Files it touches
/home/eric/.local/share/pubmed-search-mcp/benchmarks/papersearchqa-2026-09-09/assets/baseline-dbcf0c8/home/eric/.local/share/pubmed-search-mcp/benchmarks/papersearchqa-2026-09-09/assets/papersearchqa-test.json/home/eric/.local/share/pubmed-search-mcp/benchmarks/papersearchqa-2026-09-09/full-ab/home/eric/.local/share/pubmed-search-mcp/benchmarks/papersearchqa-2026-09-09/full-ab-v072-preflight/tmp/pubmed-harness-baseline-dbcf0c8- Your home directory (~)
~/.pubmed-search-mcp- Any path the agent passes to its tools
Tools (44)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
analyze_search_queryAnalyze a search query without executing the search. Useful for understanding how unified_search will process your query before actually running it. Args: query: The search query to analyze Returns: Analysis including: - Complexity level (SIMPLE/MODERATE/COMPLEX/AMBIGUOUS) - Intent (LOOKUP/EXPLORATION/COMPARISON/SYSTEMATIC) - PICO elements (if detected) - Recommended sources - Recommended strategies
budget_statusRead remaining shared backend search and document-exposure budgets.
build_citation_treeBuild a citation tree (network) from a single article. 🌳 Creates a visual citation network showing research lineage: - Forward (citing): Who cites this paper? (newer research) - Backward (references): What does this paper cite? (foundational work) ⚠️ IMPORTANT: Only accepts ONE PMID at a time to control API load. For multiple papers, call this tool separately for each. 📊 Output Formats (output_format parameter): - "cytoscape": Cytoscape.js format (default, academic standard) - "g6": AntV G6 format (modern, high-performance) - "d3": D3.js force graph format (flexible, Observable) - "vis": …
build_research_chronicleBuild a persisted, versioned, evidence-backed Research Chronicle. A chronicle is the durable record of how a research topic evolved, and the single entry point for research-evolution work (it replaces the older one-shot timeline tools). It is stored with a monotonic revision number, so re-running it later produces revision N+1 and you can diff revisions to see exactly what changed. The primary axis is chronological; research branches are a secondary organizing dimension. Both come from the same stored snapshot, and preserve shared provenance in `output="timeline"` and `output="tree"`. Agreem…
configure_institutional_accessConfigure your institution's link resolver for full-text access. ═══════════════════════════════════════════════════════════════════════════════ 🏛️ INSTITUTIONAL ACCESS CONFIGURATION ═══════════════════════════════════════════════════════════════════════════════ This tool configures OpenURL link resolver integration, allowing you to access paywalled articles through your institution's library subscription. Remote service callers may call this tool with no configuration arguments to inspect the operator-installed configuration, but cannot mutate the server-owned, deployment-wide OpenURL set…
convert_icd_meshQuery the curated ICD/MeSH crosswalk in one explicit direction. Use ``icd_to_mesh`` with one complete ICD-9-CM or ICD-10-CM code, or ``mesh_to_icd`` with a MeSH term. The returned mapping is a limited convenience crosswalk, not a substitute for a current licensed UMLS terminology service.
delete_pipelinePermanently delete a saved pipeline configuration and execution history. For the default tenant, any process-level schedule is removed only after the stored pipeline deletion succeeds. Isolated tenants never mutate the shared process scheduler. Args: name: Name of the saved pipeline to delete. Returns: Confirmation of deletion.
diagnose_institutional_accessDiagnose why institutional fulltext access succeeds or fails for an article. Runs up to three probes and reports each path's outcome: 1. **Direct fetch** (Phase 1, IP-aware) — follows ``https://doi.org/<doi>`` and classifies whether the publisher served fulltext, a paywall, or a login page. Works automatically when your network IP is on the publisher's institutional allow-list (campus / VPN). 2. **EZproxy fetch** (Phase 2, BYO-cookie) — rewrites the publisher hostname to your library's EZproxy host and replays your exported browser session cookie. Configured via env vars: …
fetch_article_detailsFetch detailed information for one or more PubMed articles. Args: pmids: PubMed IDs - accepts multiple formats: - "12345678" (single) - "12345678,87654321" (comma-separated) - "PMID:12345678" (with prefix) - ["12345678", "87654321"] (list) - '["12345678", "87654321"]' (JSON array string) - Newlines, semicolons, pipes, and Chinese separators are also accepted. Inputs are string-only and fail as a complete batch when any PMID is invalid. Returns: Detailed information for each article.
find_citing_articlesFind articles that cite a given PubMed article. Uses PubMed Central's citation data to find papers that reference this article. ═══════════════════════════════════════════════════════════════ 📈 FORWARD CITATION SEARCH (Impact Tracking) ═══════════════════════════════════════════════════════════════ Direction: Source Paper → Papers that cite it (FORWARD in time) USE CASES: ────────── - 🔬 Track research impact: Who built on this work? - 📊 Find follow-up studies: What happened after this discovery? - 🔄 Identify controversies: Papers that challenge or refute findings - 📚 Literature review:…
find_related_articlesFind articles related to a given PubMed article. Uses PubMed's "Related Articles" feature to find similar papers. ═══════════════════════════════════════════════════════════════ 🔗 CITATION NETWORK EXPLORATION WORKFLOW ═══════════════════════════════════════════════════════════════ This is ONE of THREE tools for exploring citation networks: 1️⃣ find_related_articles() ← YOU ARE HERE │ 📌 Algorithm-based similarity (like PubMed "Similar Articles") │ 📌 Finds papers with similar topics, MeSH terms, authors │ 📌 Good for: Discovering related research you might have missed └─► Re…
generate_search_queriesGather search intelligence for a topic - returns RAW MATERIALS for Agent to decide. This tool provides the BUILDING BLOCKS for search, not finished queries. The Agent decides how to use them. ══════════════════════════════════════════════════════════════════════ TWO USAGE MODES: ══════════════════════════════════════════════════════════════════════ MODE 1: KEYWORD SEARCH (single topic) ───────────────────────────────────── User: "搜尋 remimazolam 的文獻" Step 1: generate_search_queries("remimazolam") Step 2: Build a Boolean query from returned materials Step 3: analyze_search_query(query="<comb…
get_article_figuresGet structured figure metadata (label, caption, image URL) and PDF links from a PMC Open Access article. Returns all figures with their captions and direct image URLs, plus PDF download links for the complete article. ``source`` is a discriminated identifier object, so the schema itself requires exactly one explicit PMID or PMCID. Args: source: {"kind":"pmcid","value":"PMC12086443"} or {"kind":"pmid","value":"40384072"}. include_subfigures: Parse sub-figures (e.g., Figure 3A, 3B) as separate entries. include_tables: Also extract tables rendered as images. Returns: …
get_article_referencesGet the references (bibliography) of a PubMed article. Returns the list of articles that this paper cites in its bibliography. This is the OPPOSITE of find_citing_articles: - get_article_references: Papers THIS article cites (backward in time) - find_citing_articles: Papers that cite THIS article (forward in time) ═══════════════════════════════════════════════════════════════ 📚 BACKWARD CITATION SEARCH (Foundation Discovery) ═══════════════════════════════════════════════════════════════ Direction: Source Paper → Papers it cited (BACKWARD in time) USE CASES: ────────── - 🏛️ Find foundat…
get_citation_metricsGet citation metrics from NIH iCite for articles. Returns field-normalized citation data including: - citation_count: Total number of citations - relative_citation_ratio (RCR): Field-normalized metric (1.0 = average) - nih_percentile: Percentile ranking (0-100) - citations_per_year: Citation velocity - apt: Approximate Potential to Translate (clinical relevance 0-1) Can sort and filter results by citation metrics. Args: pmids: PubMed IDs - accepts multiple formats: - "12345678,87654321" (comma-separated) - ["12345678", "87654321"] (list) - '["12345678", …
Show 29 more tools
get_compound_detailsGet detailed information about a compound by PubChem CID. Args: cid: PubChem Compound ID Returns: JSON with compound details including formula, SMILES, properties
get_compound_literatureGet PubMed articles linked to a compound. Uses NCBI's curated compound-to-publication links. Args: cid: PubChem Compound ID limit: Maximum PubMed IDs to return (1-100) Returns: JSON with linked PubMed IDs
get_fulltext🔥 Enhanced multi-source fulltext retrieval. Automatically tries multiple sources to find the best fulltext: 1. Europe PMC (if PMC ID available) 2. Unpaywall (finds OA versions via DOI) 3. Institutional direct/EZproxy fetch (when DOI-backed and enabled) 4. CORE (open-access repository metadata and available text) With extended_sources=True, also searches: 5. CrossRef (publisher links) 6. DOAJ (Gold OA journals) 7. Zenodo (research repository) 8. PubMed LinkOut (external providers) 9. Semantic Scholar, OpenAlex, arXiv, bioRxiv, medRxiv ``source`` is a discriminated identifier object, so the …
get_gene_detailsGet detailed information about a gene by NCBI Gene ID. Args: gene_id: NCBI Gene ID (from search results or known) Returns: JSON with gene details including symbol, name, summary, location
get_gene_literatureGet PubMed articles linked to a gene. This uses NCBI's curated gene-to-publication links, which are more precise than keyword searches. Args: gene_id: NCBI Gene ID limit: Maximum PubMed IDs to return (1-100) Returns: JSON with linked PubMed IDs
get_institutional_linkGenerate institutional access link (OpenURL) for an article. ═══════════════════════════════════════════════════════════════════════════════ 🔗 GET LIBRARY ACCESS LINK ═══════════════════════════════════════════════════════════════════════════════ Generate an OpenURL that will take you through your library's link resolver to access the full text of an article. PREREQUISITES: ───────────────── Must first call configure_institutional_access() to set up your resolver. USAGE: ───────────────── With PMID (easiest): get_institutional_link( source={"kind": "pmid", "value": "38353755"…
get_pipeline_historyGet execution history for a saved pipeline. Shows past execution results with diff analysis: which articles are new compared to the previous run. Args: name: Name of the saved pipeline. limit: Maximum number of history entries to return (default: 5). Returns: Execution history with date, article count, new/removed articles, status.
get_text_mined_termsGet text-mined annotations from Europe PMC. Returns entities extracted from the article text including genes, diseases, chemicals, organisms, and more. ``source`` is exactly one PMID or PMCID. Args: source: {"kind":"pmid","value":"12345678"} or {"kind":"pmcid","value":"PMC7096777"}. semantic_type: Filter by entity type. Options: - "GENE_PROTEIN": Genes and proteins - "DISEASE": Diseases and conditions - "CHEMICAL": Drugs and chemicals - "ORGANISM": Species and organisms - "GO_TERM": Gene Ontology terms - None: Return all typ…
list_pipelinesList all saved pipeline configurations. Args: tag: Filter by tag (e.g., "sedation"). Empty = show all. scope: Filter by scope: "workspace", "global", or "" (show all). Returns: Table of saved pipelines with name, scope, description, tags.
list_resolver_presetsList available institutional link resolver presets. ═══════════════════════════════════════════════════════════════════════════════ 📚 AVAILABLE RESOLVER PRESETS ═══════════════════════════════════════════════════════════════════════════════ These presets contain pre-configured URLs for common institutions. Use them with configure_institutional_access(preset="name"). Returns: List of available presets with URLs
load_pipelineLoad a pipeline configuration for review or editing. Loads from either source: - Saved name: "weekly_remimazolam" or "saved:weekly_remimazolam" - Local-only file: "file:path/to/pipeline.yaml" (disabled for authenticated service callers) The returned YAML can be reviewed, modified, and then: - Executed directly: unified_search(pipeline="<yaml>") - Saved with changes: save_pipeline(name="...", config="<yaml>") Args: source: Pipeline source identifier (see above). Returns: Full pipeline YAML content + metadata.
prepare_exportExport citations to reference manager formats. ╔═══════════════════════════════════════════════════════════════════╗ ║ RECOMMENDED: Use source="official" (default) for best quality ║ ╚═══════════════════════════════════════════════════════════════════╝ ## When to Use - Exporting references to EndNote, Zotero, Mendeley - Creating BibTeX for LaTeX documents - Generating citation lists for manuscripts ## Source Options | Source | Formats | Quality | Speed | |------------|--------------------|------------|--------| | official | ris, medline, csl | ★★★★★ | Fast | |…
prepare_figure_searchAnalyze a scientific figure or image for literature search. ═══════════════════════════════════════════════════════════════════════ 🔬 VISION-TO-LITERATURE SEARCH (Experimental) ═══════════════════════════════════════════════════════════════════════ This tool enables searching for scientific literature based on images. WORKFLOW (the host agent performs the analysis and search): ───────────────────────────────────────────────────────── 1. Provide an image (URL or base64-encoded) 2. This tool returns the image using MCP ImageContent protocol 3. YOU (the Agent) analyze the image using your vis…
readRead corpus records using numeric transport IDs returned by search.
read_research_chronicleRead stored Research Chronicles: load, list, diff, narrate, analyze, compare. This is the read facade over chronicles created by `build_research_chronicle`. Chronicles persist across sessions, so you can revisit a topic weeks later and see precisely what moved. Because the evidence is already stored, analysis and comparison are instant and do not re-run any search. Actions: - "load": read one revision (defaults to latest) in any output format - "list": list stored chronicles, most recently updated first - "diff": compare two revisions — added, not observed/removed from the later view, and …
read_sessionRead session data through one schema-exact discriminated request. Actions: - pmids: return PMIDs for one recorded search - article: return one cached article payload - summary: return current session summary and optional history - list_artifacts: list persistent MCP output artifact manifests - artifact: read one persistent artifact by artifact_id or artifact_uri - search_runs: list durable unified_search run envelopes - search_run: read one run by stable run_id - replay_search: return credential-free unified_search replay arguments Each action accepts only its own fields. For remote artifact…
save_literature_notesSave searched articles as guided local wiki/Foam/Markdown notes. ## When to Use - After unified_search, persist the selected literature into a local note library. - Give agents a structured alternative to generic write_file calls. - Create wiki notes with Foam-compatible wikilinks, MedPaper-like reference notes, and frontmatter. - Use stable wiki/Foam link targets and return wiki_validation for unresolved-link checks. ## Local Directory Resolution 1. output_dir argument, if provided 2. PUBMED_NOTES_DIR environment variable 3. PUBMED_WORKSPACE_DIR/references 4. PUBMED_DATA_DIR/references ## …
save_pipelineSave a pipeline configuration for later reuse. The config format is identical to unified_search's pipeline parameter (YAML or JSON). Saved pipelines can be loaded later by name: unified_search(pipeline="saved:weekly_remimazolam") Args: name: Unique identifier (alphanumeric + hyphens/underscores, max 64 chars). Overwrites if name already exists (upsert semantics). config: Pipeline YAML/JSON string. Same format as unified_search pipeline param. tags: Bounded array of canonical tags (e.g., ["anesthesia", "sedation"]). description: Human-readable description of the …
schedule_pipelineSchedule a saved pipeline for periodic execution. Args: name: Saved pipeline name. cron: Required 5-field cron expression. Example: "0 9 * * 1" (Mon 9am). diff_mode: When True, store diff-mode preference with the schedule. notify: When True, store notify preference with the schedule. Returns: Schedule confirmation or removal result.
searchSearch title/abstract text with plain lexical terms. Supports iterative queries.
search_biomedical_images🖼️ Search biomedical images from NLM Open-i. Searches medical/scientific images from Open-i and returns image URLs with metadata (caption, article info, MeSH terms). ═══════════════════════════════════════════════════════════════ ⚠️ CRITICAL - LANGUAGE REQUIREMENT: ═══════════════════════════════════════════════════════════ Open-i ONLY supports English queries. If the user queries in non-English (Chinese, Japanese, Korean, etc.), you MUST: 1. Translate the query to English medical terminology first 2. Then call this tool with the English query Example: "喉頭水腫" → "laryngeal edema" …
search_clinvarSearch ClinVar for clinical variants. ═══════════════════════════════════════════════════════════════ USE CASES: ═══════════════════════════════════════════════════════════════ - Look up clinical significance of genetic variants - Find variants associated with diseases - Research gene-disease associations - Get variant pathogenicity classifications Args: query: Gene name, variant, or disease condition limit: Maximum results (1-50) Returns: JSON with variant records including significance and conditions
search_compoundSearch PubChem for chemical compounds. ═══════════════════════════════════════════════════════════════ USE CASES: ═══════════════════════════════════════════════════════════════ - Look up drug/compound information - Find molecular formula and structure - Get compound synonyms and identifiers - Research chemical properties Args: query: Compound name or description limit: Maximum results (1-50) Returns: JSON with compound records including names, formulas, properties
search_geneSearch NCBI Gene database for gene information. ═══════════════════════════════════════════════════════════════ USE CASES: ═══════════════════════════════════════════════════════════════ - Look up gene function and description - Find gene aliases and official symbols - Get chromosome location - Find genes by name or function Args: query: Gene name, symbol, or function keyword organism: Filter by organism (e.g., "human", "Homo sapiens", "mouse") limit: Maximum results (1-50) Returns: JSON with gene records including symbols, names, locations
test_institutional_accessTest your institutional link resolver configuration. ═══════════════════════════════════════════════════════════════════════════════ 🧪 TEST INSTITUTIONAL ACCESS ═══════════════════════════════════════════════════════════════════════════════ Tests if your configured link resolver is: 1. Properly configured 2. Reachable (network connection) 3. Returns a valid response NOTE: This only tests if the resolver endpoint is reachable. Actual full-text access depends on your institution's subscriptions. ═══════════════════════════════════════════════════════════════════════════════ FREE TEST OPTION…
unified_search🔍 Unified Search - Single entry point for multi-source academic search. Automatically analyzes your query and searches the best sources. No need to choose between PubMed, OpenAlex, CrossRef, etc. ═══════════════════════════════════════════════════════════════════ WHAT IT DOES: ═══════════════════════════════════════════════════════════════════ 1. Analyzes your query (complexity, intent, PICO elements) 2. Automatically selects best sources based on query type 3. Searches multiple sources in parallel 4. Deduplicates and merges results 5. Ranks by configurable criteria 6. Enriches with OA link…
unschedule_pipelineRemove the active schedule for a saved pipeline. Args: name: Saved pipeline name whose schedule will be removed. Returns: Removed schedule metadata, or a native MCP error when none exists.
validate_pico_planValidate agent-provided P/I/C/O and return a runnable PICO pipeline. ``question_type`` and ``profile`` are closed enums. ``sources`` is an explicit array of supported unified-search providers; malformed values fail instead of being silently replaced. When ``question_type`` is omitted, the application service infers it from the clinical question.
verify_reference_listVerify a plain-text reference list against PubMed evidence. First version scope: - Reference-list verification only - Client supplies the extracted reference list text - Backend parses entries and resolves them via PMID / DOI / ECitMatch Second version scope: - Adds unresolved review workflow for ``partial_match`` and ``unresolved`` rows - Returns a manual-review queue with retry queries and review checklist - Supports human-in-the-loop acceptance/rejection in client-side workflows Args: reference_text: Plain-text references, ideally one per line or a num…
Compare and alternatives
Featured in
Signals
- Stars
- 28
- Forks
- 9
- Open issues
- 2
- Contributors
- 1
- Weekly downloads
- 494
- Last commit
- Oct 20, 2026 (7 days ago)
- Last release
- Oct 20, 2026 (7 days ago)
- Last package publish
- Oct 20, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.u9401066/pubmed-search-mcp- Version
- 0.8.0
- Auth
- API key
- Packages
- pypi pubmed-search-mcp
- License
- Apache-2.0
- Repository
- github.com/u9401066/pubmed-search-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
PubMed Search MCP server. Agent Mart. https://agentmart.dev/connectors/u9401066-pubmed-search-mcp (last updated 2026-10-24)