Token导航 LogoToken导航TokenDH.com
fda MCP logo
AI代理stdio官方级别未说明来源级核验

fda MCP

MCP Server

一个通过OpenFDA API和直接FDA文档检索提供LLM优化访问的MCP服务器,覆盖所有21个OpenFDA端点和监管决策文档。

工具数

4

提示词数

0

GitHub Stars

1

资源数

0
数据检索PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Limecooler

提供方

Limecooler

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx fda-mcp

详细介绍

FDA MCP服务器

![PyPI](https://pypi.org/project/fda-mcp/) ![Python](https://pypi.org/project/fda-mcp/) ![License: MIT](https://opensource.org/licenses/MIT)

主控程序 通过LLM优化访问FDA数据的服务器 OpenFDA API 以及直接检索美国食品药品监督管理局的文件。涵盖所有21个OpenFDA终点和监管决定文件(510(k)摘要、De Novo决定、PMA批准函)。

快速开始

无需克隆或本地构建。安装 紫外线 直接从 PyPI:

uvx fda-mcp

就是这样。服务器在stdio上启动,并为任何MCP客户端做好准备。

使用Claude Desktop

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "fda": {
      "command": "uvx",
      "args": ["fda-mcp"],
      "env": {
        "OPENFDA_API_KEY": "your-key-here"
      }
    }
  }
}

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

使用Claude代码

直接从命令行添加:

claude mcp add fda -- uvx fda-mcp

要包含API密钥以获得更高的速率限制,请执行以下操作:

claude mcp add fda -e OPENFDA_API_KEY=your-key-here -- uvx fda-mcp

或者使用以下命令在Claude Code中交互式添加 /mcp 斜线命令。

API密钥(可选)

OPENFDA_API_KEY 环境变量是可选的。没有它,你每分钟会收到40个请求。使用免费密钥 open.fda.gov 你每分钟收到240个请求。

特性

  • 4个MCP工具 --一个统一的搜索工具,计数/聚合、字段发现和文档检索
  • 3 MCP资源 查询语法帮助、端点参考和字段发现
  • 所有21个OpenFDA终点 通过单一途径访问 search_fda 工具与a dataset 参数
  • 服务器说明 --查询语法和常见错误会自动注入到每个LLM上下文中
  • 可操作的错误消息 --内联语法帮助、故障排除提示,以及 .exact 后缀警告
  • 美国食品药品监督管理局决定文件 --从510(k)摘要、De Novo决策、PMA批准、SSED和补充中下载并提取文本
  • OCR回退 用于扫描的PDF文档(较旧的FDA提交文件)
  • 上下文高效响应 --汇总输出、按需字段发现、分页指导

工具

工具目的
search_fda搜索21个OpenFDA数据集中的任何一个。这 dataset 参数选择端点(例如。, drug_adverse_events, device_510k, food_recalls).接受 search, limit, skip,以及 sort.
count_records对任何端点进行聚合查询。返回值包括百分比和叙述性摘要。警告: .exact 文本字段上缺少后缀。
list_searchable_fields返回任何端点的可搜索字段名。如果不确定字段名称,请在搜索前致电。
get_decision_document获取FDA监管决定PDF文件并提取文本。支持510(k)、De Novo、PMA、SSED和补充文件。

数据集值 search_fda

类别数据集
药物drug_adverse_events, drug_labels, drug_ndc, drug_approvals, drug_recalls, drug_shortages
设备device_adverse_events, device_510k, device_pma, device_classification, device_recalls, device_recall_details, device_registration, device_udi, device_covid19_serology
食物food_adverse_events, food_recalls
其他historical_documents, substance_data, unii, nsde

资源(3)

URI内容
fda://reference/query-syntaxOpenFDA查询语法:AND/OR/NOT、通配符、日期范围、精确匹配
fda://reference/endpoints所有21个端点都有描述
fda://reference/fields/{endpoint}每个端点字段引用

查询示例

连接后,您可以问Claude以下问题:

  • “搜索与OZEMPIC相关的不良事件”
  • “查找2024年以来的所有I类设备召回”
  • “LIPITOR最常见的不良反应是什么?”
  • “获取K213456的510(k)摘要”
  • “搜索心血管设备的PMA批准”
  • “辉瑞公司召回了多少药品?按类别分列。”
  • “查找二甲双胍的药物标签并总结警告”
  • “雅培提交了哪些新冠肺炎血清学检测?”

配置

所有配置都是通过环境变量进行的:

变量默认值描述
OPENFDA_API_KEY*(无)*API键用于更高的速率限制(240和40请求/分钟)
OPENFDA_TIMEOUT30HTTP请求超时(秒)
OPENFDA_MAX_CONCURRENT4最大并发API请求数
FDA_PDF_TIMEOUT60PDF下载超时(秒)
FDA_PDF_MAX_LENGTH8000从PDF中提取的默认最大文本字符数

OpenFDA查询语法

search 所有工具上的参数都使用OpenFDA查询语法:

