Working with Quantum Devices

April 16, 2026 ยท View on GitHub

This guide covers how to list and query quantum computing devices through the MCP server.

Available Tools

ToolDescription
list_qpu_devices_toolList all available QPU devices
get_qpu_properties_toolGet detailed properties of a device

Listing Devices

To see all available quantum processing units (QPUs):

result = await list_qpu_devices_tool()

if result["status"] == "success":
    for device in result["devices"]:
        print(f"ID: {device['id']}")
        print(f"Name: {device['name']}")
        print(f"Qubits: {device['num_qubits']}")
        print(f"Operational: {device['operational']}")
        print("---")

Response Format

{
  "status": "success",
  "devices": [
    {
      "id": "20",
      "name": "QPU-20",
      "num_qubits": 72,
      "operational": true,
      "is_virtual": false,
      "pending_jobs": 3
    }
  ],
  "total_devices": 5
}

Getting Device Properties

To get detailed information about a specific device:

properties = await get_qpu_properties_tool(device_id="20")

if properties["status"] == "success":
    print(f"Device: {properties['name']}")
    print(f"Qubits: {properties['num_qubits']}")
    print(f"Basis Gates: {properties['basis_gates']}")
    print(f"Topology: {properties['topology']}")

Response Format

{
  "status": "success",
  "device_id": "20",
  "name": "QPU-20",
  "num_qubits": 72,
  "topology": "[[0,1], [1,2], ...]",
  "basis_gates": ["x", "y", "z", "h", "cx", "cz"],
  "operational": true,
  "is_virtual": false,
  "channel": "qcloud"
}

Device Properties Explained

PropertyDescription
idUnique device identifier
nameHuman-readable device name
num_qubitsNumber of qubits available
operationalWhether the device is online
is_virtualWhether this is a simulator
pending_jobsNumber of jobs in queue
basis_gatesNative gates supported
topologyQubit connectivity map

Selecting a Device

When choosing a device for your quantum tasks, consider:

  1. Qubit Count: Ensure the device has enough qubits for your circuit
  2. Operational Status: Check that the device is online
  3. Queue Length: Devices with fewer pending jobs may execute faster
  4. Gate Set: Verify the device supports your required gates
# Find the best available device
devices = await list_qpu_devices_tool()

best_device = None
for device in devices["devices"]:
    if device["operational"] and not device["is_virtual"]:
        if best_device is None or device["pending_jobs"] < best_device["pending_jobs"]:
            best_device = device

if best_device:
    print(f"Selected device: {best_device['id']} ({best_device['name']})")