logo
0
0
WeChat Login

PubChem Chemical Safety MCP Server

一个基于 Model Context Protocol (MCP) 的化学安全信息服务器,用于从化合物名称或 CID 自动获取毒理、GHS 安全分类、化学性质等信息。

🎯 功能特性

  • 🔬 获取化合物基础属性信息(分子式、分子量、IUPAC名称等)
  • ⚠️ 获取 GHS 安全分类信息(信号词、象形图、危害声明)
  • 🧪 获取毒性实验数据(LD₅₀、LC₅₀等)
  • 📦 支持批量查询和缓存机制
  • 🚀 基于 MCP 协议,可与 Claude Desktop 等 AI 客户端集成

🛠️ 技术栈

  • 协议: Model Context Protocol (MCP)
  • 语言: Python 3.10+
  • 依赖管理: uv
  • 数据源: PubChem REST API
  • 缓存: 本地文件缓存(无需Redis)

📦 安装与运行

1. 安装依赖

uv sync

2. 运行 MCP 服务器

uv run pubchem_mcp/mcp_server.py

3. 测试服务器

uv run example_usage.py

🔧 MCP 工具

服务器提供以下 5 个 MCP 工具:

1. get_compound_info

获取化合物基础信息

  • 参数: name (化合物名称)
  • 返回: CID、分子式、分子量、IUPAC名称等

2. get_safety_info

获取 GHS 安全分类信息

  • 参数: cid (PubChem化合物ID)
  • 返回: 信号词、GHS象形图、危害声明等

3. get_toxicity_data

获取毒性实验数据

  • 参数: cid (PubChem化合物ID)
  • 返回: 急性毒性、生态毒性、致癌性等数据

4. get_safety_summary

获取化合物完整安全摘要

  • 参数: name (化合物名称)
  • 返回: 基础信息、安全分类、毒性数据和防护建议

5. batch_get_safety_summary

批量获取多个化合物的安全摘要

  • 参数: names (化合物名称列表,最多50个)
  • 返回: 所有化合物的安全摘要

🔗 集成 Claude Desktop

  1. 打开 Claude Desktop 设置
  2. 点击 "Developer" → "Edit Config"
  3. 添加以下配置:
{
  "mcpServers": {
    "pubchem-chemical-safety": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/project",
        "run",
        "pubchem_mcp/mcp_server.py"
      ],
      "env": {}
    }
  }
}
  1. 重启 Claude Desktop

🧪 使用示例

import asyncio
from mcp.client.stdio import stdio_client
from mcp import ClientSession, StdioServerParameters

async def main():
    server_params = StdioServerParameters(
        command='uv',
        args=['run', 'pubchem_mcp/mcp_server.py'],
    )
    
    async with stdio_client(server_params) as (stdio, write):
        async with ClientSession(stdio, write) as session:
            await session.initialize()
            
            # 获取化合物信息
            result = await session.call_tool('get_compound_info', {
                'name': 'Malachite Green'
            })
            print(result.content[0].text)

asyncio.run(main())

🔍 调试工具

使用 MCP Inspector 进行调试:

npx -y @modelcontextprotocol/inspector uv run pubchem_mcp/mcp_server.py

📊 项目结构

pubchem_mcp/
├── mcp_server.py          # MCP 服务器主文件
├── services/
│   ├── pubchem_client.py  # PubChem API 客户端
│   └── cache_service.py   # 缓存服务
├── models/
│   └── schemas.py         # 数据模型定义
└── __init__.py

tests/                     # 测试文件
example_usage.py           # 使用示例
test_mcp_client.py         # MCP 客户端测试

⚙️ 配置选项

  • CACHE_DIR: 缓存目录路径(默认 .cache
  • PUBCHEM_RATE_LIMIT: API 请求限制(默认 5 req/s)

🗂️ 缓存管理

服务器使用本地文件缓存来提高性能:

  • 缓存位置: .cache/ 目录
  • 缓存策略:
    • 化合物信息缓存2小时
    • 安全信息和毒性数据缓存1小时
    • 过期文件自动删除
  • 缓存管理: 运行 uv run manage_cache.py 查看缓存统计

🚀 未来扩展

  • 🔬 支持 SDS(Safety Data Sheet)自动生成
  • 🌿 增加 EPA ECOTOX、GHS Classification EU 等外部数据源
  • 🤖 提供自然语言输出(LLM直接可读安全摘要)
  • 💾 支持本地离线缓存或数据库镜像

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

About

No description, topics, or website provided.
Language
Python100%