Skip to main content
Glama

ClickUp Operator

by noah-vh
server.cpython-312.pyc15.3 kB
� iMg[F� ��UddlZddlmZmZmZddlmZddlmZddlm Z ddl m Z ddl Z ddlmZddlZddlmZddlZe d �Zdaeej,ed <d �Zej3�d ��Zej5�d edeeefdzdeej:ej<zfd��Zd�Z e!dk(rejDe ��yy)�N)�Optional�Any�Sequence)�InitializationOptions)�ServerCapabilities)�Server�)�clickup)� load_dotenv�clickup-operator�clickup_clientc ��K�t�tjd�}|s td��d}d}||kr4 t j |�at j��d{���yyy7�#t$rL}|dz }||k(rtd|�dt|�����tjd��d{���7Yd}~nd}~wwxYw||kr���c�w) z>Initialize the ClickUp client with API token from environment.�CLICKUP_API_TOKENz.CLICKUP_API_TOKEN environment variable not set�rNr z*Failed to initialize ClickUp client after z attempts: ) r �os�getenv� ValueErrorr � ClickUpAPIr �get_authorized_user� Exception� RuntimeError�str�asyncio�sleep)�api_key� max_retries� retry_count�es �OC:\Users\noahv\Documents\GitHub\clickup-operator\src\clickup_operator\server.py� initializer s������M��i�i�+�,�G� ��I�J�J��K��K� � � #� #�$�/�/��8�N� �4�4�6� 6� 6� �� $� 7��� #� �1� �K��k�)�"�%O�P[�}�\g�hk�lm�hn�go�#p�q�q��-�-��"� "� "��  #�� � � #�sL�6C�,A/�%A-�&A/�*C�-A/�/ C�8<B?�4B7�5B?�:C�?C�Cc��K�tjdddid���tjdddid���tjdd dd d id d id d d�dd d�d�ddgd���tjdddd d id d id�ddgd���tjdddd d id d id d d�dd d�dd d�dd d�d d d�d�ddgd���tjdddd d id d id d d�dd did d�dd d id d�d d d�dd d�dd d�dd d�d d d�d� d dgd���tjd!d"dd d id d idd d�d d d�d#�d$d%gd���tjd&d'dd d id d id(�d$dgd���tjd)d*dd d d iid gd���tjd+d,dd d id d d�d d d�d-�d$gd���tjd.d/dd d id d idd d�d d d�d d d�dd did d�d d d�d0�ddgd���tjd1d2dd d id d id d d�d d d�d3�ddgd���tjd4d5dd d id d id d d�d6�d$d7gd���tjd8d9dd$d d iid$gd���tjd:d;dd d id d id d d�d d d�d d d�d<�dd=gd���gS�w)>z,List available tools for ClickUp operations.� get-teamsz#Get all accessible teams/workspaces�object)�type� properties)�name� description� inputSchema�get-authorized-userz3Get information about the currently authorized user� create-spacezCreate a new space in a teamr$�string�booleanT)r$�optional��team_idr&�multiple_assignees�featuresr/r&)r$r%�required� create-folderzCreate a new folder in a space��space_idr&r5�create-folderless-listz2Create a list directly in a space without a folder�integer�r5r&�content�due_date�priority�assignee�status� create-taskzCreate a new task in a list�array)r$�itemsr-� �list_idr&r'� assignees�tagsr=r;r:� time_estimate� notify_allrB�create-task-commentzCreate a comment on a task��task_id� comment_textr<rFrIrJ�create-checklistzCreate a checklist in a task�rIr&�get-custom-fieldsz&Get accessible custom fields in a list�start-time-entryzStart time tracking for a task�rIr'�billable� create-goalzCreate a new goal in a team�r/r&r:r'�multiple_owners�owners�color�create-space-tagzCreate a new tag in a space�r5r&�tag_fg�tag_bg�add-task-dependencyzAdd a dependency between tasks�rI� depends_on�dependency_typer\�get-task-memberszGet members assigned to a task� invite-guestzInvite a guest to a workspace�r/�email� can_edit_tags�can_see_time_estimated�can_see_time_spentra)�types�Tool��r� list_toolsri*s;���� � � ��=� � �� � � � �&�M� � �� � � � ��6� � &��1�#�X�.�3<�$�*O�)1�t� D� � '��/� � � � � � �8� �!'�� 2�#�X�.��(��0� � � � � �)�L� �!'�� 2�#�X�.�(0�d�C�)2�� E�)2�� E�)2�� E�'/�T�B��(��0� � �" � � ��5� � &��1�#�X�.�,4�$�#G�*1�V�Y�<O�]a�!b�%,���7I�W[�\�'/�T�B�)2�� E�)2�� E�.7�T�%J�+4�$�"G� �'��/�� �( � � �&�4� � &��1�%+�X�$6�)2�� E�+4�$�"G� � '��7� � � � � �#�6� � &��1�#�X�.��'��/� � � � � �$�@� ����1��'�K� � � � � �#�8� � &��1�,4�$�#G�)2�� E�� '�K�� � � � ��5� � &��1�#�X�.�)2�� E�,4�$�#G�09�t�'L�'.�&�)�9L�Z^�_�&.�D�A��'��/� � �" � � �#�5� �!'�� 2�#�X�.�'/�T�B�'/�T�B� � (��0� � � � � �&�8� � &��1�#)�8�"4�08�d�'K�� '� �5�� � � � �#�8� ����1��'�K� � � � � ��7� � &��1�$�h�/�.7�T�%J�7@�d�.S�3<�$�*O� �'��0� � �sH �H�s�JJr&� arguments�returnc��K�ts#t��d{���ts td��|dk(rAtj��d{���}t j dd|d�d|d�d �� �gS|d k(rx|s t d ��tj|d |d|jd�|jdi����d{���}t j dd|d�d|d�d �� �gS|dk(rW|s t d ��tj|d|d���d{���}t j dd|d�d|d�d �� �gS|dk(r�|s t d ��tj|d|d|jd�|jd�|jd�|jd�|jd����d{���}t j dd|d�d|d�d �� �gS|dk(r�|s t d ��tj|d |d|jd!�|jd"g�|jd#g�|jd�|jd�|jd�|jd$�|jd%d&��'� �d{���}t j dd(|d�d|d�d �� �gS|d)k(rq|s t d ��tj|d*|d+|jd�|jd%d&��,��d{���}t j dd-|d��� �gS|d.k(rW|s t d ��tj|d*|d�/��d{���}t j dd0|d�d|d�d �� �gS|d1k(rz|s t d ��tj|d ��d{���} d2j| D� cgc]} d3| d�d4| d5�d6| d�d ���c} �} t j dd7| ��� �gS|d8k(rl|s t d ��tj!|d*|jd!�|jd9��:��d{���} t j dd;| d��� �gS|d<k(r�|s t d ��tj#|d |d|jd�|jd!�|jd=�|jd>g�|jd?��@��d{���} t j ddA| d�d| d�d �� �gS|dBk(rp|s t d ��tj%|d|d|jdC�|jdD��E��d{���}t j ddF|d��� �gS|dGk(ra|s t d ��tj'|d*|dH|jdIdJ��K��d{���}t j ddL|d��� �gS|dMk(r�|s t d ��tj)|d*��d{���}d2j|D�cgc]+}d3|jddN��d|jddN��d ���-c}�}t j ddO|��� �gS|dPk(r�|s t d ��tj+|d |dQ|jdR�|jdS�|jdT��U��d{���}t j ddV|dQ��� �gS|dWk(r}tj-��d{���}d2j|D�cgc]+}d3|jddN��d|jddN��d ���-c}�}t j ddX|��� �gSt dY|����7���7���7�� 7���7��7��+7���7��_7�� cc} w7��s7���7��W7���7���cc}w7��7��cc}w�w)Zz'Handle ClickUp tool execution requests.Nz#Failed to initialize ClickUp clientr)�textzAuthorized user: �usernamez (ID: �id�))r$rmr*zMissing argumentsr/r&r0r1r.zCreated space: r3r5r4zCreated folder: r6r9r:r;r<r=r8zCreated list: r>rBr'rCrDrErFFrAzCreated task: rGrIrJrHzCreated comment: rKrLzCreated checklist: rM� z- z (Type: r$z, ID: zCustom fields: rNrPrOzStarted time entry: rQrSrTrUrRzCreated goal: rVrXrYrWz Created tag: rZr\r]� waiting_onr[zAdded dependency: r^�UnknownzTask members: r_rarbrcrdr`zInvited guest: r"zAvailable teams: zUnknown tool: )r r rrre� TextContentr� create_space�get� create_folder�create_folderless_list� create_task�create_task_comment�create_checklist�get_accessible_custom_fields�join�start_time_entry� create_goal�create_space_tag�add_task_dependency�get_task_members� invite_guest� get_teams)r&rj�user�space�folder�lst�task�comment� checklist�fields�field� fields_text�entry�goal�tag� dependency�members�member� members_text�guest�teams�team� teams_texts r�handle_call_toolr��s] ���� ��l�����D�E� E� �$�$�#�7�7�9�9���!�!��$�T�*�%5�$6�f�T�$�Z�L��J� � � � �� ���0�1� 1�$�1�1��i�(��6�"�(�}�}�-A�B��]�]�:�r�2� 2� � �� �!�!��"�5��=�/���d� �}�A�F� � � � �� ���0�1� 1�%�3�3��z�*��6�"�4� � ���!�!��#�F�6�N�#3�6�&��,��q�I� � � � �)� )���0�1� 1�"�9�9��z�*��6�"��M�M�)�,��]�]�:�.��]�]�:�.��]�]�:�.��=�=��*�:� � ���!�!��!�#�f�+��f�S��Y�K�q�A� � � � �� ���0�1� 1�#�/�/��i�(��6�"�!� � �m�4��m�m�K��4����v�r�*��=�=��*��]�]�:�.��]�]�:�.�#�-�-��8� �}�}�\�5�9�0�  �  ���!�!��!�$�v�,��v�d�4�j�\��C� � � � �&� &���0�1� 1�&�:�:��i�(�"�>�2��]�]�:�.� �}�}�\�5�9� ;� � �� �!�!��$�W�T�]�O�4� � � � �#� #���0�1� 1�(�9�9��i�(��6�"�:� � � ��!�!��&�y��'8�&9�� �$��?P�PQ�R� � � � �$� $���0�1� 1�%�B�B�9�Y�CW�X�X���i�i��! �����v���x��f� ��f�U�4�[�M�� K��! � � ��!�!��#�K�=�1� � � � �#� #���0�1� 1�$�5�5��i�(�!� � �m�4��]�]�:�.�6� � �� �!�!��'��d� �}�5� � � � �� ���0�1� 1�#�/�/��i�(��6�"��]�]�:�.�!� � �m�4�%�M�M�*;�<��=�=��2�.��-�-��(�0� � ���!�!��!�$�v�,��v�d�4�j�\��C� � � � �#� #���0�1� 1�"�3�3��z�*��6�"��=�=��*��=�=��*� 4� � �� �!�!�� ��V�� �.� � � � �&� &���0�1� 1�)�=�=��i�(� ��.�%�M�M�*;�\�J�>� � � � �!�!��%�j��&6�%7�8� � � � �#� #���0�1� 1�&�7�7� �)�8L�M�M���y�y�!�" �!������J� �2�3�6�&�*�*�T�9�:U�9V�VW� X�!�" � � ��!�!��"�<�.�1� � � � �� ���0�1� 1�$�1�1��i�(��G�$�#�-�-��8�#,�=�=�1I�#J�(�}�}�-A�B� 2� � ���!�!��"�5��>�"2�3� � � � �� �$�.�.�0�0���Y�Y�� �������&�)�,�-�V�D�H�H�T�9�4M�3N�a� P�� � � ��!�!��%�j�\�2� � � � �>�$��0�1�1�C �� :�� �� �� ��$  ��* �� ��Y��! � �� ��$ �� ��N��" � ��1�� �sT�`�_�1`�_ � A<`�_�A`�!_�"B+`� _�C`�,_�-A<`�)_�*A`�>_�?A`�_ �`�)_#�A0`�5_(�6B%`�_+�A;`�_.�A%`�=_1�>A`� _4�`�!0_7�B`�_<�>`�_>�`�(0`�1`� `�`�`�`�`�`�`� `�#`�+`�.`�1`�4`�7`�>`�`c ��0K�tjjj�4�d{���\}}tj ||t ddt�����d{���ddd��d{���y7�K7�7� #1�d{���7swYyxYw�w)z Main entry point for the server.Nr z0.1.0)� server_name�server_version� capabilities)�mcp�server�stdio� stdio_server�app�runrr)� input_stream� output_streams r�mainr��sw�����z�z���,�,�.�.�2O�<���g�g� � � !�.�&�/�1� � � � �/�.�.�� ��/��.�.�.�sV�-B�A;�B�2B�%A=�&B�* B�5A?�6B�=B�?B�B�B �B�B�__main__)#r�typingrrr� mcp.typesre�mcp.server.modelsrr� mcp.serverr�mcp.server.stdior��r r�dotenvr �httpxr�r r�__annotations__r ri� call_toolr�dictrt� ImageContentr�r��__name__r�rgrhr�<module>r�s����*�*��3�(���� �� � � � ��/3����+�+�,�3�#�0����J��J�X����l4� �l4��C��H�~��$�l4��e���%�"4�"4�4�5�l4��l4�\  � �z���G�K�K����rh

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/noah-vh/mcp-server-clickup'

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