Content
# MedixHub Model Context Protocol (MCP) Server
A Model Context Protocol (MCP) server with integrated medical and healthcare API access through MedixHub.
## Features
- Pure JavaScript implementation
- Exposes functions with standardized MCP metadata
- Executes functions with parameter validation
- Seamlessly integrates with LLMs like Ollama
- Secure API endpoints with authentication
- Supports streaming responses
## Implemented Functions
The server includes JavaScript implementations of these functions:
1. **executeOpenTargetQuery** - Executes GraphQL queries against the OpenTarget API
2. **FDADrugLabelSearch** - Retrieves drug information from the FDA database
3. **get_drug_generic_name** - Maps between generic and brand drug names
4. **MonarchSearch** - Searches the Monarch database for genes, diseases, or phenotypes
5. **MonarchDiseasesForMultiplePhenotypes** - Finds diseases matching multiple phenotypes
### OpenTarget Functions
- Disease information lookup
- Drug details and associations
- Target (gene/protein) information
- Disease-target associations
- Drug-disease relationships
### FDA Drug Label Functions
- Drug information search
- Generic and brand name mapping
- Adverse reactions lookup
- Drug interactions search
### Monarch Database Functions
- Biomedical entity search
- Disease-phenotype associations
- Gene-phenotype relationships
- Multi-phenotype disease finder
## Getting Started
### Prerequisites
- Node.js 14 or later
- npm or yarn
### Installation
1. Clone the repository
```bash
git clone https://github.com/yourusername/medixhub-mcp-server.git
cd medixhub-mcp-server
```
2. Install dependencies
```bash
npm install
```
3. Configure environment variables
```bash
cp .env.example .env
# Edit .env with your settings
```
4. Start the server
```bash
npm start
```
For development with auto-reload:
```bash
npm run dev
```
## Usage
### Execute API
Use the `/execute` endpoint to run any registered MedixHub function:
```http
POST /execute
Content-Type: application/json
{
"name": "queryFDADrugLabel",
"parameters": {
"searchFields": {
"drug_name": ["openfda.brand_name", "openfda.generic_name"]
},
"returnFields": ["openfda.generic_name", "warnings"],
"arguments": {
"drug_name": "ibuprofen",
"limit": 1
}
}
}
```
### Direct MedixHub API
Use the `/medixhub` endpoints for direct API access:
- `/medixhub/opentargets`
- `/medixhub/opentargets-genetics`
- `/medixhub/drug-by-name`
- `/medixhub/fda-drug-label`
- `/medixhub/drug-generic-name`
- `/medixhub/monarch`
- `/medixhub/diseases-for-phenotypes`
### Function Metadata
Get information about available functions:
- `/functions` - All available functions
- `/functions/medixhub` - MedixHub-specific functions
- `/functions/category/:category` - Functions by category
## API Documentation
Full API documentation is available at `/functions/medixhub`
## Development
### Project Structure
```
medixhub-mcp-server/
├── server.js # Main server file
├── src/
│ ├── medixhub/ # MedixHub integration
│ ├── middleware/ # Middleware
│ ├── routes/ # Route handlers
│ └── services/ # Services
├── examples/ # Usage examples
└── tests/ # Test suite
```
### Adding New Functions
To add a new function to the registry:
```javascript
const { registerFunction } = require('./src/services/functionRegistry');
registerFunction('myNewFunction', {
name: 'myNewFunction',
description: 'Description of what this function does',
parameters: {
// Parameter schema
},
function: async (params) => {
// Implementation
return result;
}
});
```
### Running Tests
```bash
npm test
```
## Authentication
The server supports two authentication methods:
1. **API Keys**: Simple key-based authentication
2. **JWT Tokens**: More granular access control
In production mode, authentication is required for all endpoints except function discovery.
## Environment Variables
Configure the server through the following environment variables:
- `PORT`: Server port (default: 3000)
- `NODE_ENV`: Environment ('development' or 'production')
- `OLLAMA_API_URL`: URL for Ollama API
- `API_KEYS`: Comma-separated list of valid API keys
- `FDA_API_KEY`: API key for FDA drug database
See `.env.example` for all available options.
## Performance Considerations
- The server uses asynchronous processing for all API calls
- Rate limiting is enabled to prevent abuse
- Timeout handling prevents hanging requests
- Memory usage is optimized by processing streams efficiently
## License
This project is licensed under the MIT License - see the LICENSE file for details.
Connection Info
You Might Also Like
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
markitdown
Python tool for converting files and office documents to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
Train-in-Silence
The first Task-Aware MCP server and automated VRAM calculator for LLM...
miniapp-cdp-mcp
WeChat Mini Program reverse engineering MCP server, enabling your AI coding...
ai-agent-handbook
Comprehensive guide to AI agent engineering: how 30+ frameworks actually...