Qiskit Gym MCP Server
A Model Context Protocol (MCP) server that provides reinforcement learning-based quantum circuit synthesis capabilities using qiskit-gym.
Features
- Train RL Models: Train reinforcement learning agents to synthesize optimal quantum circuits
- Background Training: Run long training sessions in background threads with polling support
- Three Synthesis Types:
- Permutation: Qubit routing with minimal SWAP gates
- Linear Function: CNOT synthesis for linear Boolean functions
- Clifford: Optimal Clifford circuit synthesis with custom gate sets
- Hardware Support: Presets for IBM Heron, Nighthawk, and common grid/linear topologies
- Exact IBM Topologies: Access exact coupling maps from IBM Quantum fake backends (offline, no credentials needed)
- Subtopology Extraction: Extract connected subgraphs from hardware coupling maps for targeted training
- Model Persistence: Save, load, and manage trained models
- TensorBoard Integration: Monitor training progress with TensorBoard
Installation
pip install qiskit-gym-mcp-server
Or install from source:
git clone https://github.com/Qiskit/mcp-servers
cd mcp-servers/qiskit-gym-mcp-server
pip install -e .
Quick Start
Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"qiskit-gym": {
"command": "qiskit-gym-mcp-server"
}
}
}
Example Workflow
User: "Train a model to synthesize Clifford circuits on a 3x3 grid topology"
AI Agent:
1. create_clifford_env_tool(num_qubits=9, preset="grid_3x3") # -> env_id
2. start_training_tool(env_id, algorithm="ppo", num_iterations=200) # -> session_id, model_id
3. save_model_tool(session_id, model_name="clifford_3x3_v1") # -> saved to disk
User: "Train on all 6-qubit subtopologies from IBM Nighthawk"
AI Agent:
1. extract_subtopologies_tool(preset="ibm_nighthawk", num_qubits=6) # -> list of subtopologies
2. For each subtopology:
- create_clifford_env_tool(num_qubits=6, coupling_map=subtopology["edges"])
- start_training_tool(env_id, algorithm="ppo", num_iterations=100)
- save_model_tool(session_id, model_name=f"nighthawk_6q_{i}")
User: "Train a model using the exact topology of IBM Fez backend"
AI Agent:
1. get_fake_backend_coupling_map_tool(backend_name="fake_fez") # -> exact 156-qubit Heron topology
2. extract_subtopologies_tool(edges=coupling_map["edges"], num_qubits=5) # -> 5-qubit subtopologies
3. For each subtopology:
- create_permutation_env_tool(num_qubits=5, coupling_map=subtopology["edges"])
- start_training_tool(env_id, algorithm="ppo", num_iterations=100)
User: "Train a model in the background so I can do other things"
AI Agent:
1. create_clifford_env_tool(num_qubits=6, preset="grid_2x3") # -> env_id
2. start_training_tool(env_id, algorithm="ppo", num_iterations=500, background=True) # -> session_id (returns immediately)
3. (User can now ask other questions or the agent can do other work)
4. get_training_status_tool(session_id) # -> check progress
5. wait_for_training_tool(session_id, timeout=600) # -> blocks until complete, returns model_id
6. save_model_tool(session_id, model_name="clifford_6q_v1")
Tools Reference
Environment Management
| Tool | Description |
|---|---|
create_permutation_env_tool |
Create PermutationGym for SWAP routing |
create_linear_function_env_tool |
Create LinearFunctionGym for CNOT synthesis |
create_clifford_env_tool |
Create CliffordGym with custom gate sets |
list_environments_tool |
List active environments |
get_environment_info_tool |
Get environment details |
delete_environment_tool |
Remove an environment |
Training
| Tool | Description |
|---|---|
start_training_tool |
Start RL training (PPO or AlphaZero), supports background=True |
wait_for_training_tool |
Wait for background training to complete |
batch_train_environments_tool |
Train multiple environments |
get_training_status_tool |
Get training progress and metrics |
stop_training_tool |
Stop a training session |
list_training_sessions_tool |
List all training sessions |
Synthesis
| Tool | Description |
|---|---|
synthesize_permutation_tool |
Generate optimal SWAP circuit |
synthesize_linear_function_tool |
Generate optimal CNOT circuit |
synthesize_clifford_tool |
Generate optimal Clifford circuit |
Model Management
| Tool | Description |
|---|---|
save_model_tool |
Save trained model to disk |
load_model_tool |
Load model from disk |
list_saved_models_tool |
List models on disk |
list_loaded_models_tool |
List models in memory |
delete_model_tool |
Delete a model |
get_model_info_tool |
Get model details |
Coupling Maps
| Tool | Description |
|---|---|
create_coupling_map_tool |
Create custom coupling map |
extract_subtopologies_tool |
Extract N-qubit subtopologies from hardware |
list_subtopology_shapes_tool |
List subtopology shapes (line, grid, etc.) |
get_fake_backend_coupling_map_tool |
Get exact topology from fake IBM backend (no credentials needed) |
list_available_fake_backends_tool |
List all available fake backends for offline topology access |
Utility Tools
| Tool | Description |
|---|---|
generate_random_permutation_tool |
Generate random permutation for testing |
generate_random_linear_function_tool |
Generate random linear function for testing |
generate_random_clifford_tool |
Generate random Clifford element for testing |
convert_qpy_to_qasm3_tool |
Convert QPY circuit to human-readable QASM3 |
convert_qasm3_to_qpy_tool |
Convert QASM3 circuit to QPY format |
Hardware Presets
| Preset | Qubits | Topology | Description |
|---|---|---|---|
ibm_heron_r1 |
133 | Heavy-hex | IBM Heron r1 processor |
ibm_heron_r2 |
156 | Heavy-hex | IBM Heron r2 processor |
ibm_nighthawk |
120 | 10x12 grid | IBM Nighthawk (600% depth improvement vs Heron) |
grid_3x3 |
9 | Grid | 3x3 square grid |
grid_5x5 |
25 | Grid | 5x5 square grid |
linear_5 |
5 | Line | 5-qubit linear chain |
linear_10 |
10 | Line | 10-qubit linear chain |
Resources
| URI | Description |
|---|---|
qiskit-gym://workflows |
Start here - Step-by-step workflows and quick start guide |
qiskit-gym://presets/coupling-maps |
Available hardware presets |
qiskit-gym://algorithms |
PPO, AlphaZero documentation |
qiskit-gym://policies |
BasicPolicy, Conv1dPolicy docs |
qiskit-gym://environments |
Environment type documentation |
qiskit-gym://training/sessions |
Active training sessions |
qiskit-gym://models |
Loaded models |
qiskit-gym://server/config |
Server configuration |
Configuration
Environment variables:
# Model storage directory (default: ~/.qiskit-gym/models)
QISKIT_GYM_MODEL_DIR=~/.qiskit-gym/models
# TensorBoard logs (default: ~/.qiskit-gym/runs)
QISKIT_GYM_TENSORBOARD_DIR=~/.qiskit-gym/runs
# Training limits (0 = no limit, default)
# QISKIT_GYM_MAX_ITERATIONS=10000 # Uncomment to set a limit
QISKIT_GYM_MAX_QUBITS=15
QISKIT_GYM_MAX_SEARCHES=10000
Development
# Install with dev dependencies
pip install -e ".[all]"
# Run tests
./run_tests.sh
# Or manually
uv run pytest tests/ -v
uv run ruff check src tests
uv run mypy src
Dependencies
- qiskit-gym - RL environments for quantum circuit synthesis
- FastMCP - MCP server framework
- Qiskit - Quantum computing framework
- qiskit-ibm-runtime - IBM Quantum access and fake backends
License
Apache 2.0 - See LICENSE for details.
Contributing
See CONTRIBUTING.md for contribution guidelines.
Metadata
Release files for qiskit-gym-mcp-server 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qiskit_gym_mcp_server-0.4.1.tar.gz | 61.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qiskit_gym_mcp_server-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 111.9 kB
Release files / qiskit_gym_mcp_server-0.4.1.tar.gz
| Download URL | qiskit_gym_mcp_server-0.4.1.tar.gz |
|---|---|
| Size | 61.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ce3e3c53a96ae969fc9809c90177596d6641abfb9d7fd1529601ce8b46af17b
|
|
BLAKE2b-256 checksum How to use checksums |
0cd49770c4cbbb97045b7693da4b67962e553f50965ca23ab5b24e3c760b8377
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 13, 2026.
Transparency logRelease files / qiskit_gym_mcp_server-0.4.1-py3-none-any.whl
| Download URL | qiskit_gym_mcp_server-0.4.1-py3-none-any.whl |
|---|---|
| Size | 50.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
190c21720a8f3c602d90fbea3cf3a8643c055293a4106a068d41ae4bb5efcd22
|
|
BLAKE2b-256 checksum How to use checksums |
a98fbafd7925e60ba4d554534ab2b4baebf8308630ec789acfb97759ca3e7767
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 13, 2026.
Transparency log