vasp-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vasp-mcp Check the inputs in ~/calcs/NiO/hse before I submit."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vasp-mcp
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/hsebefore I submit.""Did the relaxations under
~/calcs/slabsconverge? 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
endTools
Tool | What it returns |
| 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 |
| 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 |
| 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 |
| Parsed INCAR tags, structure, POTCAR dataset names and cutoffs, k-mesh |
| 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-mcpor run it without installing, with uv:
uvx --from git+https://github.com/NabKh/vasp-mcp vasp-mcp --helpConnect 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 toolscheck_vasp_inputsBRead-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_rulesARead-onlyIdempotent
All input checks with their severity and the VASP wiki page each is based on.
Inputs: no named parameters.
read_vasp_inputsCRead-onlyIdempotent
The parsed inputs of one calculation: INCAR tags, structure, POTCAR datasets and k-points.
Inputs: path (required).
scan_vasp_projectARead-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_runARead-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
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Read-only MCP security data: check catalogue, public scan status and your own scan reports.
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
Physics-based validation of simulation results: receipts with per-check verdicts, via MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides read-only access to an Obsidian vault, enabling file listing, content reading, and text search across notes via MCP.42Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to browse selected folders, search filenames, inspect metadata, and read bounded UTF-8 text files through a read-only, token-authenticated interface.1MIT
- AlicenseNot gradedqualityBmaintenanceRead-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
- AlicenseNot gradedqualityBmaintenanceA 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 npmMIT