Spaces:
Sleeping
Sleeping
File size: 8,783 Bytes
596b729 e2e8735 596b729 e2e8735 596b729 e2e8735 596b729 e2e8735 596b729 e2e8735 596b729 e2e8735 596b729 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | # MatDeepLearn MCP Service
这是 [MatDeepLearn](https://github.com/Fung-Lab/MatDeepLearn) 的 MCP (Model Context Protocol) 服务封装,用于通过 AI 助手进行材料属性预测的图神经网络训练和推理。
## 功能概述
MatDeepLearn MCP 服务提供以下工具:
### 🔧 环境与模型信息
| 工具名称 | 描述 |
|---------|------|
| `check_environment` | 检查环境配置和 GPU 可用性 |
| `list_available_models` | 列出所有可用的 GNN 模型 |
| `get_model_config` | 获取特定模型的默认配置 |
### 📁 会话管理(新增)
| 工具名称 | 描述 |
|---------|------|
| `create_session` | 创建新工作会话 |
| `get_session_info` | 获取会话信息 |
| `list_sessions` | 列出所有会话 |
| `delete_session` | 删除会话 |
### 📤 数据上传(新增)
| 工具名称 | 描述 |
|---------|------|
| `upload_structure_file` | 上传单个结构文件 |
| `upload_structure_files_batch` | 批量上传多个结构文件 |
| `upload_targets` | 上传 targets.csv 目标属性文件 |
| `upload_binary_file` | 上传二进制文件(如预训练模型) |
### 🔬 结构分析
| 工具名称 | 描述 |
|---------|------|
| `quick_structure_analysis` | **推荐** 快速分析结构文件内容 |
| `analyze_structure` | 分析原子结构文件 |
### 🏋️ 模型训练(新增)
| 工具名称 | 描述 |
|---------|------|
| `process_session_data` | 处理会话中的结构数据为图格式 |
| `train_session_model` | 在会话数据上训练 GNN 模型 |
| `run_cross_validation_session` | 执行 k 折交叉验证 |
### 📊 预测与评估(新增)
| 工具名称 | 描述 |
|---------|------|
| `predict_with_session_model` | 使用训练好的模型进行预测 |
| `list_session_models` | 列出会话中的所有模型 |
| `compare_session_models` | 比较多个模型的性能 |
| `download_model` | 下载训练好的模型(base64 编码) |
### 📁 数据集信息
| 工具名称 | 描述 |
|---------|------|
| `get_dataset_info` | 获取数据集信息 |
| `process_structure_data` | 处理结构数据为图格式(传统方式) |
---
## 🚀 完整工作流程示例
### 步骤 1: 创建会话
```
请创建一个名为 "my_materials" 的新会话
```
返回的 `session_id` 将用于后续所有操作。
### 步骤 2: 上传结构文件
**单个文件:**
```
使用 upload_structure_file 上传以下 CIF 文件到会话 session_xxx:
文件名:NaCl.cif
内容:
data_NaCl
_cell_length_a 5.64
...
```
**批量上传:**
```
使用 upload_structure_files_batch 批量上传结构文件到会话 session_xxx:
{
"NaCl.cif": "data_NaCl...",
"ZnO.cif": "data_ZnO...",
"TiO2.cif": "data_TiO2..."
}
```
### 步骤 3: 上传目标属性
```
使用 upload_targets 上传以下 targets.csv 到会话 session_xxx:
NaCl,1.5
ZnO,2.3
TiO2,3.1
```
### 步骤 4: 处理数据
```
使用 process_session_data 处理会话 session_xxx 中的数据
```
### 步骤 5: 训练模型
```
使用 train_session_model 在会话 session_xxx 上训练 CGCNN_demo 模型,训练 100 个 epoch
```
### 步骤 6: 评估与预测
```
使用 list_session_models 查看会话 session_xxx 中的所有模型
使用 predict_with_session_model 对新结构进行预测
```
### 步骤 7: 下载模型
```
使用 download_model 下载会话 session_xxx 中的模型 CGCNN_demo_xxx.pth
```
---
## 🌟 远程 MCP 使用指南(在 Cursor 中使用)
当 MCP 服务部署在远程服务器(如 HuggingFace Space)时,您需要**直接传入文件内容**而不是文件路径。
### 分析结构文件(推荐方法)
使用 `quick_structure_analysis` 工具,直接传入文件内容:
```
请分析这个 CIF 文件的结构:
[在这里粘贴 CIF 文件的完整内容]
```
或者在 Cursor 中,您可以这样使用:
```
使用 quick_structure_analysis 分析以下 CIF 文件:
data_NaCl
_cell_length_a 5.64
_cell_length_b 5.64
_cell_length_c 5.64
_cell_angle_alpha 90.0
_cell_angle_beta 90.0
_cell_angle_gamma 90.0
...
```
### 工具参数说明
#### quick_structure_analysis(推荐用于远程分析)
```json
{
"file_content": "完整的文件内容字符串",
"file_format": "cif", // 支持: cif, xyz, vasp, poscar, json, extxyz
"include_positions": false,
"include_distances": true
}
```
#### create_session
```json
{
"session_name": "my_project" // 可选,会话名称
}
```
#### upload_structure_files_batch
```json
{
"session_id": "session_xxx",
"files": {
"struct1.cif": "CIF 内容...",
"struct2.cif": "CIF 内容..."
}
}
```
#### upload_targets
```json
{
"session_id": "session_xxx",
"targets_content": "struct1,1.5\nstruct2,2.3",
"validate": true
}
```
#### train_session_model
```json
{
"session_id": "session_xxx",
"model_name": "CGCNN_demo",
"epochs": 100,
"batch_size": 32,
"learning_rate": 0.002
}
```
## 支持的模型
- **CGCNN_demo**: Crystal Graph Convolutional Neural Network
- **MPNN_demo**: Message Passing Neural Network
- **SchNet_demo**: SchNet 连续滤波卷积神经网络
- **MEGNet_demo**: MatErials Graph Network
- **GCN_demo**: Graph Convolutional Network
- **SOAP_demo**: Smooth Overlap of Atomic Positions 描述符方法
- **SM_demo**: Sine Matrix 描述符方法
## 本地运行
### 安装依赖
```bash
cd MatDeepLearn
pip install -r mcp_output/requirements.txt
```
### 启动 STDIO 模式(用于本地 AI 助手)
```bash
python mcp_output/start_mcp.py
```
### 启动 HTTP 模式(用于远程访问)
```bash
export MCP_TRANSPORT=http
export MCP_PORT=7860
python mcp_output/start_mcp.py
```
## 部署到 HuggingFace Space
### 1. 创建 HuggingFace Space
1. 登录 [HuggingFace](https://huggingface.co/)
2. 点击 "New Space"
3. 选择 "Docker" 作为 SDK
4. 填写 Space 名称(如 `matdeeplearn-mcp`)
### 2. 上传代码
方法一:通过 Git
```bash
# 克隆你的 Space 仓库
git clone https://huggingface.co/spaces/YOUR_USERNAME/matdeeplearn-mcp
cd matdeeplearn-mcp
# 复制 MatDeepLearn 代码
cp -r /path/to/MatDeepLearn/* .
# 提交并推送
git add .
git commit -m "Initial MatDeepLearn MCP deployment"
git push
```
方法二:通过 HuggingFace Web 界面
1. 在 Space 页面点击 "Files" 标签
2. 上传所有 MatDeepLearn 文件
3. 确保包含 `Dockerfile`、`mcp_output/` 目录和所有源代码
### 3. 配置 Space
确保你的 Space 设置中:
- SDK: Docker
- Hardware: CPU Basic(免费)或 GPU(付费,更快)
### 4. 等待构建
Space 会自动构建 Docker 镜像并启动服务。构建完成后,你可以通过以下 URL 访问:
```
https://YOUR_USERNAME-matdeeplearn-mcp.hf.space
```
## 在 AI 助手中使用
### Claude Desktop 配置
在 `claude_desktop_config.json` 中添加:
```json
{
"mcpServers": {
"matdeeplearn": {
"command": "python",
"args": ["/path/to/MatDeepLearn/mcp_output/start_mcp.py"]
}
}
}
```
### 使用远程 HTTP 服务
如果部署到 HuggingFace Space,可以通过 HTTP 调用:
```json
{
"mcpServers": {
"matdeeplearn": {
"url": "https://YOUR_USERNAME-matdeeplearn-mcp.hf.space/mcp"
}
}
}
```
## 使用示例
### 检查环境
```
请检查 MatDeepLearn 环境是否正常
```
### 列出可用模型
```
列出 MatDeepLearn 中所有可用的图神经网络模型
```
### 训练模型
```
使用 CGCNN 模型在 data/test_data 目录上训练 100 个 epoch
```
### 预测属性
```
使用 trained_model.pth 模型预测 new_structures/ 目录中结构的属性
```
### 分析结构
```
分析 structure.cif 文件的原子结构信息
```
## 数据格式要求
### 目录结构
```
data_directory/
├── targets.csv # 必需:包含结构ID和目标属性
├── atom_dict.json # 可选:原子特征字典
├── structure1.json # 结构文件(支持 json, cif, xyz, POSCAR 等)
├── structure2.json
└── ...
```
### targets.csv 格式
```csv
structure_id,property1,property2
structure1,1.23,4.56
structure2,2.34,5.67
```
## 常见问题
### Q: GPU 不可用怎么办?
A: 服务会自动回退到 CPU 模式。对于大型数据集,建议使用 GPU。
### Q: 如何添加自定义模型?
A: 在 `matdeeplearn/models/` 目录下添加模型文件,并在 `config.yml` 中添加配置。
### Q: 支持哪些结构文件格式?
A: 支持 ASE 库支持的所有格式,包括:json, cif, xyz, POSCAR, vasp 等。
## 许可证
本项目遵循 MIT 许可证。
## 致谢
- [MatDeepLearn](https://github.com/Fung-Lab/MatDeepLearn) - Victor Fung 等人开发
- [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/) - GNN 框架
- [FastMCP](https://github.com/jlowin/fastmcp) - MCP 服务框架
|