基于模型上下文协议(MCP)的第一性原理计算服务器。主要用于量子化学和材料科学计算。
pip install fastmcp ase numpy psutil
参考 ABACUS 官方文档 安装。
git clone <repository-url>
cd abacus-mcp-server
pip install -r requirements.txt
确保 ABACUS 在系统 PATH 中:
abacus --version
mkdir pseudos
# 将赝势文件放到 pseudos 目录
python src/server.py
添加:
{
"mcpServers": {
"abacus-mcp-server": {
"command": "python",
"args": ["/path/to/abacus-mcp-server/src/server.py"],
"env": {"PYTHONPATH": "/path/to/abacus-mcp-server"}
}
}
}
基本 SCF 计算
我想对硅晶体进行 SCF 计算,请帮我设置参数。
结构优化
我有一个钙钛矿结构需要优化几何并计算带隙。
能带结构
计算石墨烯沿 Γ-M-K-Γ 路径的能带结构。
故障排除
我的 ABACUS 计算不收敛,SCF 一直在振荡,请帮我看看。
pseudos/ 目录硅能带结构计算
计算硅晶体的能带结构,晶格常数 5.43 Å,沿 Γ-X-L-Γ 路径。
钙钛矿结构优化
优化 BaTiO3 几何结构并计算电子性质。
收敛问题诊断
我的 MoS2 计算不收敛,SCF 在 -150.5 和 -150.8 Ry 之间振荡,使用的 ecutwfc=80 Ry。
PyABACUS 工作流
用 PyABACUS 分析原子轨道重叠,需要 LCAO 计算和重叠矩阵。
# 使用 create_structure 工具创建原子结构
structure = create_structure(
formula_or_data="Si2",
input_format="formula",
crystalstructure="diamond",
a=5.43
)
# 验证计算参数
validation = validate_input(
input_params={
"ecutwfc": 100,
"scf_thr": 1e-6,
"basis_type": "pw"
},
structure_dict=structure["data"]
)
# 执行 SCF 计算
scf_result = run_scf(
structure_dict=structure["data"],
input_params={
"ecutwfc": 100,
"scf_thr": 1e-6
},
kpoints_definition={
"mode": "Monkhorst-Pack",
"size": [4, 4, 4]
},
pseudo_potential_map={"Si": "Si.UPF"}
)
# 查看计算结果和建议
print(scf_result["data"]["interpretation"])
print(scf_result["data"]["recommendations"])
abacus://system/status - 系统状态abacus://docs/input_parameters - 参数文档abacus://examples/scf - SCF 示例abacus://calculations/{task_id}/results - 计算结果abacus://calculations/{task_id}/logs - 计算日志export ABACUS_COMMAND="/path/to/abacus"
export PSEUDO_DIR="/path/to/pseudos"
export ABACUS_WORK_DIR="/path/to/calculations"
创建 config.json:
{
"abacus_command": "abacus",
"pseudo_base_path": "./pseudos",
"work_directory": "./calculations"
}
未找到 ABACUS
which abacus
abacus --version
缺少赝势文件
ls -la pseudos/
内存不足
export LOG_LEVEL="DEBUG"
python src/server.py
git clone https://github.com/deepmodeling/abacus-develop.git
cd abacus-develop/python
pip install .
import pyabacus as m
s = m.ModuleBase.Sphbes()
result = s.sphbesj(1, 0.0)
create_structure - 创建原子结构validate_structure - 验证结构convert_structure - 格式转换run_scf - SCF 计算run_optimization - 结构优化run_md - 分子动力学calculate_band_structure - 能带结构calculate_dos - 电子态密度calculate_charge_density - 电荷密度suggest_parameters - 参数建议diagnose_failure - 故障诊断validate_input - 输入验证get_calculation_status - 计算状态list_recent_calculations - 最近计算get_calculation_results - 计算结果MIT 许可证,详情见 LICENSE 文档。