Skip to main content
Glama
vasp-mcp

vasp-mcp

by NabKh

vasp-mcp

tests License: MIT Python

An MCP server that gives an MCP client read-only access to your VASP calculations: check the inputs before you submit, and find out what actually happened after the job ends.

Ask your assistant things like:

  • "Check the inputs in ~/calcs/NiO/hse before I submit."

  • "Did the relaxations under ~/calcs/slabs converge? Which ones need a restart?"

  • "What is the band gap of this run, per spin channel?"

  • "Why did this job crash?"

The assistant gets numbers parsed from OUTCAR, vasprun.xml and the job's standard output, instead of guessing from a pasted log.

flowchart LR
    U["You"] -->|question| C["MCP client"]
    C <-->|"tool calls (stdio)"| S["vasp-mcp<br/>read-only"]
    S --> T1["check_vasp_inputs"]
    S --> T2["summarize_vasp_run"]
    S --> T3["scan_vasp_project"]
    S --> T4["read_vasp_inputs"]
    S --> T5["list_vasp_lint_rules"]
    T1 & T4 --> I[("INCAR · POSCAR<br/>POTCAR · KPOINTS")]
    T2 & T3 --> O[("OUTCAR · OSZICAR<br/>vasprun.xml · slurm-*.out")]
    T5 --> R[("vasp-lint rules")]
    subgraph disk ["your folders (limited by --root)"]
        I
        O
    end

Tools

Tool

What it returns

check_vasp_inputs

Mistakes in INCAR, POSCAR, POTCAR, KPOINTS (30 checks from vasp-lint), each with the INCAR line and the VASP wiki page it is based on

summarize_vasp_run

Finished or not; electronic steps that hit NELM; whether the relaxation reached EDIFFG; final energies; largest force on a free atom (selective dynamics respected); pressure; Fermi level; magnetisation; MD temperatures and DFT vs machine-learned steps; band gap per spin; VASP warnings; known errors in the job output (ZBRENT, BRMIX, EDDDAV, wall time, out of memory, ...); a plain list of problems

scan_vasp_project

Every calculation folder below a path, with status (finished / incomplete / not run), last energy and relaxation convergence. Reads only the end of each OUTCAR, so large projects scan in seconds

read_vasp_inputs

Parsed INCAR tags, structure, POTCAR dataset names and cutoffs, k-mesh

list_vasp_lint_rules

All input checks with their wiki links

Example summarize_vasp_run result for a relaxation that went wrong (abridged):

{
  "status": "finished with problems",
  "kind": "relaxation",
  "problems": [
    "Electronic loop reached NELM = 5 in ionic step(s) 1: that SCF is not converged to EDIFF and its energy and forces are unreliable.",
    "Relaxation stopped after 2 ionic steps (NSW = 50) without reaching EDIFFG = -0.01. Restart from CONTCAR.",
    "Largest force on a free atom is 0.200 eV/A, above |EDIFFG| = 0.01 eV/A.",
    "Error messages in standard output: line search in the ionic relaxation failed."
  ],
  "energy": {"energy_sigma_to_0": -10.1, "free_energy_TOTEN": -10.101, "unit": "eV"},
  "max_force_eV_per_A": 0.2,
  "ionic_converged": false,
  "stdout_errors": [{"file": "slurm-1234.out", "message": "ZBRENT: fatal", "count": 1}]
}

Band gaps

The gap is taken from the eigenvalues and occupations of the last step in vasprun.xml, for each spin channel and overall. When states at the Fermi level are only partly occupied (occupation between 0.01 and 0.99) the channel is reported as metallic, instead of the spurious few-meV "gap" that a simple occupied/empty split gives for a half-metal. For an insulator the result agrees with pymatgen's Vasprun.eigenvalue_band_properties.

Related MCP server: Synology NAS Connector

Install

pip install git+https://github.com/NabKh/vasp-mcp

or run it without installing, with uv:

uvx --from git+https://github.com/NabKh/vasp-mcp vasp-mcp --help

Connect it to your assistant

Most MCP clients take a JSON entry like this in their configuration file:

{
  "mcpServers": {
    "vasp": {
      "command": "vasp-mcp",
      "args": ["--root", "/Users/you/calculations"]
    }
  }
}

