# PubMed-MCP-Server **Repository Path**: chenwenlong1233/PubMed-MCP-Server ## Basic Information - **Project Name**: PubMed-MCP-Server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PubMed MCP Server A comprehensive Model Context Protocol (MCP) server that provides access to PubMed, NCBI's database of biomedical literature with over 36 million citations from MEDLINE, life science journals, and online books. **Developed by [Augmented Nature](https://augmentednature.ai)** ## Overview The PubMed MCP server exposes the full NCBI E-utilities and PubMed Central APIs through 16 specialized MCP tools, allowing you to search, retrieve, and analyze biomedical literature directly from your MCP-enabled environment. ## Features ### Search & Discovery Tools - **search_articles** - Search PubMed by keywords, authors, journals, dates, or MeSH terms with pagination - **advanced_search** - Complex queries with field-specific searches and boolean operators (AND/OR) - **search_by_author** - Find articles by specific author(s) with optional affiliation filtering - **search_by_journal** - Search within specific journals with date range filtering - **search_by_mesh_terms** - Search using Medical Subject Headings (MeSH) with major topic filtering - **get_trending_articles** - Get recently published articles in a specific field (last 30-365 days) ### Article Retrieval Tools - **get_article_details** - Get comprehensive metadata and abstract for a specific PMID - **get_abstract** - Retrieve article abstract by PMID with basic metadata - **get_full_text** - Retrieve full text from PubMed Central (PMC) when available - **batch_article_lookup** - Retrieve multiple articles efficiently (up to 200 PMIDs) ### Citation & Reference Tools - **get_cited_by** - Find articles that cite a specific PMID - **get_references** - Get reference list for an article - **get_similar_articles** - Find related articles based on content similarity - **export_citation** - Export citations in various formats (APA, MLA, Chicago, BibTeX, RIS) ### Utility Tools - **validate_pmid** - Validate PubMed ID format and check if article exists - **convert_identifiers** - Convert between PMID, DOI, and PMC ID ### Data Quality Features - Real-time access to 36+ million biomedical citations - Automatic rate limiting (3 req/s without API key, 10 req/s with key) - Comprehensive error handling with retry logic - Support for all PubMed search fields and operators - MeSH term integration for precise medical queries - Full-text access via PubMed Central when available ## Installation ### Prerequisites - Node.js 16+ (install from [nodejs.org](https://nodejs.org)) - Optional: NCBI API key for higher rate limits (get from [NCBI Account Settings](https://www.ncbi.nlm.nih.gov/account/settings/)) ### Basic Configuration (No API Key) ```json { "mcpServers": { "pubmed-server": { "command": "node", "args": ["path/to/pubmed-server/build/index.js"], "autoApprove": [ "search_articles", "get_article_details", "get_abstract", "validate_pmid" ] } } } ``` ### With API Key (Recommended for Higher Rate Limits) ```json { "mcpServers": { "pubmed-server": { "command": "node", "args": ["path/to/pubmed-server/build/index.js"], "env": { "NCBI_API_KEY": "your_api_key_here", "NCBI_EMAIL": "your_email@example.com" }, "autoApprove": [ "search_articles", "get_article_details", "get_abstract", "validate_pmid", "search_by_author", "search_by_journal" ] } } } ``` ## Usage Examples ### Search for Recent CRISPR Research ```json { "query": "CRISPR gene editing", "max_results": 10, "sort": "pub_date" } ``` ### Get Article Details ```json { "pmid": "41138228" } ``` ### Advanced Search with Multiple Criteria ```json { "title": "machine learning", "author": "Smith J", "mesh_terms": ["Artificial Intelligence", "Diagnosis"], "boolean_operator": "AND", "max_results": 50 } ``` ### Search by Author with Affiliation ```json { "author_name": "Smith J", "affiliation": "Harvard Medical School", "max_results": 50 } ``` ### Search Within Specific Journal ```json { "journal_name": "Nature", "keywords": "cancer immunotherapy", "date_from": "2024/01/01", "date_to": "2025/12/31", "max_results": 25 } ``` ### Search by MeSH Terms ```json { "mesh_terms": ["COVID-19", "Vaccines"], "major_topic_only": true, "max_results": 50 } ``` ### Get Trending Articles ```json { "field": "artificial intelligence in medicine", "days": 30, "max_results": 20 } ``` ### Get Full Text from PMC ```json { "pmcid": "PMC1234567" } ``` ### Batch Article Lookup ```json { "pmids": ["41138228", "41137959", "41137488"] } ``` ### Export Citation in BibTeX ```json { "pmid": "41138228", "format": "bibtex" } ``` ### Find Citing Articles ```json { "pmid": "12345678", "max_results": 100 } ``` ### Convert Between Identifiers ```json { "identifier": "10.1080/15476286.2025.2577449", "identifier_type": "doi" } ``` ## API Reference ### Search Parameters **Common Parameters:** - `query` - Search query (keywords, phrases, field tags) - `max_results` - Number of results (1-1000, default: 20) - `start` - Starting position for pagination (default: 0) - `sort` - Sort order: relevance, pub_date, author, journal **Date Parameters:** - `date_from` - Start date (YYYY/MM/DD format) - `date_to` - End date (YYYY/MM/DD format) **Field Tags:** - `[Title]` - Article title - `[Author]` - Author name - `[Journal]` - Journal name - `[MeSH Terms]` - Medical Subject Headings - `[Abstract]` - Abstract text - `[Affiliation]` - Author affiliation - `[Publication Type]` - Type of publication - `[DOI]` - Digital Object Identifier **Example:** `"Smith J[Author] AND cancer[Title]"` ### MeSH Terms Medical Subject Headings (MeSH) is the NLM controlled vocabulary thesaurus used for indexing articles. Using MeSH terms provides more precise search results than keyword searches. **Common MeSH Categories:** - Diseases - Chemicals and Drugs - Analytical, Diagnostic and Therapeutic Techniques - Anatomy - Organisms - Psychiatry and Psychology - Phenomena and Processes ### Citation Formats The server supports multiple citation formats: - **APA** - American Psychological Association - **MLA** - Modern Language Association - **Chicago** - Chicago Manual of Style - **BibTeX** - LaTeX bibliography format - **RIS** - Research Information Systems format ### Response Format All tools return structured JSON data including: - Article metadata (PMID, title, authors, journal, publication date) - Abstract text (when available) - MeSH terms and keywords - DOI and other identifiers - Citation information - Full-text availability status ### PMID Format All PMIDs must be numeric strings (e.g., "12345678") ## Error Handling The server includes comprehensive error handling for: - **Network Issues**: Automatic retry with exponential backoff - **Rate Limiting**: Automatic throttling to comply with NCBI policies - **Invalid Parameters**: Clear error messages for validation failures - **API Errors**: Proper HTTP status code handling - **Missing Data**: Graceful handling of unavailable fields Common error responses include: ```json { "error": "Invalid PMID format: abc123", "isError": true } ``` ## Development ### Building from Source ```bash # Install dependencies npm install # Build TypeScript to JavaScript npm run build # Development with watch mode npm run watch ``` ### Key Dependencies - `@modelcontextprotocol/sdk` - MCP server framework - `axios` - HTTP client for API requests - `xml2js` - XML parsing for PubMed responses - TypeScript for type safety and development ## Data Sources **E-utilities API**: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/ **PubMed Central API**: https://www.ncbi.nlm.nih.gov/pmc/tools/developers/ **Coverage**: 36+ million citations from MEDLINE, life science journals, and online books **Data Updates**: Real-time access to the latest publications ## Rate Limits - **Without API key**: 3 requests per second - **With API key**: 10 requests per second The server automatically handles rate limiting to comply with NCBI's usage policies. ## Troubleshooting 1. **Server Connection Issues**: ```bash # Test server manually cd pubmed-server node build/index.js # Should show: "PubMed MCP Server running on stdio" ``` 2. **Invalid PMID Errors**: - Ensure PMIDs are numeric strings - Example: "12345678" ✓, "PMID12345678" ✗ 3. **No Results Returned**: - Check search query syntax - Try broader search terms - Verify field tags are correct 4. **Rate Limit Errors**: - Consider obtaining an NCBI API key - Reduce request frequency - Use batch operations when possible 5. **Full Text Not Available**: - Not all articles have full text in PMC - Check if article has a PMC ID - Some articles may be behind paywalls ## Research Use Cases - **Literature Review**: Comprehensive search across biomedical literature - **Citation Analysis**: Track citations and references for research impact - **Systematic Reviews**: Batch retrieval and analysis of multiple articles - **Meta-Analysis**: Collect data from multiple studies efficiently - **Research Trends**: Identify trending topics and recent publications - **Author Research**: Find all publications by specific researchers - **Journal Analysis**: Analyze publication patterns in specific journals - **MeSH-Based Discovery**: Precise medical subject searches ## Compliance & Ethics This server provides access to publicly available biomedical literature from PubMed. Users should: - Follow institutional policies for research and publication - Respect copyright and licensing terms for full-text articles - Cite sources appropriately in publications - Use data for legitimate research and educational purposes - Comply with NCBI's usage policies and rate limits ## License MIT License - See LICENSE file for details --- **Data Source**: PubMed/NCBI (https://pubmed.ncbi.nlm.nih.gov) **API Documentation**: https://www.ncbi.nlm.nih.gov/books/NBK25501/ **Server Version**: 1.0.0