alto84/research-mcp-server
If you are the rightful owner of research-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Research MCP Server is a comprehensive Model Context Protocol server designed to provide unified access to various academic research databases, including PubMed, FAERS, and academic web search sources. It is built with TypeScript and is designed for integration with AI assistants like Claude.
Research MCP Server
A comprehensive Model Context Protocol (MCP) server that provides unified access to academic research databases including PubMed, FAERS, and academic web search sources. Built with TypeScript and designed for integration with Claude and other AI assistants.
๐ Features
- ๐ฌ PubMed Integration: Search peer-reviewed biomedical literature via NCBI E-utilities
- ๐ FAERS Database Access: Query FDA Adverse Event Reporting System for drug safety data
- ๐ Academic Web Search: Aggregate results from Semantic Scholar, CrossRef, and arXiv
- โก Intelligent Caching: Multi-level caching with background refresh for performance
- ๐ก๏ธ Rate Limiting: Respect API limits with built-in throttling and retry mechanisms
- ๐ Plugin Architecture: Easily extend with new data sources
- ๐ Safety Analytics: Built-in drug safety analysis with demographic breakdowns
- ๐ฏ Smart Deduplication: Automatic result deduplication across sources
Installation
# Clone the repository
git clone <repository-url>
cd research-mcp-server
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Build the project
npm run build
Configuration
Edit .env
file with your API keys:
PUBMED_API_KEY=your_pubmed_api_key
PUBMED_EMAIL=your_email@example.com
SEMANTIC_SCHOLAR_API_KEY=your_semantic_scholar_api_key
# ... other API keys
๐ฏ Quick Start
Running the Server
# Production mode
npm start
# Development mode with auto-reload
npm run dev
# Test with MCP Inspector
npm run inspector
Basic Usage
-
Start the server:
npm run inspector
-
Open http://localhost:3000 in your browser
-
Try a sample query:
{ "name": "search_literature", "arguments": { "query": "COVID-19 vaccine efficacy", "sources": ["pubmed", "web"], "options": { "limit": 10 } } }
Available Tools
search_literature
Search across multiple academic databases:
{
"query": "COVID-19 vaccine efficacy",
"sources": ["pubmed", "web"],
"filters": {
"dateRange": {
"start": "2023-01-01",
"end": "2023-12-31"
},
"openAccessOnly": true
},
"options": {
"limit": 50,
"sortBy": "relevance"
}
}
analyze_drug_safety
Analyze drug safety data from FAERS:
{
"drugName": "aspirin",
"analysisType": "adverse_events",
"dateRange": {
"start": "2022-01-01",
"end": "2023-12-31"
}
}
Architecture
The server uses a modular monolith architecture with:
- Plugin System: Each data source is a self-contained plugin
- Service Layer: Shared services for caching, rate limiting, and retry logic
- MCP Interface: Standard MCP tool definitions for client compatibility
- Type Safety: Full TypeScript with Zod validation
๐งช Testing
# Run all tests
npm test
# Unit tests only
npm test:unit
# Integration tests only
npm test:integration
# Watch mode for development
npm test:watch
๐ง Development
Adding a New Plugin
- Create plugin directory:
src/plugins/your-plugin/
- Implement the
ResearchPlugin
interface - Register in
PluginManager
- Add corresponding MCP tool definitions
Code Quality
npm run lint
npm run format
npm run build
๐ Performance
- Caching: Results cached for 30min-2hrs depending on source
- Rate Limits: Automatic throttling for all APIs
- Parallel Execution: Multi-source searches run concurrently
- Smart Deduplication: Eliminates duplicate papers across sources
- Background Refresh: Cache refreshed proactively for popular queries
๐ Monitoring
Check system health with the health_check tool:
{
"name": "health_check",
"arguments": {}
}
This returns plugin status, response times, and cache statistics.
License
MIT