# 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 服务框架