PyEuropePMC
Europe PMC search, search analytics, full text, enrichment, PICO, MeSH, data links, export
Connector by JonasHeinickeBio · 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/jonasheinickebio-pyeuropepmc
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, document-processing
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 and install config. Checked Oct 25, 2026.
- Tools
- 33 read · 6 write · 1 delete · 7 not yet classified
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 47
Read from the source code; the running server may list different tools.
Read 33 · Look things up without changing anything.
analyze_citationsanalyze_searchbib_parse_stringbib_to_cslbib_to_risbib_validatecache_statusclinical_trial_searchcompare_citationscount_papersepmc_statusevaluate_query
Show 21 more tools
find_open_accessfind_papers_by_entityfulltext_index_queryget_paper_annotationsget_paper_citationsget_paper_data_linksget_paper_detailsget_paper_fulltextget_paper_lab_linksget_paper_referencesget_papers_batchget_papers_fulltext_batchliterature_reviewpaper_figuresresearch_question_analysissearch_authorssearch_paperssummarize_citationstranslate_queryunified_searchvalidate_query
Write 6 · Create, change, send or run things.
bib_mergebuild_queryknowledge_graphref_resolve_doiref_resolve_pmidtag_paper_sentences
Delete 1 · Delete, drop, revoke or wipe things.
clear_cache
Not yet classified 7 · We could not tell from the name and description.
citation_snowballenrich_paperexport_papersmesh_expandpaper_screeningpico_decomposepreprint_analysis
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
OPENAI_API_KEYSEMANTIC_SCHOLAR_API_KEY
Other settings (environment variables or headers).
OPENAI_BASE_URLOPENAI_MODELPYEUROPEPMC_MCP_LOG_LEVELUNPAYWALL_EMAIL
Files it touches
- Any path the agent passes to its tools
Tools (47)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
analyze_citationsAnalyze citation contextAnalyze citation context for a paper using an LLM (requires an LLM provider).
analyze_searchAggregate statistics about a search without returning its records. Every metric says where it comes from in `basis`: `exact` is counted by Europe PMC over all `hit_count` records (`by_year`: one count per year; `open_access`; the `thresholds` of `citations`), `sample` is computed from the first `limit` records of the search and describes only those (`journals`, `authors`, `types`, `countries`, `funders` and the `citations` statistics). When `limit` covers the whole result, those are `exact` too. The sample metrics need `pip install pyeuropepmc[analytics]`.
bib_mergeMerge multiple BibTeX libraries, deduplicating by DOI.
bib_parse_stringParse a BibTeX string into structured entries.
bib_to_cslConvert BibTeX entries to CSL-JSON format.
bib_to_risConvert BibTeX entries to RIS format.
bib_validateValidate BibTeX entries for completeness and correctness.
build_queryBuild a Europe PMC query from structured input instead of writing syntax by hand, and check the result. Returns the query, a plain-language explanation of what it asks for, and any warnings. At least one of all_of, any_of or a filter is needed (none_of alone would match almost everything). The same filters are available on `search_papers`.
cache_statusHow full are the server's caches and how often do they help? For the search, article and annotation clients and for the full-text XML cache: entries, capacity, size, hits, misses and hit rate. Counts only: no cache keys (they can contain query text), no cached content and no file paths.
citation_snowballWalk the citation graph forward (cited-by), backward (references), or both, with configurable depth and a minimum-citation-count filter.
clear_cacheClear a server cacheEmpty one of the server's in-memory caches, so that the next call asks Europe PMC again. Only worth doing when you suspect a cached answer is stale (the caches hold results for a day); every cleared entry has to be fetched again, which is load on Europe PMC. It changes server state, so a client may ask for approval. It never touches files on disk.
clinical_trial_searchSearch ClinicalTrials.gov for studies by condition, intervention, or free-text query.
compare_citationsCompare two papers' citationsCompare citations between two papers using an LLM (requires an LLM provider).
count_papersNumber of Europe PMC records matching a query, without fetching them. Use it to size a search before choosing ``limit`` for `search_papers`.
enrich_paperOne compact record for a paper from Europe PMC, Crossref, OpenAlex, Semantic Scholar, iCite and Unpaywall, merged: citation impact, funders and grants, authors with their institutions, open-access status and licence, and corrections and retractions. The sources are asked at the same time; `sources` in the answer says for each whether it answered (ok), had nothing (empty), failed (error, with the reason), or was still running when `time_budget` ended (timeout). A failed source gives a partial record, not an error. Institutions come with name, country and ROR ID; `ror_details` adds their place a…
Show 32 more tools
epmc_statusIs Europe PMC up right now? Probes the endpoints this server depends on (search, full text, citations, annotations) and returns ok, degraded (some fail), down (none answers) or unknown (only 4xx answers: a blocked probe or a moved endpoint), with the HTTP status and the time in milliseconds of each. Use it before retrying a tool that failed with a network error, a timeout or a 5xx. The answer is kept for 30 seconds, so asking again does not probe again (`cached` says so), and it contains no URLs or response bodies.
evaluate_queryScore a Europe PMC query against papers you already know, for systematic-review work: recall (how many of the included PMIDs it finds) and how many excluded ones it still finds, with the PMIDs it misses. This runs the query on Europe PMC itself, so it measures what the search really returns, not a local reading of the syntax. PMIDs that Europe PMC does not know are reported apart and left out of the scores. A query with errors is refused; see `validate_query`.
export_papersExport papers as a file's worth of text to hand to a reference manager or a spreadsheet: BibTeX, RIS or CSL-JSON (Zotero, Mendeley, EndNote, Pandoc) or CSV, JSON or Markdown. Give a search `query` or a list of `ids`. BibTeX keys look like `vasiliou2005analysis`, are unique within the export and do not change when it is cut to size; text that LaTeX reads as syntax (& % # _ $) is escaped. A paper with more than 100 authors lists the first 100 (BibTeX adds `and others`). The export is never cut in the middle of a record: `truncated` says that records were left out; `next_skip` (query) or `remaini…
find_open_accessWhere can this paper be read for free? Looks the DOI up in Unpaywall and returns the open-access status (gold, green, hybrid, bronze, closed), the best copy with its PDF link and licence, and a few alternatives. ``europepmc_fulltext`` says whether `get_paper_fulltext` will work for it. Needs UNPAYWALL_EMAIL in the server's environment.
find_papers_by_entityArticles in which Europe PMC found a given entity, with how often and where it is mentioned. One page per call: pass ``next_cursor`` back as ``cursor`` for the next. Europe PMC's entity search ignores type, section and provider, so the three filters here apply to the mentions it returns: an article without a matching mention is left out and counted in ``articles_filtered_out``.
fulltext_index_querySearch the local SQLite FTS5 full-text index for papers whose full text matches a query. A fresh index handle is opened per call rather than cached: SQLite connections are only safe to use from the thread that created them, and each call may run on a different worker thread.
get_paper_annotationsGenes, proteins, chemicals, diseases, organisms and other entities that Europe PMC text-mined from a paper, grouped by entity with mention counts, sections and example mentions. A review with hundreds of mentions comes back as a short entity list.
get_paper_citationsGet papers that cite a given paper (Europe PMC).
get_paper_data_linksWhere is the data of this paper? Accession numbers Europe PMC text-mined from the full text (dbSNP, RefSeq, OMIM, ClinicalTrials.gov, cited DOIs) and records that providers link to the paper (BioStudies supplementary data, model-organism databases, Altmetric), as one flat list. `kind` separates supporting_data and related_data from altmetrics and recommended_reviews; `origin` says whether a link was text_mined or supplied by a provider. A paper without links gives an empty list, which is a valid answer.
get_paper_detailsGet detailed paper information by PMID, PMCID, or DOI (Europe PMC).
get_paper_fulltextFetch the structured full text of an open-access paper from Europe PMC. Returns metadata, the list of available section titles, and the content in the requested format. When the content is longer than ``max_chars`` it is cut at a block boundary and ``truncated`` is true: ask again with ``sections`` for the part you need. Only open-access articles have full text; anything else fails with the reason.
get_paper_lab_linksLinks that third parties publish for a paper, grouped by provider with the provider's description: BioStudies supplementary material, model-organism databases, GO annotations, Faculty Opinions recommendations, Altmetric. Use get_paper_data_links for the data accessions mentioned in the text.
get_paper_referencesGet the reference list of a paper (backward citations, Europe PMC).
get_papers_batchLook up many papers at once: one combined Europe PMC query per 50 identifiers instead of one call per paper. Every input gets a result in the order given, with a status: ok, not_found, invalid (malformed identifier) or error (that request failed). One bad identifier never fails the batch; a repeated identifier repeats its result.
get_papers_fulltext_batchMarkdown full text of several open-access papers in one call, within a size budget. The identifiers are resolved with one query, papers that are not open access are reported without being downloaded, and the rest are fetched four at a time. The total budget is handed out in the order given: once it is used up, the remaining papers are reported as skipped_budget and not downloaded. Each result has a status: ok, not_found, invalid, not_in_pmc, not_open_access, no_matching_section, duplicate, error or skipped_budget. Use `get_paper_fulltext` for one paper at a larger size.
knowledge_graphBuild a knowledge graphBuild a knowledge graph from research literature using an LLM (requires an LLM provider).
literature_reviewGenerate a literature reviewGenerate a comprehensive literature review using an LLM (requires an LLM provider).
mesh_expandMeSH headings for search terms: the descriptor (ID, heading, tree numbers), its entry terms and a ready Europe PMC fragment `(MESH:"Heading" OR "entry term" OR ...)` for each term, and the fragments joined into one query that is checked like `validate_query`. By default it works offline from a bundled snapshot of 244 common clinical headings taken from NLM's published MeSH (heading, entry terms and tree numbers as published): a term that is not in it comes back with `matched: false` and is searched as written, never guessed. `use_api` asks NLM instead, which covers all of MeSH and needs the ne…
paper_figuresExtract figures, tables and supplementary files from a PMC Open Access article. Each item carries its label, caption and the Europe PMC URL its file can be downloaded from. A figure supplement also names the figure it belongs to.
paper_screeningPRISMA paper screeningAutomated paper screening with PRISMA-compliant criteria, using an LLM (requires an LLM provider).
pico_decomposeSplit a research question into PICO, PICOS, PICOT or SPIDER elements and build a Europe PMC query from them. Rule-based and offline: no model, no key, no request. Every element is a verbatim piece of the question, given with its position; an element the question does not state is listed in `missing`, never filled in. The rules cover the usual clinical phrasings ("In P, does I reduce O compared with C?", "What is the effect of I on O in P?", "Is I more effective than C for O?", "Is I associated with O?", "Effectiveness of I for O in P", "P treated with I"). A question phrased differently is onl…
preprint_analysisPreprint quality assessmentPreprint-specific quality assessment using an LLM (requires an LLM provider).
ref_resolve_doiResolve a DOI to bibliographic metadata.
ref_resolve_pmidResolve a PubMed ID to bibliographic metadata.
research_question_analysisAnalyze a research questionExpand and analyze a research question using an LLM (requires an LLM provider).
search_authorsSearch for authors in Europe PMC.
search_papers[Legacy] Search Europe PMCread-onlySearch Europe PMC for papers (single source — prefer `unified_search` for multi-source coverage). At most ``limit`` records are fetched; optional filters narrow the query by date, open access, full text availability and source.
summarize_citationsSummarize citation activitySummarize citation activity for a paper using an LLM (requires an LLM provider).
tag_paper_sentencesThe sentences of an open-access paper's body, grouped by what they do: background, motivation, method, result, claim (the authors' interpretation), limitation, conclusion. Front matter, the reference list and administrative sections (acknowledgments, funding, conflicts) are left out. Rule-based and offline apart from the download: the section a sentence is in sets its default role and cues in the sentence correct it. Where no rule is sure the sentence is `unknown` instead of a guess; in a paper without recognisable headings only background, method and conclusion sentences are recognised. Measu…
translate_queryRewrite a Europe PMC query for another database. For PubMed the field codes map where they have an equivalent (TITLE[ti], AUTH[au], JOURNAL[ta], dates[dp], ...); a construct that does not map (CITES, HAS_*, CITED, ...) is left out and named in `warnings` and `dropped`, and `exact` is false whenever the translation is narrower, broader or only approximate. The other targets search free text, so field codes and operators are stripped and `exact` is always false. A query with errors is refused; see `validate_query`.
unified_searchSearch across multiple literature sources (PubMed, arXiv, Semantic Scholar, OpenAlex, ClinicalTrials.gov) in parallel, with automatic cross-source deduplication.
validate_queryCheck a Europe PMC query before running it. Europe PMC does not reject a malformed query, it answers a different one: an unclosed parenthesis or a dangling operator is dropped silently, an unknown field, a flag that is not y/n and a date range with a missing or reversed bound match nothing, and AND mixed with OR without parentheses is not read as either grouping. Each problem comes with its position. `valid` is false when there are errors; warnings are things worth a second look. `normalized` is the cleaned-up query (capital operators, explicit AND) and is only given for a query without errors…
Signals
- Stars
- 8
- Forks
- 1
- Open issues
- 29
- Weekly downloads
- 1,357
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
- Last package publish
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.JonasHeinickeBio/pyeuropepmc- Version
- 4.2.0
- Auth
- API key
- Packages
- pypi pyeuropepmc
- License
- MIT
- Repository
- github.com/JonasHeinickeBio/pyEuropePMC
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
PyEuropePMC MCP server. Agent Mart. https://agentmart.dev/connectors/jonasheinickebio-pyeuropepmc (last updated 2026-10-24)