PyEuropePMC
PYPI · PYEUROPEPMC · SCANNED SEP 20
Search and analyse scientific literature across Europe PMC, PubMed, arXiv, and ClinicalTrials.gov
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security29
- Malware scan not yet available for this package.Unverified
- CVE check failed: a known high-severity CVE affects click 8.1.8, a direct dependency. A fixed version is available. View diagnostics → Fail
- Runs poetry.core.masonry.api at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- Dependency health was assessed across the 58 of 84 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 1610 tokens (~67/item across 24 items; 24 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "bib_merge" implies "merge" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the PyEuropePMC MCP server?
PyEuropePMC runs locally as a PyPI package, launched with uvx pyeuropepmc. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · pyeuropepmc
claude mcp add jonasheinickebio-pyeuropepmc -- uvx pyeuropepmc
{
"mcpServers": {
"jonasheinickebio-pyeuropepmc": {
"command": "uvx",
"args": [
"pyeuropepmc"
]
}
}
} {
"servers": {
"jonasheinickebio-pyeuropepmc": {
"command": "uvx",
"args": [
"pyeuropepmc"
]
}
}
} codex mcp add jonasheinickebio-pyeuropepmc -- uvx pyeuropepmc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jonasheinickebio-pyeuropepmc": {
"type": "local",
"command": [
"uvx",
"pyeuropepmc"
],
"enabled": true
}
}
} openclaw mcp add jonasheinickebio-pyeuropepmc --command uvx --arg pyeuropepmc
mcp_servers:
jonasheinickebio-pyeuropepmc:
command: "uvx"
args: ["pyeuropepmc"] {
"McpServers": {
"jonasheinickebio-pyeuropepmc": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"pyeuropepmc"
]
}
}
} assistant mcp add jonasheinickebio-pyeuropepmc -t stdio -c uvx -a pyeuropepmc
{
"mcpServers": {
"jonasheinickebio-pyeuropepmc": {
"command": "uvx",
"args": [
"pyeuropepmc"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Sept 26 +30
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 0 functional
- First check of Schema quality: pass functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- First check of Tool coverage: 100 functional
- Package version: 2.2.1 → 3.0.0 functional
- 15 Sept 26 15
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/pyeuropepmc@3.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | poetry.core.masonry.api |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 3 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| PYSEC-2026-2132 | CVE-2026-7246 | high | CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H | yes |
| GHSA-w8v5-vhqr-4h9v | CVE-2025-69872 | medium | no | |
| PYSEC-2026-2447 | CVE-2025-69872 | none | no |
Background: What a vulnerability scan can and cannot prove →
Dependencies 58 packages
| Packages resolved | 58 |
|---|---|
| Stale | 6 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_citations ~57
Analyze citation context for a paper using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | – | Citation context description |
| pmid | string | yes | PubMed ID |
| task | string | – | Analysis task description |
Structured output declared, but exposes no named fields.
No examples provided.
bib_merge ~36
Merge multiple BibTeX libraries, deduplicating by DOI.
| Name | Type | Req | Description |
|---|---|---|---|
| libraries | array | yes | BibTeX-formatted strings to merge |
Structured output declared, but exposes no named fields.
No examples provided.
bib_parse_string ~32
Parse a BibTeX string into structured entries.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | BibTeX-formatted string |
Structured output declared, but exposes no named fields.
No examples provided.
bib_to_csl ~34
Convert BibTeX entries to CSL-JSON format.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | BibTeX-formatted string |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
bib_to_ris ~32
Convert BibTeX entries to RIS format.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | BibTeX-formatted string |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
bib_validate ~31
Validate BibTeX entries for completeness and correctness.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | BibTeX string to validate |
Structured output declared, but exposes no named fields.
No examples provided.
citation_snowball ~111
Walk the citation graph forward (cited-by), backward (references), or both, with configurable depth and a minimum-citation-count filter.
| Name | Type | Req | Description |
|---|---|---|---|
| identifier | string | yes | Paper ID (PMID, DOI, or Semantic Scholar ID) |
| max_depth | integer | – | Recursion depth (0 = no limit) |
| max_papers | integer | – | Max papers per level |
| min_citations | integer | – | Minimum citation count filter |
| strategy | string | – | Snowball direction |
Structured output declared, but exposes no named fields.
No examples provided.
clinical_trial_search ~83
Search ClinicalTrials.gov for studies by condition, intervention, or free-text query.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | – | – | Medical condition filter |
| intervention | – | – | Intervention/treatment filter |
| limit | integer | – | Max results |
| query | string | – | Free-text search query |
| status | – | – | Recruitment status filter, e.g. ACTIVE, COMPLETED, RECRUITING |
Structured output declared, but exposes no named fields.
No examples provided.
compare_citations ~65
Compare citations between two papers using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| pmid1 | string | yes | PubMed ID of first paper |
| pmid2 | string | yes | PubMed ID of second paper |
| task | string | – | Comparison task description |
Structured output declared, but exposes no named fields.
No examples provided.
fulltext_index_query ~103
Search 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.
| Name | Type | Req | Description |
|---|---|---|---|
| index_path | – | – | Path to the SQLite index file (optional) |
| limit | integer | – | Max results |
| query | string | yes | Full-text search query |
Structured output declared, but exposes no named fields.
No examples provided.
get_paper_citations ~45
Get papers that cite a given paper (Europe PMC).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max citing papers to return |
| pmid | string | yes | PubMed ID |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
get_paper_details ~55
Get detailed paper information by PMID, PMCID, or DOI (Europe PMC).
| Name | Type | Req | Description |
|---|---|---|---|
| doi | string | – | DOI |
| pmcid | string | – | PMCID |
| pmid | string | – | PubMed ID |
Structured output declared, but exposes no named fields.
No examples provided.
knowledge_graph ~51
Build a knowledge graph from research literature using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| entities | – | – | Key entities |
| relationships | – | – | Known relationships |
| research_domain | string | yes | Research domain |
Structured output declared, but exposes no named fields.
No examples provided.
literature_review ~70
Generate a comprehensive literature review using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| excluded_topics | – | – | Topics to exclude from the review |
| key_concepts | array | yes | Key concepts to cover |
| research_topic | string | yes | Research topic |
| time_frame | string | – | Time frame |
Structured output declared, but exposes no named fields.
No examples provided.
paper_figures ~132
Extract 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.
| Name | Type | Req | Description |
|---|---|---|---|
| doi | string | – | DOI (alternative to pmcid) |
| include_supplements | boolean | – | Include supplementary material |
| include_tables | boolean | – | Include <table-wrap> elements |
| pmcid | string | – | PMC ID of the article, e.g. PMC1234567 |
| pmid | string | – | PubMed ID (alternative to pmcid) |
Structured output declared, but exposes no named fields.
No examples provided.
paper_screening ~74
Automated paper screening with PRISMA-compliant criteria, using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| exclusion_criteria | array | yes | Exclusion criteria |
| inclusion_criteria | array | yes | Inclusion criteria |
| limit | integer | – | Papers to screen |
| query | string | yes | Search query |
Structured output declared, but exposes no named fields.
No examples provided.
preprint_analysis ~59
Preprint-specific quality assessment using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| pmid | string | yes | PubMed ID |
| preprint_server | string | – | Preprint server, e.g. bioRxiv, medRxiv |
Structured output declared, but exposes no named fields.
No examples provided.
ref_resolve_doi ~29
Resolve a DOI to bibliographic metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| doi | string | yes | DOI to resolve |
Structured output declared, but exposes no named fields.
No examples provided.
ref_resolve_pmid ~32
Resolve a PubMed ID to bibliographic metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| pmid | string | yes | PubMed ID |
Structured output declared, but exposes no named fields.
No examples provided.
research_question_analysis ~49
Expand and analyze a research question using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| research_question | string | yes | Research question |
| time_frame | string | – | Time frame for literature search |
Structured output declared, but exposes no named fields.
No examples provided.
search_authors ~37
Search for authors in Europe PMC.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of results |
| query | string | yes | Author name or affiliation |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
search_papers ~81
Search Europe PMC for papers (single source — prefer `unified_search` for multi-source coverage).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of results |
| query | string | yes | Search query |
| result_type | string | – | Europe PMC result type |
| sort | string | – | Sort order, e.g. 'cited' or 'date' |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
summarize_citations ~50
Summarize citation activity for a paper using an LLM (requires an LLM provider).
| Name | Type | Req | Description |
|---|---|---|---|
| citation_count | integer | – | Number of citations |
| pmid | string | yes | PubMed ID |
Structured output declared, but exposes no named fields.
No examples provided.
unified_search ~107
Search across multiple literature sources (PubMed, arXiv, Semantic Scholar, OpenAlex, ClinicalTrials.gov) in parallel, with automatic cross-source deduplication.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results per source |
| query | string | yes | Search query |
| sources | – | – | Sources to query, e.g. ['europepmc', 'arxiv', 'semantic_scholar', 'openalex', 'clinicaltrials']. Defaults to the server's configured source set. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the PyEuropePMC MCP server?
PyEuropePMC is an MCP server listed in the public MCP registry as io.github.JonasHeinickeBio/pyeuropepmc. Search and analyse scientific literature across Europe PMC, PubMed, arXiv, and ClinicalTrials.gov. This page covers its PyPI package (pyeuropepmc).
Is the PyEuropePMC MCP server safe to use?
PyEuropePMC scores 45 out of 100 on VerifyMCP. We recorded 3 known advisories against it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PyEuropePMC MCP server expose?
PyEuropePMC exposes 24 tools: unified_search, search_papers, get_paper_details, search_authors, get_paper_citations, and 19 more. Their descriptions and schemas cost roughly 1,455 tokens of context every time the server is loaded.
Is the PyEuropePMC MCP server still maintained?
PyEuropePMC is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.