Skip to main content
Glama

qudi MCP Integration

by dirkenglund
instrument_tools.cpython-313.pyc9.2 kB
� �+�h�'��H�SrSSKrSSKJrJrJrJr SSKJr "SS5r g)z� Instrument control tools for qudi MCP integration Handles instrument loading, parameter management, and control operations through qudi's instrument abstraction layer. �N)�Dict�List�Any�Optional�)�RunLevelc�"�\rSrSrSrSrS\S\\\4S\\\44Sjr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jrS\S\\\44SjrSrg)�InstrumentTools� z'Instrument control and management toolsc�F�Xl[R"S5Ulg)Nzqudi-mcp.instruments)�server�logging� getLogger�logger)�selfr s �^/Users/englund/Projects/QPG-MIT/qudi-iqo-modules-QPG/mcp_integration/tools/instrument_tools.py�__init__�InstrumentTools.__init__s��� ��'�'�(>�?�� ��name� arguments�returnc��# �URURURURURS.nX;aSSU30$X1"U5IShv�N $N7f)zRoute instrument tool calls)zinstrument.listzinstrument.loadzinstrument.get_parameterszinstrument.set_parameterzinstrument.get_status�errorzUnknown instrument tool: N)�_list_instruments�_load_instrument�_get_parameters�_set_parameter� _get_status)rrr�tool_maps r� handle_tool�InstrumentTools.handle_toolsi��� $�5�5�#�4�4�)-�)=�)=�(,�(;�(;�%)�%5�%5�  �� � ��8���?�@� @��^�I�.�.�.�.�s�AA�A�A�argsc ��2# �URR[R:XaHSSSSS.SSSSS.S SSS S.S S SS S.SSSSS.SSSSS./URRRSS.$/URRRSS.$7f)zList available instruments�laser_controller�laser� availablez0Main laser controller for quantum dot excitation)r�type�status� description�gate_dac�dacz+Gate voltage DAC for quantum device control�bias_daczBias voltage DAC�photon_counter�counterzSingle photon counting module� spectrometerzHigh resolution spectrometer�temperature_controller� temperaturezCryostat temperature controllerzSimulated instrument list)� instruments�runlevel�messagez9qudi station not connected - use dry-run mode for testing)r r4r�DRY_RUN�value)rr#s rr�!InstrumentTools._list_instruments$s���� �;�;� � �8�#3�#3� 3� !3� '�"-�'Y� �!+� %�"-�'T� �!+� %�"-�'9� �!1� )�"-�'F� �!/� .�"-�'E� �!9� -�"-�'H� �?% �L!�K�K�0�0�6�6�6�Q)�) �Z�� � �,�,�2�2�R� � �s�BBc��F# �URS5nU(dSS0$URR[R:XaUUSSUR U5S.URR U'SUSU3URRRS .$SS S .$7f) z!Load and initialize an instrument�instrument_namer�instrument_name is required� simulated�loaded)rr(r)� parameters�successzSimulated loading of )r)� instrumentr5r4z>Real instrument loading not yet implemented - use dry-run mode)r)r5)�getr r4rr6�_get_simulated_parametersr3r7)rr#r:s rr� InstrumentTools._load_instrument[s�����(�(�#4�5����:�;� ;� �;�;� � �8�#3�#3� 3�(�#�"�"�<�<�_�M� 8�D�K�K� #� #�O� 4�$�-�2�?�2C�D� �K�K�0�0�6�6� � ��W� � �s�BB!c��H# �URS5nU(dSS0$X RR;aSSUS30$URR[R :Xa6UR U5nUUURRRSS.$SS0$7f) z,Get instrument parameters and current valuesr:rr;� Instrument � not loadedzSimulated parameter values)r@r>r4r5z*Real parameter reading not yet implemented)rAr r3r4rr6rBr7)rr#r:r>s rr�InstrumentTools._get_parametersxs�����(�(�#4�5����:�;� ;� �+�+�"9�"9� 9��{�?�*;�;�G�H� H� �;�;� � �8�#3�#3� 3��7�7��H�J�-�(� �K�K�0�0�6�6�7� � � �A� � �s�B B"c���# �URS5nURS5nURS5n[X#USL/5(dSS0$URRR X45upVU(dSSU30$URR [ R:XaSUUUS US U3US .$URR [ R:XaSS 0$SUUUS US U3US .$7f)z/Set instrument parameter with safety validationr:�parameter_namer7Nrz7instrument_name, parameter_name, and value are requiredzSafety violation: r?zDry-run: Would set z = )r)r@� parameterr7r5� safety_checkz?LIVE mode parameter setting requires approval (not implemented)zSimulated: Set ) rA�allr �safety_checker�validate_parameterr4rr6�LIVE)rr#r:rIr7�is_safer5s rr�InstrumentTools._set_parameter�s!����(�(�#4�5�����"2�3������!���O�U�$�5F�G�H�H��V�W� W� �;�;�5�5�H�H��_�����1�'��;�<� <� �;�;� � �8�#3�#3� 3�#�-�+��0��0@��E�7�K� '� � � �;�;� � �8�=�=� 0��Z�� �  �)�'��(��(8��E�7�C�#�  � �s�C3C5c ��# �URS5nU(d�URRR5VVs0sHup4X4RSS5_M snn[ URR5URR R S.$X RR;aSSUS30$URRUnUURSS5URSS5[ URS 055URR R S .$s snnf7f) zGet instrument statusr:r)�unknown)�all_instruments� loaded_countr4rrErFr(r>)r@r)r(r>r4)rAr r3�items�lenr4r7)rr#r:r�instrr@s rr�InstrumentTools._get_status�s����(�(�#4�5��� (,�{�{�'>�'>�'D�'D�'F�$�'F� ���)�)�H�i�8�8�'F�$�!$�D�K�K�$;�$;� <� �K�K�0�0�6�6� � � �+�+�"9�"9� 9��{�?�*;�;�G�H� H��[�[�,�,�_�=� �)� �n�n�X�y�9��N�N�6�9�5��j�n�n�\�2�>�?�� � �,�,�2�2�  � ��$�s�AE�D<� C"Er:c ��SSSSS.SSSS S.S S SS S.S SSSS.S.SSSSS.SSSSS.SSSSS.S.SSSSSS.0SSSSS.SSSSS.S.SSS S!S.SSS"SS.SSSS#S.S$.S%S&S"S'S.SS(SSS.S).S*.nURUS+SS,SS S.05$)-z7Get simulated parameters for different instrument typesg�?�mWgg$@)r7�unit�min�maxg�@�nmg��@gP�@gI@�mAgY@g9@�Cg4@g>@)�power� wavelength�currentr2�Vg�g@)� gate1_voltage� gate2_voltage� gate3_voltage� bias_voltageg�i��Hzri@Bg�������?�sg����MbP?)� count_rate�integration_timegy@g@�@g{�G�z�?gN@)�center_wavelength� resolutionrmg������@�Kg�r@�W)r2� heater_power)r%r+r-r.r0r1� generic_param�au)rA)rr:�parameter_setss rrB�)InstrumentTools._get_simulated_parameters�s�� $'��S��N�(-�t�E�RW�X�%)�4��E�R�)-�s�4�PT�U� !�,/��D�QT�!U�+.��D�QT�!U�+.��D�QT�!U�� �#�s�4�PS� T��)-�d�1�W�U�.1�3�u�UY�$Z�� 05�d�5�Y_�%`�(+�T�$�s�S�.1�3�u�UY�$Z�� *-�c�$�u�U�*-�s�3�t� T�'�1 ��<�!�!�/� �s�D��U�S�4 � � r)rr N)�__name__� __module__� __qualname__�__firstlineno__�__doc__r�strrrr!rrrrrrB�__static_attributes__�rrr r s��1�@�/�c�/�d�3��8�n�/��c�SV�h��/� 5 �D��c��N�5 �t�C��H�~�5 �n �4��S��>� �d�3��8�n� �: �$�s�C�x�.� �T�#�s�(�^� �0' ��c�3�h��' �D��c��N�' �R �d�3��8�n� ��c�3�h�� �6# ��# ��c�3�h��# rr ) r{r�typingrrrr�safetyrr r~rr�<module>r�s$����,�,��j �j r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dirkenglund/qudi-mcp-integration'

If you have feedback or need assistance with the MCP directory API, please join our Discord server