FastMCP Server Template
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FastMCP Server Templateshow me how to add a new tool to the server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FDA MCP Server
An MCP (Model Context Protocol) server that provides FDA medical device verification capabilities for prior authorization workflows. Queries the FDA 510(k) database to verify device clearance status and make PA approval decisions.
Features
Device Search: Search FDA 510(k) database by K-number, device name, manufacturer, or product code
Fuzzy Matching: Intelligent fuzzy search with confidence scoring when exact identifiers aren't available
PA Verification: Analyze FDA search results and make prior authorization approval decisions
Confidence Scoring: Each result includes confidence scores based on match quality
OpenShift Deployment: Production-ready deployment to Red Hat OpenShift
Related MCP server: FastMCP Demo Server
Tools
search_fda_device
Unified FDA search tool that accepts any combination of identifiers or descriptive information.
Parameters:
device_identifiers(optional): FDA identifiers (k_number, pma_number, product_code, udi)device_description(optional): Device info for fuzzy search (device_name, manufacturer)search_options(optional): Search options (fuzzy_search, max_results)
Search Strategies (in priority order):
K-number exact match (confidence: 1.0)
Product code + fuzzy name (confidence: 0.75-0.9)
Fuzzy name/manufacturer search (confidence: 0.5-0.6)
Example:
# Exact K-number search
result = await client.call_tool("search_fda_device", {
"device_identifiers": {"k_number": "K223677"}
})
# Fuzzy search by device name
result = await client.call_tool("search_fda_device", {
"device_description": {
"device_name": "Lexie Lumen",
"manufacturer": "hearX"
},
"search_options": {"fuzzy_search": True}
})
# Search by product code (hearing aids)
result = await client.call_tool("search_fda_device", {
"device_identifiers": {"product_code": "QUH"}, # OTC hearing aids
"device_description": {"device_name": "hearing aid"}
})verify_fda_approval
Analyze FDA search results and make PA approval decision with structured reasoning.
Parameters:
fda_search_results: Results fromsearch_fda_devicetoolpa_requirements(optional): PA requirements (required_device_class, require_otc, require_cleared_or_approved)
Returns:
Approval decision (approve/deny)
Requirements check details
Human-readable reasoning
Action items for next steps
Example:
# First search for the device
search_result = await client.call_tool("search_fda_device", {
"device_identifiers": {"k_number": "K223677"}
})
# Then verify for PA approval
verification = await client.call_tool("verify_fda_approval", {
"fda_search_results": search_result["data"]["results"],
"pa_requirements": {
"required_device_class": "2",
"require_otc": True,
"require_cleared_or_approved": True
}
})Quick Start
Local Development
# Install dependencies
make install
# Run locally with STDIO transport
make run-local
# Test with cmcp
cmcp ".venv/bin/python -m src.main" tools/listDeploy to OpenShift
# One-command deployment
make deploy
# Or deploy to specific project
make deploy PROJECT=davinci-mcpProduct Codes Reference
Common FDA product codes for hearing devices:
Code | Description |
QUH | OTC Self-Fitting Air-Conduction Hearing Aid |
OSM | Prescription Hearing Aid |
LYY | Cochlear Implant System |
Response Schema
All tools return structured responses:
{
"success": true,
"data": {
"search_strategy": "identifier",
"results": [...],
"result_count": 1
},
"warnings": [],
"confidence": 1.0,
"metadata": {
"execution_time_ms": 245,
"data_source": "FDA 510(k) Database",
"search_type": "k_number_exact"
}
}Environment Variables
MCP_TRANSPORT- Transport type (stdio/http)MCP_HTTP_HOST- HTTP host (default: 0.0.0.0)MCP_HTTP_PORT- HTTP port (default: 8080)MCP_HTTP_PATH- HTTP endpoint path (default: /mcp/)
Related Projects
pa-workflow-simple - Prior authorization workflow system that uses this MCP server
fhir-mcp - FHIR patient data MCP server
License
MIT License - see LICENSE for details.
Available Tools
1 toolsearch_fda_deviceBRead-onlyIdempotent
Unified FDA search tool that accepts any combination of identifiers or descriptive information. Automatically determines optimal search strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| device_identifiers | No | FDA identifiers if available (k_number, pma_number, product_code, udi) | |
| device_description | No | Device descriptive information for fuzzy search (device_name, manufacturer) | |
| search_options | No | Search options (fuzzy_search, max_results) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds that it 'automatically determines optimal search strategy', which provides useful behavioral context beyond annotations, but doesn't detail rate limits, authentication needs, or other traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that efficiently convey the tool's purpose and key feature. It's front-loaded with the main action and could be slightly improved by structuring usage hints, but it's well-sized with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has annotations covering safety and idempotency, 100% schema coverage, and an output schema (which means return values are documented elsewhere), the description is reasonably complete. It adds value by explaining the unified search approach, though it lacks usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the three parameters. The description mentions 'identifiers or descriptive information' and 'automatically determines optimal search strategy', which adds some high-level context but no specific semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'search' operation on FDA devices and accepts 'any combination of identifiers or descriptive information', which is specific. However, it doesn't distinguish from siblings since there are none, so it can't achieve the highest score for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, prerequisites, or specific scenarios. It only mentions it 'automatically determines optimal search strategy', which is a feature but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.3.0- First observed
search_fda_device
TDQS
With only one tool, there is no possibility of confusion or overlap between tools. The tool has a clear and distinct purpose focused on FDA device searches.
The single tool name follows a consistent verb_noun pattern (search_fda_device), and with no other tools to compare, there is no inconsistency. The naming is straightforward and descriptive.
A single tool is too few for most practical server purposes, as it severely limits functionality and scope. This feels thin and incomplete for any domain beyond a trivial or highly specialized use case.
The tool set is severely incomplete; with only one search tool, there are obvious gaps such as create, update, delete, or other CRUD operations. It lacks coverage for any meaningful lifecycle or domain workflows beyond basic searching.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for progressive tool usage at any scale (see https://klavis.ai)
A MCP server built for developers enabling Git based project management with project and personal…
MCP Server for JFrog, providing tools for development and artifact management.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA basic MCP server template that provides a foundation for building custom tools, resources, and prompts. Serves as a starting point for developers to create their own MCP server functionality.-
- FlicenseAqualityDmaintenanceA production-ready MCP server that provides hackathon resources and reusable starter prompts. Built with FastMCP framework and includes comprehensive deployment options for development and production environments.1-
- AlicenseNot gradedqualityDmaintenanceA production-ready Python template for building MCP servers with enterprise features including registry integration, configuration management, structured logging, and extensible patterns for tools, resources, and prompts.MIT
- AlicenseNot gradedqualityBmaintenanceA production-ready Model Context Protocol server template in TypeScript that enables building MCP servers with dynamic tool registration, dual transport (stdio + HTTP), and pluggable authentication.15MIT
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/rdwj/fda-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server