Provides tools for electromagnetic simulation using Octave/OpenEMS, including creating CPW simulations, running full-wave analysis, extracting S-parameters, analyzing impedance, and exporting results in various formats.
Enables quantum circuit design using Qiskit Metal, with tools for creating designs, configuring CPW parameters, adding transmon qubits and couplers, routing transmission lines, exporting to GDS format, and visualizing with KLayout.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Funky Junctiondesign a transmon qubit with 50Ξ© CPW lines and simulate its impedance"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Funky Junction
Quantum Hardware Optimization Platform
A comprehensive MCP server ecosystem for quantum circuit design using Qiskit Metal and electromagnetic simulation via Octave/OpenEMS.
Built by
Team Members: Sarah Dweik, Sebastien Boussard, Paul Goldschmidt, & Gabriel Dupuis
π Features
π§ Quantum Circuit Design: Complete design workflow with Qiskit Metal
β‘ EM Simulation: Full-wave electromagnetic analysis using Octave/OpenEMS
π Optimization Loops: Automated parameter optimization with convergence detection
π Learning Resources: Python examples and research paper access
π€ Dual MCP Architecture: 25+ specialized tools across two integrated servers
π Installation
Prerequisites
Python 3.8+, Octave 4.0+, OpenEMS, Git
Quick Install
# Clone repository
git clone https://github.com/PaulGoldschmidt/qsim-mcp.git
cd qsim-mcp
# Install Python dependencies
pip install -r requirements.txt
# Install system dependencies (Ubuntu/Debian)
sudo apt update && sudo apt install octave openems
# Verify installation
python -c "import qiskit_metal; print('β Qiskit Metal ready')"
octave --version && openEMS --versionπ Quick Start
Start Both MCP Servers:
# Terminal 1 - Qiskit Metal Server
cd src/qiskit-metal-mcp && python quantum_hardware_mcp_server.py
# Terminal 2 - Octave OpenEMS Server
cd src/octave-mcp && python octave_openems_server.pyBasic Optimization Workflow:
# 1. Design Phase
create_design()
set_design_variables(cpw_width='10um', cpw_gap='6um')
create_transmons(q1_pos_x='-2.5mm', q2_pos_x='2.5mm')
export_design_to_gds('./quantum_design.gds')
# 2. Simulation Phase
create_cpw_octave_simulation(name='opt_v1', width=10.0, gap=6.0)
run_octave_simulation('opt_v1')
# 3. Analysis & Iteration
analyze_octave_impedance('opt_v1')
# Adjust parameters if needed and repeat
# 4. Export Results
export_octave_results('opt_v1', export_format='touchstone')π Project Structure
qsim-mcp/
βββ src/
β βββ qiskit-metal-mcp/ # Quantum circuit design server
β β βββ quantum_hardware_mcp_server.py
β β βββ requirements.txt
β βββ octave-mcp/ # EM simulation server
β β βββ octave_openems_server.py
β β βββ requirements.txt
β βββ resources/ # Examples and papers
βββ requirements.txt # Combined dependencies
βββ README.mdπ§ Available Tools
Qiskit Metal Design Tools
create_design()- Initialize quantum circuit designset_design_variables()- Configure CPW parameters (cpw_width,cpw_gap)create_transmons()- Add transmon qubits with positioningadd_coupler()- Create spiral inductors (n_turns,spacing)connect_components()- Route CPW transmission linesexport_design_to_gds()- Export for fabricationvisualize_gds_with_klayout()- Professional visualization
Octave/OpenEMS Simulation Tools
create_cpw_octave_simulation()- Set up EM simulationrun_octave_simulation()- Execute full-wave analysisextract_octave_s_parameters()- Analyze S11, S21 parametersanalyze_octave_impedance()- Verify 50Ξ© characteristic impedanceexport_octave_results()- Export to Touchstone, CSV, JSONlist_octave_simulations()- View completed simulations
π Optimization Workflow
Set Targets: Define optimization goals (impedance, Q-factor, coupling)
Design: Create/modify quantum circuit components in Qiskit Metal
Simulate: Run electromagnetic analysis with synchronized parameters
Analyze: Compare results against targets
Iterate: Adjust parameters until convergence
Export: Generate GDS files and simulation reports
βοΈ Configuration
MCP Client Setup:
{
"mcpServers": {
"qiskit-metal": {
"command": "python3",
"args": ["src/qiskit-metal-mcp/quantum_hardware_mcp_server.py"]
},
"octave-openems": {
"command": "python3",
"args": ["src/octave-mcp/octave_openems_server.py"]
}
}
}π§ Troubleshooting
System Requirements Issues:
# Install missing dependencies
sudo apt install octave openems # Ubuntu/Debian
brew install octave # macOS
# Check installations
check_octave_openems_status()
check_status()Common Solutions:
Simulation timeout: Increase timeout in
config.jsonMemory issues: Use
clear_octave_data("all")Permission errors: Check file paths and write permissions
π‘ Example: Complete Optimization
# Target: 50Ξ© Β±5% characteristic impedance
targets = {'impedance': 50.0, 'tolerance': 2.5}
for iteration in range(1, 6):
# Design with current parameters
set_design_variables(cpw_width=f'{current_width}um', cpw_gap=f'{current_gap}um')
# Simulate
create_cpw_octave_simulation(name=f'iter_{iteration}',
width=current_width, gap=current_gap)
run_octave_simulation(f'iter_{iteration}')
# Analyze and check convergence
results = analyze_octave_impedance(f'iter_{iteration}')
if within_tolerance(results, targets):
print(f"β
Converged in {iteration} iterations!")
break
# Adjust parameters for next iteration
current_width, current_gap = optimize_parameters(results, targets)
# Export final design
export_design_to_gds('./optimized_quantum_chip.gds')
export_octave_results(f'iter_{iteration}', 'touchstone')π License
MIT License - see LICENSE file for details.
π€ Contributing
Contributions welcome! Create an issue or submit a pull request.
Built with β€οΈ by Team Silicon Architects for the quantum computing community