Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Qiskit Gym MCP Server

PYPI · QISKIT-GYM-MCP-SERVER

MCP server for qiskit-gym reinforcement learning quantum circuit synthesis

+3 this week 73 Trust /100

Last scanned (21 hours ago)

Scores higher than 69% of PyPI servers

Category AI and Machine Learning

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security49
  • Malware scan not yet available for this package.Unverified
  • Known CVEs were checked across the 94 of 95 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • Dependency health was assessed across the 94 of 95 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Qiskit/mcp-servers). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 26 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 3332 tokens (~74/item across 45 items; 37 tools + 8 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management53
  • Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_environment_tool" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 30 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 +6

    No change was recorded against any check on this day. Supply Chain Security went from 31 to 49. Other categories moved too: Stability & Change Management rose 3.

  • 27 Oct 26 −5

    No change was recorded against any check on this day. Supply Chain Security went from 49 to 31. Other categories moved too: Stability & Change Management rose 4.

  • 26 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed pypi/qiskit-gym-mcp-server@0.4.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo Qiskit/mcp-servers
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Qiskit/mcp-servers/.github/workflows/publish-pypi.yml@refs/tags/gym-v0.4.2
Rekor log index 3148037258
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:5bad72757b35488847686f8497ac63541e8b6392bd2a89e624997f8b280dc1e7

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 94 packages
Packages resolved 94
Stale 7
No linked repository 3
Tree resolution Partial

The dependency tree was only partially resolved, so these counts may be incomplete.

Background: SBOMs and build attestations, explained →

MCP tools · 37 exposed · ~2,857 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
batch_train_environments_tool ~128

Train multiple environments in sequence. Useful for training models across multiple topologies or subtopologies extracted from hardware.

NameTypeReqDescription
algorithmstring–RL algorithm to use
backgroundboolean–If True, start all training in background and return immediately. Use get_training_status_tool or wait_for_training_tool to monitor.
env_idsarrayyesList of environment IDs to train
num_iterationsinteger–Number of iterations per environment
policystring–Neural network policy architecture
tensorboard_prefix––Prefix for TensorBoard experiment names

Structured output declared, but exposes no named fields.

No examples provided.

convert_qasm3_to_qpy_tool ~97

Convert a QASM3 (or QASM2) circuit to base64-encoded QPY format. Use this tool to convert human-readable QASM circuits to QPY format, which preserves full circuit fidelity. The QPY output can be used with synthesis tools that may require circuit input.

NameTypeReqDescription
circuit_qasmstringyesOpenQASM 3.0 or 2.0 circuit string

Structured output declared, but exposes no named fields.

No examples provided.

convert_qpy_to_qasm3_tool ~96

Convert a QPY circuit to human-readable QASM3 format. Use this tool to view the contents of a QPY circuit output from synthesis tools (like synthesize_permutation, synthesize_linear_function, synthesize_clifford) in a human-readable OpenQASM 3.0 format.

NameTypeReqDescription
circuit_qpystringyesBase64-encoded QPY circuit string (from synthesis output)

Structured output declared, but exposes no named fields.

No examples provided.

create_clifford_env_tool ~152

Create a CliffordGym environment for learning Clifford circuit synthesis. The environment learns to synthesize optimal implementations of Clifford group elements using a customizable gate set.

NameTypeReqDescription
coupling_map––Custom coupling map (optional)
gateset––Custom gate set. Can be: - List of gate names: ["H", "S", "CX"] (applied to all qubits/edges) - List of dicts: [{"gate": "H", "qubits": [0]}, {"gate": "CX", "qubits": [0, 1]}]
num_qubitsintegeryesNumber of qubits for the environment
preset––Hardware preset name (optional)

Structured output declared, but exposes no named fields.

No examples provided.

create_coupling_map_tool ~117

Create a custom coupling map.

NameTypeReqDescription
bidirectionalboolean–Whether edges are bidirectional (default: True)
cols––Number of columns (for grid topology)
edges––Custom edges as [[q1, q2], ...] (mutually exclusive with topology)
num_qubits––Number of qubits (for line topology)
rows––Number of rows (for grid topology)
topology––Topology type ("grid", "line") (mutually exclusive with edges)

Structured output declared, but exposes no named fields.

No examples provided.

create_linear_function_env_tool ~107

Create a LinearFunctionGym environment for learning CNOT synthesis. The environment learns to decompose linear Boolean functions into efficient quantum circuits using CNOT gates.

NameTypeReqDescription
basis_gates––Optional list of basis gates (default: ["cx"])
coupling_map––Custom coupling map as list of [qubit1, qubit2] edges.
preset––Hardware preset name (e.g., "ibm_nighthawk", "grid_3x3")

Structured output declared, but exposes no named fields.

No examples provided.

create_permutation_env_tool ~165

Create a PermutationGym environment for learning qubit routing with SWAP gates. Use this to create an RL environment that learns to implement arbitrary qubit permutations using minimal SWAP gates on constrained coupling maps.

NameTypeReqDescription
coupling_map––Custom coupling map as list of [qubit1, qubit2] edges. Example: [[0,1], [1,2], [2,3]] for a linear chain.
preset––Hardware preset name (use instead of coupling_map). Options: "ibm_heron_r1", "ibm_heron_r2", "ibm_nighthawk", "grid_3x3", "grid_5x5", "linear_5", "linear_10"

Structured output declared, but exposes no named fields.

No examples provided.

delete_environment_tool ~25

Delete an environment.

NameTypeReqDescription
env_idstringyesEnvironment ID to delete

Structured output declared, but exposes no named fields.

No examples provided.

delete_model_tool ~44

Delete a model.

NameTypeReqDescription
delete_filesboolean–If True, also delete saved files from disk
model_namestringyesName of the model to delete

Structured output declared, but exposes no named fields.

No examples provided.

extract_subtopologies_tool ~151

Extract connected subtopologies of N qubits from a hardware preset. Use this to find all unique connected subgraphs of a specified size from a larger coupling map. Essential for training RL models on subtopologies of real quantum hardware like IBM Nighthawk.

NameTypeReqDescription
edges––Custom coupling map edges (alternative to preset)
max_subtopologiesinteger–Maximum number of subtopologies to return (default: 50)
num_qubitsinteger–Number of qubits for subtopologies (default: 4)
preset––Hardware preset name (e.g., "ibm_nighthawk", "ibm_heron_r1")

Structured output declared, but exposes no named fields.

No examples provided.

generate_random_clifford_tool ~33

Generate a random Clifford element for testing.

NameTypeReqDescription
num_qubitsintegeryesNumber of qubits

Structured output declared, but exposes no named fields.

No examples provided.

generate_random_linear_function_tool ~34

Generate a random invertible linear function for testing.

NameTypeReqDescription
num_qubitsintegeryesNumber of qubits

Structured output declared, but exposes no named fields.

No examples provided.

generate_random_permutation_tool ~32

Generate a random permutation for testing synthesis.

NameTypeReqDescription
num_qubitsintegeryesNumber of qubits

Structured output declared, but exposes no named fields.

No examples provided.

get_environment_info_tool ~28

Get detailed information about a specific environment.

NameTypeReqDescription
env_idstringyesEnvironment ID

Structured output declared, but exposes no named fields.

No examples provided.

get_fake_backend_coupling_map_tool ~112

Get the exact coupling map from a fake IBM backend (no credentials needed). Use this to get exact IBM Quantum hardware topologies without needing IBM Quantum credentials. This is the recommended way to get accurate topologies for offline development.

NameTypeReqDescription
backend_namestringyesBackend name (e.g., "ibm_fez", "ibm_brisbane", "ibm_boston", "ibm_sherbrooke"). Use list_available_fake_backends to see all options.

Structured output declared, but exposes no named fields.

No examples provided.

get_model_info_tool ~45

Get detailed information about a model.

NameTypeReqDescription
model_id––Model ID (for loaded models)
model_name––Model name (can also check saved models on disk)

Structured output declared, but exposes no named fields.

No examples provided.

get_tensorboard_metrics_tool ~99

Get training metrics from TensorBoard logs for historical runs. Use this to read metrics from past training runs that are no longer in the active session list. Use list_tensorboard_experiments_tool to see available experiments.

NameTypeReqDescription
experiment_name––Name of the TensorBoard experiment (e.g., "linear_function_train_0001_abc123").
tensorboard_path––Direct path to TensorBoard logs (alternative to name).

Structured output declared, but exposes no named fields.

No examples provided.

get_tensorboard_status_tool ~46

Check the status of the TensorBoard process. Returns whether TensorBoard is running and on which port. Returns: Dict with running status, port, and URL if running.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_training_metrics_tool ~66

Get detailed training metrics from TensorBoard logs. Returns the progression of difficulty, success rate, and reward throughout training. Use this after training completes to understand how well the model trained and what difficulty level it reached.

NameTypeReqDescription
session_idstringyesTraining session ID

Structured output declared, but exposes no named fields.

No examples provided.

get_training_status_tool ~31

Get the status and metrics of a training session.

NameTypeReqDescription
session_idstringyesTraining session ID

Structured output declared, but exposes no named fields.

No examples provided.

list_available_fake_backends_tool ~77

List all available fake backends for offline topology access. Returns a list of IBM Quantum backends that have fake versions available in qiskit-ibm-runtime. These provide exact coupling maps without needing IBM Quantum credentials. Returns: Dict with list of backends, their qubit counts, and usage instructions.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_environments_tool ~28

List all active RL environments. Returns: Dict with list of environments and their info.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_loaded_models_tool ~33

List all models currently loaded in memory.

NameTypeReqDescription
filter_type––Optional filter by env_type or model name prefix

Structured output declared, but exposes no named fields.

No examples provided.

list_saved_models_tool ~27

List all models saved to disk. Returns: Dict with list of saved models.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_subtopology_shapes_tool ~78

List available subtopology shapes for a given hardware and qubit count. Summarizes the types of subtopologies available (line, grid, star, etc.) without returning all edges.

NameTypeReqDescription
num_qubitsintegeryesNumber of qubits for subtopologies
presetstringyesHardware preset name

Structured output declared, but exposes no named fields.

No examples provided.

list_tensorboard_experiments_tool ~60

List available TensorBoard experiments from past training runs. Returns a list of experiment names that can be used with get_tensorboard_metrics_tool to view historical training metrics. Returns: Dict with list of experiment names (newest first).

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_training_sessions_tool ~25

List all training sessions. Returns: Dict with list of training sessions.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

load_model_tool ~30

Load a saved model from disk.

NameTypeReqDescription
model_namestringyesName of the model to load

Structured output declared, but exposes no named fields.

No examples provided.

save_model_tool ~76

Save a trained model to disk. Save by session_id (from just-completed training) or model_id (loaded model).

NameTypeReqDescription
model_id––Model ID (alternative to session_id)
model_name––Name to save as (defaults to auto-generated)
session_id––Training session ID (from start_training result)

Structured output declared, but exposes no named fields.

No examples provided.

start_tensorboard_tool ~64

Start TensorBoard to visualize training metrics. Launches TensorBoard as a background process using the configured QISKIT_GYM_TENSORBOARD_DIR as the log directory.

NameTypeReqDescription
portinteger–The port to run TensorBoard on (default: 6006)

Structured output declared, but exposes no named fields.

No examples provided.

start_training_tool ~211

Start training an RL agent on a created environment. This initiates training that learns to synthesize optimal circuits.

NameTypeReqDescription
algorithmstring–RL algorithm to use: - "ppo": Proximal Policy Optimization (recommended, faster) - "alphazero": AlphaZero-style MCTS (better for complex problems)
backgroundboolean–If True, run training in background and return immediately. Use get_training_status_tool to poll progress, or wait_for_training_tool to block until done. Default: False (synchronous).
env_idstringyesEnvironment ID from create_*_env_tool
num_iterationsinteger–Number of training iterations. Default: 100
policystring–Neural network policy architecture: - "basic": Simple feedforward network (faster, good for small problems) - "conv1d": 1D convolutional network (better for larger problems)
tensorboard_experiment––Name for TensorBoard logging (optional)

Structured output declared, but exposes no named fields.

No examples provided.

stop_tensorboard_tool ~46

Stop the running TensorBoard process. Terminates the TensorBoard process that was started with start_tensorboard_tool. Returns: Dict with status message indicating whether TensorBoard was stopped.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

stop_training_tool ~27

Stop a training session.

NameTypeReqDescription
session_idstringyesTraining session ID to stop

Structured output declared, but exposes no named fields.

No examples provided.

synthesize_clifford_tool ~120

Synthesize an optimal quantum circuit for a Clifford operation. Uses a trained CliffordGym model to find an optimal Clifford implementation.

NameTypeReqDescription
clifford_tableau–yesClifford tableau in standard (2N+1 x 2N) format, or dict with "destab" and "stab" matrices.
deterministicboolean–If True, use deterministic action selection
model_idstringyesID of a loaded CliffordGym model
num_searchesinteger–Number of search attempts. Max: 10000

Structured output declared, but exposes no named fields.

No examples provided.

synthesize_linear_function_tool ~121

Synthesize an optimal quantum circuit for a linear Boolean function. Uses a trained LinearFunctionGym model to find an optimal CNOT circuit.

NameTypeReqDescription
deterministicboolean–If True, use deterministic action selection
linear_functionarrayyesNxN binary matrix representing the linear function. Entry [i][j]=1 means output i depends on input j (XOR).
model_idstringyesID of a loaded LinearFunctionGym model
num_searchesinteger–Number of search attempts. Max: 10000

Structured output declared, but exposes no named fields.

No examples provided.

synthesize_permutation_tool ~150

Synthesize an optimal quantum circuit for a qubit permutation. Uses a trained PermutationGym model to find an optimal SWAP gate sequence that implements the desired qubit permutation on the coupling map.

NameTypeReqDescription
deterministicboolean–If True, use deterministic action selection
model_idstringyesID of a loaded PermutationGym model
num_searchesinteger–Number of search attempts. Higher = better results. Max: 10000
permutationarrayyesTarget permutation as list of qubit indices. Example: [2, 0, 1] means qubit 0 -> position 2, qubit 1 -> position 0

Structured output declared, but exposes no named fields.

No examples provided.

wait_for_training_tool ~76

Wait for a background training session to complete. Blocks until training completes, fails, or times out. Use this after starting training with background=True.

NameTypeReqDescription
session_idstringyesTraining session ID to wait for
timeoutinteger–Maximum time to wait in seconds (default: 600 = 10 minutes)

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the Qiskit Gym MCP Server server?

Qiskit Gym MCP Server runs locally as a PyPI package, launched with uvx qiskit-gym-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · qiskit-gym-mcp-server

# add to Claude Code
claude mcp add qiskit-qiskit-gym-mcp-server -- uvx qiskit-gym-mcp-server
Common questions

What is the Qiskit Gym MCP Server server?

Qiskit Gym MCP Server is listed in the public MCP registry as io.github.Qiskit/qiskit-gym-mcp-server. MCP server for qiskit-gym reinforcement learning quantum circuit synthesis. This page covers its PyPI package (qiskit-gym-mcp-server).

Is the Qiskit Gym MCP Server server safe to use?

Qiskit Gym MCP Server scores 73 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Qiskit Gym MCP Server server expose?

Qiskit Gym MCP Server exposes 37 tools: create_permutation_env_tool, create_linear_function_env_tool, create_clifford_env_tool, list_environments_tool, get_environment_info_tool, and 32 more. Their descriptions and schemas cost roughly 2,857 tokens of context every time the server is loaded.

Is the Qiskit Gym MCP Server server still maintained?

Qiskit Gym MCP Server is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Qiskit Gym MCP Server server under?

Qiskit Gym MCP Server declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.