一个基于 Model Context Protocol (MCP) 的化学安全信息服务器,用于从化合物名称或 CID 自动获取毒理、GHS 安全分类、化学性质等信息。
uv sync
uv run pubchem_mcp/mcp_server.py
uv run example_usage.py
服务器提供以下 5 个 MCP 工具:
获取化合物基础信息
name (化合物名称)获取 GHS 安全分类信息
cid (PubChem化合物ID)获取毒性实验数据
cid (PubChem化合物ID)获取化合物完整安全摘要
name (化合物名称)批量获取多个化合物的安全摘要
names (化合物名称列表,最多50个){
"mcpServers": {
"pubchem-chemical-safety": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/project",
"run",
"pubchem_mcp/mcp_server.py"
],
"env": {}
}
}
}
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/ 目录uv run manage_cache.py 查看缓存统计MIT License
欢迎提交 Issue 和 Pull Request!