qiskit-sim-mcp
qiskit-sim-mcp
一个模型上下文协议 (MCP) 服务器,允许 Claude Desktop 使用 Qiskit 和 Qiskit Aer 创建、可视化和模拟量子电路。
功能简介
连接到 Claude Desktop 后,您可以进行自然的对话,例如:
“创建一个贝尔态并用 1024 次采样进行模拟”
“向我展示 GHZ 电路图”
“在高噪声下运行贝尔态并解释发生了什么变化”
“根据此 QASM 字符串创建一个自定义电路”
Claude 将自动调用底层工具——无需手动调用。
Related MCP server: Qiskit MCP Server
特性
3 个工具:
create_circuit、visualize_circuit、run_simulation5 个预设电路:贝尔态 (Bell state)、GHZ-3、叠加态 (Superposition)、Deutsch-Jozsa、随机-4 (Random-4)
自定义 QASM:接受任何有效的 OpenQASM 2.0 字符串
噪声建模:通过去极化误差实现理想、低噪声 (p=0.001)、高噪声 (p=0.01)
1 个资源:
resource://noise-presets— 列出可用的噪声配置1 个提示词:
simulate_walkthrough— 指导性对话模板
要求
Python 3.13+
Anaconda 或任何 Python 环境管理器
设置
1. 克隆仓库
git clone <repo-url>
cd qiskit-sim-mcp2. 安装依赖
pip install -e .这将把 mcp[cli]、qiskit 和 qiskit-aer 安装到您的 Python 环境中。
3. 验证安装
python -c "
import asyncio
from quantum_mcp_demo.server import mcp
tools = asyncio.run(mcp.list_tools())
resources = asyncio.run(mcp.list_resources())
prompts = asyncio.run(mcp.list_prompts())
print('Tools:', [t.name for t in tools])
print('Resources:', [r.uri for r in resources])
print('Prompts:', [p.name for p in prompts])
"预期输出:
Tools: ['create_circuit', 'visualize_circuit', 'run_simulation']
Resources: [AnyUrl('resource://noise-presets')]
Prompts: ['simulate_walkthrough']4. 使用 MCP Inspector 进行测试(可选)
uv run mcp dev src/quantum_mcp_demo/server.py在浏览器中打开 http://localhost:6274。在连接到 Claude Desktop 之前,使用 Tools 选项卡手动调用每个工具。
5. 连接到 Claude Desktop
找到您的 Claude Desktop 配置文件:
操作系统 | 路径 |
macOS |
|
Windows |
|
在 mcpServers 对象中添加此条目:
{
"mcpServers": {
"qiskit-sim-mcp": {
"command": "/opt/anaconda3/bin/python",
"args": [
"-m",
"quantum_mcp_demo.server"
]
}
}
}注意: 将
/opt/anaconda3/bin/python替换为您实际的 Python 路径。运行which python即可找到它。
6. 重启 Claude Desktop
完全退出 Claude Desktop(macOS 上为 Cmd+Q),然后重新打开。在新的对话中,聊天输入框中的锤子图标 (🔨) 表示 MCP 工具已加载。
使用示例
贝尔态模拟
“创建一个贝尔态电路,向我展示图表,然后分别在理想和高噪声下模拟 1024 次。”
Claude 将调用:
create_circuit(preset="bell")→ 获取circuit_idvisualize_circuit(circuit_id=...)→ 显示 H + CNOT 门电路图run_simulation(circuit_id=..., shots=1024, noise_preset="ideal")→ ~50%|00⟩, ~50%|11⟩run_simulation(circuit_id=..., shots=1024, noise_preset="high_noise")→ 计数退化,出现|01⟩和|10⟩
自定义 QASM 电路
“运行此电路:OPENQASM 2.0; include "qelib1.inc"; qreg q[2]; creg c[2]; h q[0]; cx q[0],q[1]; measure q -> c;”
Claude 解析 QASM 字符串并通过相同的模拟流水线运行它。
噪声比较
“比较理想噪声与高噪声下的 GHZ 态——噪声对纠缠有什么影响?”
项目结构
src/quantum_mcp_demo/
├── server.py # MCP server entry point
├── circuits/
│ ├── presets.py # 5 named preset circuits
│ └── store.py # In-memory circuit storage (UUID-keyed)
├── tools/
│ ├── create_circuit.py # Tool: create from preset or QASM
│ ├── visualize.py # Tool: HTML diagram + gate JSON
│ └── simulate.py # Tool: AerSimulator + noise modeling
├── resources/
│ └── noise_presets.py # Resource: noise configuration list
├── prompts/
│ └── walkthrough.py # Prompt: guided simulation conversation
└── utils/
├── serialization.py # numpy → Python int conversion
└── errors.py # MCP error response builder预设电路
预设 | 量子比特 | 演示内容 | ||
| 2 | 纠缠 — ` | 00⟩ | 11⟩` 各占 50% |
| 3 | 多量子比特纠缠 | ||
| 1 | 通过 Hadamard 门实现等量叠加 | ||
| 3 | 量子算法 — 干涉 | ||
| 4 | 噪声压力测试 — 固定种子的随机门 |
噪声预设
预设 | 去极化 p | 描述 |
| 无 | 理想模拟 |
| 0.001 | 现实的近期设备 |
| 0.01 | 激进噪声 — 可见的退化 |
故障排除
Claude Desktop 不显示锤子图标
编辑配置后,完全退出并重新启动 Claude Desktop
检查配置 JSON 是否有效(没有多余的逗号)
验证 Python 路径:
which python
python -m quantum_mcp_demo.server 失败
确保您已在项目根目录下运行
pip install -e .确认 Python 版本:
python --version(需要 3.13+)
运行 MCP Inspector 时端口冲突
kill -9 $(lsof -t -i :6274) 2>/dev/null; kill -9 $(lsof -t -i :6277) 2>/dev/null模拟返回意外的计数
采样数不匹配会自动捕获并返回为
isError: true如果看到错误,请尝试减少
shots(例如 512)
Available Tools
3 toolscreate_circuitA
Create a quantum circuit from a named preset or an OpenQASM 2.0 string. Provide exactly one of: preset (bell|ghz_3|superposition|deutsch_jozsa|random_4) or qasm.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | ||
| qasm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It only states 'create', which implies mutation, but does not disclose side effects, permissions, rate limits, or whether the operation is reversible. Minimal behavioral context beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and contains no unnecessary words. Every sentence adds value, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (implied), the description need not explain return values. It covers the essential parameter modes and preset list. However, it lacks error handling guidance (e.g., what happens if both or neither are provided) and interaction with sibling tools, but the description remains adequate for a simple creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description compensates by specifying that exactly one parameter must be provided and listing the preset options. It clarifies that qasm is an OpenQASM 2.0 string, adding semantic value. However, it does not detail the format or constraints further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a quantum circuit from a named preset or an OpenQASM 2.0 string, listing specific preset options. This distinguishes it from siblings (run_simulation, visualize_circuit) which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for circuit creation but does not explicitly state when to use this tool over alternatives or provide exclusions. It lacks guidance on prerequisites or context for using presets versus QASM.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_simulationA
Run a stored circuit on AerSimulator with optional depolarizing noise. noise_preset: ideal | low_noise | high_noise. Returns counts, probabilities, metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| circuit_id | Yes | ||
| shots | Yes | ||
| noise_preset | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions returns (counts, probabilities, metadata) but does not state whether the operation is read-only, has side effects, or requires specific permissions. The behavior is partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and presents noise options succinctly. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 required parameters, no annotations, and an output schema, the description covers the platform and noise but omits parameter constraints and fails to distinguish output structure beyond mentioning three fields. It is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains noise_preset with enumerated values, but leaves circuit_id and shots undocumented (no hint on circuit_id source or shots default/range). Only 1 of 3 parameters gains meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a stored circuit on AerSimulator with optional noise, and the verb 'Run' paired with 'stored circuit' distinguishes it from sibling tools 'create_circuit' and 'visualize_circuit'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (run a stored circuit) and provides specific noise preset options (ideal, low_noise, high_noise), but does not explicitly exclude alternatives or state prerequisites like needing a pre-existing circuit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_circuitB
Visualize a stored circuit as HTML and a structured gate list for narration.
| Name | Required | Description | Default |
|---|---|---|---|
| circuit_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, any side effects, or prerequisites (e.g., circuit must exist). This leaves uncertainty about its safety and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no unnecessary words. It front-loads the key action and outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and no annotations, the description is adequate but incomplete. It fails to specify error conditions, the format of the gate list, or prerequisite existence checks for the circuit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'circuit_id' has 0% schema description coverage, and the description does not add any meaning beyond the schema's title. No guidance on what constitutes a valid circuit_id or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'visualize' and resource 'stored circuit', and specifies the output as HTML and a gate list for narration. This distinguishes it from siblings 'create_circuit' and 'run_simulation'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. Usage is implied by the context of having a stored circuit to visualize, but alternatives like run_simulation are not differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
create_circuit - First observed
run_simulation - First observed
visualize_circuit
TDQS
Scored across 3 tools
Each tool addresses a distinct phase of quantum circuit workflow: creation, simulation, and visualization. No overlap in functionality.
All tools follow a consistent verb_noun convention (create_circuit, run_simulation, visualize_circuit), making their purpose immediately clear.
Three tools cover the core lifecycle adequately. While more tools (e.g., list, delete) could be added, the current count is reasonable for a focused server.
The tools enable creating, running with noise, and visualizing circuits. Missing operations like listing or deleting circuits are minor gaps but do not severely hinder basic usage.
Maintenance
Related MCP Connectors
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for Qwen Image 3 AI image generation
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server exposing Qiskit quantum computing functionality through the Model Context Protocol. Enables LLMs to create, manipulate, and execute quantum circuits via standardized MCP tools and resources.26 PyPIMIT
- FlicenseAqualityFmaintenanceUnofficial Model Context Protocol (MCP) server that enables LLMs to build and execute quantum circuits using Qiskit.137-

SpinQit MCP Toolsofficial
FlicenseNot gradedqualityDmaintenanceSpinQit MCP Tools is a Python MCP server that connects AI assistants to SpinQ Cloud, enabling QASM circuit submission, platform discovery, and quantum task result retrieval through the Model Context Protocol.2-- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude hands-on access to quantum computing via Qiskit, enabling building circuits, simulation, statevector inspection, transpilation, and optional execution on real IBM quantum computers.MIT