mcpField
O
ORCA MCP Server

ORCA MCP Server

Local
github.com/PhelanShaoScience & Education20Updated 73w ago

About ORCA MCP Server

ORCA MCP Server is an MCP server for generating, validating, and tuning input files for the ORCA quantum chemistry package. It is intended for computational chemists and quantum chemistry researchers, and is an independent project not affiliated with the ORCA developers.

Key features

  1. 01Generate complete input files from molecular coordinates
  2. 02Validate ORCA input syntax with detailed error reports
  3. 03Suggest keywords and detect conflicting keywords
  4. 04Recommend basis sets, SCF settings, and memory
  5. 05Diagnose SCF convergence failures

Use cases

  1. 01Generating ORCA input files for geometry optimization or frequency jobs
  2. 02Checking existing input files for syntax errors
  3. 03Reviewing failed SCF calculations and getting suggested fixes

MCP support

This is an MCP server that provides tools such as generate_input_file, validate_input_syntax, and suggest_keywords to MCP clients over stdio.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

ORCA MCP Server

A Model Context Protocol (MCP) server for ORCA quantum chemistry software that provides intelligent tools for generating, validating, and optimizing ORCA input files.

Overview

The ORCA MCP Server is a comprehensive tool designed to assist quantum chemistry researchers and computational chemists in working with ORCA calculations. It provides intelligent assistance for:

  • Input File Generation: Automatically generate ORCA input files based on molecular structures and calculation requirements
  • Syntax Validation: Validate ORCA input file syntax and detect common errors
  • Parameter Optimization: Recommend optimal basis sets, SCF settings, and memory configurations
  • Convergence Diagnostics: Analyze failed calculations and suggest fixes
  • Keyword Management: Suggest appropriate keywords and detect conflicts

Features

Core Functionality
  • 🔧 Input File Generation: Create complete ORCA input files from molecular coordinates and calculation parameters
  • ✅ Syntax Validation: Comprehensive validation of ORCA input file syntax with detailed error reporting
  • 💡 Keyword Suggestions: Intelligent keyword recommendations based on calculation type and current settings
  • 🎯 Parameter Optimization: Smart recommendations for basis sets, SCF settings, and memory allocation
  • 🔍 Convergence Diagnostics: Analyze SCF convergence failures and provide targeted solutions
Supported Calculation Types
  • Single Point Energy Calculations
  • Geometry Optimizations
  • Frequency Calculations
  • Combined Optimization + Frequency
  • TD-DFT (Time-Dependent DFT)
  • MP2 and Coupled Cluster methods
  • NMR and EPR calculations
Coordinate Format Support
  • XYZ Coordinates: Standard Cartesian coordinates
  • Internal Coordinates: Z-matrix format
  • External Files: References to .xyz and .gzmt files

Installation

Prerequisites
  • Node.js 18+
  • npm or yarn
  • TypeScript 5.0+
Install Dependencies
npm install
Build the Server
npm run build
Run Tests
npm test
Run with Coverage
npm run test:coverage

Usage

As an MCP Server

The server can be used with any MCP-compatible client. Configure your client to connect to this server using stdio transport.

Example configuration for Claude Desktop:

{
  "mcpServers": {
    "orca-mcp-server": {
      "command": "node",
      "args": ["path/to/orca-mcp-server/build/index.js"],
      "env": {}
    }
  }
}
Available Tools
generate_input_file

Generate a complete ORCA input file based on calculation parameters.

Parameters:

  • calculation_type (string): Type of calculation ("single_point", "optimization", "frequency", etc.)
  • charge (number): Molecular charge
  • multiplicity (number): Spin multiplicity
  • coordinates_xyz_or_internal (string, optional): Molecular coordinates
  • keywords (array, optional): Additional ORCA keywords
  • accuracy_level (string, optional): "low", "medium", or "high"
  • blocks (object, optional): Custom parameter blocks

Example:

{
  "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

Validate the syntax of an ORCA input file and detect common errors.

Parameters:

  • inputContent (string): Complete ORCA input file content

Returns:

  • Validation status and detailed error reports
suggest_keywords

Get keyword suggestions based on calculation type and current keywords.

Parameters:

  • calculation_type (string): Intended calculation type
  • current_keywords (array, optional): Already present keywords

Returns:

  • Recommended and optional keywords with explanations
Programming Interface

You can also use the server components directly in your TypeScript/JavaScript code:

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']);

Architecture

Core Components
  • KeywordManager: Manages ORCA keywords, validates combinations, and suggests missing keywords
  • CoordinateProcessor: Handles molecular coordinate parsing and validation
  • ParameterBlockManager: Generates ORCA parameter blocks (%scf, %basis, etc.)
  • CalculationTemplateEngine: Creates calculation templates for different job types
Intelligent Components
  • ParameterRecommendationEngine: Provides intelligent recommendations for basis sets, SCF settings, and memory
  • ConvergenceDiagnostic: Analyzes convergence failures and suggests solutions
  • ORCAInputValidator: Comprehensive input file validation
Type System

The server uses a comprehensive TypeScript type system defined in src/types/orca.types.ts that covers:

  • Molecular structures and coordinate formats
  • ORCA calculation types and parameters
  • Validation results and error reporting
  • Recommendation and diagnostic results

Examples

Basic DFT Optimization
// 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
// *
Heavy Element Calculation
// 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 Convergence Troubleshooting
// 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"
//   }
// }

Testing

The project includes comprehensive test coverage:

# Run all tests
npm test

# Run tests with coverage
npm run test:coverage

# Run tests in watch mode
npm run test:watch
Test Structure
  • Unit Tests: Individual component testing
    • tests/core/: Core functionality tests
    • tests/intelligent/: AI/ML component tests
    • tests/validation/: Validation system tests
  • Integration Tests: End-to-end workflow testing
    • tests/integration/: Complete workflow tests

Development

Project Structure
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
Building
# Development build
npm run build

# Watch mode for development
npm run watch
Code Quality

The project uses:

  • TypeScript for type safety
  • Jest for testing
  • ESLint for code linting
  • Prettier for code formatting

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass (npm test)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request
Development Guidelines
  • Write comprehensive tests for new features
  • Follow TypeScript best practices
  • Document public APIs
  • Use meaningful commit messages
  • Ensure backward compatibility

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • ORCA Quantum Chemistry Package - The quantum chemistry software this server supports
  • Model Context Protocol - The protocol framework this server implements
  • TypeScript Community - For excellent tooling and type system

Support

For questions, issues, or contributions:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Join discussions in the project's discussion forum

Roadmap

Upcoming Features
  • Context7 Integration: Enhanced documentation lookup and recommendations
  • Basis Set Optimization: Automatic basis set selection based on molecular properties
  • Job Monitoring: Integration with ORCA job status monitoring
  • Result Analysis: Post-calculation analysis and visualization tools
  • Template Library: Expandable library of calculation templates
  • Performance Profiling: Calculation performance analysis and optimization
Long-term Goals
  • Machine Learning Integration: ML-based parameter optimization
  • Multi-software Support: Support for other quantum chemistry packages
  • Web Interface: Browser-based interface for the MCP server
  • Cloud Integration: Support for cloud-based calculations
  • Collaborative Features: Multi-user calculation sharing and collaboration

Note: This is an independent project and is not officially affiliated with the ORCA quantum chemistry package developers.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.