ORCA MCP服务器
ORCA量子化学软件的模型上下文协议(MCP)服务器,提供用于生成、验证和优化ORCA输入文件的智能工具。
概述
ORCA MCP服务器是一个综合工具,旨在帮助量子化学研究人员和计算化学家进行ORCA计算。它为以下方面提供智能辅助:
- 输入文件生成:根据分子结构和计算要求自动生成ORCA输入文件
- 语法验证:验证ORCA输入文件语法并检测常见错误
- 参数优化:推荐最佳基组、SCF设置和内存配置
- 收敛诊断:分析失败的计算并提出修复建议
- 关键字管理:建议适当的关键字并检测冲突
特性
核心功能
- 🔧 输入文件生成:根据分子坐标和计算参数创建完整的ORCA输入文件
- ✅ 语法验证:对ORCA输入文件语法进行全面验证,并提供详细的错误报告
- 💡 关键字建议:基于计算类型和当前设置的智能关键字推荐
- 🎯 参数优化:对基集、SCF设置和内存分配的智能建议
- 🔍 收敛诊断:分析SCF收敛失败并提供有针对性的解决方案
支持的计算类型
- 单点能量计算
- 几何优化
- 频率计算
- 组合优化+频率
- TD-DFT(时变DFT)
- MP2和耦合聚类方法
- 核磁共振和EPR计算
坐标格式支持
- XYZ坐标:标准笛卡尔坐标
- 内部坐标:Z矩阵格式
- 外部文件:对.xyz和.gzmt文件的引用
安装
先决条件
- Node.js 18+
- npm或纱线
- TypeScript 5.0+
再进行
npm install构建服务器
npm run build运行测试
npm test跑步有保障
npm run test:coverage用法
作为MCP服务器
该服务器可以与任何兼容MCP的客户端一起使用。配置您的客户端以使用stdio传输连接到此服务器。
Claude Desktop的配置示例:
{
"mcpServers": {
"orca-mcp-server": {
"command": "node",
"args": ["path/to/orca-mcp-server/build/index.js"],
"env": {}
}
}
}可用工具
generate_input_file
根据计算参数生成完整的ORCA输入文件。
参数:
calculation_type(string):计算类型(“单点”、“优化”、“频率”等)charge(数字):分子电荷multiplicity(number):自旋多重性coordinates_xyz_or_internal(字符串,可选):分子坐标keywords(数组,可选):其他ORCA关键字accuracy_level(字符串,可选):“低”、“中”或“高”blocks(对象,可选):自定义参数块
例子:
{
"calculation_type": "optimization",
"charge": 0,
"multiplicity": 1,
"coordinates_xyz_or_internal": "C 0.0 0.0 0.0\nH 0.0 0.0 1.0\nH 0.0 1.0 0.0\nH 1.0 0.0 0.0",
"keywords": ["B3LYP", "def2-SVP"],
"accuracy_level": "medium"
}validate_input_syntax
验证ORCA输入文件的语法并检测常见错误。
参数:
inputContent(string):完成ORCA输入文件内容
退货:
- 验证状态和详细的错误报告
suggest_keywords
根据计算类型和当前关键字获取关键字建议。
参数:
calculation_type(string):预期计算类型current_keywords(数组,可选):已存在关键字
退货:
- 带解释的推荐和可选关键字
编程接口
您还可以直接在TypeScript/JavaScript代码中使用服务器组件:
import { KeywordManager } from './src/core/keywordManager.js';
import { CoordinateProcessor } from './src/core/coordinateProcessor.js';
import { CalculationTemplateEngine } from './src/core/calculationTemplateEngine.js';
// Initialize components
const keywordManager = new KeywordManager();
const coordinateProcessor = new CoordinateProcessor();
const templateEngine = new CalculationTemplateEngine();
// Parse coordinates
const molecule = coordinateProcessor.parse_xyz_coordinates(
'C 0.0 0.0 0.0\nH 0.0 0.0 1.0',
0, 1
);
// Generate template
const template = templateEngine.generate_dft_template(molecule, 'B3LYP', 'def2-SVP');
// Validate keywords
const validation = await keywordManager.validate_keyword_combination(['B3LYP', 'def2-SVP', 'Opt']);建筑
核心组件
- 关键字管理器:管理ORCA关键字,验证组合,并建议缺少的关键字
- 坐标处理器:处理分子坐标解析和验证
- 参数BlockManager:生成ORCA参数块(%scf、%basis等)
- 计算模板引擎:为不同的作业类型创建计算模板
智能组件
- 参数推荐引擎:为基础集、SCF设置和内存提供智能建议
- 融合诊断:分析收敛失败并提出解决方案
- ORCA输入验证器:全面的输入文件验证
类型系统
服务器使用在 src/types/orca.types.ts 这包括:
- 分子结构和坐标格式
- ORCA计算类型和参数
- 验证结果和错误报告
- 建议和诊断结果
例子
基本DFT优化
// Generate input for geometry optimization
const result = await generateInputFile({
calculation_type: "optimization",
charge: 0,
multiplicity: 1,
coordinates_xyz_or_internal: `
C 0.0 0.0 0.0
H 0.0 0.0 1.0
H 0.0 1.0 0.0
H 1.0 0.0 0.0
H -1.0 0.0 0.0
`,
accuracy_level: "medium"
});
console.log(result.content);
// Output:
// ! B3LYP-D3BJ def2-SVP Opt
//
// %pal NProcs 2 end
//
// * xyz 0 1
// C 0.0 0.0 0.0
// H 0.0 0.0 1.0
// H 0.0 1.0 0.0
// H 1.0 0.0 0.0
// H -1.0 0.0 0.0
// *重元素计算
// Get recommendations for heavy elements
const basisRecommendation = await recommendationEngine.recommend_basis_set(
['Au', 'Cl'],
'high',
2
);
console.log(basisRecommendation);
// Output:
// {
// orbital_basis: "SARC-DKH-TZVP",
// auxiliary_basis_jk: "SARC/JK",
// auxiliary_basis_cosx: "SARC/J",
// relativistic_method: "DKH",
// reasoning: "High accuracy with heavy elements: SARC-DKH-TZVP with DKH relativistic treatment is recommended."
// }SCF融合故障排除
// Analyze convergence failure
const diagnosis = convergenceDiagnostic.analyze_scf_failure(`
SCF NOT CONVERGED AFTER 125 ITERATIONS
oscillating behavior in DIIS
Energy change: 1.234e-03
`);
console.log(diagnosis);
// Output:
// {
// problem_type: "SCF_OSCILLATION",
// summary: "SCF convergence is likely hindered by oscillating behavior...",
// recommendations: [
// "Try damping: %scf DampFac 0.7 DampErr 0.05 end",
// "Use a level shifter: %scf Shift Shift 0.5 Erroff 0.1 end"
// ],
// suggested_keywords_add: ["VerySlowConv"],
// suggested_block_modifications: {
// scf: "DampFac 0.7\nDampErr 0.05"
// }
// }测试
该项目包括全面的测试覆盖范围:
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch测试结构
- 单元测试:单个组件测试
- tests/core/:核心功能测试 - tests/intelligent/:AI/ML组件测试 - tests/validation/:验证系统测试
- 集成测试:端到端工作流测试
- tests/integration/:完成工作流测试
发展
项目结构
orca-mcp-server/
├── src/
│ ├── core/ # Core functionality
│ │ ├── keywordManager.ts
│ │ ├── coordinateProcessor.ts
│ │ ├── parameterBlockManager.ts
│ │ └── calculationTemplateEngine.ts
│ ├── intelligent/ # AI/ML components
│ │ ├── parameterRecommendationEngine.ts
│ │ └── convergenceDiagnostic.ts
│ ├── validation/ # Validation systems
│ │ └── orcaInputValidator.ts
│ ├── types/ # TypeScript definitions
│ │ └── orca.types.ts
│ └── index.ts # MCP server entry point
├── tests/ # Test suites
├── build/ # Compiled JavaScript
└── docs/ # Documentation建筑
# Development build
npm run build
# Watch mode for development
npm run watch代码质量
该项目使用:
- TypeScript 用于类型安全
- 开玩笑 用于测试
- ESLint 用于代码过滤
- 更漂亮 用于代码格式化
贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 添加新功能的测试
- 确保所有测试通过(
npm test) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 为新功能编写全面的测试
- 遵循TypeScript的最佳实践
- 记录公共API
- 使用有意义的提交消息
- 确保向后兼容性
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- ORCA量子化学包 -此服务器支持的量子化学软件
- 模型上下文协议 -此服务器实现的协议框架
- TypeScript社区 -卓越的工具和类型系统
支持
对于问题、议题或贡献:
- 检查 问题 页
- 创建包含详细信息的新问题
- 加入项目论坛的讨论
路线图
即将推出的功能
- \[ \] 上下文7集成:加强文件查找和建议
- \[ \] 基础集优化:基于分子特性的自动基组选择
- \[ \] 作业监控:与ORCA作业状态监控集成
- \[ \] 结果分析:计算后分析和可视化工具
- \[ \] 模板库:可扩展的计算模板库
- \[ \] 性能分析:计算性能分析和优化
长期目标
- \[ \] 机器学习集成:基于ML的参数优化
- \[ \] 多软件支持:支持其他量子化学软件包
- \[ \] web界面:MCP服务器的基于浏览器的界面
- \[ \] 云集成:支持基于云的计算
- \[ \] 协作功能:多用户计算共享和协作
______________________________________________________________________
备注:这是一个独立的项目,与ORCA量子化学软件包开发商没有正式联系。
