initial commit

Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2025-10-08 02:57:03 +02:00
commit b4c6a7d52e
Se han modificado 25 ficheros con 6465 adiciones y 0 borrados

713
API.md Archivo normal
Ver fichero

@@ -0,0 +1,713 @@
# CUDA Quantum MCP Server - API Reference
Complete API documentation for the CUDA Quantum Model Context Protocol server.
## Table of Contents
- [Overview](#overview)
- [Quantum Circuit Tools](#quantum-circuit-tools)
- [Quantum Execution Tools](#quantum-execution-tools)
- [Hardware Backend Tools](#hardware-backend-tools)
- [Error Handling](#error-handling)
- [Examples](#examples)
## Overview
The CUDA Quantum MCP Server provides quantum computing capabilities through standardized MCP tools. Each tool accepts JSON input and returns structured results.
### Tool Response Format
All tools return responses in the MCP standard format:
```typescript
interface MCPToolResult {
content: Array<{
type: 'text' | 'image' | 'resource';
text?: string;
data?: string;
uri?: string;
}>;
isError?: boolean;
}
```
## Quantum Circuit Tools
### create_quantum_kernel
Create a new quantum kernel (circuit) with specified qubits and parameters.
**Input Schema:**
```json
{
"name": "string (required)",
"num_qubits": "integer 1-32 (required)",
"parameters": "array (optional)",
"description": "string (optional)"
}
```
**Parameters Array Schema:**
```json
{
"name": "string",
"type": "int|float|complex|list[int]|list[float]|list[complex]",
"default": "any (optional)"
}
```
**Example:**
```json
{
"name": "my_circuit",
"num_qubits": 4,
"parameters": [
{"name": "theta", "type": "float", "default": 0.0},
{"name": "angles", "type": "list[float]"}
],
"description": "My quantum circuit"
}
```
**Response:**
```
Successfully created quantum kernel 'my_circuit' with 4 qubits.
```
---
### apply_quantum_gate
Apply a quantum gate to specified qubits in a quantum kernel.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"gate_name": "string (required)",
"qubits": "array[integer] (required)",
"parameters": "array[number] (optional)",
"controls": "array[integer] (optional)",
"adjoint": "boolean (optional, default: false)"
}
```
**Supported Gates:**
- **Single-qubit**: `h`, `x`, `y`, `z`, `s`, `t`
- **Parameterized**: `rx`, `ry`, `rz` (require parameters)
- **Two-qubit**: `cx`, `cy`, `cz`, `swap`
- **Multi-qubit**: `ccx`, `cswap`
**Example:**
```json
{
"kernel_name": "my_circuit",
"gate_name": "rx",
"qubits": [0],
"parameters": [1.5708],
"adjoint": false
}
```
**Controlled Gate Example:**
```json
{
"kernel_name": "my_circuit",
"gate_name": "x",
"qubits": [1],
"controls": [0]
}
```
**Response:**
```
Successfully applied rx gate to qubits [0] in kernel 'my_circuit'.
```
---
### create_common_circuit
Create commonly used quantum circuits with predefined structures.
**Input Schema:**
```json
{
"circuit_type": "bell_pair|ghz_state|quantum_fourier_transform|grover_oracle|hadamard_test",
"name": "string (required)",
"num_qubits": "integer (optional, depends on circuit)",
"parameters": "object (optional)"
}
```
**Circuit Types:**
- `bell_pair`: Creates |00⟩ + |11⟩ state (2 qubits)
- `ghz_state`: Creates |000...⟩ + |111...⟩ state (n qubits)
- `quantum_fourier_transform`: QFT implementation
- `grover_oracle`: Grover's oracle template
- `hadamard_test`: Hadamard test circuit
**Example:**
```json
{
"circuit_type": "ghz_state",
"name": "ghz_4",
"num_qubits": 4
}
```
**Response:**
```
Successfully created ghz_state circuit named 'ghz_4' with 4 qubits.
```
---
### list_quantum_kernels
List all available quantum kernels and their metadata.
**Input Schema:**
```json
{
"detailed": "boolean (optional, default: false)"
}
```
**Example:**
```json
{
"detailed": true
}
```
**Response:**
```
Available quantum kernels (2):
• my_circuit
- Qubits: 4
- Parameters: 2
- Operations: 3
• ghz_4
- Qubits: 4
- Parameters: 0
- Operations: 4
```
---
### visualize_circuit
Generate a text-based visualization of a quantum circuit.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"format": "text|qasm|json (optional, default: text)"
}
```
**Example:**
```json
{
"kernel_name": "my_circuit",
"format": "text"
}
```
**Response:**
```
Quantum Circuit: my_circuit
Qubits: 4
Operations:
1. RX(1.5708) → qubits[0]
2. H → qubits[1]
3. X → qubits[2] (ctrl: 0)
4. CNOT → qubits[1,3]
```
## Quantum Execution Tools
### sample_quantum_circuit
Execute quantum circuit and sample measurement results.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"shots": "integer 1-100000 (optional, default: 1000)",
"parameters": "object (optional)",
"target": "string (optional)"
}
```
**Example:**
```json
{
"kernel_name": "bell_pair",
"shots": 5000,
"parameters": {"theta": 1.57},
"target": "qpp-gpu"
}
```
**Response:**
```
Sampling Results for 'bell_pair':
Shots: 5000
Results:
|00⟩: 2487 (49.74%)
|11⟩: 2513 (50.26%)
Entropy: 0.999 bits
```
---
### observe_hamiltonian
Compute the expectation value of a Hamiltonian using a quantum circuit.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"hamiltonian_terms": "array (required)",
"shots": "integer (optional, default: 1000)",
"parameters": "object (optional)"
}
```
**Hamiltonian Terms Schema:**
```json
{
"paulis": "array of ['I','X','Y','Z']",
"qubits": "array[integer]",
"coefficient": {
"real": "number",
"imag": "number"
}
}
```
**Example:**
```json
{
"kernel_name": "my_ansatz",
"hamiltonian_terms": [
{
"paulis": ["Z", "Z"],
"qubits": [0, 1],
"coefficient": {"real": 1.0, "imag": 0.0}
},
{
"paulis": ["X", "X"],
"qubits": [0, 1],
"coefficient": {"real": 0.5, "imag": 0.0}
}
],
"shots": 10000
}
```
**Response:**
```
Hamiltonian Expectation Value for 'my_ansatz':
Expectation Value: -0.234567
Variance: 0.012345
Standard Deviation: 0.111111
Shots: 10000
Hamiltonian Terms:
Term 1: 1.0 × (Z_0 ⊗ Z_1)
Term 2: 0.5 × (X_0 ⊗ X_1)
```
---
### get_quantum_state
Retrieve the quantum state vector from a quantum circuit.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"parameters": "object (optional)",
"format": "amplitudes|probabilities|both (optional, default: amplitudes)"
}
```
**Example:**
```json
{
"kernel_name": "bell_pair",
"format": "both"
}
```
**Response:**
```
Quantum State for 'bell_pair':
State Vector Dimension: 4
Probability Amplitudes:
|00⟩: 50.0000%
|11⟩: 50.0000%
Complex Amplitudes:
|00⟩: 0.707107 + 0.000000i
|11⟩: 0.707107 + 0.000000i
State Properties:
Purity: 1.000000
Entanglement: Entangled
```
---
### run_quantum_algorithm
Execute quantum algorithms with custom return values.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"shots": "integer (optional, default: 1000)",
"parameters": "object (optional)"
}
```
**Example:**
```json
{
"kernel_name": "grover_algorithm",
"shots": 1000,
"parameters": {"target_state": "101"}
}
```
---
### variational_optimization
Perform variational quantum optimization using gradient-based methods.
**Input Schema:**
```json
{
"kernel_name": "string (required)",
"hamiltonian_terms": "array (required)",
"initial_parameters": "array[number] (required)",
"optimizer": "cobyla|l-bfgs-b|gradient-descent (optional, default: cobyla)",
"max_iterations": "integer 1-1000 (optional, default: 100)"
}
```
**Example:**
```json
{
"kernel_name": "vqe_ansatz",
"hamiltonian_terms": [/* Hamiltonian definition */],
"initial_parameters": [0.1, 0.2, 0.3],
"optimizer": "cobyla",
"max_iterations": 50
}
```
## Hardware Backend Tools
### set_quantum_target
Configure quantum execution target (simulator or hardware backend).
**Input Schema:**
```json
{
"target": "string (required)",
"configuration": "object (optional)"
}
```
**Available Targets:**
- **Simulators**: `qpp-cpu`, `qpp-gpu`, `density-matrix-cpu`, `tensor-network`
- **Hardware**: `ionq`, `quantinuum`, `quantum_machines`, `infleqtion`, `iqm`, `oqc`, `pasqal`
**Configuration Options:**
```json
{
"shots": "integer",
"optimization_level": "integer 0-3",
"api_key": "string",
"url": "string",
"device": "string",
"noise_model": "string",
"error_mitigation": "boolean"
}
```
**Example:**
```json
{
"target": "qpp-gpu",
"configuration": {
"shots": 10000,
"optimization_level": 2
}
}
```
**Response:**
```
Successfully set quantum target to: qpp-gpu
Description: GPU State Vector Simulator (cuQuantum)
Configuration:
shots: 10000
optimization_level: 2
```
---
### list_quantum_backends
List all available quantum backends and their capabilities.
**Input Schema:**
```json
{
"category": "all|simulators|hardware (optional, default: all)",
"detailed": "boolean (optional, default: false)"
}
```
**Example:**
```json
{
"category": "simulators",
"detailed": true
}
```
**Response:**
```
Available Quantum Backends:
🖥️ Simulators:
• qpp-cpu: CPU State Vector Simulator
- Local execution
- GPU support: No
- Max qubits: 32
• qpp-gpu: GPU State Vector Simulator (cuQuantum)
- Local execution
- GPU support: Yes
- Max qubits: 32
🔬 Hardware Providers:
• ionq: IonQ Quantum Processors
- Remote execution
- Authentication required
```
---
### get_platform_info
Get information about the current quantum platform and available resources.
**Example:**
```json
{}
```
**Response:**
```
Quantum Platform Information:
Platform Name: default
Number of QPUs: 1
Is Simulator: true
Is Remote: false
System Information:
Node.js Version: v18.17.0
Platform: linux
Architecture: x64
CUDA Visible Devices: 0
```
---
### test_backend_connectivity
Test connectivity to quantum hardware providers.
**Input Schema:**
```json
{
"backend": "string (required)",
"credentials": "object (optional)"
}
```
**Credentials Schema:**
```json
{
"api_key": "string",
"url": "string",
"username": "string",
"password": "string"
}
```
**Example:**
```json
{
"backend": "qpp-gpu",
"credentials": {}
}
```
**Response:**
```
Testing connectivity to qpp-gpu...
✅ qpp-gpu is available (local simulator)
✅ CUDA device available: 0
```
---
### configure_gpu_acceleration
Configure GPU acceleration for quantum simulations.
**Input Schema:**
```json
{
"enable": "boolean (required)",
"device_id": "integer (optional)",
"memory_limit": "number (optional)",
"target": "qpp-gpu|density-matrix-gpu (optional, default: qpp-gpu)"
}
```
**Example:**
```json
{
"enable": true,
"device_id": 0,
"memory_limit": 8.0,
"target": "qpp-gpu"
}
```
**Response:**
```
GPU Acceleration Configuration:
✅ Enabling GPU acceleration
Target: qpp-gpu
GPU Device ID: 0
Memory Limit: 8.0 GB
✅ Successfully configured GPU target
Note: Ensure NVIDIA drivers and CUDA toolkit are installed.
```
## Error Handling
All tools return standardized error responses when failures occur:
```json
{
"content": [
{
"type": "text",
"text": "Error message describing what went wrong"
}
],
"isError": true
}
```
### Common Error Types
1. **Validation Errors**: Invalid input parameters
2. **Python Bridge Errors**: CUDA Quantum not available or timeout
3. **Execution Errors**: Quantum circuit execution failures
4. **Backend Errors**: Hardware provider connectivity issues
### Error Recovery
- **Timeout Errors**: Increase timeout in configuration
- **GPU Errors**: Check CUDA installation and device availability
- **API Errors**: Verify credentials and network connectivity
- **Memory Errors**: Reduce circuit size or enable GPU
## Examples
### Complete Quantum Algorithm Example
```json
// 1. Create parameterized ansatz
{
"tool": "create_quantum_kernel",
"input": {
"name": "vqe_h2",
"num_qubits": 4,
"parameters": [
{"name": "theta1", "type": "float"},
{"name": "theta2", "type": "float"}
]
}
}
// 2. Build ansatz circuit
{
"tool": "apply_quantum_gate",
"input": {
"kernel_name": "vqe_h2",
"gate_name": "ry",
"qubits": [0],
"parameters": ["theta1"]
}
}
// 3. Set GPU target
{
"tool": "set_quantum_target",
"input": {
"target": "qpp-gpu"
}
}
// 4. Compute expectation value
{
"tool": "observe_hamiltonian",
"input": {
"kernel_name": "vqe_h2",
"hamiltonian_terms": [
{
"paulis": ["Z", "Z", "I", "I"],
"qubits": [0, 1, 2, 3],
"coefficient": {"real": -1.0523732, "imag": 0.0}
}
],
"parameters": {"theta1": 0.5, "theta2": 1.2}
}
}
```
This API reference provides comprehensive documentation for all available tools and their usage patterns in the CUDA Quantum MCP Server.