# ChemMCP - 化学分子计算平台
ChemMCP是一个基于模型上下文协议(MCP)的化学分子计算工具集合,提供19个专业的化学分子处理工具。
## 🚀 快速开始
### 环境要求
- Python 3.11+ (推荐Python 3.11或3.12)
- Conda 环境管理器
### 安装步骤
1. 创建conda环境:
```bash
conda create -n chemmcp python=3.11
conda activate chemmcp
```
2. 安装依赖:
```bash
pip install -r requirements.txt
```
3. 安装ChemMCP:
```bash
pip install -e .
```
### 安装选项
ChemMCP提供灵活的安装选项,您可以根据需要选择:
#### 选项1: 基础安装(推荐)
```bash
# 安装核心依赖,支持17个工具
pip install -r requirements.txt
```
**支持的工具**: 除`MoleculeCaptioner`和`MoleculeGenerator`外的所有工具
#### 选项2: 完整安装(包含AI工具)
```bash
# 方式A: 使用可选依赖组
pip install -e ".[ai]"
# 方式B: 手动安装AI依赖
pip install -r requirements.txt
pip install transformers>=4.20.0 torch>=1.9.0
```
**支持的工具**: 全部19个工具,包括AI驱动的分子描述和生成功能
#### 选项3: 开发环境
```bash
# 安装所有依赖和开发工具
pip install -e ".[all,dev]"
```
### 配置环境变量
根据使用的工具设置相应的API密钥:
```bash
# 网络搜索工具所需(必需)
export TAVILY_API_KEY="your_tavily_api_key"
# LLM工具所需(必需)
export LLM_MODEL_NAME="openai/gpt-4o"
export OPENAI_API_KEY="your_openai_api_key"
# ChemSpace工具所需(可选,仅在PubChem查找失败时作为后备)
export CHEMSPACE_API_KEY="your_chemspace_api_key"
```
## 🔧 工具列表
### 1. WebSearch - 网络搜索
**功能**: 执行网络搜索以获取化学相关信息
**输入**: 搜索查询字符串
**输出**: 搜索结果和相关链接
### 2. MoleculeWeight - 分子量计算
**功能**: 计算分子的分子量
**输入**: SMILES分子结构字符串
**输出**: 分子量数值
### 3. MoleculeAtomCount - 原子计数
**功能**: 统计分子中各种原子的数量
**输入**: SMILES分子结构字符串
**输出**: 各原子类型的数量统计
### 4. MoleculeSimilarity - 分子相似性
**功能**: 计算两个分子的Tanimoto相似度
**输入**: 两个SMILES分子结构字符串
**输出**: 相似度分数(0-1)
### 5. FunctionalGroups - 官能团识别
**功能**: 识别分子中存在的官能团
**输入**: SMILES分子结构字符串
**输出**: 检测到的官能团列表
### 6. SmilesCanonicalization - SMILES标准化
**功能**: 将SMILES字符串转换为标准化形式
**输入**: SMILES分子结构字符串
**输出**: 标准化的SMILES字符串
### 7. Iupac2Smiles - IUPAC名称转SMILES
**功能**: 将IUPAC化学名称转换为SMILES格式
**输入**: IUPAC化学名称
**输出**: 对应的SMILES字符串
### 8. Smiles2Iupac - SMILES转IUPAC名称
**功能**: 将SMILES格式转换为IUPAC化学名称
**输入**: SMILES分子结构字符串
**输出**: 对应的IUPAC化学名称
### 9. Smiles2Formula - SMILES转分子式
**功能**: 将SMILES格式转换为分子式
**输入**: SMILES分子结构字符串
**输出**: 分子式(如C2H6O)
### 10. Name2Smiles - 通用名称转SMILES
**功能**: 将化学物质的通用名称转换为SMILES格式
**输入**: 化学物质名称
**输出**: 对应的SMILES字符串
### 11. Selfies2Smiles - SELFIES转SMILES
**功能**: 将SELFIES格式转换为SMILES格式
**输入**: SELFIES字符串
**输出**: 对应的SMILES字符串
### 12. Smiles2Selfies - SMILES转SELFIES
**功能**: 将SMILES格式转换为SELFIES格式
**输入**: SMILES分子结构字符串
**输出**: 对应的SELFIES字符串
### 13. Smiles2Cas - SMILES转CAS号
**功能**: 将SMILES格式转换为CAS登记号
**输入**: SMILES分子结构字符串
**输出**: 对应的CAS登记号
### 14. MoleculeSmilesCheck - SMILES验证
**功能**: 验证SMILES字符串的语法正确性
**输入**: SMILES分子结构字符串
**输出**: 验证结果(有效/无效)
### 15. ReactionSmilesCheck - 反应SMILES验证
**功能**: 验证反应SMILES字符串的语法正确性
**输入**: 反应SMILES字符串
**输出**: 验证结果(有效/无效)
### 16. MoleculeVisualizer - 分子可视化
**功能**: 生成分子的2D结构图
**输入**: SMILES分子结构字符串
**输出**: 分子结构图像
### 17. MoleculeCaptioner - 分子描述生成
**功能**: 使用AI生成分子的文字描述
**输入**: SMILES分子结构字符串
**输出**: 分子的详细文字描述
### 18. MoleculeGenerator - 分子生成
**功能**: 使用AI根据描述生成分子结构
**输入**: 分子描述文本
**输出**: 对应的SMILES分子结构
### 19. MoleculeModifier - 分子修饰
**功能**: 对分子进行化学修饰和衍生化
**输入**: SMILES分子结构字符串
**输出**: 修饰后的分子结构选项
## 📖 使用示例
```bash
# 启动MCP服务器,使用特定工具
python -m chemmcp --tools WebSearch MoleculeWeight MoleculeAtomCount
# 或使用所有工具
python -m chemmcp --tools WebSearch MoleculeWeight MoleculeAtomCount MoleculeSimilarity FunctionalGroups SmilesCanonicalization Iupac2Smiles Smiles2Iupac Smiles2Formula Name2Smiles Selfies2Smiles Smiles2Selfies Smiles2Cas MoleculeSmilesCheck ReactionSmilesCheck MoleculeVisualizer MoleculeCaptioner MoleculeGenerator MoleculeModifier
```
## 🔧 MCP配置
在您的MCP客户端配置文件中添加以下配置:
```json
{
"mcpServers": {
"ChemMCP": {
"command": "/opt/miniconda3/envs/chemmcp/bin/python", // 如何找到路径: conda activate chemmcp && which python
"args": [
"-m", "chemmcp",
"--tools",
"WebSearch",
"MoleculeWeight",
"MoleculeAtomCount",
"MoleculeSimilarity",
"FunctionalGroups",
"SmilesCanonicalization",
"Iupac2Smiles",
"Smiles2Iupac",
"Smiles2Formula",
"Name2Smiles",
"Selfies2Smiles",
"Smiles2Selfies",
"Smiles2Cas",
"MoleculeSmilesCheck",
"ReactionSmilesCheck",
"MoleculeVisualizer",
"MoleculeCaptioner",
"MoleculeGenerator",
"MoleculeModifier"
],
"toolCallTimeoutMillis": 300000,
"env": {
"TAVILY_API_KEY": "your_tavily_api_key_here",
"LLM_MODEL_NAME": "openai/gpt-4o",
"OPENAI_API_KEY": "your_openai_api_key_here",
"CHEMSPACE_API_KEY": "your_chemspace_api_key_here", // 可选:仅在需要额外数据库查找时使用
"PATH": "/opt/miniconda3/envs/chemmcp/bin:/usr/local/bin:/usr/bin:/bin" // 如何找到路径: conda activate chemmcp && echo $PATH
}
}
}
}
```
**注意**:
- **如何找到正确的Python路径**:
```bash
# 激活您的conda环境
conda activate chemmcp
# 查看Python路径
which python
# 复制输出的路径并替换上面配置中的路径
```
- 请将API密钥替换为您的实际密钥
- **CHEMSPACE_API_KEY是可选的**:只有`Iupac2Smiles`工具在PubChem查找失败时才会使用ChemSpace作为后备数据库
- 确保您的Python环境版本为3.11或更高版本
## 🛠️ 依赖项
- **RDKit**: 分子处理和计算的核心库
- **PubChemPy**: PubChem数据库接口
- **SELFIES**: 分子的自引用嵌入式字符串表示
- **rdchiral**: 手性分子处理
- **synspace**: 分子空间探索和修饰
- **tavily-python**: 网络搜索API
- **litellm**: 统一的LLM API接口
- **requests**: HTTP请求库
## 📄 许可证
本项目采用MIT许可证。详见LICENSE文件。
---
**注意**: 使用某些工具需要相应的API密钥。请确保在使用前正确设置环境变量。