使用说明
晶体结构生成器MCP服务器
一个全面的模型上下文协议(MCP)服务器,用于为DFT、量子化学和凝聚态物理计算生成精确的晶体结构。
特性
- ✨ 全覆盖:支持所有230个空间组
- 🔬 PyXtal集成:高质量结构生成
- 📐 结构转换:超级电池、板、表面
- 🔷 对称性分析:Spglib驱动的对称性检测
- 📁 多种格式:CIF、POSCAR、XYZ、JSON导出
- ✅ 全面验证:距离检查、晶格验证
- ⚡ MLFF优化:尚未实施
- 🎯 地面状态搜索:尚未实施
有关最准确和完整的功能列表,请参阅 API 参考.
安装
先决条件
- Node.js 18+和npm
- Python 3.8+和pip
- Git
快速安装
# Clone repository
git clone https://github.com/Indranil2020/crystal_mcp_server.git
cd crystal_mcp_server
# Install Node.js dependencies
npm install
# Install Python dependencies
pip install -r requirements.txt
# Build TypeScript
npm run build
# Run tests
npm test
详细安装
1.安装Node.js依赖项
npm install
这将安装:
- @模型上下文协议/sdk
- zod(模式验证)
- python shell(python桥)
2.安装Python依赖项
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install packages
pip install -r requirements.txt
所需的Python包:
pyxtal>=1.0.0-晶体结构生成pymatgen>=2024.1.1-材料分析spglib>=2.5.0-对称操作ase>=3.22.0-原子模拟环境
可选MLFF包(计划中;MLFF尚未实施):
chgnet>=0.3.0-CHGNet MLFF模型matgl>=1.0.0-M3GNet MLFF型号mace-torch>=0.3.0-MACE MLFF模型
3.构建和测试
# Compile TypeScript
npm run build
# Run tests
npm test
# Lint code
npm run lint
用法
启动服务器
# Start with npm
npm start
# Or run directly
node dist/index.js
服务器在用于MCP协议通信的stdio传输上运行。
连接到LLM
要从支持MCP的LLM客户端使用此服务器,请配置客户端以启动服务器 node dist/index.js 并将工作目录设置为此仓库。看 连接到LLM代理 有关分步设置示例。
可用工具
1.发电机_晶体
生成具有指定成分和空间群的晶体结构。
{
composition: ["Si", "Si"],
space_group: 227, // Diamond structure
seed: 42
}
2.generate_space_group_scan
扫描多个空间组以找到稳定的结构。
{
composition: ["Na", "Cl"],
space_groups: [225, 216, 221],
parallel: true
}
3.制造超级电池
从现有结构创建超级单元。
{
structure_dict: {...}, // Structure object from generate_crystal
scaling_matrix: [2, 2, 2] // 2x2x2 supercell, or [[2,0,0],[0,2,0],[0,0,2]]
}
4.发电机板
生成用于DFT计算的表面板。
{
structure_dict: {...}, // Structure object from generate_crystal
miller_indices: [1, 0, 0],
thickness: 5, // Number of atomic layers
vacuum: 15.0 // Vacuum padding in Angstroms
}
5.分析对称性
检测并分析晶体对称性。
{
structure_dict: {...}, // Structure object
symprec: 0.001, // Symmetry precision tolerance
detect_primitive: true // Find primitive cell
}
6.验证结构
验证晶体结构质量。
{
structure_dict: {...}, // Structure object
checks: ["distances", "lattice", "stoichiometry"], // Available checks
min_distance: 1.5 // Minimum interatomic distance in Angstroms
}
7.optimize_structure_mlff(尚未实现)
计划的MLFF优化接口(CHGNet、M3GNet、MACE)。
{
structure_dict: {...}, // Structure object
mlff_model: "chgnet", // Options: "chgnet", "m3gnet", "mace"
optimizer: "BFGS", // Options: "BFGS", "FIRE", "LBFGS"
fmax: 0.01, // Force convergence criterion (eV/A)
steps: 500 // Maximum optimization steps
}
8.ground_state_search(尚未实施)
计划在各个太空群中进行地面搜索。
{
composition: ["Si", "Si"],
space_groups: [227, 141, 194],
mlff_model: "chgnet",
num_structures_per_group: 5
}
9.出口结构
将结构导出为多种格式。
{
structure_dict: {...}, // Structure object
formats: ["cif", "poscar", "xyz", "json"], // Output formats
output_directory: "./output" // Optional output path
}
例子
示例1:生成金刚石硅
const result = await mcpClient.callTool("generate_crystal", {
composition: ["Si", "Si"],
space_group: 227,
seed: 42
});
示例2:创建曲面板
// First generate bulk structure
const bulk = await mcpClient.callTool("generate_crystal", {
composition: ["Ti", "O", "O"],
space_group: 136 // Rutile TiO2
});
// Then create (110) surface
const slab = await mcpClient.callTool("generate_slab", {
structure_dict: bulk.structure,
miller_indices: [1, 1, 0],
thickness: 5,
vacuum: 15.0,
fix_bottom_layers: 2
});
示例3:地面状态搜索(尚未实现)
const search = await mcpClient.callTool("ground_state_search", {
composition: ["Si", "Si"],
space_groups: [227, 141, 194], // Diamond, I41/amd, P63/mmc
num_structures_per_group: 10,
mlff_model: "chgnet",
optimization_settings: {
optimizer: "BFGS",
fmax: 0.01,
steps: 500
}
});
建筑
crystal-mcp-server/
├── src/
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utility functions
│ ├── python/ # Python backend scripts
│ ├── tools/ # MCP tool implementations
│ │ ├── generation/
│ │ ├── transformation/
│ │ ├── analysis/
│ │ ├── optimization/
│ │ └── export/
│ ├── server.ts # MCP server setup
│ └── index.ts # Entry point
├── tests/ # Test suites
├── docs/ # Documentation
└── package.json
代码质量标准
该项目遵循严格的防御性编程实践:
- ✅ 100%类型提示 -所有功能均已完全键入
- ✅ 防御验证 -处理前检查输入
- ✅ 综合测试 -单元和集成测试
- ✅ 清除错误消息 -包括可采取行动的建议
- ✅ 符合PEP 8标准 -Python代码遵循标准
- ✅ 符合ESLint标准 -TypeScript代码遵循标准
演出
基准测试
| 操作 | 时间 | 备注 |
|---|---|---|
| 生成晶体 | <1s | 单结构 |
| 空间组扫描(230) | ~10分钟 | 并行模式 |
| MLFF优化(尚未实施) | N/A | 计划功能 |
| 地面状态搜索(尚未实现) | N/A | 计划功能 |
内存需求
- 最低配置:8 GB RAM,4核
- 推荐:16GB RAM,8核
- 大规模:32+GB RAM,GPU支持
故障排除
Python导入错误
# Verify Python packages
python -c "import pyxtal; print(pyxtal.__version__)"
python -c "import chgnet; print('CHGNet OK')"
python -c "import spglib; print('Spglib OK')"
MLFF模型加载失败(计划中)
# Download CHGNet model
python -c "from chgnet.model import CHGNet; CHGNet.load()"
# Check GPU availability (optional)
python -c "import torch; print(torch.cuda.is_available())"
权限错误
# Make Python scripts executable
chmod +x src/python/*.py
贡献
欢迎投稿!请确保:
- 所有测试均通过:
npm test - 代码为:
npm run lint - 遵循防御性编程指南
- 为新功能添加测试
- 更新文档
许可证
MIT许可证-有关详细信息,请参阅许可证文件
致谢
内置:
- PyXtal -晶体结构生成
- Pymatgen 的 -材料分析
- 斯普格里布 -对称操作
- CHGNet -MLFF模型
- MCP-SDK -协议实施
支持
状态:
版本:
最后更新时间: 2025年12月