Skip to main content
Glama

ZeroPath MCP Server

Official
by ZeroPathAI
main.cpython-312.pyc12.3 kB
� 9��g,���ddlZddlZddlmZejd�Zejd�Zejd�ZereresUgZesejd�esejd�esejd�e ddje�����ed�Z e j�dd ��Ze j�d ��Ze j�d ��Zd �Zd �Zedk(re j)d��yy)�N)�FastMCP�ZEROPATH_TOKEN_ID�ZEROPATH_TOKEN_SECRET�ZEROPATH_ORG_IDz(Missing required environment variables: �, �Zeropathc��trtsddiSttdd�}i}|r||d<tr t|d< tjd||��}|j �}t |�S#t$r}dt|�icYd }~Sd }~wwxYw) zW Search for vulnerabilities using the Zeropath API with a simple search query. �error�;Zeropath API credentials not found in environment variables�application/json�zX-ZeroPath-API-Token-IdzX-ZeroPath-API-Token-Secretz Content-Type� searchQuery�organizationIdz)https://zeropath.com/api/v1/issues/search��headers�jsonN) �token_id� token_secret�org_id�requests�postr�process_vulnerability_response� Exception�str)rr�payload�response� raw_response�es �#/home/r/zeropath-mcp-server/main.py�search_vulnerabilitiesr s��� �<��V�W�W�$,�'3�*��G��G��!,�� ���$*�� �!� !��=�=� 7��� �� �}�}�� �.�l�;�;�� �!���Q�� � ��!�s�2A+�+ B �4 B�B �B c���trtsddiS|syttdd�}|td�} tjd||��}|j d k7rd |j �d |j ��S |j�}td |�|syt|�S#t$r}d t|���cYd}~Sd}~wwxYw#t$r}dt|���cYd}~Sd}~wwxYw)z� Get a specific vulnerability issue by its ID, including patch information if available. Args: issue_id (str): The ID of the issue to retrieve r r �Error: Issue ID is requiredr r ��issueIdrz&https://zeropath.com/api/v1/issues/getr��� Error: API returned status code �: zDEBUG - Raw API Response:z&Error: Failed to parse JSON response: Nz'Error: Empty response received from API�Error: ) rrrrr� status_code�textr�printrr�process_issue_response)�issue_idrrrrrs r� get_issuer.As��� �<��V�W�W� �,�$,�'3�*��G�� ��G� "��=�=� 4��� �� � � �3� &�5�h�6J�6J�5K�2�h�m�m�_�]� ]� E�#�=�=�?�L� �-�|� <� �<�&�l�3�3��� E�;�C��F�8�D� D�� E�� �"���Q���!�!��"�sT�AB>�0B� B>� B>� B;�# B6�0B;�1B>�6B;�;B>�> C� C�C�Cc�h�trtsddiS|syttdd�}|td�} tjd||��}|j d k(ry |j d k(ry |j d k(ryd|j �d|j ��S#t$r}dt|���cYd}~Sd}~wwxYw)z� Approve a patch for a specific vulnerability issue. Args: issue_id (str): The ID of the issue whose patch should be approved r r r"r r r#z0https://zeropath.com/api/v1/issues/approve-patchrr%zPatch approved successfullyi�z-Error: Unauthorized - Invalid API credentialsi�zDError: Bad Request - Invalid issue ID or missing required parametersr&r'r(N) rrrrrr)r*rr)r-rrrrs r� approve_patchr0ys��� �<��V�W�W� �,�$,�'3�*��G�� ��G� "��=�=� >��� �� � � �3� &�0� � !� !�S� (�B� � !� !�S� (�Y�5�h�6J�6J�5K�2�h�m�m�_�]� ]�� �"���Q���!�!��"�s/�'B�B�$B�4B� B1� B,�&B1�,B1c�`�|syd|vr |drd|d��S|jd�sy|jd�xs|jd�}d}|d |jdd ��d �z }|d |jd d ��d �z }|d|jdd ��d �z }|d|jdd ��d �z }|d|jdd ��d �z }|d|jdd ��d �z }|jd�r(|ddj|jdg���d �z }|d|jdd ��d �z }|d|jdd ��d �z }|jd�r;|jd�r*|d|jd��d |jd��d �z }|d!|jd"d ��d �z }|d#|jd$d%��d �z }|d&|jd'd ��d �z }|jd(�r|d)z }|d*|jd(��d+�z }|�r|jd$d%��s|d,z }|d-|jd.d ��d �z }|d/|jd0d ��d �z }|d1|jd2d ��d �z }|d3|jd4d ��d �z }|d!|jd"d ��d �z }|d5|jd6d ��d �z }|d7|jd8d ��d �z }|jd9�r@|d:z }|d;|jdd ��d �z }|d<z }|d=z }|d>|jd9��d+�z }|S)?zj Process a single issue response into a readable format, focusing on the issue details and patch. zError: Empty issue datar r(�idz/Error: Invalid issue data received - missing ID�patch�vulnerabilityPatchzIssue Details: �ID: �N/A� �Status: �status�Title: �generatedTitle� Description: �generatedDescription� Language: �languagezVulnerability Class: � vulnClass�cwes�CWEs: r� Severity: �severity�Affected File: � affectedFile� startLine�endLinezLocation: Lines z to �Validation Status: � validatedz Unpatchable: � unpatchableF�Triage Phase: � triagePhase�sastCodeSegmentz Vulnerable Code Segment: z``` z ``` z) ========== PATCH INFORMATION ========== z PR Link: �prLinkz PR Title: �prTitlezPR Description: � prDescriptionz PR Status: �pullRequestStatusz Created At: � createdAtz Updated At: � updatedAt�gitDiffz+ ========== PATCH ID & GIT DIFF ========== � PATCH ID: z)======================================== z Git Diff: z```diff )�get�join)�issuer3�results rr,r,�s��� �(��%��E�'�N���w��(�)�)� �9�9�T�?�@� �I�I�g� � A�%�)�)�,@�"A�E� �F� ��U�Y�Y�t�U�+�,�B�/�/�F� �����8�U�3�4�B�7�7�F� ��� � �"2�E�:�;�2�>�>�F� � �e�i�i�(>��F�G�r�J�J�F� � �5�9�9�Z��7�8��;�;�F� �%�e�i�i� �U�&C�%D�B�G�G�F� �y�y����F�4�9�9�U�Y�Y�v�r�%:�;�<�B�?�?�� � �5�9�9�Z��7�8��;�;�F� ��� � �.�%� @�A��D�D�F� �y�y���%�)�)�I�"6��$�U�Y�Y�{�%;�$<�D����9�AU�@V�VX�Y�Y�� �#�E�I�I�k�5�$A�#B�"�E�E�F� � �e�i�i� �u�=�>�b�A�A�F� ��u�y�y���>�?�r�B�B�F� �y�y�"�#��0�0���E�%�)�)�$5�6�7�w�?�?�� �U�Y�Y�}�e�4��?�?���I�e�i�i��%�8�9��<�<���J�u�y�y��E�:�;�2�>�>���$�U�Y�Y���%F�$G�r�J�J���K�� � �*=�u� E�F�b�I�I���'�� � �+�u�(E�'F�b�I�I���L����;��!>� ?�r�B�B���L����;��!>� ?�r�B�B�� �9�9�Y� � �E� E�F� � �5�9�9�T�5�#9�":�"�=� =�F� �B� B�F� �m� #�F� � �%�)�)�I�"6�!7�w�?� ?�F� �M�c��d|vrd|d��Sd|vryt|d�}td�|dD��}td�|dD��}d|�d|�d |�d �}t|dd �D�]\}}|d |�d �z }|d|jd��d�z }|d|jdd��d�z }|jd�r|d|jd��d�z }|jd��|jdd� }|d|�d�z }|jd�r |d|d�d�z }|jd�� |d|d�d�z }|jd�� |d|d�d�z }|jd �r |d!|d �d�z }|jd"�r |d#|d"�d�z }|jd$�r |d%|d$�d�z }|jd&�r|d'd(j |d&��d�z }|jd)�r |d*|d)�d�z }|jd+�r |d,|d+�d�z }|jd-�r\|jdd�sJ|d-}|d.z }|d/|jdd0��d�z }|d1z }|d2z }|jd3�r |d4|d3�d�z }|dz }��d5|vsd6|vr7|d7z }|d8|jd5d ��d�z }|d9|jd6|��d�z }|S):z� Process the raw API response into a more readable format for LLMs. Extracts and organizes the most relevant information in plain text format. r r(�issuesz.No vulnerability issues found in the response.c3�FK�|]}|jdd�r�d���y�w)rKF�N�rW��.0rYs r� <genexpr>z1process_vulnerability_response.<locals>.<genexpr>�s����g��u�y�y�Q^�`e�Gf�!�g���!�!c3�FK�|]}|jdd�s�d���y�w)rKTr_Nr`ras rrcz1process_vulnerability_response.<locals>.<genexpr>�s����d�%�U�Y�Y�}�^b�Ec�A�d�rdzFound z vulnerability issues. z are patchable, z are unpatchable. r_zIssue z: r5r2r7r8r9�unknown�typezType: � patchablerKFz Patchable: r?r>�scorezScore: rDrCr;r:r=r<rFrErArBrrJrIrMrLr4z --- PATCH INFORMATION --- rVr6z------------------------ zHas Patch: Yes rRzPatch Status: � currentPage�pageSizezPagination Info: zCurrent Page: z Page Size: )�len�sum� enumeraterWrX) r� total_issues�patchable_count�unpatchable_countrZ�irYrhr3s rrr�s��� �,����g�.�/�0�0��|�#�?��|�H�-�.�L��g��h�)?�g�g�O��d�<��+A�d�d���l�^�#:�?�:K�K[�\m�[n�oD�E�F��l�8�4�a�8���5��F�1�#�S�/�!���D����4��)��,�,���H�U�Y�Y�x��;�<�B�?�?�� �9�9�V� � ��u�y�y��0�1��4� 4�F� �9�9�[� !� -�!�I�I�m�U�;�;�I� � �I�;�b�1� 1�F� �9�9�Z� � � �5��#4�"5�R�8� 8�F� �9�9�W� � )� ���g��/�r�2� 2�F� �9�9�Z� � ,� � �5��#4�"5�R�8� 8�F� �9�9�%� &� ���&6� 7�8��;� ;�F� �9�9�+� ,� � �e�,B�&C�%D�B�G� G�F� �9�9�^� $� ���n�(=�'>�b�A� A�F� �9�9�V� � ��t�y�y��v��7�8��;� ;�F� �9�9�[� !� �+�E�+�,>�+?�r�B� B�F� �9�9�]� #� ��u�]�';�&<�B�?� ?�F� �9�9�)� *�5�9�9�]�E�3R��.�/�E� �5� 5�F� � �5�9�9�T�5�#9�":�"�=� =�F� �2� 2�F� �(� (�F��y�y�,�-��N�5�1D�+E�*F�b�I�I�� �$���i9�n� �$� �l�(B��&�&���N�<�#3�#3�M�1�#E�"F�b�I�I���K� � 0� 0��\� J�K�2�N�N�� �Mr[�__main__�stdio)� transport)N)�osr�mcp.server.fastmcpr�getenvrrr� missing_vars�append�EnvironmentErrorrX�mcp�toolr r.r0r,r�__name__�run�r[r�<module>r�s(�� ��&� �2�9�9�(� )���r�y�y�0�1� � ����$� %���|�6��L� ����/�0� ����3�4� ����-�.� �E�d�i�i�P\�F]�E^�_� `�`� �j�������'!� �'!�R����5"� �5"�n����-"� �-"�^?�BP�f �z���G�G�g�G��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/ZeroPathAI/zeropath-mcp-server'

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