PluginBench
MCP Server
Active

Dense Evolution MCP Server

io.github.tatopenn-cell/dense-evolution

High-performance quantum circuit simulator with VQE, noise modeling, and QM/MM forces via JAX XLA.

What is the Dense Evolution MCP server?

Dense Evolution is a NISQ quantum simulation toolkit offering statevector and MPS engines with JIT compilation, noise modeling, VQE, QEC, and chemistry capabilities. It can simulate up to 28 qubits efficiently with anti-OOM chunking and disk overflow, and exposes 21+ tools via MCP for agent-driven circuit design and simulation.

Dense Evolution provides a fast, memory-efficient quantum circuit simulator built on JAX XLA with automatic GPU/TPU dispatch. It includes VQE for molecular simulation, real noise channels, zero-noise extrapolation mitigation, OpenQASM parsing, Qiskit/PennyLane interop, QM/MM region partitioning, and a web-based Composer editor. Use it to prototype quantum algorithms, simulate noisy circuits, optimize variational circuits, and run chemistry workloads without out-of-memory crashes.

How to install Dense Evolution

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • DENSE_EVOLUTION_KERNEL_URL

    URL of the running Dense-Evolution Composer kernel. Start it first with 'dense-evolution serve' (requires the [composer] extra). Defaults to http://127.0.0.1:8800.

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "dense-evolution": {
      "command": "uvx",
      "args": [
        "dense-evolution",
        "--from",
        "dense-evolution[mcp]",
        "dense-evolution",
        "mcp"
      ],
      "env": {
        "DENSE_EVOLUTION_KERNEL_URL": "<YOUR_DENSE_EVOLUTION_KERNEL_URL>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • DenseSVSimulator — JIT-compiled statevector simulator with automatic GPU/TPU dispatch via JAX XLA.
  • Chunk — Anti-OOM engine that dynamically chunks large circuits and spills to disk when memory fills.
  • MPS backend — Matrix Product State engine for low-entanglement circuits at scale.
  • QASMParser — Real OpenQASM 2.0/3.0 parser supporting single-qubit rotations, barriers, and entangling gates.
  • NoiseModel — Stochastic Kraus channels and real-device noise imported from Qiskit backends.
  • circuit_to_energy_fn — Differentiable VQE engine for molecular Hamiltonians with JAX autodiff.
  • zero_noise_extrapolation — Zero-Noise Extrapolation mitigation to correct for noise in quantum circuits.
  • Qiskit interop — Bridge to convert Qiskit QuantumCircuit objects to Dense Evolution format.
  • PennyLane interop — Bridge to convert PennyLane circuits to Dense Evolution format.
  • Hartree-Fock solver — From-scratch Hartree-Fock for molecular basis sets outside PennyLane's coverage.
  • QEC decoding — Code-agnostic quantum error correction decoding.
  • Fermion mapping — Majorana and Jordan-Wigner fermion-to-qubit mappings.
  • QM/MM partitioning — Real quantum-mechanical/molecular-mechanical region partitioning with ring-safe BFS and relevance propagation.
  • Teleportation protocol — Traversable-wormhole-inspired quantum teleportation protocol.
  • Composer editor — Web-based graphical and OpenQASM circuit editor running locally.
  • Dashboard — Local Streamlit dashboard for circuit visualization and analysis.
  • MCP server tools — 22 MCP-exposed tools for agent-driven circuit design, simulation, and optimization.

Use cases

  • Simulate 28-qubit quantum circuits on consumer hardware without out-of-memory crashes using chunking and disk overflow.
  • Optimize variational quantum algorithms (VQE) for molecular ground-state energy using JAX autodiff and real Hartree-Fock Hamiltonians.
  • Model and mitigate noise in quantum circuits using stochastic Kraus channels and zero-noise extrapolation.
  • Convert and interoperate between Qiskit, PennyLane, and OpenQASM circuit formats.
  • Partition quantum-mechanical and classical regions in hybrid QM/MM simulations with automatic relevance propagation.

Dense Evolution MCP server FAQ

What is Dense Evolution?

Dense Evolution is a high-performance quantum circuit simulator built on JAX XLA that can run up to 28 qubits efficiently. It includes VQE, noise modeling, QEC, chemistry tools, and an MCP server exposing 21+ tools for agent-driven quantum algorithm design.

Is Dense Evolution free?

Dense Evolution is available under the Business Source License 1.1, which converts to Apache 2.0 on June 1, 2029. Non-commercial use is unrestricted; commercial use is limited to ≤24 qubits, ≤1,000 circuits/day, and ≤10,000 shots/circuit.

How do I install Dense Evolution in Cursor or Claude?

Install via `pip install dense-evolution[mcp]`, then configure the MCP server in your client's settings to point to the Dense Evolution kernel. See the full MCP Server documentation at https://tatopenn-cell.github.io/Dense-Evolution/mcp/.

Does Dense Evolution require authentication or API keys?

No. Dense Evolution runs locally on your machine and does not require any external authentication, API keys, or internet connection.

What quantum hardware does Dense Evolution support?

Dense Evolution is a classical simulator that runs on CPU, GPU, or TPU via JAX XLA. It does not directly control quantum hardware, but can import noise models from Qiskit backends and prepare circuits for real devices.

Can I use Dense Evolution with Qiskit or PennyLane?

Yes. Dense Evolution includes interop bridges for both Qiskit and PennyLane, allowing you to convert circuits between frameworks and leverage Dense Evolution's fast simulation engine.

README (reference)

Source of truth, from the repository.

<p align="center"> <img src="docs/assets/banner.svg" alt="Dense Evolution — NISQ quantum simulation toolkit, JAX-native" width="900"> </p> <!-- mcp-name: io.github.tatopenn-cell/dense-evolution -->

A high-performance quantum simulation toolkit Statevector/MPS engines with compilation, noise, VQE, QEC, chemistry, and agent-native tooling.

CI Docs codecov PyPI PyPI Downloads Python License Build Cross-Validation CI Latest Release Last Commit Issues Stars JAX DOI Featured in Awesome Quantum Software


Table of Contents

▍ What It Is

Run up to 28 qubits in about 3 seconds, without crashing. Dense Evolution JIT-compiles statevector circuits through JAX XLA, automatically chunks and — past even that RAM ceiling — spills to disk when memory fills up, so a real simulation stays alive instead of OOM-ing.

📖 Full documentation, API reference, and worked examples →

A local Streamlit dashboard and web-based Composer editor are also included — see Composer & MCP Server below.


▍ Install

pip install dense-evolution  # JAX is a core dependency, installed by default

# full stack: GPU · dashboard · Qiskit/PennyLane interop
pip install dense-evolution[full]

# just the interop bridge
pip install dense-evolution[qiskit]
pip install dense-evolution[pennylane]

# Composer's local kernel (see "Composer" below)
pip install dense-evolution[composer]

# MCP server for the Composer kernel (see "MCP Server" below)
pip install dense-evolution[mcp]

# development
git clone https://github.com/tatopenn-cell/Dense-Evolution.git
cd Dense-Evolution && pip install -e .[full]
<details> <summary>⚠️ macOS + <code>dense-evolution[qiskit]</code> users</summary>

Qiskit's own QuantumCircuit.__init__ is known to segfault the whole process on macOS/arm64 (an upstream Qiskit bug, not something Dense-Evolution can fix from its side — see release v8.1.43 for the full reproduction). dense_evolution/interop.py now warns (RuntimeWarning, once per process) the first time you touch the Qiskit bridge on sys.platform == 'darwin', but it does not block — some Qiskit/macOS combinations may work fine. If you hit a crash, pip install dense-evolution[pennylane] gives the same circuit-interop functionality without constructing any Qiskit object.

</details>

Google Colab (3 lines):

!git clone https://github.com/tatopenn-cell/Dense-Evolution.git
%cd Dense-Evolution
!pip install -e .

▍ Quick Start

from dense_evolution import DenseSVSimulator, QASMParser

# parse any OpenQASM 2.0 / 3.0 string -- single-qubit rotations, a barrier
# (a real OpenQASM synchronization marker: parsed like hardware would, no
# effect on the simulated state), then an entangling layer
qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[3];
rx(pi/3) q[0];
ry(pi/4) q[1];
h q[2];
barrier q;
cx q[0], q[1];
cx q[1], q[2];
rz(pi/6) q[2];
"""

parser = QASMParser()
circuit = parser.parse(qasm)

sim = DenseSVSimulator(n_qubits=3)
sim.run_circuit_jit(circuit.to_tuples())

probs = sim.get_probabilities()
sv    = sim.get_statevector()
# probs = [0.3201 0.3201 0.0549 0.0549 0.0183 0.0183 0.1067 0.1067]

Noise:

import numpy as np
from dense_evolution import DenseSVSimulator, QASMParser, NoiseModel

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[2]; h q[0]; cx q[0],q[1];'
circuit = QASMParser().parse(qasm)

sim = DenseSVSimulator(n_qubits=2)
sim.run_circuit_jit(circuit.to_tuples())

noisy_sv = NoiseModel.apply_to_sv(np.asarray(sim.sv), n=2, model='depolarizing', p=0.05, rng=np.random.default_rng(0))
np.abs(noisy_sv) ** 2
# [0.   0.5  0.5  0.  ]

VQE:

import jax
import jax.numpy as jnp
from dense_evolution import QASMParser, circuit_to_energy_fn

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[1]; ry(0.0) q[0];'
circuit = QASMParser().parse(qasm)
energy_fn, n_params = circuit_to_energy_fn(circuit, n_qubits=1)
h = jnp.array([[1.0, 0.0], [0.0, -1.0]], dtype=jnp.complex128)  # Pauli Z

theta = jnp.array([0.1])
grad_fn = jax.value_and_grad(energy_fn, argnums=0, has_aux=True)
for _ in range(40):
    (energy, sv), grad = grad_fn(theta, h)
    theta = theta - 0.5 * grad
# energy = -1.0, theta = [3.14159265]

Mitigation (ZNE):

import dense_evolution as de

e1, e2, e3 = 1.234, 0.876, 0.611  # values at 1x, 2x, 3x noise
de.zero_noise_extrapolation([e1, e2, e3], [1.0, 2.0, 3.0])
# 1.622

Dashboard (local, Streamlit):

pip install "dense-evolution[dashboard]"  # JAX already included by default
streamlit run tools/dashboard/app.py

Anti-OOM for large circuits:

from dense_evolution import Chunk, QASMParser

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[27]; h q[0:27];'
circuit = QASMParser().parse(qasm)

sim = Chunk(27)
sim.run_chunk(circuit.to_tuples(), chunk_size_gates=500)

▍ Key Features

<img src="docs/assets/readme_hero_circuit.png" width="400px" align="right">
  • JIT-fused statevector engine. No Kronecker-product overhead — stride-sliced linear kernel fusion compiled through JAX XLA, real GPU/TPU dispatch with no code change. Simulator · MPS backend for low-entanglement circuits at scale.
  • Anti-OOM Chunk engine. Circuits too large for one array, split dynamically and sized off the real compute device's own free memory — with disk-backed overflow past even that ceiling. Chunk guide.
  • Real noise, real mitigation. Stochastic Kraus channels, real-device noise imported from Qiskit backends, and Zero-Noise Extrapolation to correct for it. Noise · Mitigation · what noise/mitigation/healing each mean.
  • Differentiable VQE, from scratch. circuit_to_energy_fn is the same JAX-differentiable engine real molecular VQE runs on — real Hartree-Fock Hamiltonians, UCCSD/hardware-efficient ansätze, Adam optimization. Autodiff.
  • OpenQASM 2.0/3.0, both directions. A real parser, plus Qiskit/PennyLane interop bridges. QASM Parser · Interop.
  • Code-agnostic QEC decoding, Majorana/Jordan-Wigner fermion mapping, from-scratch Hartree-Fock for elements outside PennyLane's own basis set, a traversable-wormhole-inspired teleportation protocol, and real QM/MM region partitioning (ring-safe BFS, Diffuse2Seg-derived relevance propagation) — see the full API reference for all of it.

▍ Benchmarks

Measured on Windows, CPU only, 8 GB RAM — PennyLane's default.qubit allocates the full statevector; Dense Evolution's Chunk holds constant ~2 GB regardless of qubit count.

QubitsHilbert SpacePennyLaneDense EvolutionChunk Geometry
2667,108,864✅ 1,074 MB✅ 2,050 MB1× (2²⁷)
28268,435,456❌ OOM✅ 2,050 MB2× (2²⁷)
324,294,967,296❌ OOM✅ 2,048 MB32× (2²⁷)

On Google Colab (12 GB RAM), n=28 runs in ~3s end-to-end (JIT-compiled, num_chunks=2) — the multi-chunk path is fast, not just OOM-safe. Past the real RAM ceiling (Chunk alone raises MemoryPressureError cleanly rather than crashing the process), allow_disk_overflow=True falls back to a slower disk-backed path instead of failing — correctness-first, not benchmarked for speed yet. Full measured table: docs/api/chunk.md.

▍ Composer & MCP Server

A real circuit editor (graphical or OpenQASM) running on your own machine, plus an MCP server exposing 22 tools so an agent (Claude Code, Claude Desktop, ...) can drive it directly. Composer · MCP Server.

▍ Key Resources


▍ Changelog

📜 Full Changelog & Releases — every version, latest first.


▍ License

Business Source License 1.1 — converts automatically to Apache 2.0 on 1 June 2029.

  • Non-commercial use: unrestricted
  • Commercial use: ≤ 24 allocated qubits · ≤ 1,000 circuits/day · ≤ 10,000 shots/circuit
  • Attribution required: © 2026 Salvatore Pennacchio <jtatopenn@libero.it> — Dense Evolution

Full text: LICENSE.md


▍ Cite This

If Dense-Evolution is useful in academic work, please cite it via the metadata in CITATION.cff (recognized by GitHub's own "Cite this repository" button, and by reference managers that support the Citation File Format).

Archived on Zenodo:


<div align="center"> <sub>© 2026 Salvatore Pennacchio — Dense Evolution</sub> </div>

Related MCP servers

AI-powered MCP server for Salesforce B2C Commerce Cloud development with docs, logs, and debugging tools

27
TypeScript
MIT
View repository →

Unofficial. TWSE & TAIFEX open data for AI: stock, ETF & futures snapshots, quotes, 270+ datasets.

0
TypeScript
MIT
View repository →

Real-time web search, extraction, mapping, and crawling powered by Tavily API

2.3k
JavaScript
MIT
View repository →

Run code in multiple programming languages inside a secure WebAssembly sandbox via MCP.

770
TypeScript
MIT
View repository →

Control the Unity Editor from MCP hosts through a local Rust server and C# Unity bridge.

1
C#
MIT
View repository →

Context management, todo persistence, and multi-AI perspectives for Claude Code

3
Python
MIT
View repository →