PyEuropePMC — Claude Code MCP server: features and setup
Connects your coding agent to Europe PMC and related research repositories. Retrieves open publications, handles full text downloads, and parses JATS XML.
claude mcp add --env PYEUROPEPMC_MCP_LOG_LEVEL=<PYEUROPEPMC_MCP_LOG_LEVEL> --env SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> --env OPENAI_API_KEY=<OPENAI_API_KEY> --env OPENAI_BASE_URL=<OPENAI_BASE_URL> --env OPENAI_MODEL=<OPENAI_MODEL> --transport stdio pyeuropepmc -- uvx pyeuropepmcWhat PyEuropePMC does
The server queries scientific repositories directly from your agent environment. It searches Europe PMC alongside ten external databases like PubMed and arXiv while removing duplicated entries. It fetches articles as PDF or raw XML files.
It transforms JATS XML content into plain text or structured sections. That makes it handy for RAG pipelines. It extracts author lists, figure data, and text-mining annotations for chemicals or diseases.
Standard searches and open text downloads work without registration. You will need separate API keys only when enabling Semantic Scholar queries or LLM analysis tools.
What it helps with
- query biomedical research papers across Europe PMC and connected archives
- download open-access articles in JATS XML, PDF, or HTML format
- convert XML literature into structured sections for RAG workflows
- inspect citation networks and biomedical entity annotations
Example prompts for the agent
- Find open-access Europe PMC papers mentioning CRISPR and display their PMCID identifiers.
- Fetch the JATS XML for PMCID PMC1234567 and convert the content into Markdown.
- Trace citations for this publication and identify duplicate references across archives.
How to install PyEuropePMC
Platform CLI
claude mcp add --env PYEUROPEPMC_MCP_LOG_LEVEL=<PYEUROPEPMC_MCP_LOG_LEVEL> --env SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> --env OPENAI_API_KEY=<OPENAI_API_KEY> --env OPENAI_BASE_URL=<OPENAI_BASE_URL> --env OPENAI_MODEL=<OPENAI_MODEL> --transport stdio pyeuropepmc -- uvx pyeuropepmcReplace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from pyeuropepmc <command>
Platform CLI
codex mcp add pyeuropepmc --env PYEUROPEPMC_MCP_LOG_LEVEL=<PYEUROPEPMC_MCP_LOG_LEVEL> --env SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> --env OPENAI_API_KEY=<OPENAI_API_KEY> --env OPENAI_BASE_URL=<OPENAI_BASE_URL> --env OPENAI_MODEL=<OPENAI_MODEL> -- uvx pyeuropepmcReplace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from pyeuropepmc <command>
Config file
{
"mcpServers": {
"pyeuropepmc": {
"command": "uvx",
"args": [
"pyeuropepmc"
],
"env": {
"PYEUROPEPMC_MCP_LOG_LEVEL": "<PYEUROPEPMC_MCP_LOG_LEVEL>",
"SEMANTIC_SCHOLAR_API_KEY": "<SEMANTIC_SCHOLAR_API_KEY>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_BASE_URL": "<OPENAI_BASE_URL>",
"OPENAI_MODEL": "<OPENAI_MODEL>"
}
}
}
}Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from pyeuropepmc <command>
Config file
{
"servers": {
"pyeuropepmc": {
"type": "stdio",
"command": "uvx",
"args": [
"pyeuropepmc"
],
"env": {
"PYEUROPEPMC_MCP_LOG_LEVEL": "<PYEUROPEPMC_MCP_LOG_LEVEL>",
"SEMANTIC_SCHOLAR_API_KEY": "<SEMANTIC_SCHOLAR_API_KEY>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_BASE_URL": "<OPENAI_BASE_URL>",
"OPENAI_MODEL": "<OPENAI_MODEL>"
}
}
}
}Replace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from pyeuropepmc <command>
Platform CLI
gemini mcp add -e PYEUROPEPMC_MCP_LOG_LEVEL=<PYEUROPEPMC_MCP_LOG_LEVEL> -e SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> -e OPENAI_API_KEY=<OPENAI_API_KEY> -e OPENAI_BASE_URL=<OPENAI_BASE_URL> -e OPENAI_MODEL=<OPENAI_MODEL> pyeuropepmc uvx pyeuropepmcReplace <…> with your own values. 1 more environment variable is in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from pyeuropepmc <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about PyEuropePMC
How to install PyEuropePMC in Claude Code?
Run claude mcp add pyeuropepmc -e SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> -e OPENAI_API_KEY=<OPENAI_API_KEY> -- uvx pyeuropepmc in your terminal.
What does PyEuropePMC do?
It grants agents access to biomedical literature, downloads full articles, and processes JATS XML data.
Does PyEuropePMC require API tokens?
Basic Europe PMC searches do not require credentials. You only supply API keys if querying Semantic Scholar, CORE, or activating agentic LLM components.