--root limits the server to that folder (repeat it for several). Without it, any folder the client names can be read. On a cluster, run the client there, or mount the cluster's scratch with sshfs.

Privacy

Every tool only reads files; nothing is written, run or sent anywhere by the server. POTCAR contents are never returned, only the dataset names, valences and cutoffs. Keep in mind that whatever the tools return is passed to the assistant you connected, and from there to its model provider.

Development

pip install -e ".[dev]"
pytest
ruff check .

License

MIT

Available Tools

5 tools
check_vasp_inputsB
Read-onlyIdempotent

Check the VASP inputs (INCAR, POSCAR, POTCAR, KPOINTS) in a folder for common mistakes.

If the folder has no INCAR, every calculation folder below it is checked. Each finding has a rule ID, a severity (error, warning or info), the INCAR line, an explanation and the VASP wiki page it is based on.

Inputs: path (required), ignore.

list_vasp_lint_rulesA
Read-onlyIdempotent

All input checks with their severity and the VASP wiki page each is based on.

Inputs: no named parameters.

read_vasp_inputsC
Read-onlyIdempotent

The parsed inputs of one calculation: INCAR tags, structure, POTCAR datasets and k-points.

Inputs: path (required).

scan_vasp_projectA
Read-onlyIdempotent

List every VASP calculation folder below a path with a quick status.

For each folder with an INCAR or OUTCAR: finished, incomplete or not run, the last energy(sigma->0) and whether a relaxation reached the required accuracy. Use summarize_vasp_run on a folder for the full picture.

Inputs: path (required), max_folders.

summarize_vasp_runA
Read-onlyIdempotent

Summarize what happened in one VASP calculation folder.

Reads OUTCAR (or OSZICAR), vasprun.xml and the job's standard output. Reports whether the job finished, whether the electronic and ionic loops converged, the final energies, the largest force on a free atom, pressure, Fermi level, magnetisation, MD temperatures, the band gap per spin channel, VASP warnings, known error messages, and a plain list of problems.

Inputs: path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 5 tools

    Disambiguation4/5

    Each tool has a distinct role: input validation (check_vasp_inputs), input parsing (read_vasp_inputs), run summary (summarize_vasp_run), project scan (scan_vasp_project), and rule metadata (list_vasp_lint_rules). The only mild overlap is between check_vasp_inputs and read_vasp_inputs, but descriptions clearly separate validation from raw parsing.

    Naming Consistency5/5

    All five tools follow the same verb_vasp_noun pattern (check_vasp_inputs, summarize_vasp_run, read_vasp_inputs, scan_vasp_project, list_vasp_lint_rules). The convention is uniform and predictable.

    Tool Count5/5

    Five tools is well-scoped for a VASP analysis/validation server, with no redundant or filler tools. Each covers a clearly different stage of the workflow.

    Completeness4/5

    The surface covers input validation, input reading, run summarization, project scanning, and rule listing, which is solid lifecycle coverage for diagnostics. It lacks any write/fix or cross-run comparison operations, but those are outside the apparent read-only analysis scope.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Provides read-only access to an Obsidian vault, enabling file listing, content reading, and text search across notes via MCP.
      4
      2
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables MCP clients to browse selected folders, search filenames, inspect metadata, and read bounded UTF-8 text files through a read-only, token-authenticated interface.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Read-only MCP server that enables inspecting and auditing markdown agent steering files such as CLAUDE.md, AGENTS.md, GEMINI.md, SKILL.md, rules, commands and memory files. It reads files byte-exactly, outlines headings, lints frontmatter, invisible characters and broken links, estimates per-session token budgets, and locates steering files by when they load, all without ever writing, deleting or making network calls.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      A read-only MCP server that lets an agent audit its own environment by discovering local MCP configurations and skill folders on Windows, macOS, and Linux and running offline static checks for prompt injection, hidden instructions, hardcoded secrets, dangerous commands, unpinned packages, and excessive filesystem or transport permissions. It exposes tools to scan everything discovered, list configurations, vet a single skill, or analyze supplied text, returning text, JSON, SARIF, or HTML findings with CI-friendly severity levels.
      8 npm
      MIT