ó
    ã°jä$  ã            	       óò   • S r SSKrSSKrSSKrSSKrSrS rS"S jrS#S jrS#S jr	S"S jr
S$S	 jrS
SSSSS.SSS.SSS.S.S/S.S.SSSSSS.SSS.SSS.S.SS/S.S./rS%S jrS  r\S!:X  a  \" 5         gg)&aÐ  Server MCP pentru citit fisiere Office: Excel (.xlsx), Word (.docx), PowerPoint (.pptx).

Doar citire. Doua unelte, ca sa nu umple contextul: serverele gata facute au 29 de
unelte (8360 de tokene, ~33 s de prefill in plus la FIECARE cerere), din care 13 de
scriere. Astea doua acopera citirea si cautarea.

Dependintele sunt declarate mai sus in stil PEP 723: `uv run office_mcp.py` le instaleaza
si le pastreaza in cache singur, fara mediu virtual de intretinut.
é    Ni`ê  c                 ól  • U  VVs/ s HC  o Vs/ s H3  nUc  SO
[        U5      R                  SS5      R                  SS5      PM5     snPME     n nnU  Vs/ s H  n[        S U 5       5      (       d  M  UPM      n nU (       d  g[        S U  5       5      nU  Vs/ s H  oS/U[	        U5      -
  -  -   PM     n nS	S
R                  U S   5      -   S-   SSU-  -   /nX@SS  Vs/ s H  nS	S
R                  U5      -   S-   PM     sn-  nSR                  U5      $ s  snf s  snnf s  snf s  snf s  snf )z<Randuri de text -> tabel markdown. Prima linie devine antet.NÚ Ú|z\|Ú
Ú c              3   ó@   #   • U  H  oR                  5       v •  M     g 7f©N)Ústrip)Ú.0Úcs     Ú$/home/andrei/setup-srv/office_mcp.pyÚ	<genexpr>Ú_tabel_md.<locals>.<genexpr>   s   é € Ð(>ºA°q¯©¯¨ºAùs   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr	   )Úlen)r   Úrs     r   r   r      s   é € Ð$šG�qŒC��FˆFšGùs   ‚z| z | r   z |z---|é   )ÚstrÚreplaceÚanyÚmaxr   Újoin)Úrandurir   r   ÚnÚouts        r   Ú	_tabel_mdr      s7  € ñ &-ô.Ú%, ˜óÚ�Að ‘y‘¤c¨!£f×5Ñ5°c¸5ÓA×IÑIÈ$ÐPSÖTÙôÙ%,ð ñ .á!Ó?š'�Q¤SÑ(>¹AÓ(>×%>�q™'€GÐ?ÞØÜÑ$™GÓ$Ó$€AÙ07Ó8²¨1�B�4˜1œs 1›v™:Ñ&Ô&±€GÐ8Ø�%—*‘*˜W Q™ZÓ(Ñ(¨4Ñ/°°vÀ±zÑ1AÐ
B€CØ¸¸±Ó=²¨AˆD�5—:‘:˜a“=Ñ  4Ô'±Ñ=Ñ=€CØ�9‰9�S‹>Ðùòùó .ùâ?ùò 9ùâ=s.   †	D!�:DÁ	D!ÁD'Á6D'ÂD,Ã%!D1ÄD!c                 óT  • SS K nUR                  U SSS9n/ nUR                   H°  nU(       a  Xa:w  a  M  XF   n/ Sp˜[        UR	                  SS95       H(  u  p«X¢:¼  a  Sn	  OUR                  [        U5      5        M*     UR                  SU-  5        UR                  [        U5      =(       d    S5        U	(       d  Mœ  UR                  SU-  5        M²     UR                  5         U(       a*  U(       d#  S	U< S
SR                  UR                  5      < 3$ SR                  U5      $ )Nr   T)Ú	data_onlyÚ	read_onlyF)Úvalues_onlyz## Foaia: %sz(goala)z_...taiat la %d randuri_zNu exista foaia 'z'. Foi disponibile: z, ú

)
ÚopenpyxlÚload_workbookÚ
sheetnamesÚ	enumerateÚ	iter_rowsÚappendÚlistr   Úcloser   )ÚcaleÚfoaieÚmax_randurir"   ÚwÚpartiÚnumeÚsr   ÚtaiatÚir   s               r   Úciteste_xlsxr3   !   sø   € ÛØ×Ñ˜t¨t¸tÐÐD€AØ€EØ—”ˆÞ�T“]ÙØ‰GˆØ˜U�Ü˜aŸk™k°d˜kÐ;Ö<‰DˆAØÓØ�ÙØ�N‰Nœ4 ›7Ö#ñ	 =ð
 	�‰�^ dÑ*Ô+Ø�‰”Y˜wÓ'×4¨9Ô5ßˆ5Ø�L‰LÐ3°kÑAÖBñ ð ‡G�G„IÞ—UÛ>CÀTÇYÁYÈqÏ|É|ÕE\Ð]Ð]Ø�;‰;�uÓÐó    c           	      óN  • SSK Jn  SSKJn  SSKJn  U" U 5      n/ nUR                  R                  R                  5        GH¼  nUR                  R                  S5      (       Ga  U" Xu5      nUR                  R                  5       n	U	(       d  MP  UR                  R                  =(       d    SR                  5       n
U
R!                  S5      (       aS  SR#                  S U
 5       5      =(       d    S	nUR%                  S
['        [)        U5      S-   S5      -  S-   U	-   5        Mæ  U
R!                  S5      (       a  UR%                  SU	-   5        GM  UR%                  U	5        GM'  UR                  R                  S5      (       d  GMJ  U" Xu5      nUR*                  S U  VVs/ s H(  oÝR,                   Vs/ s H  oîR                  PM     snPM*     nnn[/        U5      nU(       d  GM«  UR%                  U5        GM¿     SR#                  U5      =(       d    S$ s  snf s  snnf )Nr   )ÚDocument)ÚTable)Ú	Paragraphz}pr   Úheadingc              3   óR   #   • U  H  oR                  5       (       d  M  Uv •  M     g 7fr	   )Úisdigit)r   Úchs     r   r   Úciteste_docx.<locals>.<genexpr>I   s   é € ÐBªT r·Z±Z·\§¡ªTùs   ‚'ž	'Ú1Ú#r   é   r   Útitlez# z}tblr!   z(document gol))Údocxr6   Ú
docx.tabler7   Údocx.text.paragraphr8   ÚelementÚbodyÚiterchildrenÚtagÚendswithÚtextr
   ÚstyleÚnameÚlowerÚ
startswithr   r'   ÚminÚintÚrowsÚcellsr   )r*   r,   r6   r7   r8   Údr.   ÚcopilÚpÚtÚstilÚnivelÚtbr   r   r   Úmds                    r   Úciteste_docxr[   9   s�  € ÝÝ Ý-Ù�‹€AØ€Eð —‘—‘×,Ñ,×.ˆØ�9‰9×Ñ˜d×#Ò#Ù˜%Ó#ˆAØ—‘—‘“ˆAÞÙØ—G‘G—L‘L×& B×-Ñ-Ó/ˆDØ�‰˜y×)Ñ)ØŸ™ÑB©TÓBÓB×IÀc�Ø—‘˜S¤3¤s¨5£z°A¡~°qÓ#9Ñ9¸CÑ?À!ÑCÖDØ—‘ ×)Ñ)Ø—‘˜T A™X×&à—‘˜Q—Ø�Y‰Y×Ñ ×'Ô'Ù�u“ˆBØ:<¿'¹'À,À;Ñ:OÔPÒ:O°Q¯ªÓ0ª 1Ÿœ©Ô0Ñ:OˆGÑPÜ˜7Ó#ˆBß‰rØ—‘˜R× ñ' /ð( �;‰;�uÓ×1Ð!1Ð1ùò	 1ùÓPs   Æ%H!Æ8HÇH!ÈH!c           
      óÀ  • SSK Jn  U" U 5      n/ n[        UR                  S5       GH�  u  pVSU-  /nUR                   Hð  nUR
                  (       au  UR                  R                  S U  V	V
s/ s H(  o™R                   V
s/ s H  oªR                  PM     sn
PM*     nn	n
[        U5      nU(       a  UR                  U5        M‡  M‰  UR                  (       d  Mœ  SR                  S UR                  R                   5       5      nUR!                  5       (       d  Mß  UR                  U5        Mò     UR"                  (       aR  UR$                  R&                  R                  =(       d    SR!                  5       nU(       a  UR                  SU-   5        UR                  S	R                  U5      5        GM’     S	R                  U5      =(       d    S
$ s  sn
f s  sn
n	f )Nr   )ÚPresentationr   z## Slide %dr   c              3   óz   #   • U  H1  oR                   R                  5       (       d  M#  UR                   v •  M3     g 7fr	   )rJ   r
   )r   Úxs     r   r   Úciteste_pptx.<locals>.<genexpr>e   s"   é € ÐXÒ.E¨ÏÉÏÉÏ›f˜aŸfžfÒ.Eùs   ‚";¨;r   z_Note vorbitor:_ r!   z(prezentare goala))Úpptxr]   r%   ÚslidesÚshapesÚ	has_tableÚtablerQ   rR   rJ   r   r'   Úhas_text_framer   Ú
text_frameÚ
paragraphsr
   Úhas_notes_slideÚnotes_slideÚnotes_text_frame)r*   r,   r]   rU   r.   r2   ÚslÚbucÚfr   r   r   rZ   rV   r   s                  r   Úciteste_pptxro   X   sY  € Ý!Ù�TÓ€AØ€EÜ˜1Ÿ8™8 Q×'‰ˆØ˜qÑ Ð!ˆØ—”ˆAØ�{�{Ø>?¿g¹g¿l¹lÈ<ÈKÑ>XÔYÒ>X¸¯GªGÓ4ªG qŸFœF©GÔ4Ñ>X�ÑYÜ˜wÓ'�ÞØ—J‘J˜r–Nñ à×!×!Ñ!Ø—I‘IÑX¨a¯l©l×.EÒ.EÓXÓX�Ø—7‘7—9“9Ø—J‘J˜q–Mñ ð ××Ø—‘×0Ñ0×5Ñ5×;¸×BÑBÓDˆAÞØ—
‘
Ð.°Ñ2Ô3Ø�‰�V—[‘[ Ó%×&ñ! (ð" �;‰;�uÓ×5Ð!5Ð5ùò 5ùÓYs   Á/G
ÂGÂG
ÇG
c           	      ó¦  • [         R                  R                  U 5      n [         R                  R                  U 5      (       d  SU -  $ [         R                  R	                  U 5      S   R                  5       n US;   a  [        XU5      nOBUS:X  a  [        X5      nO0US:X  a  [        X5      nOUS;   a  SU< SU< S	U< S
U < S3	$ SU-  $ S[         R                  R                  U 5      -  n[        U5      [        :”  a  US [         S[        -  -   nXd-   $ ! [         a+  nSU < S[        U5      R                  < SU< 3s S nA$ S nAff = f)NzFisierul nu exista: %sr   )z.xlsxz.xlsmz.docxz.pptx)z.xlsz.docz.pptzFormat vechi (z$), neacceptat. Salveaza fisierul ca zDx sau converteste-l cu LibreOffice: soffice --headless --convert-to zx "Ú"z5Extensie neacceptata: %s (accept .xlsx, .docx, .pptx)zNu am putut citi ú: z# %s

zh

_...iesire taiata la %d caractere. Cere o foaie anume cu parametrul `foaie`, sau scade `max_randuri`._)ÚosÚpathÚ
expanduserÚexistsÚsplitextrM   r3   r[   ro   Ú	ExceptionÚtypeÚ__name__Úbasenamer   ÚMAX)r*   r+   r,   ÚextrJ   ÚeÚantets          r   Úcitester€   p   s8  € Ü�7‰7×Ñ˜dÓ#€DÜ�7‰7�>‰>˜$×ÑØ'¨$Ñ.Ð.Ü
�'‰'×
Ñ
˜4Ó
  Ñ
#×
)Ñ
)Ó
+€CðKØÐ$Ó$Ü ¨[Ó9‰DØ�G‹^Ü Ó2‰DØ�G‹^Ü Ó2‰DØÐ,Ô,ó ›C££dð,ð -ð
 KÈSÑPÐPð œŸ™×)Ñ)¨$Ó/Ñ/€EÜ
ˆ4ƒy”3ƒØ�D”Sˆzð OÜQTñUñ Uˆà‰<Ðøô ô KÛ04´d¸1³g×6FÔ6FÊÐJÕJûðKús6   Á:D ÂD ÂD Â1D Ã
D Ä
EÄ% EÅEÅEc                 óh  • [         R                  R                  U 5      n [         R                  R                  U 5      (       d  SU -  $ / nS H]  n[	        SUS-   5       HG  nU[
        R
                  " [         R                  R                  " U /S/US-
  -  QSU-   P76 5      -  nMI     M_     [        [        U5      5      nUR                  5       / pvUSS  H’  n[        USS	9n	U	R                  5        V
s/ s H(  o¦U
R                  5       ;   d  M  U
R                  5       PM*     nn
U(       d  MY  UR                  S
U[        U5      SR                  S USS  5       5      4-  5        M”     U(       d  SU[        U5      U 4-  $ S[        U5      [        U5      SR                  U5      4-  $ s  sn
f )z:Cauta un text in toate fisierele Office dintr-un director.zNu e un director: %s)ÚxlsxÚxlsmrB   ra   r   Ú*z*.NéÈ   iÐ  )r,   z**%s** (%d potriviri)
%sr   c              3   ó2   #   • U  H  nS USS -   v •  M     g7f)z  - Nr…   © )r   Úls     r   r   Úcauta.<locals>.<genexpr>œ   s   é € Ð(MÂ9¸a¨°!°D°S°'Ö)9Â9ùs   ‚é   z-Nimic pentru '%s' in %d fisiere Office din %szGasit in %d din %d fisiere:

%sr!   )rs   rt   ru   ÚisdirÚrangeÚglobr   ÚsortedÚsetrM   r€   Ú
splitlinesr
   r'   r   )ÚdirectorrJ   ÚadancimeÚtinter}   ÚaÚjosÚgasitern   Úcontinutrˆ   Úliniis               r   Úcautar™   Œ   sƒ  € ä�w‰w×!Ñ! (Ó+€HÜ�7‰7�=‰=˜×"Ñ"Ø%¨Ñ0Ð0Ø€EÛ/ˆÜ�q˜( Q™,Ö'ˆAØ”T—Y’YœrŸw™wŸ|š|¨HÐU¸¸ÀÀQÁ¹ÐUÈ$ÐQTÉ*ÒUÓVÑVŠEó (ñ 0ô ”3�u“:Ó€EØ—*‘*“, ˆØ�4�C‹[ˆÜ˜1¨$Ñ/ˆØ$,×$7Ñ$7Ô$9ÓNÒ$9˜qÀAÇGÁGÃIÑ=M“�—‘–Ñ$9ˆÐNßˆ5Ø�M‰MÐ5Ø”3�u“:˜tŸy™yÑ(MÀ5ÈÈ!Á9Ó(MÓMð9Oñ Oö Pñ	 ö Ø>À$ÌÈEË
ÐT\ÐA]Ñ]Ð]Ø.´#°f³+¼sÀ5»zÈ6Ï;É;ÐW]ÓK^Ð1_Ñ_Ð_ùò Os   Ã7F/ÄF/r€   z´Citeste un fisier Office (.xlsx, .docx, .pptx) si il intoarce ca text markdown: foile si celulele din Excel, paragrafele SI TABELELE din Word, slide-urile si notele din PowerPoint.ÚobjectÚstringzcalea catre fisier)ry   Údescriptionz&doar la Excel: numele unei singure foiÚintegerz0limita de randuri per foaie/tabel (implicit 500))r*   r+   r,   r*   )ry   Ú
propertiesÚrequired)rL   rœ   ÚinputSchemar™   zvCauta un text in toate fisierele Office dintr-un director (recursiv). Intoarce fisierele si liniile care se potrivesc.zdirectorul in care se cautaz*textul cautat, fara diferenta de majusculez+cate niveluri de subdirectoare (implicit 3))r‘   rJ   r’   r‘   rJ   c                 óÎ   • SU S.nUb  X#S'   OXS'   [         R                  R                  [        R                  " U5      S-   5        [         R                  R                  5         g )Nz2.0)ÚjsonrpcÚidÚerrorÚresultr   )ÚsysÚstdoutÚwriteÚjsonÚdumpsÚflush)Úid_ÚrezultatÚeroareÚms       r   Úraspunder°   ·   sO   € Ø Ñ%€AØÑØˆ'Š
àˆ(‰Ü‡J�J×Ñ”T—Z’Z “] TÑ)Ô*Ü‡J�J×ÑÕr4   c                  ó  • [         R                   GH±  n U R                  5       n U (       d  M   [        R                  " U 5      nUR                  S5      UR                  S5      p2US:X  a  [        USS0 0SSS.S	.5        Mr  US
:X  a  [        US[        05        MŒ  US:X  aé  UR                  S0 5      nUR                  S5      UR                  S0 5      pe US:X  aF  [        UR                  SS5      UR                  S5      [        UR                  SS5      5      5      nOSUS:X  aG  [        UR                  SS5      UR                  SS5      [        UR                  SS5      5      5      nOSU-  n [        USSUS./05        GM{  U(       a  UR                  S5      (       a  GM›  Uc  GM¡  [        US S!U-  S".S#9  GM´     g ! [
         a     GMÅ  f = f! [
         a'  nS[        U5      R                  < SU< 3n S nAN�S nAff = f)$NÚmethodr£   Ú
initializez
2024-11-05ÚtoolsÚofficez1.0)rL   Úversion)ÚprotocolVersionÚcapabilitiesÚ
serverInfoz
tools/listz
tools/callÚparamsrL   Ú	argumentsr€   r*   r   r+   r,   éô  r™   r‘   rJ   r’   é   zunealta necunoscuta: %szeroare: rr   Úcontent)ry   rJ   znotifications/i§€ÿÿzmetoda necunoscuta: %s)ÚcodeÚmessage)r®   )r¦   Ústdinr
   r©   Úloadsrx   Úgetr°   ÚUNELTEr€   rP   r™   ry   rz   rN   )	Úlinier   r¯   r¬   rU   r/   r”   rV   r~   s	            r   ÚmainrÆ   Á   sÑ  € Ü—•ˆØ—‘“ˆÞÙð	Ü—
’
˜5Ó!ˆAð —‘�x“ !§%¡%¨£+ˆ3Ø�ÓÜ�S¨lØ,3°R¨=Ø2:ÀuÑ)MñOö Pð �,ÓÜ�S˜7¤FÐ+Ö,Ø�,ÓØ—‘�h Ó#ˆAØ—e‘e˜F“m Q§U¡U¨;¸Ó%;�!ð
=Ø˜9Ó$Ü §¡ f¨bÓ 1°1·5±5¸³>Ü # A§E¡E¨-¸Ó$=Ó >ó@‘Aà˜W“_Ü˜aŸe™e J°Ó3°Q·U±U¸6À2Ó5FÜ! !§%¡%¨
°AÓ"6Ó7ó9‘Að 2°DÑ8‘Aô �S˜9°ÀÑ'BÐ&CÐD×EÞ�1—<‘<Ð 0×1Ñ1ÚØŒ_Ü�S¨&Ð=UÐXYÑ=YÑ!ZÕ[òC øô ó 	Ûð	ûô* ô =Ü(,¨Q«×(8Ô(8º!Ð<•ûð=ús7   ¯GÃAGÄ$AGÅ1GÇ
GÇGÇ
HÇ$HÈHÚ__main__)Nr¼   )r¼   )r½   )NN)Ú__doc__r©   rs   r¦   r�   r|   r   r3   r[   ro   r€   r™   rÄ   r°   rÆ   rz   r‡   r4   r   Ú<module>rÉ      sá   ðñ
÷ × à€òôô02ô>6ô0ô8`ð. ð=ð &Ø"Ð3GÑHØ#Ð4\Ñ]Ø!*Ð;mÑnñ6pð �Xñ	ñ	 ð ðHà%Ø&Ð7TÑUØ"Ð3_Ñ`Ø'Ð8eÑfñ6hð ! &Ð)ñ	+ñ,ð
€ô*ò"\ðJ ˆzÓÙ…Fð r4   