OpenFDA Drug Label MCP Server
Server Quality Checklist
Latest release: v1.0.1
- Disambiguation3/5
The three specific getters (adverse reactions, warnings, indications) are clearly distinct, but search_drug_labels and ae_pipeline_rag both fetch broad drug label data, creating some overlap. The descriptions help distinguish them (general search vs. advanced safety pipeline), but the boundary is not entirely sharp.
Naming Consistency4/5Most tools follow a consistent verb_noun pattern (search_drug_labels, get_drug_adverse_reactions, get_drug_warnings, get_drug_indications). The outlier is ae_pipeline_rag, which uses an acronym and lacks a verb, making it a minor deviation from the otherwise predictable naming convention.
Tool Count5/5With 5 tools, the server is well-scoped for its purpose of querying FDA drug labels. Each tool covers a meaningful aspect (general search, specific sections, and a comprehensive pipeline) without excessive redundancy or missing core functionality.
Completeness4/5The tool set covers the primary drug safety sections (adverse reactions, warnings, indications) and provides a full search capability. Minor gaps exist (e.g., no explicit contraindications or dosage getter), but agents can retrieve these via search_drug_labels or ae_pipeline_rag, so the surface is not severely incomplete.
Average 3.5/5 across 5 of 5 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under GPL 3.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does state that the tool searches and returns labeling information including specific sections, which makes it clear this is a read-only operation and hints at output content. However, it omits details about result format, pagination/limit behavior, API constraints, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the action and purpose front-loaded ('Search FDA drug labels using OpenFDA API') and the return content summarized immediately. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four optional parameters, all fully described in the schema, and the description states the output content, which makes it minimally viable. However, with no output schema and no annotations, the description could have been more complete by explaining pagination/limit interplay, clarifying the response structure, or distinguishing this from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all four parameters with descriptions, defaults, and examples (100% schema description coverage), including clear examples for 'search' and 'count'. The tool description itself adds no additional parameter semantics beyond indicating the general search capability, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Search FDA drug labels using OpenFDA API') and lists the categories of returned information (indications, contraindications, warnings, adverse reactions). However, it does not explicitly differentiate this general label search from sibling tools like get_drug_warnings or get_drug_indications, which cover similar content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools such as get_drug_warnings, get_drug_indications, and get_drug_adverse_reactions exist but are not referenced, and there are no exclusion criteria or preferred contexts described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the tool's function and source without detailing potential multiple records, matching behavior, pagination limits (beyond the schema), or any restrictions. This leaves the agent with insufficient information about how the tool actually behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource. Every word earns its place, with no superfluous information or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should clarify the response format or behavioral nuances. It only says 'adverse reactions information' without specifying whether the response is a list, a structured object, or raw text, leaving the agent without adequate expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides complete descriptions for both parameters (100% coverage), so the description adds no additional meaning. It does not explain how drug_name is matched or what limit controls in terms of output, which is acceptable given the schema's thoroughness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('adverse reactions information'), and the specific scope ('for a specific drug from FDA labels'). This effectively distinguishes it from sibling tools like get_drug_warnings and get_drug_indications, which target different aspects of drug labels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need adverse reactions for a drug) but provides no explicit guidance on when not to use it or how it compares to alternatives like search_drug_labels or get_drug_warnings. The intended use is clear from the context, but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the high-level purpose and does not disclose that the tool can return multiple records (as suggested by the 'limit' parameter), the structure of the response, or any error behavior. The 'from FDA labels' detail adds source context but no operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core purpose without any extraneous wording. It is concise and well-structured, making it easy for an agent to quickly grasp the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's apparent simplicity, the absence of an output schema and annotations places a higher burden on the description. The description does not explain that the tool returns potentially multiple records (the 'limit' parameter implies this), nor does it describe the return format or any limitations. This leaves gaps for an agent trying to predict the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'drug_name' and 'limit' already described in the schema. The tool description adds no additional parameter meaning beyond what the schema provides, so the baseline score of 3 applies. There is no missing parameter information that the description needs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get indications and usage information for a specific drug from FDA labels.' The verb 'Get' is specific, the resource ('indications and usage information for a specific drug') is well-defined, and the source ('FDA labels') adds context. The tool is easily distinguishable from siblings like get_drug_adverse_reactions and get_drug_warnings, which target different data categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when seeking indications/usage for a specific drug, but it does not explicitly state when to use this tool versus alternatives like search_drug_labels or ae_pipeline_rag. No exclusions or alternative recommendations are provided, leaving the usage context implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only says 'Get', which implies a read operation, but does not mention pagination, return limits, or potential side effects. This leaves the agent without essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without unnecessary words, making it highly efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description states the core function but does not explain the return structure or how 'limit' affects results. Since there is no output schema, the agent may be under-informed about response format, making it minimally sufficient but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no information about parameters beyond the schema, which already documents both 'drug_name' and 'limit' with 100% coverage. The schema handles parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'warnings and precautions' for a specific drug from FDA labels, which distinguishes it from sibling tools like get_drug_adverse_reactions and get_drug_indications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case for a specific drug, but does not explicitly compare with alternative tools or provide exclusion criteria. It gives clear context without explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the multi-step behavioral nature (fetch, extract, chunk, retrieve, summarize) and the intent to avoid truncation, but omits details like output format, potential external API calls, latency, or side effects. This is moderate disclosure, not rich enough for a 4 but above a 2.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two front-loaded sentences. The first states the core purpose, and the second elaborates with a clear list of actions and a rationale. Every clause adds value, with no fluff. It is an efficient, well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-step RAG, 5 parameters, no output schema), the description is incomplete. It does not specify the return format (summary vs. chunks vs. both), nor does it explain how the pipeline uses each parameter. An agent needs more detail to safely invoke and interpret results. The 'prevent truncation' note is helpful but insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-specific meaning beyond the schema. It does not explain how parameters like 'drug', 'query', or 'filters' interact, so it neither enhances nor detracts from the schema's clarity. A score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is an 'Advanced RAG pipeline for drug safety analysis' that 'fetches, extracts, chunks, retrieves and summarizes FDA drug label data'. This specific verb list distinguishes it from the more focused sibling tools (e.g., get_drug_warnings) by promising an end-to-end analysis in one call, making its unique purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when a comprehensive, non-truncated analysis is needed ('in one call to prevent LLM response truncation'). It gives clear context for use but does not explicitly mention alternatives or exclusions, such as when to prefer a simpler sibling like get_drug_adverse_reactions. Thus it meets the 'clear context, no exclusions' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/BACH-AI-Tools/mcp-openfda'
If you have feedback or need assistance with the MCP directory API, please join our Discord server