Surfacia MCP Server 从零启动手册¶
这份手册面向第一次接触 Surfacia MCP server 的用户,目标不是解释 MCP 的全部背景,而是让你尽快把服务跑起来、知道先测什么、出问题先查哪里。
它对应的正式英文说明见 Surfacia MCP Server。
一、这是什么¶
surfacia-mcp 是 Surfacia 的 stdio MCP server。它把 Surfacia 的核心流程拆成一组可调用工具,让支持 MCP 的客户端或 Agent 可以直接调用:
环境检查
工作目录状态识别
基准描述符矩阵生成
Surfacia 特征提取
机器学习分析
XTB / Gaussian / Multiwfn 重计算阶段
SHAP 可视化启动
全流程总编排
你可以把它理解成:
“把原本面向命令行用户的 Surfacia,额外包装成一组给 Agent 使用的工具接口。”
二、代码现在放在哪里¶
当前实现位于:
surfacia/mcp/server.pysurfacia/mcp/tooling.pysurfacia/mcp/utils.pysurfacia/mcp/shap_launcher.py
另外还有一份设计说明:
SURFACIA_MCP_DESIGN.md
三、启动前你需要准备什么¶
至少要准备两层环境。
Python 层
你当前用于 Surfacia 的 Python 环境
已安装 Surfacia 本体
能导入
rdkit、shap、dash、xgboost等依赖
外部程序层
xtbg16formchkMultiwfn_noGUI或你实际使用的 Multiwfn 命令
如果这些外部程序没有在 PATH 里,MCP server 本身可能能启动,但对应工具会在真正执行时失败。
四、如何安装¶
建议在 Surfacia 源码目录下做可编辑安装:
cd D:\YumingSu\Papers\Surfacia\code251222\Surfacia
pip install -e .
安装完成后,会得到一个命令:
surfacia-mcp
如果你的环境里没有正确暴露这个命令,也可以直接用模块方式启动:
python -m surfacia.mcp.server --log-level INFO
五、怎么启动¶
最直接的启动命令:
surfacia-mcp --log-level INFO
或者:
python -m surfacia.mcp.server --log-level INFO
注意
这个命令不是给人手工一条条输入工具调用参数的。它是标准的 MCP stdio server,正常情况下应该由 MCP 客户端来启动并连接。
六、第一次不要直接跑全流程¶
最稳的做法不是一上来就调用 surfacia_run_full_pipeline,而是按下面顺序一步一步测:
surfacia_check_environmentsurfacia_detect_workflow_statesurfacia_generate_benchmark_matrices或surfacia_extract_featuressurfacia_run_ml_analysis再去测
xtb / Gaussian / Multiwfn这些重工具最后再测
surfacia_launch_shap_visualizer或surfacia_run_full_pipeline
这样你能很快区分:
是 Python 依赖问题
是外部程序没装好
是路径给错了
还是化学计算本身真的失败了
七、最先应该调试什么¶
第一步:环境检查
你首先应该确认 surfacia_check_environment 的结果。
它会告诉你两件事:
Python 模块是否可用
外部命令是否可用
如果这里不过,后面大概率都不稳。
第二步:状态识别
然后跑 surfacia_detect_workflow_state,看某个工作目录现在停在哪一阶段。
这个工具特别适合下面几种情况:
你有一个已经算到一半的目录
你不确定目录里是
xyz、com、fchk还是FinalFull你想知道下一步该调哪个 MCP tool
八、现在有哪些工具¶
当前版本已经实现的工具有:
surfacia_check_environmentsurfacia_detect_workflow_statesurfacia_generate_benchmark_matricessurfacia_smi_to_xyzsurfacia_run_xtb_optsurfacia_generate_gaussian_inputssurfacia_run_gaussian_jobssurfacia_rerun_failed_gaussian_jobssurfacia_run_multiwfn_analysissurfacia_extract_featuressurfacia_run_ml_analysissurfacia_launch_shap_visualizersurfacia_run_full_pipeline
九、怎么理解返回结果¶
每个工具返回的最外层结构都是统一的,大致长这样:
{
"ok": true,
"tool": "surfacia_extract_features",
"summary": "Completed Surfacia Mode 3 feature extraction.",
"working_dir": "D:/.../case_dir",
"artifacts": {},
"metrics": {},
"logs": {}
}
可以这样理解:
ok:工具成功还是失败summary:一句话结果摘要working_dir:这次执行主要关联的目录artifacts:生成的关键文件metrics:结构化结果指标logs:调试时需要看的标准输出或错误输出
十、SHAP 可视化怎么用¶
surfacia_launch_shap_visualizer 不会阻塞 MCP server 本身,它会后台启动一个 Dash 应用。
它适合在下面这种状态使用:
你已经有
Training_Set_Detailed*.csv工作目录里有对应的
xyz或fchk文件你希望保留可视化能力,但不让 MCP server 因为 Dash 进程卡住
启动后,日志会写到:
surfacia_mcp_logs/
├── shap_visualizer.stdout.log
└── shap_visualizer.stderr.log
如果仪表板起不来,先看这两个文件。
十一、现在还没完全做完的地方¶
这版已经能用,但还不是“最终生产版”。
目前还建议继续做的事情有:
给 Gaussian / Multiwfn 这类长任务加
job_id和状态查询把部分同步重任务改成异步可恢复
给每个 MCP tool 增加自动化测试
把 SHAP / SLPS 的结构化结果再细化
继续减少对“当前工作目录”的隐式依赖
十二、如果你现在就要开始联调¶
建议你按下面这个顺序实际测试:
A. 启动 surfacia-mcp
B. 用客户端调用 surfacia_check_environment
C. 选择一个已有案例目录,调用 surfacia_detect_workflow_state
D. 如果已有 FullOption,调用 surfacia_extract_features
E. 如果已有 FinalFull,调用 surfacia_run_ml_analysis
F. 最后再测 Gaussian/Multiwfn 和 full pipeline
这样效率最高,也最容易定位问题。