get_all_drug_classes
Retrieve all drug classes from the FDA DailyMed database with pagination support for comprehensive pharmacologic classification access.
Instructions
Get all available drug classes in the DailyMed database with pagination support
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (1-based, default: 1) | |
| pageSize | No | Number of results per page (default: 100, max: 100) |
Implementation Reference
- src/clients/drug-class-client.ts:38-96 (handler)The core implementation for searching and retrieving drug classes from the DailyMed API.
async searchDrugClassesAdvanced(params: DrugClassSearchParams = {}): Promise<PaginatedDrugClassResponse> { const { page = 1, pageSize = 100, ...searchParams } = params; validatePaginationParams(page, pageSize, 100); try { const queryParams: any = { page, pagesize: Math.min(pageSize, 100), // API max is 100 }; // Add search filters if (searchParams.drug_class_code) queryParams.drug_class_code = searchParams.drug_class_code; if (searchParams.drug_class_coding_system) queryParams.drug_class_coding_system = searchParams.drug_class_coding_system; if (searchParams.class_code_type) queryParams.class_code_type = searchParams.class_code_type; if (searchParams.class_name) queryParams.class_name = searchParams.class_name; if (searchParams.unii_code) queryParams.unii_code = searchParams.unii_code; const response = await this.client.get("/drugclasses.json", { params: queryParams, }); if ( response.data && response.data.data && Array.isArray(response.data.data) ) { const drugClasses = response.data.data.map((item: any) => ({ drugClassName: item.name, drugClassCode: item.code, drugClassCodingSystem: item.codingSystem, classCodeType: item.type, uniiCode: item.unii_code, })); // Extract pagination metadata from API response const totalResults = response.data.metadata?.total_elements || drugClasses.length; const totalPages = Math.ceil(totalResults / pageSize); return { data: drugClasses, pagination: { page, pageSize, totalResults, totalPages, hasNextPage: page < totalPages, hasPreviousPage: page > 1, }, }; } else { throw new Error("Unexpected response structure for drug class search"); } } catch (error) { throw new Error( `Failed to search drug classes: ${error instanceof Error ? error.message : "Unknown error"}`, ); } } - src/clients/drug-class-client.ts:29-31 (handler)The specific handler function for 'get_all_drug_classes' which delegates to the advanced search method.
async getAllDrugClasses(page: number = 1, pageSize: number = 100): Promise<PaginatedDrugClassResponse> { return this.searchDrugClassesAdvanced({ page, pageSize }); } - src/tools.ts:104-122 (registration)Definition and registration of the 'get_all_drug_classes' tool in the MCP tool list.
name: "get_all_drug_classes", description: "Get all available drug classes in the DailyMed database with pagination support", inputSchema: { type: "object", properties: { page: { type: "number", description: "Page number for pagination (1-based, default: 1)", minimum: 1, }, pageSize: { type: "number", description: "Number of results per page (default: 100, max: 100)", minimum: 1, maximum: 100, }, }, }, },