# Cortellis MCP Server
MCP Server for searching drugs and exploring ontology terms in the Cortellis database.
## Installation
```bash
# Using npm
npm install @uh-joan/cortellis-mcp-server
```
## Quick Start
1. Set up your environment variables:
```env
CORTELLIS_USERNAME=your_username
CORTELLIS_PASSWORD=your_password
USE_HTTP=true # Optional: run as HTTP server
PORT=3000 # Optional: specify port for HTTP server
```
2. Run the server:
```bash
# As MCP server
npx cortellis-mcp-server
# As HTTP server
USE_HTTP=true PORT=3000 npx cortellis-mcp-server
```
## Tools
1. `search_drugs`
- Search for drugs in the Cortellis database
- Optional Inputs:
- `query` (string) - Raw search query
- `company` (string) - Company developing the drug
- `indication` (string) - Active indications (e.g., obesity)
- `action` (string) - Target specific action (e.g., glucagon)
- `phase` (string) - Development status:
- Supports both short and descriptive formats:
- Short format: S, DR, CU, C1-C3, PR, R, L, OL, NDR, DX, W
- Descriptive format: "Phase 1 Clinical", "Phase 2 Clinical", "Phase 3 Clinical", "Launched", etc.
- Supports OR/AND operators: "C2 OR C3" or "Phase 2 Clinical OR Phase 3 Clinical"
- Examples:
- `phase: "C3"` (short format)
- `phase: "C2 OR C3"` (short format)
- `phase: "Phase 2 Clinical OR Phase 3 Clinical"` (descriptive format)
- `phase: "C2 AND C3"` (using AND operator)
- Status codes:
- S: Suspended
- DR: Discovery/Preclinical
- CU: Clinical (unknown phase)
- C1-C3: Phase 1-3 Clinical
- PR: Pre-registration
- R: Registered
- L: Launched
- OL: Outlicensed
- NDR: No Development Reported
- DX: Discontinued
- W: Withdrawn
- `phase_terminated` (string) - Last phase before NDR/DX
- Supports same formats and operators as `phase`
- Examples:
- `phase_terminated: "C2 OR CR"` (short format)
- `phase_terminated: "C2"` (short format)
- `phase_terminated: "Phase 2 Clinical"` (descriptive format)
- `phase_terminated: "C2 OR C3"` (multiple phases)
- `technology` (string) - Drug technology (e.g., small molecule)
- `drug_name` (string) - Name of the drug
- `country` (string) - Country of development
- `offset` (number) - For pagination
- Returns: JSON response with drug information and development status
2. `explore_ontology`
- Explore taxonomy terms in the Cortellis database
- Optional Inputs (at least one required):
- `term` (string) - Generic search term
- `category` (string) - Category to search within
- `action` (string) - Target specific action
- `indication` (string) - Disease/condition
- `company` (string) - Company name
- `drug_name` (string) - Drug name
- `target` (string) - Drug target
- `technology` (string) - Drug technology
- Returns: JSON response with matching taxonomy terms
3. `get_drug`
- Return the entire drug record with all available fields for a given identifier
- Required Input:
- `id` (string) - Drug Identifier
- Returns: JSON response with complete drug record
4. `get_drug_swot`
- Return SWOT analysis complementing chosen drug record
- Required Input:
- `id` (string) - Drug Identifier
- Returns: JSON response with SWOT analysis for the drug
5. `get_drug_financial`
- Return financial commentary and data (actual sales and consensus forecast)
- Required Input:
- `id` (string) - Drug Identifier
- Returns: JSON response with financial data and commentary
6. `get_company`
- Return the entire company record with all available fields for a given identifier
- Required Input:
- `id` (string) - Company Identifier
- Returns: JSON response with complete company record
7. `search_companies`
- Search for companies in the Cortellis database
- Optional Inputs:
- `query` (string) - Raw search query
- `company_name` (string) - Company name to search for
- `hq_country` (string) - Company headquarters country
- `deals_count` (string) - Count for all distinct deals where company is principal/partner
- Format: '<20' for less than 20 deals
- Format: '20' or '>20' for greater than 20 deals (default behavior)
- `indications` (string) - Top 10 indication terms
- `actions` (string) - Top 10 target-based action terms
- `technologies` (string) - Top 10 technologies terms
- `company_size` (string) - The size of a company based on market capitalization in billions USD
- Format: '<2' for less than $2B
- Format: '2' or '>2' for greater than $2B (default behavior)
- `status` (string) - Highest status of linked drugs
- `offset` (number) - For pagination
- Returns: JSON response with company information
## Features
- Direct access to Cortellis drug database
- Comprehensive drug development status search
- Ontology/taxonomy term exploration
- Detailed drug information retrieval
- SWOT analysis for drugs
- Financial data and forecasts
- Structured JSON responses
- Pagination support for large result sets
## HTTP API Endpoints
When running in HTTP mode (USE_HTTP=true), the following REST endpoints are available:
1. `POST /search_drugs`
- Search for drugs with optional filters
- Body: JSON object with search parameters (see `search_drugs` tool inputs)
2. `POST /explore_ontology`
- Search taxonomy terms
- Body: JSON object with search parameters (see `explore_ontology` tool inputs)
3. `GET /drug/:id`
- Get complete drug record by ID
- Parameters:
- `id`: Drug identifier
4. `GET /drug/:id/swot`
- Get SWOT analysis for a drug
- Parameters:
- `id`: Drug identifier
5. `GET /drug/:id/financial`
- Get financial data and forecasts for a drug
- Parameters:
- `id`: Drug identifier
6. `GET /company/:id`
- Get complete company record by ID
- Parameters:
- `id`: Company identifier
7. `POST /search_companies`
- Search for companies with optional filters
- Body: JSON object with search parameters (see `search_companies` tool inputs)
## Setup
### Environment Variables
The server requires Cortellis API credentials:
```env
CORTELLIS_USERNAME=your_username
CORTELLIS_PASSWORD=your_password
```
### Installing on Claude Desktop
Before starting make sure [Node.js](https://nodejs.org/) is installed on your desktop for `npx` to work.
1. Go to: Settings > Developer > Edit Config
2. Add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"cortellis": {
"command": "npx",
"args": [
"-y",
"@uh-joan/cortellis-mcp-server"
],
"env": {
"CORTELLIS_USERNAME": "your_username",
"CORTELLIS_PASSWORD": "your_password"
}
}
}
}
```
3. Restart Claude Desktop and start exploring drug development data!
## Build (for devs)
```bash
git clone https://github.com/uh-joan/cortellis-mcp-server.git
cd cortellis-mcp-server
npm install
npm run build
```
For local development:
```bash
# Copy example environment file
cp .env.example .env
# Edit .env with your credentials
vim .env # or use your preferred editor
# Start the server
npm run start
```
## Docker
```bash
docker build -t cortellis-mcp-server .
docker run -i --env-file .env cortellis-mcp-server
```
## License
This MCP server is licensed under the MIT License.
## Disclaimer
Cortellis™ is a commercial product and trademark of Clarivate Analytics. This MCP server requires valid Cortellis API credentials to function. To obtain credentials and learn more about Cortellis, please visit [Clarivate's Cortellis page](https://clarivate.com/products/cortellis/).
This project is not affiliated with, endorsed by, or sponsored by Clarivate Analytics. All product names, logos, and brands are property of their respective owners.
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/uh-joan/cortellis-mcp-server/tags).