Skip to main content
Glama

Token Saver MCP

by jerry426
test_mcp_detailed.cpython-313.pyc28.1 kB
� E��hIe��X�SrSSKrSSKrSSKrSrSrSSjrSr\S:Xa\"5 gg) z] Detailed test suite for VSCode LSP MCP extension Shows actual content returned by each tool �Nc��SnSUS3nSSS.nSSS S 0S S S .S.S.n[R"X5US9nURRS5nU(dgSSSUUS.S.nXtS'[R"X8USS9nUR 5H�n U (dM U R S5n U R S5(dM5[R"U SS5n SU ;aSU SRS/5n U (a7U S RS5S:Xa[R"U S S5s $ g g! U S Sss $=f)z'Call an MCP tool and parse the responsei7%zhttp://127.0.0.1:z/mcpzapplication/jsonz#application/json, text/event-stream)z Content-Type�Acceptz2.0� initializerz1.0.0�testz1.0)�name�version)�protocolVersion� capabilities� clientInfo)�jsonrpc�method�id�params)�json�headerszmcp-session-idNz tools/call�)r� argumentsT)rr�streamzutf-8zdata: ��result�content�type�text) �requests�postr�get� iter_lines�decode� startswithr�loads) � tool_namer�port�base_urlr� init_request�response� session_id� tool_request�line�decoded�datars �;/home/jerry/VSCode/vscode-lsp-mcp/test/test_mcp_detailed.py� call_mcp_toolr, sm�� �D�"�4�&��-�H�+�7��G� ���&��#)�e�<� � �L��}�}�X�'�J�H��!�!�%�%�&6�7�J� ������"� � �L�!+� ���}�}�X�'�RV�W�H��#�#�%�� �4��k�k�'�*�G��!�!�(�+�+��z�z�'�!�"�+�.���t�#�"�8�n�0�0��B�?�G��7�1�:�>�>�&�#9�V�#C�6�#'�:�:�g�a�j��.@�#A�A��&��6�#*�1�:�f�#5�5�s �D4�4 Ec�R�[SS35 [SU35 [S5 g)z Print a formatted section header� �<============================================================� N)�print)�titles r+� print_sectionr3Ds%�� �B�v�h�-�� �B�u�g�,�� �&�M�c�4�[U5U:�aUSUS-$U$)z Truncate long text with ellipsisN�...)�len)r�lengths r+�truncater9Js$�� �4�y�6���G�V�}�u�$�$� �Kr4c �\-^C^D�[S5 [S5 [S5 [S5 [SSSSS .5nU(GaN[U[5(Ga�[ U5S :�Ga�[S [ U5S 35 [ US SS5GHUup[SUS35 SU;a4USn[SUSSSUSSSUSSSUSS35 SU;dMWUSn[U[5(a�[ US SS5H�upV[U[5(dMURSS5nURSS5nURSS5n [S US!UU (aS"U -OSS#35 [R"US$S%S%S&9n [[U S'55 M� GM%[U[5(dGM=[S([US'535 GMX O�[U[5(a�URS)5S*:Xa:[S+5 [S,URS-05RS.S535 OM[S/5 SU;a$[S([[US5S'535 O[S05 O [S15 [S25 [S3SS4S5S .5n U (GaB[U [5(GaEU RS)5S*:XGa/[S65 U RS-05n [S,U RS.S535 U RS7/5n [U [5(az[S8U RS9S 535 U RS:05n[ UR55S S;H(unn[S<US=URS>S 5S?35 M* GOE[U [5(a=[ U S S@S5H*unnURSAS5n[SBUSCSDU35 M, O�[U [5(a�[ U 5S :�a�[S [ U 5SE35 [SF5 [ U S S@S5H�unnURSAS5nURSS5nURSGS5n[SBUSCSDUSHS"U(aSIUSJ3OS35 U(dMh[SK[US$535 M� O[SL5 O [SM5 [SN5 [SOSSS@S .5nU(Ga"[U[5(a�[ U5S :�a�[S [ U5SP35 [ US S;S5HbunnUSQRSR5SSnUSn[SBUSDU35 [STUSSSUSSSUSSSUSS35 Md O{[U[5(aOURS)5S*:Xa:[SU5 [S,URS-05RS.S535 O[SV5 O [SW5 [SX5 [SYSSS@S .5nU(Ga�[U[5(Ga[ U5S :�a�[S [ U5SZ35 0nUHLnUSQRSR5SSnUU;a/UU'USSnUURUSSUS35 MN [S[5 [ UR55S S;H`unn[!US\S]9n[S<US=S^R#US S;535 [ U5S;:�dME[S_[ U5S;- S`35 Mb O�[U[5(a�URS)5S*:Xa�[Sa5 URS-05n [SbU RS.S535 URS705n [U [5(a[ScU RSdS535 O[Se5 O [Sf5 [Sg5 [ShSiS;SjS .5nU(Ga[U[5(a�[ U5S :�a�[S [ U5Sk35 [Sl5 [ US SmS5HJunnUSQRSR5SSnUSnUSSnUSSn [SBUSDUSnSoUSU 35 ML O{[U[5(aOURS)5S*:Xa:[Sp5 [S,URS-05RS.S535 O[Sq5 O [Sr5 [Ss5 [StSQSu05n!U!(Ga[U![5(GaIU!RS)5S*:XGa3[Sv5 U!RS-05n [SwU RS.S535 [SxU RSyS 5Sz35 [S{U RS|S}535 U!RS705n [U [5(a�U RS~/5nU RS[ U55n"U(a�[S�[ U5S�U"S�35 [ US S;S5Htunn#[U#[5(dMU#RS�S5n$U#RSS5n[ U#RS�/55n%[SBUSDU$S!US�U%S�3 5 Mv GO[U [5(a�U (a�[S�[ U 5S�35 [ U S S;S5Htunn#[U#[5(dMU#RS�S5n$U#RSS5n[ U#RS�/55n%[SBUSDU$S!US�U%S�3 5 Mv O�[U![5(a�[ U!5S :�a�[S [ U!5S�35 S�UC4S�jjmCTC"U!5n&[S�U&35 [S�5 S�UD4S�jjmDU!S S;H n'TD"U'5 M [ U!5S;:�a[S�[ U!5S;- S�35 O[S�5 O [S�5 [S�5 [S�S�S@S�.5n(U((Ga [ U(5S :�a�[S [ U(5S�35 [ U(S5H�unn)U)RS�S5nU)RS�S 5n*U)RS7S5n U)RS�05n+[S�USDUS!U*S�U*S:waS�OSSJ3 5 U+(a1[S�U+RSS�5SU+RSS�535 U (dM�[S�[U R%5S�535 M� O [S�5 [S�5 [StSQS05n,S�n-U,(aRU,HLn#U#RS�5S�:XdMU#RS05RS05RSS�5n- O [S�SU-S�S�S�.5n.U.(Ga}[U.[5(Ga[S�U.;a[S�U.S�35 GOYU.RS�05n/U.RS�/5n0[S�U/RS�S5S!U/RSS�5SJ35 U0(a�[S�[ U05S�35 [ U0S S;S5H�unn1U1RS�05n2U2RS�S5n3U2RSQS5RSR5SSn4U1RS�/5n5[S�USDU3S�U435 U5(dM}U5S SH'nUSSnUSSn [S�US-SU 35 M) M� O#[S�5 O[S�5 O [S�5 [S�5 [S�SuS�S�S�S�.5n6U6(a�[U6[5(a�S�U6;a�U6RS�05n/U6RS�/5n0[S�U/RS�S5S!U/RSS�5SJ35 U0(an[S�[ U05S�35 0n7U0H?n1U1RS�05n2U2RSS�5nUU7;aS U7U'U7U==S- ss'MA [S�U735 O#[S�5 O[S�5 O [S�5 [S�5 [S�SS�SS�S�.5n8U8(Ga[U8[5(a�S�U8;a�U8S�n9[S�[ U95S�35 U9H�n:U:SQRSR5SSnU:RS�/5n;[S�US=[ U;5S�35 [ U;S SS5H2unn<U<Sn[S�US�USSSUSSS�U<S�S�3 5 M4 [ U;5S:�dM�[S_[ U;5S- S�35 M� O[S�5 O [S�5 [S�5 [S�5 [StSQS�05n=U=(Ga2[U=[5(Ga�U=RS)5S*:XGa�[S�5 U=RS-05n [S�U RS�S535 [S�U RSyS535 [S�U RS.S535 [S{U RS|S}535 U=RS�5n>U>(a�[S�U>35 [S�5 [S�S�U>05n?U?(ar[S�5 [S�[ U?5S�35 [ U?S SS5H;unn#[S%USDU#RS�S5S!U#RSS5SJ35 M= O [S�5 U=RS705n [U [5(a�U RS~/5nU RS[ U55n"U(a�[S�['S[ U55S�U"S�35 [ US SS5HRunn@[U@[5(dM[SBUSDW@RS�S5S!U@RSS5SJ35 MT O�[U [5(a�U (a�[S�['S[ U 55S�35 [ U S SS5HRunn@[U@[5(dM[SBUSDW@RS�S5S!U@RSS5SJ35 MT O/[S�5 [S�[ U=5S�35 O [S�5 [S�5 [S�05nAUA(ap[S�5 [S�WARS�S 535 [S�UARS�S 5Sz35 UARS�5nBUB(a[S�WBS�35 O [S�5 [S�5 [S�5 g )�z'Test all MCP tools with detailed outputz= ============================================================z( VSCode LSP MCP - DETAILED TEST RESULTSr/z(1. GET_HOVER - Documentation & Type Info� get_hoverz9file:///home/jerry/VSCode/vscode-lsp-mcp/src/lsp/hover.ts� �)�urir(� characterru ✓ Found z hover result(s)N�rz Hover #�:�rangez Range: Line �startr(r?z to �end�contents��kind�unknown�value��languagez Content z (� z):�2z )�width�initial_indent�subsequent_indent��z Content: r�buffered_responseu✓ Hover results were bufferedu • Total items: �metadata� itemCountu✓ Found hover resultu✗ Unexpected hover formatu✗ No hover resultsz%2. GET_COMPLETIONS - Code Suggestions�get_completions��%u✓ Completions were buffered�previewu • Total completions: �totalCompletions� byCategory�u • �: �countz items� �labelz �2z. z completion(s)z Top 10 completions:�detail�30z(kind: �)z Detail: u ✗ Unexpected completion formatu✗ No completionsz&3. GET_DEFINITION - Jump to Definition�get_definitionz definition(s)r>�/�����z Line u✓ Definitions were bufferedu ✗ Unexpected definition formatu✗ No definitions foundz#4. GET_REFERENCES - Find All Usages�get_referencesz reference(s) to 'logger'z References by file:c�<�[URS5S5$)NrAr)�int�split)�ps r+�<lambda>�)test_all_tools_detailed.<locals>.<lambda>�s��3�q�w�w�s�|�TU��CWr4)�keyz, z ... and � moreu✓ References were bufferedu • Total references: u • Files affected: � fileCountu ✗ Unexpected references formatu✗ No references foundz35. FIND_IMPLEMENTATIONS - Interface Implementations�find_implementationsz:file:///home/jerry/VSCode/vscode-lsp-mcp/src/lsp/errors.ts� z! implementation(s) of Error classz Sample implementations:��40z line u!✓ Implementations were bufferedu%✗ Unexpected implementations formatu✗ No implementations foundz(6. GET_DOCUMENT_SYMBOLS - File Structure�get_document_symbolsz9file:///home/jerry/VSCode/vscode-lsp-mcp/src/mcp/tools.tsu"✓ Document symbols were bufferedu • Total symbols: u • Response size: � totalBytesz bytesu • Truncated at depth: �truncatedAtDepthzN/A�items� totalItemsz! Preview of top-level symbols (z of z shown):r�childrenz) - z childrenz top-level symbol(s)c��>�Uc0nUHcn[U[5(dMURSS5nURUS5S-X'SU;dMKUS(dMWT"USU5 Me U$)NrG�Unknownrrrz)� isinstance�dictr)�symbols�counts�symrG� count_symbolss �r+r��.test_all_tools_detailed.<locals>.count_symbols-sp����>��F�"�C�!�#�t�,�,�"�w�w�v�y�9��'-�z�z�$��':�Q�'>�� �%��,��Z���)�#�j�/�6�B� #� � r4z Symbol types: z File structure:c �>�[U[5(dgSUS--nURSS5nURSS5nURS05RS05RS S 5n[U5S :�aUSS S -n[ USUSUSUS-S35 SU;a[US(aPUSSSnUHnT"XqS-5 M [US5S:�a![ US[US5S- S35 gggg)Nr0r@rGr|r�unnamedrBrCr(r�(rWr6u├─ r\z (line rrcrzrFu └─ ... and ro)r}r~rr7r1) r��indent�prefixrGrr(rz�child� print_symbols �r+r��-test_all_tools_detailed.<locals>.print_symbol=s(���!�#�t�,�,����!��,���w�w�v�y�1���w�w�v�y�1���w�w�w��+�/�/���<�@�@���K���t�9�r�>����9�u�,�D������v�R��v�W�T�A�X�J�a�H�I���$��Z��"�:��r��2�H�!)��$�U�Q�J�7�"*��3�z�?�+�a�/����(9�#�c�*�o�:N�QR�:R�9S�SX�Y�Z�0� *9�$r4z ... and z more top-level symbolsu&✗ Unexpected document symbols formatu✗ No document symbols foundz#7. SEARCH_TEXT - Find Text in Files� search_text�withErrorHandling)�query� maxResultsz' file(s) containing 'withErrorHandling'�file�matches� firstMatchz z match�esz First at line �?z Preview: �<u✗ No search resultsz,8. GET_CALL_HIERARCHY - Trace Function Calls� �getHover�get_call_hierarchy��incoming)r>r(r?� direction�erroru ✗ Error: �target�callsu✓ INCOMING calls to r|z Found z caller(s):�from� fromRangesz in z Call at line z No incoming calls foundu✗ Unexpected response formatu✗ Call hierarchy failedz# OUTGOING calls from addLspTools:��outgoingz Target: z Found z outgoing call(s)z Call types: z No outgoing calls detectedu" ✗ Could not get outgoing callsu$ ✗ Outgoing call hierarchy failedz(9. RENAME_SYMBOL - Refactor Across Files� rename_symbol�� documentUri)r>r(r?�newName�changesu✓ Rename would affect z file(s)�editsu • z edit(s)z Edit z: Line u → '�newText�'z more editsu-✓ Rename returned result (different format)u✗ Rename failedz+10. BUFFER SYSTEM - Large Response Handlingz; Testing buffered response with large document symbols...zBfile:///home/jerry/VSCode/vscode-lsp-mcp/src/mcp/buffer-manager.tsu✓ Response was buffered!u • Total tokens: � totalTokensu • Total bytes: u • Item count: �bufferIdz Buffer ID: z" Testing retrieve_buffer tool...�retrieve_bufferu%✓ Successfully retrieved full data!u • Retrieved z symbolsu✗ Failed to retrieve bufferz Smart preview (first z items):u,✓ Response was not buffered (small enough)u • Found u ✗ No document symbols returnedz(11. GET_BUFFER_STATS - Buffer Statistics�get_buffer_statsu✓ Buffer statistics:u • Active buffers: � activeBuffersu • Total size: � totalSize� oldestBufferu • Oldest buffer age: �msu"✗ No buffer statistics availablez TEST SUMMARYu� All 11 tools tested with detailed output: • Hover: Shows documentation and type information • Completions: Lists available code suggestions • Definition: Locates symbol definitions • References: Finds all usages across codebase • Implementations: Finds interface/class implementations • Document Symbols: Shows file structure and symbol hierarchy • Text Search: Searches for text patterns in files • Call Hierarchy: Traces incoming/outgoing function calls • Rename: Shows refactoring changes across files • Buffer System: Handles large responses intelligently • Buffer Stats: Monitors buffer usage )N)r)r1r3r,r}�listr7� enumerater~r�textwrap�fillr9�strrxrj�append�sorted�join�strip�min)E�hover�i�h�rrE�jrrGrI�lang�wrapped� completionsrSrX� by_category�categoryrx�compr_ra� definition�def_locr>� references�files�ref�filename� positions�sorted_positions�implementations�implr(�char� doc_symbols�totalr�r�children_count� type_counts�symbol�searchrr�� first_match�doc_symbols_hover� hover_line�call_hierarchy_inr�r��call� from_item� from_name� from_file� from_ranges�call_hierarchy_out� call_kinds�renamer��changer��edit�large_doc_symbolsr�� full_data�item�stats�oldestr�r�sE @@r+�test_all_tools_detailedr�Ps,��� �-�� � 4�5� �&�M��<�=� �+�J���(� �E�  � �e�T� "� "�s�5�z�A�~� �J�s�5�z�l�*:�;� <�!�%���)�Q�/���� �A�3�a�(�)��a�<��'� �A��,�Q�w�Z��-?�,@��!�G�*�[�BY�AZ�Z^�_`�af�_g�hn�_o�^p�pq�rs�ty�rz�|G�sH�rI�J�K���?� ��}�H�!�(�D�1�1�*3�H�R�a�L�!�*D�J�A�)�'�4�8�8�'.�{�{�6�9�'E��(/� � �G�R�(@��'.�{�{�:�r�'B�� %� �Q�C�r�$��d��d� �XZ�?[�[]�&^� _�*2�-�-��R�X`�t|�*}�� %�h�w��&<� =�+E�$�H�c�2�2�� �h�x��.E�-F�G�H�%0�&��t� $� $��y�y�� �$7�7��7�8��-�e�i�i� �B�.G�.K�.K�K�Yb�.c�-d�e�f��.�/���&��M�(�3�u�Z�7H�3I�3�*O�)P�Q�R�� �/� 0� �$�%��9�:�� 1�J���4��K� � �k�4� (� (�[�_�_�V�-D�H[�-[� �1� 2�"���z�2�6�H� �)�(�,�,�{�I�*N�)O�P� Q�!�o�o�i��4�G��'�4�(�(��3�G�K�K�@R�TU�4V�3W�X�Y�%�k�k�,��;� �'+�K�,=�,=�,?�'@��!�'D�O�H�e��H�X�J�b����7�A�1F�0G�v�N�O�(E��G�T�*�*�(���"��q�9�G�A�t� �H�H�W�i�8�E��D��1��R��w�/�0� :��� �T� *� *�s�;�/?�!�/C� �J�s�;�/�0��?� @� �+� ,�$�[��"�%5�q�9���4�����)�4���x�x���+�����(�B�/����Q�q�E��E�"�:�Q�D����a�/@�b�.Q�R�S��6��,�X�f�b�-A�,B�C�D� :� �4� 5� �"�#��:�;��/�J���2��J� � �j�$� '� '�C� �O�a�,?� �J�s�:��/�~�>� ?�'� �2�A���:� ��7��e�n�*�*�3�/��3���G�$����Q�C�r�#��'�(�� �Q�w�Z��%7�$8��!�G�*�[�:Q�9R�RV�WX�Y^�W_�`f�Wg�Vh�hi�jk�lq�jr�s~�j�jA�B�C� ;� � �D� )� )�j�n�n�V�.D�H[�.[� �1� 2� �)�*�.�.��R�*H�*L�*L�[�Zc�*d�)e�f� g� �4� 5� �(�)��7�8��/�J���2��J� � �j�$� '� '�C� �O�a�,?� �J�s�:��/�/H�I� J��E�!���u�:�+�+�C�0��4���5�(�&(�E�(�O���L��)���h��&�&�!�F�)��A�a� �n�5E�'F�G� "� �+� ,�'+�E�K�K�M�':�2�A�'>�#��)�#)�)�9W�#X� ���� �"�T�Y�Y�7G���7K�-L�,M�N�O��y�>�A�%��N�3�y�>�A�+=�*>�e�D�E� (?� � �D� )� )�j�n�n�V�.D�H[�.[� �0� 1�!�~�~�j�"�5�H� �.�x�|�|�K��/S�.T�U� V� �n�n�Y��3�G��'�4�(�(��0����[�)�1T�0U�V�W�� �4� 5� �'�(��G�H�#�$:�K���=��O� � �o�t� ,� ,��_�1E��1I� �J�s�?�3�4�4U�V� W� �/� 0�$�_�R�a�%8�!�<���4��5�k�'�'��,�R�0����M����z�&�)����z�+�.����Q�C�r�#�b����v�Q�t�f�=�>� =� ��� .� .�?�3F�3F�v�3N�Re�3e� �5� 6� �)�/�*=�*=�j�"�*M�*Q�*Q�R]�_h�*i�)j�k� l� �9� :� �,�-��<�=�� 6� �J�9��K�� �k�4� (� (�[�_�_�V�-D�H[�-[� �6� 7�"���z�2�6�H� �+�H�L�L��i�,P�+Q�R� S� �+�H�L�L��q�,I�+J�&�Q� R� �0����>P�RW�1X�0Y�Z� [�!�o�o�i��4�G��'�4�(�(�� � �G�R�0��� � �L�#�e�*�=����>�s�5�z�l�$�u�g�U]�^�_�"+�E�"�1�I�q�"9���3�%�c�4�0�0�#&�7�7�6�9�#=�D�#&�7�7�6�9�#=�D�-0�����R�1H�-I�N�!�D���2�d�V�2�d�V�4��?O�y�"Y�Z� #:�� �G�T�*�*�w��:�3�w�<�.��Q�R�'���� �Q�7�F�A�s�!�#�t�,�,�"�w�w�v�y�9��"�w�w�v�y�9��),�S�W�W�Z��-D�)E����Q�C�r�$��r�$��t�N�;K�9�U�V� 8�� � �T� *� *�s�;�/?�!�/C� �J�s�;�/�0�0D�E� F� �(� �4�K� �&�{�m�4� 5� �'� (� [�.&�b�q�/���V�$�*��;��!�#�� �S��%5��%9�$:�:Q�R�S�� �:� ;� �-�.��7�8� �=�$��+��F� �#�f�+��/� � �3�v�;�-�'N�O�P�"�6�1�-�I�A�v��z�z�&�)�4�H��j�j��A�.�G��j�j��B�/�G� �*�*�\�2�6�K� �F�1�#�R��z��G�9�F�7�a�<�4�UW�:X�XY�Z� [���-�k�o�o�f�c�.J�-K�1�[�_�_�]h�jm�Mn�Lo�p�q��w��(��'�-�-�/�2�)F�(G�H�I�.� �%�&��@�A�&�&<� �J�?����J��$�C��w�w�v��*�,� �W�W�W�b�1�5�5�g�r�B�F�F�v�r�R� ��%� &�&:�J���� =���� �'�� .� .��+�+�� �$5�g�$>�#?�@�A�*�.�.�x��<��)�-�-�g�r�:���.�v�z�z�&�)�/L�.M�R�PV�PZ�PZ�[a�cl�Pm�On�no�p�q���I�c�%�j�\��=�>�#,�U�2�A�Y��#:���4�$(�H�H�V�R�$8� �$-�M�M�&�)�$D� �$-�M�M�%��$<�$B�$B�3�$G��$K� �&*�h�h�|�R�&@� ���q�c��I�;�d�9�+�F�G�&�;�%0��!�_��'(��z�&�'9��'(��z�+�'>�� %�(<�T�A�X�J�a��v�&N� O�&5�$;��6�7� �2� 3� �)�*� � 0�1�&�';�J���� >���� �(�$� /� /�H�@R�4R�'�+�+�H�b�9�F�&�*�*�7�B�7�E� �J�v�z�z�&�)�<�=�R�� � �6�S\�@]�?^�^_�`� a�����U�� �,=�>�?�� �!�D� $����� 4�I�$�=�=���;�D��:�-�+,� �4�(��t�$��)�$� "���z�l�3�4��4�5� �6� 7� �4�5��<�=� �?�J��� � -��F�� �f�d� #� #� �V�(;��Y�'�G� �,�S��\�N�(�C� D�!��!�%�=�.�.�s�3�B�7��� � �7�B�/��� �8�*�B�s�5�z�l�(�C�D�(��r���A�6�G�A�t��W� �A��K��s�'�!�G�*�V�2D�1E�Q�q��z�R]�G^�F_�_e�fj�kt�fu�ev�vw�x�y� 7��u�:��>��N�3�u�:��>�*:�+�F�G�"� �A� B� �!�"��?�@� � H�I�%�&<� �S�?���� �'�� .� .�3D�3H�3H��3P�Tg�3g� �.� /�(�,�,�Z��<�H� �*�8�<�<� �y�+Q�*R�S� T� �)�(�,�,�|�Y�*O�)P�Q� R� �(����k�9�)M�(N�O� P� �0����>P�RW�1X�0Y�Z� [�(�,�,�Z�8�H���)�(��4�5��;�<�)�*;���>�� ���A�C��.�s�9�~�.>�h�G�H�"+�I�b�q�M�1�"=���3���q�c��C�G�G�F�I�,F�+G�r�#�'�'�RX�Zc�Jd�Ie�ef�g�h�#>��9�:�(�+�+�I�r�:�G��'�4�(�(�� � �G�R�0��� � �L�#�e�*�=����5�c�!�S��Z�6H�5I��e�W�T\�]�^�#,�U�2�A�Y��#:���4�%�d�D�1�1�!�D���2�d�h�h�v�y�.I�-J�"�T�X�X�V\�^g�Mh�Li�ij�"k�l�$;���G�T�*�*�w��1�#�a��W��2F�1G�x�P�Q�(���!��a�8�G�A�t�!�$��-�-���Q�C�r�$�(�(�6�9�*E�)F�b����RX�Zc�Id�He�ef�g�h� 9�� �@� A� �N�3�'8�#9�":�(�C� D� �0�1��<�=� �,�b� 1�E� � �&�'� �(����?�A�)F�(G�H�I� �$�U�Y�Y�{�A�%>�$?�v�F�G����>�*�� � �/��x�r�:� ;�� �2�3��.�!� � �  r4�__main__)�d) �__doc__rrr�r,r3r9r��__name__�r4r+�<module>r�sA���� ��8�t� � r �h �z����r4

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/jerry426/token-saver-mcp'

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