Skip to main content
Glama
RowanErasmus

DailyMed MCP Server

by RowanErasmus

search_application_numbers

Find FDA drug application numbers (NDA, ANDA) by specific parameters like marketing category or set ID with paginated results for efficient searching.

Instructions

Search for FDA application numbers (NDA, ANDA, etc.) using various parameters with pagination support

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
application_numberNoSpecific drug application number (e.g., NDA022527)
marketing_category_codeNoMarketing category code for a drug
setidNoSet ID of a drug label
pageNoPage number for pagination (1-based, default: 1)
pageSizeNoNumber of results per page (default: 100, max: 100)

Implementation Reference

  • The core logic for searching application numbers, interacting with the DailyMed API.
    async searchApplicationNumbersAdvanced(params: ApplicationNumberSearchParams = {}): Promise<PaginatedApplicationNumberResponse> {
      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.application_number) queryParams.application_number = searchParams.application_number;
        if (searchParams.marketing_category_code) queryParams.marketing_category_code = searchParams.marketing_category_code;
        if (searchParams.setid) queryParams.setid = searchParams.setid;
    
        const response = await this.client.get("/applicationnumbers.json", {
          params: queryParams,
        });
    
        if (
          response.data &&
          response.data.data &&
          Array.isArray(response.data.data)
        ) {
          const applicationNumbers = response.data.data.map((item: any) => ({
            applicationNumber: item.application_number || item.applicationNumber,
            applicationNumberType: item.application_number_type || item.applicationNumberType,
            marketingCategoryCode: item.marketing_category_code || item.marketingCategoryCode,
            setId: item.setid,
          }));
    
          // Extract pagination metadata from API response
          const totalResults = response.data.metadata?.total_elements || applicationNumbers.length;
          const totalPages = Math.ceil(totalResults / pageSize);
    
          return {
            data: applicationNumbers,
            pagination: {
              page,
              pageSize,
              totalResults,
              totalPages,
              hasNextPage: page < totalPages,
              hasPreviousPage: page > 1,
            },
          };
        } else {
          throw new Error("Unexpected response structure for application number search");
        }
      } catch (error) {
        throw new Error(
          `Failed to search application numbers: ${error instanceof Error ? error.message : "Unknown error"}`,
        );
      }
    }
  • src/tools.ts:422-445 (registration)
    Tool definition and schema registration for search_application_numbers.
    name: "search_application_numbers",
    description: "Search for FDA application numbers (NDA, ANDA, etc.) using various parameters with pagination support",
    inputSchema: {
      type: "object",
      properties: {
        application_number: {
          type: "string",
          description: "Specific drug application number (e.g., NDA022527)",
        },
        marketing_category_code: {
          type: "string",
          description: "Marketing category code for a drug",
        },
        setid: {
          type: "string",
          description: "Set ID of a drug label",
        },
        page: {
          type: "number",
          description: "Page number for pagination (1-based, default: 1)",
          minimum: 1,
        },
        pageSize: {
          type: "number",
  • The request handler in the main server loop that maps the MCP tool call to the client implementation.
    case "search_application_numbers":
      const appNumParams: any = {};
      if (args.application_number)
        appNumParams.application_number =
          args.application_number as string;
      if (args.marketing_category_code)
        appNumParams.marketing_category_code =
          args.marketing_category_code as string;
      if (args.setid) appNumParams.setid = args.setid as string;
    
      // Add pagination parameters
      if (args.page) appNumParams.page = args.page as number;
      if (args.pageSize) appNumParams.pageSize = args.pageSize as number;
    
      const appNumResults = await this.client.searchApplicationNumbersAdvanced(appNumParams);

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