Skip to main content
Glama
RowanErasmus

DailyMed MCP Server

by RowanErasmus

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
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-based, default: 1)
pageSizeNoNumber of results per page (default: 100, max: 100)

Implementation Reference

  • 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"}`,
        );
      }
    }
  • 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,
          },
        },
      },
    },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RowanErasmus/dailymed-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server