Qiskit Gym MCP Server
PYPI · QISKIT-GYM-MCP-SERVER
MCP server for qiskit-gym reinforcement learning quantum circuit synthesis
Available components
Last scanned (21 hours ago)
Scores higher than 69% of PyPI servers
Category AI and Machine Learning
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
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.
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 →
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 →
batch_train_environments_tool ~128
Train multiple environments in sequence. Useful for training models across multiple topologies or subtopologies extracted from hardware.
| Name | Type | Req | Description |
|---|---|---|---|
| algorithm | string | – | RL algorithm to use |
| background | boolean | – | If True, start all training in background and return immediately. Use get_training_status_tool or wait_for_training_tool to monitor. |
| env_ids | array | yes | List of environment IDs to train |
| num_iterations | integer | – | Number of iterations per environment |
| policy | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| circuit_qasm | string | yes | OpenQASM 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.
| Name | Type | Req | Description |
|---|---|---|---|
| circuit_qpy | string | yes | Base64-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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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_qubits | integer | yes | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bidirectional | boolean | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| env_id | string | yes | Environment ID to delete |
Structured output declared, but exposes no named fields.
No examples provided.
delete_model_tool ~44
Delete a model.
| Name | Type | Req | Description |
|---|---|---|---|
| delete_files | boolean | – | If True, also delete saved files from disk |
| model_name | string | yes | Name 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.
| Name | Type | Req | Description |
|---|---|---|---|
| edges | – | – | Custom coupling map edges (alternative to preset) |
| max_subtopologies | integer | – | Maximum number of subtopologies to return (default: 50) |
| num_qubits | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| num_qubits | integer | yes | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| num_qubits | integer | yes | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| num_qubits | integer | yes | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| env_id | string | yes | Environment 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.
| Name | Type | Req | Description |
|---|---|---|---|
| backend_name | string | yes | Backend 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Training 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.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Training 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| num_qubits | integer | yes | Number of qubits for subtopologies |
| preset | string | yes | Hardware 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.
| Name | Type | Req | Description |
|---|---|---|---|
| model_name | string | yes | Name 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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| port | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| algorithm | string | – | RL algorithm to use: - "ppo": Proximal Policy Optimization (recommended, faster) - "alphazero": AlphaZero-style MCTS (better for complex problems) |
| background | boolean | – | 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_id | string | yes | Environment ID from create_*_env_tool |
| num_iterations | integer | – | Number of training iterations. Default: 100 |
| policy | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Training 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.
| Name | Type | Req | Description |
|---|---|---|---|
| clifford_tableau | – | yes | Clifford tableau in standard (2N+1 x 2N) format, or dict with "destab" and "stab" matrices. |
| deterministic | boolean | – | If True, use deterministic action selection |
| model_id | string | yes | ID of a loaded CliffordGym model |
| num_searches | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| deterministic | boolean | – | If True, use deterministic action selection |
| linear_function | array | yes | NxN binary matrix representing the linear function. Entry [i][j]=1 means output i depends on input j (XOR). |
| model_id | string | yes | ID of a loaded LinearFunctionGym model |
| num_searches | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| deterministic | boolean | – | If True, use deterministic action selection |
| model_id | string | yes | ID of a loaded PermutationGym model |
| num_searches | integer | – | Number of search attempts. Higher = better results. Max: 10000 |
| permutation | array | yes | Target 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.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Training session ID to wait for |
| timeout | integer | – | Maximum time to wait in seconds (default: 600 = 10 minutes) |
Structured output declared, but exposes no named fields.
No examples provided.
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
claude mcp add qiskit-qiskit-gym-mcp-server -- uvx qiskit-gym-mcp-server
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.