Provides enhanced academic paper search and retrieval from PubMed using Model Context Protocol with features like keyword and journal filtering, MeSH term lookup, publication count statistics, detailed paper info, and structured PICO-based evidence searches.
Unlock the full potential of PubMed Enhanced Search through LangDB's AI Gateway. Get enterprise-grade security, analytics, and seamless integration with zero configuration.
Free tier available • No credit card required
A Model Content Protocol server that provides enhanced tools to search and retrieve academic papers from PubMed database, with additional features such as MeSH term lookup, publication count statistics, and PICO-based evidence search.
Clone this repository:
git clone https://github.com/leescot/pubmed-mcp-smithery
cd pubmed-mcp-smithery
Install dependencies:
pip install fastmcp requests
Start the server:
python pubmed_enhanced_mcp_server.py
For development mode with auto-reloading:
mcp dev pubmed_enhanced_mcp_server.py
Edit your Claude Desktop configuration file (CLAUDE_DIRECTORY/claude_desktop_config.json) to add the server:
"pubmed-enhanced": { "command": "python", "args": [ "/path/pubmed-mcp-smithery/pubmed_enhanced_mcp_server.py" ] }
The server provides these main functions:
search_pubmed
- Search PubMed for articles matching keywords with optional journal filtering
# Example results = await search_pubmed( keywords=["diabetes", "insulin resistance"], journal="Nature Medicine", num_results=5, sort_by="date_desc" )
get_mesh_terms
- Look up MeSH terms related to a medical concept
# Example mesh_terms = await get_mesh_terms("diabetes")
get_pubmed_count
- Get the count of publications for multiple search terms
# Example counts = await get_pubmed_count(["diabetes", "obesity", "hypertension"])
format_paper_details
- Get detailed information about specific papers by PMID
# Example paper_details = await format_paper_details(["12345678", "87654321"])
pico_search
- Perform structured PICO (Population, Intervention, Comparison, Outcome) searches with synonyms
# Example pico_results = await pico_search( p_terms=["diabetes", "type 2 diabetes", "T2DM"], i_terms=["metformin", "glucophage"], c_terms=["sulfonylurea", "glipizide"], o_terms=["HbA1c reduction", "glycemic control"] )
The PICO search tool helps researchers conduct evidence-based literature searches by:
This approach helps refine research questions and identify the most relevant literature.
The server implements automatic retry mechanism with backoff delays to handle potential rate limiting by NCBI's E-utilities service.
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!