一个全面的模型上下文协议(MCP)服务器,使用NVIDIA的CUDA Quantum框架提供量子计算能力,并支持GPU加速。
# 安装CUDA Quantum Python包
pip install cudaq
# 对于GPU支持,请确保CUDA已正确安装
nvidia-smi # 检查NVIDIA驱动
nvcc --version # 检查CUDA编译器
# 克隆仓库
git clone <repository-url>
cd mcp-quantum
# 安装Node.js依赖
npm install
# 安装Python依赖
npm run python-setup
# 构建TypeScript
npm run build
复制示例环境文件并进行配置:
cp .env.example .env
编辑.env文件以设置您的配置:
# 服务器配置
SERVER_PORT=3000
NODE_ENV=production
# CUDA Quantum配置
CUDAQ_PYTHON_PATH=/usr/local/bin/python3
CUDAQ_DEFAULT_TARGET=qpp-cpu
CUDAQ_LOG_LEVEL=info
# Python桥接超时(毫秒)
# 默认:300000(5分钟)
# 对于复杂操作或较慢的硬件,增加此值
PYTHON_TIMEOUT=300000
# GPU配置
CUDA_VISIBLE_DEVICES=0
CUDAQ_ENABLE_GPU=true
# 硬件提供商API密钥(可选)
QUANTUM_MACHINES_API_KEY=your_api_key_here
IONQ_API_KEY=your_api_key_here
npm start
服务器使用stdio传输进行MCP通信:
# 例如通过Claude Desktop连接
# 添加到您的Claude Desktop配置中
// 创建贝尔对电路
await mcp.callTool('create_quantum_kernel', {
name: 'bell_pair',
num_qubits: 2
});
// 在量子比特0上应用Hadamard门
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'bell_pair',
gate_name: 'h',
qubits: [0]
});
// 应用CNOT门(受控-X)
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'bell_pair',
gate_name: 'x',
qubits: [1],
controls: [0]
});
// 采样电路
await mcp.callTool('sample_quantum_circuit', {
kernel_name: 'bell_pair',
shots: 1000
});
create_quantum_kernel创建具有指定量子比特和参数的新量子内核。
{
"name": "my_kernel",
"num_qubits": 4,
"parameters": [
{"name": "theta", "type": "float"},
{"name": "angles", "type": "list[float]"}
]
}
apply_quantum_gate将量子门应用于特定量子比特,可选控制量子比特。
{
"kernel_name": "my_kernel",
"gate_name": "rx",
"qubits": [0],
"parameters": [1.57],
"controls": [],
"adjoint": false
}
支持的门:
h, x, y, z, s, t, rx, ry, rzcx (CNOT), cy, cz, swapccx (Toffoli), cswap (Fredkin)create_common_circuit生成常用的量子电路。
{
"circuit_type": "ghz_state",
"name": "ghz_3",
"num_qubits": 3
}
可用电路:
bell_pair:最大纠缠两量子比特状态ghz_state:Greenberger-Horne-Zeilinger态quantum_fourier_transform:QFT实现hadamard_test:Hadamard测试电路sample_quantum_circuit执行量子电路并采样测量结果。
{
"kernel_name": "bell_pair",
"shots": 1000,
"target": "qpp-gpu"
}
observe_hamiltonian计算哈密顿量算子的期望值。
{
"kernel_name": "my_kernel",
"hamiltonian_terms": [
{
"paulis": ["Z", "Z"],
"qubits": [0, 1],
"coefficient": {"real": 1.0, "imag": 0.0}
}
],
"shots": 1000
}
get_quantum_state从电路中检索量子态向量。
{
"kernel_name": "my_kernel",
"format": "amplitudes"
}
set_quantum_target配置量子执行目标。
{
"target": "qpp-gpu",
"configuration": {
"shots": 1000,
"optimization_level": 2
}
}
可用目标:
模拟器:
qpp-cpu:CPU状态向量模拟器qpp-gpu:GPU加速模拟器(cuQuantum)density-matrix-cpu:密度矩阵模拟器tensor-network:张量网络模拟器硬件提供商:
ionq:IonQ量子处理器quantinuum:Quantinuum H系列quantum_machines:Quantum Machines平台infleqtion:Infleqtion量子处理器configure_gpu_acceleration启用/禁用量子模拟的GPU加速。
{
"enable": true,
"device_id": 0,
"memory_limit": 8.0,
"target": "qpp-gpu"
}
// 创建量子隐形传态电路
await mcp.callTool('create_quantum_kernel', {
name: 'teleportation',
num_qubits: 3
});
// 准备贝尔对(量子比特1,2)
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'teleportation',
gate_name: 'h',
qubits: [1]
});
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'teleportation',
gate_name: 'x',
qubits: [2],
controls: [1]
});
// 量子隐形传态协议(量子比特0 -> 量子比特2)
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'teleportation',
gate_name: 'x',
qubits: [1],
controls: [0]
});
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'teleportation',
gate_name: 'h',
qubits: [0]
});
// 采样结果
await mcp.callTool('sample_quantum_circuit', {
kernel_name: 'teleportation',
shots: 1000
});
// 创建参数化的Ansatz
await mcp.callTool('create_quantum_kernel', {
name: 'vqe_ansatz',
num_qubits: 2,
parameters: [
{"name": "theta1", "type": "float"},
{"name": "theta2", "type": "float"}
]
});
// 构建Ansatz电路
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'vqe_ansatz',
gate_name: 'ry',
qubits: [0],
parameters: ['theta1'] // 参数引用
});
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'vqe_ansatz',
gate_name: 'x',
qubits: [1],
controls: [0]
});
// 定义H2分子哈密顿量
const h2_hamiltonian = [
{
"paulis": ["Z", "I"],
"qubits": [0, 1],
"coefficient": {"real": -1.0523732, "imag": 0.0}
},
{
"paulis": ["I", "Z"],
"qubits": [0, 1],
"coefficient": {"real": -1.0523732, "imag": 0.0}
},
{
"paulis": ["Z", "Z"],
"qubits": [0, 1],
"coefficient": {"real": -0.39793742, "imag": 0.0}
}
];
// 计算期望值
await mcp.callTool('observe_hamiltonian', {
kernel_name: 'vqe_ansatz',
hamiltonian_terms: h2_hamiltonian,
parameters: {"theta1": 0.5, "theta2": 1.2}
});
// 配置GPU加速
await mcp.callTool('configure_gpu_acceleration', {
enable: true,
device_id: 0,
target: 'qpp-gpu'
});
// 创建大型量子电路
await mcp.callTool('create_quantum_kernel', {
name: 'large_circuit',
num_qubits: 20
});
// 应用随机电路
for (let i = 0; i < 20; i++) {
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'large_circuit',
gate_name: 'h',
qubits: [i]
});
}
// 添加纠缠门
for (let i = 0; i < 19; i++) {
await mcp.callTool('apply_quantum_gate', {
kernel_name: 'large_circuit',
gate_name: 'x',
qubits: [i + 1],
controls: [i]
});
}
// 使用GPU加速采样
await mcp.callTool('sample_quantum_circuit', {
kernel_name: 'large_circuit',
shots: 10000,
target: 'qpp-gpu'
});
await mcp.callTool('set_quantum_target', {
target: 'ionq',
configuration: {
api_key: process.env.IONQ_API_KEY,
backend: 'simulator', // 或 'qpu'
shots: 1000
}
});
await mcp.callTool('set_quantum_target', {
target: 'quantinuum',
configuration: {
api_key: process.env.QUANTINUUM_API_KEY,
device: 'H1-1E', // 或其他可用设备
shots: 1000
}
});
await mcp.callTool('set_quantum_target', {
target: 'quantum_machines',
configuration: {
api_key: process.env.QUANTUM_MACHINES_API_KEY,
url: 'https://api.quantum-machines.com',
executor: 'qpu' // 或 'simulator'
}
});
Error: CUDA Quantum不可用
解决方案:pip install cudaq
Error: 未找到CUDA设备
解决方案:
1. 检查nvidia-smi输出
2. 安装NVIDIA驱动
3. 设置CUDA_VISIBLE_DEVICES=0
Error: Python命令超时Xms
解决方案:
1. 使用环境变量增加超时时间:
export PYTHON_TIMEOUT=600000 # 10分钟,单位为毫秒
2. 检查Python路径在.env中:
CUDAQ_PYTHON_PATH=/usr/local/bin/python3
3. 确保CUDA Quantum已正确安装:
python3 -c "import cudaq; print(cudaq.__version__)"
4. 检查日志中的Python进程错误
注意:默认超时时间为300,000ms(5分钟)。复杂的量子操作或较慢的硬件可能需要通过PYTHON_TIMEOUT环境变量增加此值。
启用调试日志记录:
export LOG_LEVEL=debug
npm start
// 测试平台可用性
await mcp.callTool('get_platform_info');
// 测试后端连接
await mcp.callTool('test_backend_connectivity', {
backend: 'qpp-gpu'
});
运行测试套件:
# 单元测试
npm test
# 集成测试
npm run test:integration
# 覆盖报告
npm run test:coverage
所有工具遵循MCP(模型上下文协议)规范:
interface MCPTool {
name: string;
description: string;
inputSchema: JSONSchema;
}
interface MCPToolResult {
content: Array<{
type: 'text' | 'image' | 'resource';
text?: string;
data?: string;
uri?: string;
}>;
isError?: boolean;
}
Python桥接提供了直接访问CUDA Quantum:
class PythonBridge {
// 内核管理
createKernel(name: string, numQubits: number): Promise<PythonResponse>;
applyGate(kernel: string, gate: string, qubits: number[]): Promise<PythonResponse>;
// 执行
sample(kernel: string, shots?: number): Promise<PythonResponse>;
observe(kernel: string, hamiltonian: any[]): Promise<PythonResponse>;
getState(kernel: string): Promise<PythonResponse>;
// 配置
setTarget(target: string, config?: any): Promise<PythonResponse>;
}
FROM nvidia/cuda:11.8-runtime-ubuntu22.04
# 安装Node.js和Python
RUN apt-get update && apt-get install -y \\
nodejs npm python3 python3-pip
# 安装CUDA Quantum
RUN pip3 install cudaq
# 复制并构建应用程序
COPY . /app
WORKDIR /app
RUN npm install && npm run build
# 启动服务器
CMD ["npm", "start"]
# 生产环境
NODE_ENV=production
MCP_SERVER_NAME=cuda-quantum-mcp-prod
CUDAQ_DEFAULT_TARGET=qpp-gpu
LOG_LEVEL=info
# GPU优化
CUDA_VISIBLE_DEVICES=0,1,2,3
NVIDIA_VISIBLE_DEVICES=all
git checkout -b feature/amazing-featuregit commit -m '添加神奇的功能'git push origin feature/amazing-feature# 安装开发依赖
npm install
# 在开发模式下运行
npm run dev
# 运行代码检查
npm run lint
# 格式化代码
npm run format
本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。