research-mcp-server

alto84/research-mcp-server

3.2

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.

Tools
3
Resources
0
Prompts
0

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

  1. Start the server:

    npm run inspector
    
  2. Open http://localhost:3000 in your browser

  3. 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

  1. Create plugin directory: src/plugins/your-plugin/
  2. Implement the ResearchPlugin interface
  3. Register in PluginManager
  4. 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