FDA数据检索服务器

一个全面的模型上下文协议(MCP)服务器,提供对FDA(食品和药物管理局)设备相关API的访问,支持获取和分析FDA设备数据,包括510(k)许可、设备分类、预市场批准、召回、不良事件等。

  • by vrushabh-rajaghatta
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Vrushi007/fda-apis-mcp-server

使用说明

FDA数据检索器MCP服务器

一个全面的模型上下文协议(MCP)服务器,提供对各种FDA(食品和药物管理局)设备相关API的访问。该服务器使用户能够获取和分析FDA设备数据,包括510(k)许可、设备分类、上市前批准、召回、不良事件等。

🚀 特性

美国食品药品监督管理局数据检索器提供访问 8个主要的FDA设备数据库 随着 16种专用工具:

可用的FDA终点

  1. 510(k)许可 -医疗器械许可
  2. 设备分类 -美国食品药品监督管理局设备分类和监管要求
  3. 上市前批准(PMA) -高风险设备批准
  4. 唯一设备标识符(UDI) -设备标识数据库
  5. 注册与上市 -制造商/机构注册
  6. 设备召回 -安全相关设备召回
  7. 新冠肺炎血清学检测 -新冠肺炎检测评估
  8. 器械不良事件 -安全事件报告

工具类型

每个端点提供两种类型的工具:

  • 提取工具:检索具有完整详细信息的实际记录
  • 计数工具:按特定字段聚合和计数数据

📋 需求

  • python: >=3.10
  • 依赖项:
    • httpx>=0.28.1 (用于异步HTTP请求)
    • mcp[cli]>=1.13.1 (MCP框架)

🛠️ 安装

1.克隆或下载项目

git clone <repository-url>
cd fda_data_retriever

2.安装依赖项

使用紫外线(推荐):

uv sync

或者使用pip:

pip install -r requirements.txt

🎯 用法

运行服务器

单独模式

uv run main.py

MCP配置

添加到MCP配置文件(mcp.json):

{
  "servers": {
    "fda-data-retriever": {
      "command": "/opt/homebrew/bin/uv",
      "args": ["--directory", "/path/to/fda_data_retriever", "run", "main.py"]
    }
  }
}

可用工具

510(k)许可

  • fetch_510k_device_data() -获取510(k)的通关记录
  • count_510k_device_data() -按字段统计510(k)个数据

设备分类

  • fetch_device_classification_data() -获取设备分类记录
  • count_device_classification_data() -统计分类数据

上市前批准(PMA)

  • fetch_pma_device_data() -获取PMA批准记录
  • count_pma_device_data() -统计PMA数据

唯一设备标识符(UDI)

  • fetch_udi_device_data() -获取UDI设备记录
  • count_udi_device_data() -计算UDI数据

注册与上市

  • fetch_registrationlisting_data() -获取注册/上市记录
  • count_registrationlisting_data() -统计注册数据

设备召回

  • fetch_device_recall_data() -获取设备召回记录
  • count_device_recall_data() -统计召回数据

新冠肺炎血清学检测

  • fetch_covid19serology_data() -获取新冠肺炎检测评估记录
  • count_covid19serology_data() -统计新冠肺炎检测数据

器械不良事件

  • fetch_device_event_data() -获取不良事件记录
  • count_device_event_data() -统计不良事件数据

📖 查询示例

基本抓取

# Get recent 510(k) approvals
fetch_510k_device_data(limit=10, sort="decision_date:desc")

# Get Class II devices
fetch_device_classification_data(search="device_class:2", limit=20)

# Get recent recalls
fetch_device_recall_data(sort="recall_initiation_date:desc", limit=15)

高级搜索

# Search by company
fetch_510k_device_data(search="applicant:medtronic", limit=25)

# Search by date range
fetch_pma_device_data(
    search="decision_date:[2020-01-01+TO+2023-12-31]",
    limit=50
)

# Search for specific device types
fetch_device_event_data(search="device.generic_name:pacemaker", limit=30)

计数和分析

# Count 510(k) approvals by company
count_510k_device_data(count_field="applicant")

# Count devices by medical specialty
count_device_classification_data(count_field="medical_specialty_description")

# Count recalls by classification
count_device_recall_data(count_field="classification")

复杂过滤

# Count cardiovascular PMA devices
count_pma_device_data(
    count_field="device_name",
    search="advisory_committee:cardiovascular"
)

# Get adverse events for a specific manufacturer
fetch_device_event_data(
    search="manufacturer_name:abbott",
    limit=100,
    sort="date_received:desc"
)

🏗️ 项目结构

fda_data_retriever/
├── main.py                          # Main MCP server entry point
├── fda_device_apis/                 # FDA API modules package
│   ├── __init__.py                  # Package initialization
│   ├── fda_510k.py                 # 510(k) clearance tools
│   ├── fda_classification.py        # Device classification tools
│   ├── fda_pma.py                  # Pre-market approval tools
│   ├── fda_udi.py                  # UDI tools
│   ├── fda_registrationlisting.py  # Registration & listing tools
│   ├── fda_recall.py               # Device recall tools
│   ├── fda_covid19serology.py      # COVID-19 testing tools
│   └── fda_event.py                # Adverse event tools
├── pyproject.toml                   # Project configuration
├── uv.lock                         # Dependencies lock file
└── README.md                       # This file

🔍 搜索语法

FDA API使用Lucene-style搜索语法:

日期范围

decision_date:[2020-01-01+TO+2023-12-31]
recall_initiation_date:[2022-01-01+TO+*]

精确匹配

applicant:"Medtronic Inc"
device_class:2

通配符

device_name:*catheter*
manufacturer:abbott*

布尔运算

applicant:medtronic+AND+device_class:2
device_name:stent+OR+device_name:catheter

🚦 速率限制和分页

  • 每次请求的最大限制:1000条记录
  • 默认限制:5条记录
  • 分页:使用 skip 分页参数
  • 不要求进行验证:美国食品药品监督管理局API是公开的

🐛 故障排除

常见问题

  1. 导入错误:确保你使用的Python>=3.10
  2. 网络超时:美国食品药品监督管理局的原料药可能很慢;考虑较小的批量
  3. 搜索语法:有关复杂的查询,请参阅FDA API文档

调试模式

# Run with verbose output
uv run main.py --verbose

📚 FDA API参考文献

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🔗 相关项目

📧 支持

如有疑问或问题:

  1. 检查 FDA API文件
  2. 在此存储库中打开问题
  3. 联系维护人员

备注:此工具可访问公共FDA数据。出于监管或合规目的,始终通过美国食品药品监督管理局官方渠道核实关键信息。