visualize_circuit
Retrieve a stored quantum circuit by ID and display it as an interactive HTML diagram with a structured gate list for review and narration.
Instructions
Visualize a stored circuit as HTML and a structured gate list for narration.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| circuit_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- The handler function for the visualize_circuit tool. Retrieves a circuit by ID from the store, renders its text diagram as HTML, extracts gate-level structure (name, qubits, clbits), and returns a JSON dict with HTML and circuit metadata.
def visualize_circuit(circuit_id: str) -> str: try: circuit = get_circuit(circuit_id) except CircuitNotFoundError as e: return json.dumps(mcp_error(str(e))) html = f"<pre>{str(circuit.draw('text'))}</pre>" gates = [] for inst in circuit.data: gate: dict = {"name": inst.operation.name, "qubits": [circuit.find_bit(q).index for q in inst.qubits]} if inst.clbits: gate["clbits"] = [circuit.find_bit(c).index for c in inst.clbits] gates.append(gate) return json.dumps({ "html": html, "circuit": { "name": circuit.name, "n_qubits": circuit.num_qubits, "depth": circuit.depth(), "gates": gates, }, }) - src/quantum_mcp_demo/server.py:19-21 (registration)Registers visualize_circuit as an MCP tool on the FastMCP server with a description.
mcp.tool( description="Visualize a stored circuit as HTML and a structured gate list for narration.", )(visualize_circuit) - Helper function used by visualize_circuit to return an error dict when CircuitNotFoundError occurs.
def mcp_error(message: str) -> dict[str, bool | str]: logger.warning("mcp_error: %s", message) return {"isError": True, "content": message} - Retrieves a stored QuantumCircuit by ID; raises CircuitNotFoundError if missing.
def get_circuit(circuit_id: str) -> QuantumCircuit: if circuit_id not in _circuits: raise CircuitNotFoundError(f"Circuit not found: {circuit_id!r}") return _circuits[circuit_id]