UNPKG

@uh-joan/offx-mcp-server

Version:

OFF-X (Target Safety) MCP server for drug safety, adverse event, and target risk analytics.

116 lines (115 loc) 4.25 kB
#!/usr/bin/env node /** * OFFX MCP Server * * This server provides a bridge between the Model Context Protocol (MCP) and the OFFX (Target Safety) API. * It supports both MCP server mode (with stdio or SSE transport) and HTTP server mode for flexible integration. * * Environment Variables: * - OFFX_API_TOKEN: Required. API token for OFFX API authentication * - USE_HTTP: Optional. Set to 'true' to run as HTTP server (default: false) * - PORT: Optional. Port number for HTTP server (default: 3000) * - LOG_LEVEL: Optional. Logging level (default: 'info') * - TRANSPORT: Optional. MCP transport type ('stdio' or 'sse', default: 'stdio') * - SSE_PATH: Optional. Path for SSE endpoint when using SSE transport (default: '/mcp') * * # OFFX MCP Server - README * * This server exposes the following OFFX tools via MCP: * * ## Tools * * - offx_search_drugs: Search for drugs by name in the OFFX database * - Input: { drug: string } * * - offx_get_drug_alerts: Retrieve alerts for a drug by drug_id (with optional filters) * - Input: { * drug_id: string, * page?: number, * adverse_event_id?: string, * ref_source_type?: string, * alert_type?: string, * alert_phase?: string, * alert_level_evidence?: string, * alert_severity?: string, * alert_causality?: string, * alert_species?: string, * alert_date_from?: string, * alert_date_to?: string, * order_by_date?: string, * order_by_adv?: string * } * * - offx_get_drugs_by_action: Retrieve drugs by target and action ID * - Input: { target_id: string, action_id: string } * * - offx_get_drugs_by_adve: Retrieve drugs by adverse event ID * - Input: { adverse_event_id: string, page?: number } * * - offx_get_drug_score: Get drug score by drug id (and optionally adverse event id) * - Input: { drug_id: string, adverse_event_id?: string } * * - offx_search_adverse_events: Search adverse events by name in the OFFX database * - Input: { adverse_event: string } * * - offx_get_adverse_events: Get adverse events by drug id * - Input: { drug_id: string } * * - offx_get_adverse_events_by_target: Get adverse events by target id * - Input: { target_id: string } * * - offx_get_drug: Get drug masterview by drug id using the OFFX API. Supports optional filters. * - Input: { * drug_id: string, * page: number, * adverse_event_id?: string, * ref_source_type?: string, * alert_type?: string, * alert_phase?: string, * alert_level_evidence?: string, * alert_severity?: string, * alert_causality?: string, * alert_species?: string, * alert_date_from?: string, * alert_date_to?: string * } * * - offx_search_targets: Search targets by name in the OFFX database * - Input: { target: string } * * - offx_get_target: Get target masterview by target_id and action_id using the OFFX API. Supports optional filters. * - Input: { * target_id: string, * action_id: string, * page: number, * adverse_event_id?: string, * ref_source_type?: string, * alert_type?: string, * alert_phase?: string, * alert_level_evidence?: string, * alert_onoff_target?: string, * alert_severity?: string, * alert_causality?: string, * alert_species?: string, * alert_date_from?: string, * alert_date_to?: string * } * * - offx_get_targets: Get primary or secondary targets for a drug by drug_id, or targets by adverse_event_id. You must provide exactly one of: drug_id or adverse_event_id (not both, not neither). If drug_id is provided and type is not specified, it defaults to "primary". * - Input: { drug_id: string, type?: 'primary' | 'secondary', adverse_event_id?: string } * * ## Usage * * - MCP mode: Communicate via stdio (default) or SSE (experimental) * - HTTP mode: POST to /offx_search_drugs and other endpoints * * ## Example * * { * "tool": "offx_get_drug_alerts", * "arguments": { "drug_id": "140448", "alert_type": "serious" } * } * * See the tool schemas in the code for full details and examples. */ import 'dotenv/config';