ó
    KùžjB;  ã                   ó   • S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
Jr  SSKJr  SSKJr   SSKr SS	KJr  SS
KJr   SSKr\" S5      r\R4                  " SSSSS9rS rS\S\\\4   4S jr  S<S\S\S-  S\ \   S-  S\ \   4S jjr!S\S\\\S-  4   4S jr"S=S\S\S-  4S jjr#\RI                  5       S>S j5       r%\RI                  5       \RL                  " SS S!9S/ 4S\S\
\S-  \RN                  " S"S#S$SSSS%94   S\
\ \   \RN                  " S&S'S!94   SS4S( jj5       r(\RI                  5       \RL                  " SS S!9S4S\S)\
\S-  \RN                  " S*S+S,S!94   SS4S- jj5       r)\RI                  5       \RL                  " SS S!9SS/ / S4S\S.\
\S-  \RN                  " S/S0S1S!94   S\
\S-  \RN                  " S"S#S$SSSS%94   S\
\ \   \RN                  " S&S'S!94   S2\
\ \   \RN                  " S3S4S5S!94   S6\
\S-  \RN                  " S7S8S9SSSSS:94   SS4S; jj5       r*g! \ a    \" S5        \R&                  " S5         GN f = f! \ a    \" S5        \R&                  " S5         GN:f = f! \ a    Sr GNDf = f)?zMCP CLI tools.é    N)ÚPath)Ú	AnnotatedÚAny)Ú	MCPServer)ÚServerz=Error: typer is required. Install with 'pip install mcp[cli]'é   )Úclaude)Ú
get_loggerz7Error: mcp.server is not installed or not in PYTHONPATHÚcliÚmcpzMCP development toolsFT)ÚnameÚhelpÚadd_completionÚno_args_is_helpc                  ó®   • [         R                  S:X  a&  S H  n  [        R                  " U S/SSSS9  U s  $    gg! [        R                   a     M<  f = f)z5Get the correct npx command for the current platform.Úwin32)znpx.cmdznpx.exeÚnpxz	--versionT)ÚcheckÚcapture_outputÚshellNr   )ÚsysÚplatformÚ
subprocessÚrunÚCalledProcessError)Úcmds    Ú™C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\mcp/cli/cli.pyÚ_get_npx_commandr   *   s\   € ä
‡|�|�wÓã0ˆCðÜ—’  [Ð1¸ÈdÐZ^Ò_Ø’
ñ 1ð Øøô ×0Ñ0ó Úðús   ›<¼AÁAÚenv_varÚreturnc                 óÔ   • SU ;  a/  [         R                  SU  S35        [        R                  " S5        U R	                  SS5      u  pUR                  5       UR                  5       4$ )z6Parse environment variable string in format KEY=VALUE.Ú=z%Invalid environment variable format: z. Must be KEY=VALUEr   )ÚloggerÚerrorr   ÚexitÚsplitÚstrip)r   ÚkeyÚvalues      r   Ú_parse_env_varr*   8   sU   € à
�'ÓÜ�‰Ð<¸W¸IÐEXÐYÔZÜ�Š�ŒØ—‘˜s AÓ&�J€CØ�9‰9‹;˜Ÿ™›Ð%Ð%ó    Ú	file_specÚwith_editableÚwith_packagesc                 ó   • S/nUR                  SS[        R                  " 5       /5        U(       a  UR                  S[        U5      /5        U(       a%  U H  nU(       d  M  UR                  SU/5        M!     UR                  SSU /5        U$ )zABuild the uv run command that runs an MCP server through mcp run.Úuvr   ú--withú--with-editabler   )Úextendr	   Úmcp_requirementÚstr)r,   r-   r.   r   Úpkgs        r   Ú_build_uv_commandr7   A   s}   € ð ˆ&€Cà‡J�J��x¤×!7Ò!7Ó!9Ð:Ô;æØ�
‰
Ð%¤s¨=Ó'9Ð:Ô;æÛ ˆCßˆsØ—
‘
˜H c˜?Ö+ñ !ð
 ‡J�J��u˜iÐ(Ô)Ø€Jr+   c                 óð  • [        U 5      S:„  =(       a    U S   S:H  nSU(       a  U SS OU ;   a  U R                  SS5      u  p#OU Sp2[        U5      R                  5       R	                  5       nUR                  5       (       d.  [        R                  SU 35        [        R                  " S5        UR                  5       (       d.  [        R                  SU 35        [        R                  " S5        XC4$ )z·Parse a file path that may include a server object specification.

Args:
    file_spec: Path to file, optionally with :object suffix

Returns:
    Tuple of (file_path, server_object)
r   Ú:é   NzFile not found: zNot a file: )ÚlenÚrsplitr   Ú
expanduserÚresolveÚexistsr#   r$   r   r%   Úis_file)r,   Úhas_windows_driveÚfile_strÚserver_objectÚ	file_paths        r   Ú_parse_file_pathrE   X   sÕ   € ô ˜I›¨Ñ*×B¨y¸©|¸sÑ/BÐð Ö 1ˆy˜˜‰}°yÓAØ"+×"2Ñ"2°3¸Ó":Ñˆ�-à"+¨T�-ô �X“×)Ñ)Ó+×3Ñ3Ó5€IØ×Ñ×ÑÜ�‰Ð'¨	 {Ð3Ô4Ü�Š�ŒØ×Ñ×ÑÜ�‰�| I ;Ð/Ô0Ü�Š�ŒàÐ#Ð#r+   ÚfilerC   c                 ó,  • [        U R                  5      nU[        R                  ;  a   [        R                  R	                  SU5        [
        R                  R                  SU 5      nU(       a  UR                  (       d5  [        R                  SS[        U 5      0S9  [        R                  " S5        [
        R                  R                  U5      nUR                  R                  U5        S[        S[         4S	 jnU(       d™  S
 HZ  n[        XF5      (       d  M  U" [!        XF5      U  SU 35      (       d  [        R                  SU  SU S35        MO  [!        XF5      s  $    [        R                  SU  S3S[        U 5      0S9  [        R                  " S5        SU;   a8  UR#                  SS5      u  px [
        R$                  " U5      n	[!        X˜S5      n
O[!        XAS5      n
W
c9  [        R                  SU S3S[        U 5      0S9  [        R                  " S5        U" X¡5      (       d  [        R                  " S5        U
$ ! [&         a<    [        R                  SU S3S[        U 5      0S9  [        R                  " S5         N¦f = f)z·Import an MCP server from a file.

Args:
    file: Path to the file
    server_object: Optional object name in format "module:object" or just "object"

Returns:
    The server object
r   Úserver_modulezCould not load modulerF   ©Úextrar   rC   Úobject_namec           	      óÜ   • [        U [        5      (       dW  [        R                  SU S[	        U 5       S[         S35        [        U [
        5      (       a  [        R                  S5        gg)z™Helper function to check that the server object is supported

Args:
    server_object: The server object to check.

Returns:
    True if it's supported.
zThe server object z is of type z (expecting z).zSNote that only MCPServer is supported. Low level Server class is not yet supported.FT)Ú
isinstancer   r#   r$   ÚtypeÚLowLevelServerÚwarning)rC   rK   s     r   Ú_check_server_objectÚ,_import_server.<locals>._check_server_object�   s]   € ô ˜-¬×3Ñ3Ü�L‰LÐ-¨k¨]¸,ÄtÈMÓGZÐF[Ð[gÔhqÐgrÐrtÐuÔvÜ˜-¬×8Ñ8Ü—‘ÐtÔuØØr+   )r   ÚserverÚappr9   zIgnoring object 'z#' as it's not a valid server objectzNo server object found in a   . Please either:
1. Use a standard variable name (mcp, server, or app)
2. Specify the object name with file:object syntax3. If the server creates the MCPServer object within main()    or another function, refactor the MCPServer object to be a    global variable named mcp, server, or app.NzCould not import module 'Ú'zServer object 'z' not found)r5   Úparentr   ÚpathÚinsertÚ	importlibÚutilÚspec_from_file_locationÚloaderr#   r$   r%   Úmodule_from_specÚexec_moduler   ÚhasattrÚgetattrr&   Úimport_moduleÚImportError)rF   rC   Úfile_dirÚspecÚmodulerQ   r   Úmodule_namerK   rH   rS   s              r   Ú_import_serverrg   w   s;  € ô �4—;‘;Ó€HØ”s—x‘xÓÜ�‰�‰˜˜8Ô$ô �>‰>×1Ñ1°/À4ÓH€DÞ�t—{—{Ü�‰Ð,°V¼SÀ»YÐ4GˆÑHÜ�Š�Œä�^‰^×,Ñ,¨TÓ2€FØ‡K�K×Ñ˜FÔ#ð¬Cð ¼cô ö" ã,ˆDÜ�v×$Ó$Ù+¬G°FÓ,AÀdÀVÈ1ÈTÈFÐCS×TÑTÜ—L‘LÐ#4°T°F¸!¸D¸6ÐAdÐ!eÔfÙÜ˜vÓ,Ò,ñ -ô 	�‰Ø(¨¨ð /<ð <ð œ3˜t›9Ð%ð 	ñ 	
ô 	�Š�Œð ˆmÓØ#0×#6Ñ#6°s¸AÓ#>Ñ ˆð	Ü%×3Ò3°KÓ@ˆMÜ˜]¸Ó>‰Fô ˜°Ó5ˆà�~Ü�‰Ø˜m˜_¨KÐ8Øœ3˜t›9Ð%ð 	ñ 	
ô 	�Š�Œá ×6Ñ6Ü�Š�Œà€Møô) ó 	Ü�L‰LØ+¨K¨=¸Ð:Øœs 4›yÐ)ð ñ ô �HŠH�QŽKð	ús   Æ="I ÉAJÊJc                  óê   •  [         R                  R                  S5      n [        SU  35        g! [         R                  R                   a$    [        S5        [
        R                  " S5         gf = f)zShow the MCP version.r   zMCP version z+MCP version unknown (package not installed)r   N)rY   ÚmetadataÚversionÚprintÚPackageNotFoundErrorr   r%   )rj   s    r   rj   rj   Ñ   s[   € ðÜ×$Ñ$×,Ñ,¨UÓ3ˆÜ�˜W˜IÐ&Õ'øÜ×Ñ×2Ñ2ó ÜÐ;Ô<Ü�Š�Žðús   ‚-0 °?A2Á1A2.z2Python file to run, optionally with :object suffix)r   r2   z-ez?Directory containing pyproject.toml to install in editable mode)r   r?   Ú	file_okayÚresolve_pathr1   zAdditional packages to installc           	      óâ  • [        U 5      u  p4[        R                  S[        U5      UU(       a  [        U5      OSUS.S9   [	        X45      n[        US5      (       a   [        [        X%R                  -   5      5      n[        XU5      n[        5       nU(       d+  [        R                  S5        [        R                  " S5        [        R                  S:H  n[        R                   " US	/U-   S
U[#        [$        R&                  R)                  5       5      S9n	[        R                  " U	R*                  5        g! [        R,                   a^  n
[        R                  S[        U5      [        U
5      U
R*                  S.S9  [        R                  " U
R*                  5         Sn
A
gSn
A
f[.         a8    [        R                  SS[        U5      0S9  [        R                  " S5         gf = f)z)Run an MCP server with the MCP Inspector.zStarting dev serverN)rF   rC   r-   r.   rI   Údependencieszbnpx not found. Please ensure Node.js and npm are properly installed and added to your system PATH.r   r   z@modelcontextprotocol/inspectorT)r   r   ÚenvzDev server failed)rF   r$   Ú
returncodezœnpx not found. Please ensure Node.js and npm are properly installed and added to your system PATH. You may need to restart your terminal after installation.rF   )rE   r#   Údebugr5   rg   r_   ÚlistÚsetrp   r7   r   r$   r   r%   r   r   r   ÚdictÚosÚenvironÚitemsrr   r   ÚFileNotFoundError)r,   r-   r.   rF   rC   rS   Úuv_cmdÚnpx_cmdr   ÚprocessÚes              r   Údevr   Ü   s™  € ô4 +¨9Ó5Ñ€Dä
‡L�LØä˜“IØ*Þ3@œS Ô/ÀdØ*ñ	
ð ñ ð*ä Ó4ˆÜ�6˜>×*Ñ*Ü ¤ ]×5HÑ5HÑ%HÓ!IÓJˆMä" 9¸]ÓKˆô #Ó$ˆÞÜ�L‰LØtôô �HŠH�QŒKô —‘ Ñ'ˆÜ—.’.ØÐ7Ð8¸6ÑAØØÜ”R—Z‘Z×%Ñ%Ó'Ó(ñ	
ˆô 	�Š�×#Ñ#Õ$øÜ×(Ñ(ó 	Ü�‰Øä˜D›	Ü˜Q›ØŸl™lñð 	ñ 	
ô 	�Š�—‘×ÑûÜó Ü�‰ð"ð œ3˜t›9Ð%ð	 	ñ 	
ô 	�Š�Žðús!   ÁC8D< Ä<G.ÅAF)Æ)AG.Ç-G.Ú	transportz--transportz-tz:Transport protocol to use (stdio, sse, or streamable-http)c                 ó@  • [        U 5      u  p#[        R                  S[        U5      UUS.S9   [	        X#5      n0 nU(       a  XS'   UR
                  " S	0 UD6  g! [         a8    [        R                  SS[        U5      0S9  [        R                  " S5         gf = f)
aš  Run an MCP server.

The server can be specified in two ways:
1. Module approach: server.py - runs the module directly, expecting a server.run() call.
2. Import approach: server.py:app - imports and runs the specified server object.

Note: This command runs the server directly. You are responsible for ensuring
all dependencies are available.
For dependency management, use `mcp install` or `mcp dev` instead.
zRunning server)rF   rC   r€   rI   r€   zFailed to run serverrF   r   N© )
rE   r#   rs   r5   rg   r   Ú	ExceptionÚ	exceptionr   r%   )r,   r€   rF   rC   rS   Úkwargss         r   r   r   /  s§   € ô2 +¨9Ó5Ñ€Dä
‡L�LØä˜“IØ*Ø"ñ
ð ñ ðä Ó4ˆð ˆÞØ"+�;Ñà�
Š
Ñ�VÓøäó Ü×ÑØ"àœ˜D›	ðð 	ñ 	
ô 	�Š�Žðús   °*A Á?BÂBÚserver_namez--namez-nzMCustom name for the server (defaults to server's name attribute or file name)Úenv_varsz	--env-varz-vz)Environment variables in KEY=VALUE formatÚenv_filez
--env-filez-fz+Load environment variables from a .env file)r   r?   rm   Údir_okayrn   c           	      ó  • [        U 5      u  pg[        R                  S[        U5      UUU(       a  [        U5      OSUS.S9  [        R
                  " 5       (       d+  [        R                  S5        [        R                  " S5        UnSn	U(       d   [        Xg5      n	U	R                  nU	(       a  [        U	S	/ 5      O/ nU(       a  [        [!        X;-   5      5      nSnU(       d  U(       až  0 nU(       ay  ["        (       aC   U["        R$                  " U5      R'                  5        VVs0 s H  u  pÞUc  M
  XÞ_M     snn-  nO+[        R                  S5        [        R                  " S5        U H  n[/        U5      u  nnUUU'   M     [        R0                  " U UUUUS9(       a  [        R3                  SU S35        g[        R                  SU S35        [        R                  " S5        g! [        [        4 a6  n
[        R                  SS[        U
5      0S9  UR                  n Sn
A
GN‰Sn
A
ff = fs  snnf ! [(        [*        4 a/    [        R-                  S
5        [        R                  " S5         GNf = f)z™Install an MCP server in the Claude desktop app.

Environment variables are preserved once added and only updated if new values
are explicitly provided.
zInstalling serverN)rF   r†   rC   r-   r.   rI   zClaude app not foundr   zFCould not import server (likely missing dependencies), using file namer$   rp   zFailed to load .env filez6python-dotenv is not installed. Cannot load .env file.)r-   r.   r‡   zSuccessfully installed z in Claude appzFailed to install )rE   r#   rs   r5   r	   Úget_claude_config_pathr$   r   r%   rg   r   rb   ÚModuleNotFoundErrorÚstemr`   rt   ru   ÚdotenvÚdotenv_valuesry   ÚOSErrorÚ
ValueErrorr„   r*   Úupdate_claude_configÚinfo)r,   r†   r-   r.   r‡   rˆ   rF   rC   r   rS   r~   Úserver_dependenciesÚenv_dictÚkÚvr   r(   r)   s                     r   Úinstallr˜   h  s%  € ôt +¨9Ó5Ñ€Dä
‡L�LØä˜“IØ&Ø*Þ3@œS Ô/ÀdØ*ñ
ð ñ 	ô ×(Ò(×*Ñ*Ü�‰Ð+Ô,Ü�Š�Œð €DØ€FÞð	Ü# DÓ8ˆFØ—;‘;ˆDö BHœ' &¨.¸"Ô=ÈRÐÞÜœS Ñ!DÓEÓFˆð '+€HÞ–8ØˆæßŠvð Ø´&×2FÒ2FÀxÓ2P×2VÑ2VÔ2XÔ jÒ2X©$¨!Ð\]£ ¢Ñ2XÒ jÑj‘Hô
 —‘ÐUÔVÜ—’˜”ó  ˆGÜ'¨Ó0‰JˆC�Ø!ˆH�S‹Mñ  ô ×"Ò"ØØØ#Ø#Ø÷ô 	�‰Ð-¨d¨V°>ÐBÕCä�‰Ð)¨$¨¨~Ð>Ô?Ü�Š��øôW Ô0Ð1ó 	Ü�L‰LØXØ¤ A£Ð'ð ñ ð —9‘9ŽDûð	üó( !køÜ¤Ð,ó  Ü×$Ñ$Ð%?Ô@Ü—H’H˜Q—Kð úsB   ÂG3 Ä(I Ä+	H<Ä8H<Ä>I Ç3H9È+H4È4H9È<I É;JÊ J)NN)N)r    N)+Ú__doc__Úimportlib.metadatarY   Úimportlib.utilrw   r   r   Úpathlibr   Útypingr   r   Ú
mcp.serverr   r   rO   Útyperrb   rk   r%   Úmcp.clir	   Ú&mcp.server.mcpserver.utilities.loggingr
   rŽ   r#   ÚTyperrT   r   r5   Útupler*   rt   r7   rE   rg   Úcommandrj   ÚArgumentÚOptionr   r   r˜   r‚   r+   r   Ú<module>r§      s  ðÙ ã Û Û 	Û Û 
Ý ß !å  Ý /ðÛð
ÝÝAð
Ûñ 
�EÓ	€à‡k‚kØ	Ø	 ØØñ	€òð&˜Cð & E¨#¨s¨(¡Oô &ð "&Ø&*ñØðà˜$‘;ðð ˜‘9˜tÑ#ðð 
ˆ#�Yõ	ð.$ ð $¨¨d°C¸$±JÐ.>Ñ(?ô $ñ>W˜ð W¨c°D©jõ Wðt ‡�ƒóó ðð ‡�ƒà—^’^ØØAñð 	ð 	ñ-OØðOð
 Øˆt‰Ø�ŠØØØRØØØñ	
ð	ñ
ðOð  ØˆS‰	Ø�ŠØØ1ñ	
ð	ñð!Oð. 
ô/Oó ðOðd ‡�ƒà—^’^ØØAñð 	ñ5Øð5ð
 Øˆd‰
Ø�ŠØØØMñ	
ð	ñð5ð 
ô5ó ð5ðp ‡�ƒà—^’^ØØAñð 	ð 	ð 	ð 	ð 	ñe}Øð}ð
 Øˆd‰
Ø�ŠØØØ`ñ	
ð	ñð}ð Øˆt‰Ø�ŠØØØRØØØñ	
ð	ñ
ð}ð0 ØˆS‰	Ø�ŠØØ1ñ	
ð	ñð1}ð> ØˆS‰	Ø�ŠØØØ<ñ	
ð	ñð?}ðN Øˆt‰Ø�ŠØØØ>ØØØØñ	
ð		ñðO}ðf 
ôg}ó ñ}øðs
 ó Ù	Ð
IÔJØ‡H‚HˆQ‡Kðûð ó Ù	Ð
CÔDØ‡H‚HˆQ‡Kðûð ó ØƒFðús4   ²H3 ·I ÁJ È3 IÉIÉ I>É=I>ÊJÊJ