# AND
patient.drug.openfda.brand_name:"ASPIRIN"+AND+serious:1

# OR (space = OR)
brand_name:"ASPIRIN" brand_name:"IBUPROFEN"

# NOT
NOT+classification:"Class III"

# Date ranges
decision_date:[20230101+TO+20231231]

# Wildcards (trailing only, min 2 chars)
device_name:pulse*

# Exact matching (required for count queries)
patient.reaction.reactionmeddrapt.exact:"Nausea"

使用 list_searchable_fieldsfda://reference/query-syntax 资源以获取完整参考。

安装选项

来自PyPI(推荐)

# Run directly without installing
uvx fda-mcp

# Or install as a persistent tool
uv tool install fda-mcp

# Or install with pip
pip install fda-mcp

来源

git clone https://github.com/Limecooler/fda-mcp.git
cd fda-mcp
uv sync
uv run fda-mcp

可选:扫描PDF的OCR支持

许多较旧的美国食品药品监督管理局文件(2010年之前)都是扫描图像。要从中提取文本,请执行以下操作:

# macOS
brew install tesseract poppler

# Linux (Debian/Ubuntu)
apt install tesseract-ocr poppler-utils

没有这些,服务器仍然可以工作——当它遇到无法读取的扫描文档时,它会返回一条有用的消息。

发展

# Install with dev dependencies
git clone https://github.com/Limecooler/fda-mcp.git
cd fda-mcp
uv sync --all-extras

# Run unit tests (187 tests, no network)
uv run pytest

# Run integration tests (hits real FDA API)
OPENFDA_TIMEOUT=60 uv run pytest -m integration

# Run a specific test file
uv run pytest tests/test_endpoints.py -v

# Start the server directly
uv run fda-mcp

项目结构

src/fda_mcp/
├── server.py              # FastMCP server entry point
├── config.py              # Environment-based configuration
├── errors.py              # Custom error types
├── openfda/
│   ├── endpoints.py       # Enum of all 21 endpoints
│   ├── client.py          # Async HTTP client with rate limiting
│   └── summarizer.py      # Response summarization per endpoint
├── documents/
│   ├── urls.py            # FDA document URL construction
│   └── fetcher.py         # PDF download + text extraction + OCR
├── tools/
│   ├── _helpers.py        # Shared helpers (limit clamping)
│   ├── search.py          # search_fda tool (all 21 endpoints)
│   ├── count.py           # count_records tool
│   ├── fields.py          # list_searchable_fields tool
│   └── decision_documents.py
└── resources/
    ├── query_syntax.py    # Query syntax reference
    ├── endpoints_resource.py
    └── field_definitions.py

运作原理

LLM可用性

服务器的设计便于LLM正确使用:

  1. 服务器说明 --查询语法、工作流指导和常见错误通过MCP协议自动注入到每个LLM上下文中(约210个令牌)。
  1. 统一刀具表面 --单身 search_fda 带有打字功能的工具 dataset 参数替换了9个单独的搜索工具,消除了工具选择的混乱。
  1. 可操作的错误InvalidSearchError 包括内联语法快速参考。 NotFoundError 包括故障排除步骤和使用的端点。不再引用不可见的MCP资源。
  1. 可见警告 --限位夹紧和缺失 .exact 后缀产生可见的音符,而不是无声的回退。
  1. 响应总结 --每种端点类型都有一个自定义摘要器,用于提取关键字段并平铺嵌套结构。药品标签将部分截断为2000个字符。PDF文本默认为8000个字符。
  1. 通过工具进行现场发现 --与其在工具描述中列出所有可搜索的字段(这将花费约8000-11000个持久上下文令牌) list_searchable_fields 该工具按需提供。
  1. 智能分页 --默认页面大小较低(10条记录)。回应包括 total_results, showing,以及 has_more当结果超过100时,建议使用 count_records 为了聚合。

美国食品药品监督管理局决策文件

这些文件是 可通过OpenFDA API获得。服务器构建URL并直接从 accessdata.fda.gov:

文档类型URL模式
510(k)摘要https://www.accessdata.fda.gov/cdrh_docs/reviews/{K_NUMBER}.pdf
De Novo裁决https://www.accessdata.fda.gov/cdrh_docs/reviews/{DEN_NUMBER}.pdf
PMA批准https://www.accessdata.fda.gov/cdrh_docs/pdf{YY}/{P_NUMBER}A.pdf
PMA-sedhttps://www.accessdata.fda.gov/cdrh_docs/pdf{YY}/{P_NUMBER}B.pdf
PMA补充https://www.accessdata.fda.gov/cdrh_docs/pdf{YY}/{P_NUMBER}S{###}A.pdf

文本提取用途 pdfplumber 对于机器生成的PDF,通过自动OCR回退 pytesseract + pdf2image 用于扫描文档。

许可证

麻省理工学院

目录标签

目录标签

数据检索PythonClaude本地部署医疗数据OpenFDAMCP协议监管文档

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP