Skip to main content
Glama
sms03

Resume Analysis MCP Server

by sms03
server.cpython-313.pyc9.25 kB
� �.<h�"��R�SrSSKrSSKrSSKJrJrJrJr SSKJ r J r J r J r J r Jr SSKJrJrJrJr SSKJr SSKJr \R0"\5r\"5rS\ 4S jrS \S \4S jrS \\\4S\\S \4SjrS \\\4S\\S \4Sjr S \\\4S\\S \4Sjr!S \4Sjr"g)z/ MCP Server implementation for resume analysis �N)�Dict�List�Any�Optional)�FastAPI� UploadFile�File�Form�Depends� HTTPException)�ModelContextMessage�ModelContextRequest�ModelContextResponse� Operation)�ResumeAnalyzer)�extract_text_from_resume�appc�H�URS5S5nURS5S[S[4Sj5nURS5[ S54S [ 4S jj5nURS 5[ S5[ S54S [S [4Sjj5ng)z)Set up the MCP routes for the FastAPI app�/c��"# �SSKJn U"SS9$7f)z Redirect root URL to the UI pager��RedirectResponsez/ui/)�url)�fastapi.responsesrrs �-D:\GitHub\resume-mcp\src\resume_mcp\server.py� root_redirect�'setup_mcp_routes.<locals>.root_redirects��� 7��F�+�+�s� z/mcp/�request�returnc��# �UR[R:Xa[U5IShv�N $[ 5$N![ a9n[ RS[U535 [S[U5S9eSnAff=f7f)z8Handle MCP requests following the Model Context ProtocolNzError processing MCP request: ���� status_code�detail) � operationr�EXECUTE_FUNCTION�process_function_call�get_agent_description� Exception�logger�error�strr )r�es r�handle_mcp_request�,setup_mcp_routes.<locals>.handle_mcp_requestsy��� @�� � �I�$>�$>�>�2�7�;�;�;�-�.�.�<��� @� �L�L�9�#�a�&��B� C��C��A��?� ?�� @�s?�B�,A�?�A�B� A�B�A� B� 4A?�?B�Bz/upload-resume/.�filec��(# �UR5IShv�N n[XR5nURS[U5S.$N2![a9n[ R S[U535 [S[U5S9eSnAff=f7f)z Endpoint to upload a resume fileN�success)�filename�status� text_lengthzError uploading resume: r!r") �readrr3�lenr)r*r+r,r )r0�content� resume_textr-s r� upload_resume�'setup_mcp_routes.<locals>.upload_resume-s���� @� �I�I�K�'�G�2�7�M�M�J�K� $� � ��SV�Wb�Sc�d� d�(��� @� �L�L�3�C��F�8�<� =��C��A��?� ?�� @�s8�B�A �A �1A � B� A � B�4B � B�Bz/upload-job-description/� job_title�job_descriptionc��# �US[U5S.$![a9n[RS[ U535 [ S[ U5S9eSnAff=f7f)z$Endpoint to upload a job descriptionr2)r<r4�description_lengthz!Error uploading job description: r!r"N)r7r)r*r+r,r )r<r=r-s r�upload_job_description�0setup_mcp_routes.<locals>.upload_job_description:s_���  @�&�#�&)�/�&:�� �� � @� �L�L�<�S��V�H�E� F��C��A��?� ?�� @�s$�A��A� A�4A�A�AN)�get�postrrr rr r,)rrr.r:r@s r�setup_mcp_routesrDs��� �W�W�S�\�,��,�  �X�X�g�� @�*=� @�BV� @�� @� �X�X�� �/3�C�y� @�*� @�!� @� �X�X�(�)��c��#�C�y� @�� @�� @�*� @�rrc���# �URnUR=(d 0nUS:Xa[X R5IShv�N $US:Xa[ X R5IShv�N $US:Xa[ X R5IShv�N $[ SU35eNXN7N![aLn[RS[U535 [S[U53S[U50S 9sSnA$SnAff=f7f) z$Process a function execution request�analyze_resumeN�match_resume_to_job�rank_candidateszUnknown function: zError in function execution: zError executing function: r+�r8�function_response) � function_name� parameters�analyze_resume_handler�messages�match_resume_job_handler�rank_candidates_handler� ValueErrorr)r*r+r,r)rrL�paramsr-s rr'r'Js���� ��-�-� ��#�#�)�r�� �,� ,�/��8H�8H�I�I� I� �3� 3�1�&�:J�:J�K�K� K� �/� /�0��9I�9I�J�J� J��1�-��A�B� B� J�K�J�� � �� � �4�S��V�H�=�>�#�0��Q���9�&��A��/� � �� �s��C;�?B"�B�B"�C;�B"�&B�'B"�*C;�+B"� B � B"� C;�B"�B"� B"�" C8�,AC3�-C8�.C;�3C8�8C;rSrOc ���# �URSS5nU(d [SSS0S9$[RU5IShv�N n[S[ URS /55S 3US9$N+7f) zHandle resume analysis requestsr9�zNo resume text providedr+zResume text is requiredrJNz$Resume analyzed successfully. Found �skillsz skills.)rBr�resume_analyzerrGr7)rSrOr9�analysiss rrNrNas{����*�*�]�B�/�K� �#�-�&�(A�B� � � %�3�3�K�@�@�H� �6�s�8�<�<��RT�;U�7V�6W�W_�`�"� ��A�s�>A.�A,�,A.c��# �URSS5nURSS5nU(aU(d [SSS0S9$[RX#5IShv�N n[S URS S 5S 3US9$N"7f) z#Handle resume-job matching requestsr9rUr=z1Both resume text and job description are requiredr+�Missing required parametersrJNz"Resume matched to job with score: � match_scorerz/100)rBrrWrH)rSrOr9r=� match_resultss rrPrPqs�����*�*�]�B�/�K��j�j�!2�B�7�O� �o�#�G�&�(E�F� � � *�=�=�k�[�[�M� �4�]�5F�5F�}�VW�5X�4Y�Y]�^�'� ��\�s�AA>�A<�#A>c���# �URS/5nURSS5nU(aU(d [SSS0S9$[RX#5IShv�N n[S [ U5S 3S U0S9$N7f) z!Handle candidate ranking requests�resumesr=rUz-Both resumes and job description are requiredr+rZrJNzRanked z candidates based on job fit�rankings)rBrrWrIr7)rSrOr^r=r_s rrQrQ�s�����j�j��B�'�G��j�j�!2�B�7�O� �/�#�C�&�(E�F� � � %�4�4�W�N�N�H� ��#�h�-��(D�E�%�x�0� ��O�s�AA9�A7�A9c ���SSSSSSSSS S .0S/S .S .S SSSSS .SSS .S.SS/S .S .SSSSSSS0SS0S.S.SS.SSS .S.SS/S .S ./S.n[[R"U5US9$) z.Return the agent description for MCP discoveryzResume Analysis AgentzHAn MCP agent for analyzing resumes and matching them to job descriptionsz0.1.0rGz+Analyze a resume to extract key information�objectr9�stringz&The full text of the resume to analyze)�type� description)rc� properties�required)�namerdrMrHz;Compare a resume against a job description to determine fitzThe full text of the resumez$The job description to match against)r9r=r=rIz/Rank multiple resumes against a job description�arrayrc)�id�text)rcrez(Array of resume objects with id and text)rc�itemsrdz#The job description to rank against)r^r=r^)rgrd�version� functionsrJ)r�json�dumps)rds rr(r(�s��(�a��)�L�$�%�$,�+S�(�#� "/�� � �.�\�$�%-�+H�(� %-�+Q�,� #�"/�0A� B� � �&*�P�$�%,�(0�+1�8�*<�-3�X�,>�/"�&�,V� $�%-�+P�,�#�""+�,=� >�'� �C: � ?�K�B �� � �;�'�%� �rE)#�__doc__�loggingrn�typingrrrr�fastapirrr r r r �resume_mcp.mcp_typesr rrr�resume_mcp.resume_analyzerr�resume_mcp.utilsr� getLogger�__name__r*rWrDr'r,rNrPrQr(�rEr�<module>rzs����� �,�,�K�K��� 6�5� � � �8� $��!�"��2@�'�2@�h �)<� �AU� �.��c�3�h���4�H[�C\��au�� �4��S��>��T�J]�E^��cw��$�$�s�C�x�.��D�I\�D]��bv��$F�3�FrE

Latest Blog Posts

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/sms03/resume-mcp'

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