食品安全搜索工具

一个提供FDA食品安全数据的MCP服务器,帮助用户查询产品召回、安全警报和分析安全趋势。

  • by surabhya
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 surabhya/safetysearch

使用说明

安全

搜索。扫描。保持安全。

一个全面的模型上下文协议(MCP)服务器,提供对FDA(食品和药物管理局)数据的访问 食物 安全信息。

🎯 此服务器提供什么

此MCP服务器提供 8工具 访问产品安全数据,帮助用户:

  • 检查食品的产品召回和安全警报
  • 监控食品安全问题和召回趋势
  • 分析安全趋势和公司信息
  • 获得全面的食品安全见解

🚀 快速开始

先决条件

  • Python 3.10或更高版本
  • pip或uv包管理器

安装

  1. 克隆或下载项目:

    git clone https://github.com/surabhya/SafetySearch.git
    cd SafetySearch
    
  2. 安装依赖项:

    # Using pip
    pip install "mcp[cli]>=1.0.0" httpx>=0.24.0 pydantic>=2.0.0
    
    # Or using uv (recommended)
    uv add "mcp[cli]>=1.0.0" httpx>=0.24.0 pydantic>=2.0.0
    

🔧 用法

使用紫外线(推荐)

注: 如果您以前安装过 mcp 在另一个项目中,或者如果您遇到以下错误 Failed to spawn: mcp ... No such file or directory,运行:

uv remove mcp
uv add "mcp[cli]>=1.0.0"

这确保了 mcp 二进制文件已正确链接到当前环境。

启动MCP检查器(开发模式)

使用MCP检查器测试和验证服务器:

uv run mcp dev server.py

直接启动服务器

直接运行服务器进行测试:

uv run python server.py

在Claude Desktop中安装(生产环境)

在Claude Desktop中安装服务器以供生产使用:

uv run mcp install server.py

🛠️ 可用工具

食品安全工具(8种工具)✅

工具 说明 参数
search_recalls_by_product_description 通过详细分析、安全见解和全面报告搜索食品召回。 query: str
search_recalls_by_product_type 按产品类型搜索召回,包括详细分析、公司趋势和安全建议。 product_type: str
search_recalls_by_specific_product 检查特定产品的召回情况,并提供详细的安全信息和建议。 product_name: str
search_recalls_by_classification 按分类搜索召回,并进行详细分析和风险评估。 classification: str
search_recalls_by_code_info 按代码信息搜索召回,并提供详细的产品跟踪和安全警报。 code_info: str
search_recalls_by_date 通过详细的时间线分析和安全趋势按日期范围搜索召回。 days: int (默认值:30)
search_adverse_events_by_product 通过详细的病例分析和安全性见解搜索不良事件。 product_name: str
get_symptom_summary_for_product 获取特定食品的详细症状分析、病例详情和安全见解。 product_name: str

🏛️ 建筑

该服务器采用简单的模块化架构构建,旨在提高清晰度和可扩展性。

graph TD
    subgraph "SafetySearch MCP"
        A[User] -- "Tool Call" --> B["server.py<br/>(MCP Entrypoint)"];
        B -- "Executes" --> C{"Food Tools<br/>(safetyscore/tools/food.py)"};
        C -- "HTTP Request" --> D["API Client<br/>(safetyscore/api_client.py)"];
    end
    D -- "Calls" --> E["openFDA API<br/>(api.fda.gov)"];

    subgraph "Testing Framework"
      F[Pytest] -- "Runs" --> G["Test Suite<br/>(test_safetyscore/)"];
      G -- "Tests" --> C;
    end
  • server.py:MCP服务器的主要入口点。它初始化工具集并使其可用于MCP环境。
  • safetyscore/:包含所有逻辑的核心Python包。
    • tools/:此目录包含不同的工具模块。目前,它只包含 food.py.
      • food.py:实施8个食品安全工具,提供详细的分析和安全见解。
    • api_client.py:用于与外部openFDA API交互的集中式异步HTTP客户端。它处理请求/响应逻辑、错误处理和API密钥管理。
  • test_safetyscore/:包含服务器的测试套件,确保工具的可靠性和正确性。

这种结构将关注点分开,便于将来维护和添加新的工具集。

📋 示例提示和工具调用

以下是一些用户提示及其触发的相应工具调用的示例。

食品安全工具

  • 用户提示: “冰淇淋有召回吗?”

    food.search_recalls_by_product_description(query="ice cream")
    
  • 用户提示: “给我看看最近烘焙产品的召回情况。”

    food.search_recalls_by_product_type(product_type="Bakery")
    
  • 用户提示: “我买了一些‘Ben&Jerry巧克力软糖布朗尼’冰淇淋,安全吗?”

    food.search_recalls_by_specific_product(product_name="Ben & Jerry's Chocolate Fudge Brownie")
    
  • 用户提示: “列出所有最严重的食品召回事件。”

    food.search_recalls_by_classification(classification="Class I")
    
  • 用户提示: “我食品包装上的代码是‘222268’。有召回吗?”

    food.search_recalls_by_code_info(code_info="222268")
    
  • 用户提示: “过去两周发生了哪些食品召回事件?”

    food.search_recalls_by_date(days=14)
    
  • 用户提示: “我吃了麦圈后生病了。其他人报告过问题吗?”

    food.search_adverse_events_by_product(product_name="Cheerios")
    
  • 用户提示: “人们吃了‘幸运咒’后报告的常见症状是什么?”

    food.get_symptom_summary_for_product(product_name="Lucky Charms")
    

🧪 运行测试

要验证所有工具是否按预期工作,您可以运行提供的测试套件:

先决条件

  • 确保您已安装所有依赖项(请参阅上面的安装部分)

运行所有测试套件

从项目根目录运行:

# Test Food Tools
uv run python test_safetyscore/test_tools/test_food_tools.py

📊 使用的API端点

食品安全

  • 强制执行API: https://api.fda.gov/food/enforcement.json
  • 不良事件API: https://api.fda.gov/food/event.json

安全 -通过MCP的力量让每个人都能访问FDA的安全数据。