@mcp-use/inspector 12.0.0 → 12.0.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/inspector.js +58 -32
- package/dist/cli.js +2 -2
- package/dist/server/chunk-2EBTJWD2.js +71 -0
- package/dist/server/chunk-FK3HQLBD.js +322 -0
- package/dist/server/chunk-UHGKWUJ7.js +164 -0
- package/dist/server/cli.js +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/middleware.js +3 -3
- package/dist/server/server.js +2 -2
- package/dist/server/shared-static.js +2 -2
- package/dist/server/version.js +1 -1
- package/dist/web/assets/{1c-BcUq9pn9.js → 1c-Dx4ELK7R.js} +1 -1
- package/dist/web/assets/{abnf-ClvnnoyZ.js → abnf-Dr1xxiZU.js} +1 -1
- package/dist/web/assets/{accesslog-Dat4e77_.js → accesslog-ltfLQ7zQ.js} +1 -1
- package/dist/web/assets/{actionscript-jiy8wv5e.js → actionscript-DeMv81fN.js} +1 -1
- package/dist/web/assets/{ada-Dmsgs_Bf.js → ada-CcRu_RRv.js} +1 -1
- package/dist/web/assets/{angelscript-U0pmB-0M.js → angelscript-DaX3TC5q.js} +1 -1
- package/dist/web/assets/{apache-C1tkvQRQ.js → apache-DOtDo4tK.js} +1 -1
- package/dist/web/assets/{applescript-CGbnlCqS.js → applescript-BqlV-eaW.js} +1 -1
- package/dist/web/assets/{arcade-DI0Om11Y.js → arcade-CwuHLoAb.js} +1 -1
- package/dist/web/assets/{arduino-w8Iia-ys.js → arduino-CiAwYYVT.js} +1 -1
- package/dist/web/assets/{armasm-BwxZ73hh.js → armasm-33tGqv4x.js} +1 -1
- package/dist/web/assets/{asciidoc-B-gvg30b.js → asciidoc-aKqB4Zfn.js} +1 -1
- package/dist/web/assets/{aspectj-B7XvkxZP.js → aspectj-BtdcUG_A.js} +1 -1
- package/dist/web/assets/{autohotkey-B24D9thD.js → autohotkey-BYMjiGfY.js} +1 -1
- package/dist/web/assets/{autoit-CSiR1z9J.js → autoit-Ps-O_see.js} +1 -1
- package/dist/web/assets/{avrasm-BL9AHPhK.js → avrasm-DRa6Obn5.js} +1 -1
- package/dist/web/assets/{awk-DIzX2CVc.js → awk-BL0qDpqU.js} +1 -1
- package/dist/web/assets/{axapta-BdiaSHIi.js → axapta-CZUeJhXW.js} +1 -1
- package/dist/web/assets/{bash-BXROvc2K.js → bash-BX0WZBhM.js} +1 -1
- package/dist/web/assets/{basic-CwQqQMcn.js → basic-TeBjHwpi.js} +1 -1
- package/dist/web/assets/{bnf-CzXwPaMu.js → bnf-BlU6kEo7.js} +1 -1
- package/dist/web/assets/{brainfuck-BJMzmf23.js → brainfuck-DWrBFGTW.js} +1 -1
- package/dist/web/assets/{c-Da3JrYls.js → c-ChD2LLV9.js} +1 -1
- package/dist/web/assets/{c-like-B6t16OdK.js → c-like-CPUC5Juh.js} +1 -1
- package/dist/web/assets/{cal-CXYvxz9R.js → cal-1LN_qM9H.js} +1 -1
- package/dist/web/assets/{capnproto-CsQNRz0q.js → capnproto-m-I0RhcR.js} +1 -1
- package/dist/web/assets/{ceylon-Bp7aeels.js → ceylon-DVW6kWGU.js} +1 -1
- package/dist/web/assets/{clean-CXS8ykA4.js → clean-CHvaT-WM.js} +1 -1
- package/dist/web/assets/{clojure-pf_3nXqN.js → clojure-GcGf5Xkl.js} +1 -1
- package/dist/web/assets/{clojure-repl-CkrjE_c4.js → clojure-repl-C5KhIyo7.js} +1 -1
- package/dist/web/assets/{cmake-CT03rvg6.js → cmake-ujuzjD4x.js} +1 -1
- package/dist/web/assets/{coffeescript-WNHkC7Wx.js → coffeescript-CMsjgSiM.js} +1 -1
- package/dist/web/assets/{coq-D1KKc0KP.js → coq-EM4fYupj.js} +1 -1
- package/dist/web/assets/{core-BYlGF8my.js → core-DEUSn2QX.js} +1 -1
- package/dist/web/assets/{cos-ChwUA1jN.js → cos-TUdHgLUJ.js} +1 -1
- package/dist/web/assets/{cpp-Dsei-3Xq.js → cpp-BA3x95-Y.js} +1 -1
- package/dist/web/assets/{crmsh-Djnu-MQ-.js → crmsh-BS2FyEjM.js} +1 -1
- package/dist/web/assets/{crystal-TmFRpuMV.js → crystal-BIkCvaM1.js} +1 -1
- package/dist/web/assets/{csharp-hHMMncKi.js → csharp-Dt_awXL9.js} +1 -1
- package/dist/web/assets/{csp-B8MhAsCK.js → csp-BL9sB6cu.js} +1 -1
- package/dist/web/assets/{css-ByRFG93t.js → css-KR9QMGUx.js} +1 -1
- package/dist/web/assets/{d-CXxjJHqs.js → d-BWrCD9YR.js} +1 -1
- package/dist/web/assets/{dart-CgHUEL71.js → dart-_RTUlkJ9.js} +1 -1
- package/dist/web/assets/{delphi-ArMltm7X.js → delphi-BUUPt4Ja.js} +1 -1
- package/dist/web/assets/{diff-qoLKtAmT.js → diff-wBXdYxQy.js} +1 -1
- package/dist/web/assets/{django-CkVDj2pG.js → django-DqZFFVwK.js} +1 -1
- package/dist/web/assets/{dns-BmZjk1I8.js → dns-CnpCbSjt.js} +1 -1
- package/dist/web/assets/{dockerfile-BvYdq4uC.js → dockerfile-BOURBpOm.js} +1 -1
- package/dist/web/assets/{dos-C4KY_D9A.js → dos-DAZGvad5.js} +1 -1
- package/dist/web/assets/{dsconfig-BQG9iYD2.js → dsconfig-BVB5O3cM.js} +1 -1
- package/dist/web/assets/{dts-7K-DjAKs.js → dts-OifsAXNV.js} +1 -1
- package/dist/web/assets/{dust-D6SF6ARY.js → dust-D5Dcq6jo.js} +1 -1
- package/dist/web/assets/{ebnf-Cizp_jQ4.js → ebnf-BBfPDS_C.js} +1 -1
- package/dist/web/assets/{elixir-BiwR8J2H.js → elixir-INXqnam8.js} +1 -1
- package/dist/web/assets/{elm-DoD06AJS.js → elm-D_3Ft2cH.js} +1 -1
- package/dist/web/assets/{erb-CX_vk2av.js → erb-CQzHSdcS.js} +1 -1
- package/dist/web/assets/{erlang-BfI3aOGX.js → erlang-D1YJZkyK.js} +1 -1
- package/dist/web/assets/{erlang-repl-kLHoXBct.js → erlang-repl-gcBSuefW.js} +1 -1
- package/dist/web/assets/{excel-BaSnDISO.js → excel-BxYAFP3X.js} +1 -1
- package/dist/web/assets/{fix-DH-fJ8Mj.js → fix-Di2lrlgN.js} +1 -1
- package/dist/web/assets/{flix-BLgnrCK0.js → flix-CnH-AcqU.js} +1 -1
- package/dist/web/assets/{fortran-BIBo3Kpl.js → fortran-bnz7eVnG.js} +1 -1
- package/dist/web/assets/{fsharp-Bp6AKxTk.js → fsharp-DbZS8H-q.js} +1 -1
- package/dist/web/assets/{gams-Dpa5a_he.js → gams-Dv8pmL8p.js} +1 -1
- package/dist/web/assets/{gauss-B-7gWEgx.js → gauss-BCyqEwJM.js} +1 -1
- package/dist/web/assets/{gcode-B1mO8fvT.js → gcode-D4PDpgSJ.js} +1 -1
- package/dist/web/assets/{gherkin-DB5Y-vm_.js → gherkin-CPNSMSqj.js} +1 -1
- package/dist/web/assets/{glsl-BrzNgLuN.js → glsl-Do0DxX9K.js} +1 -1
- package/dist/web/assets/{gml-DjM1oHt8.js → gml-DVLiiZfc.js} +1 -1
- package/dist/web/assets/{go-CD49ZrYA.js → go-7eZVStkG.js} +1 -1
- package/dist/web/assets/{golo-Cu2KUQW9.js → golo-CBmUnnhD.js} +1 -1
- package/dist/web/assets/{gradle-BgiikxT1.js → gradle-D1-6dGA_.js} +1 -1
- package/dist/web/assets/{groovy-Ba_5c_QN.js → groovy-C0Fq2uMS.js} +1 -1
- package/dist/web/assets/{haml-DE53AxHd.js → haml-Cti7gqyg.js} +1 -1
- package/dist/web/assets/{handlebars-D3fwJo38.js → handlebars-BirxE8Xl.js} +1 -1
- package/dist/web/assets/{haskell-B_bBgwWF.js → haskell-EbK6E25-.js} +1 -1
- package/dist/web/assets/{haxe-7-2rpUtY.js → haxe-BZYh_oFl.js} +1 -1
- package/dist/web/assets/{hsp-vfwxZnYS.js → hsp-DeoDSuiv.js} +1 -1
- package/dist/web/assets/{htmlbars-CNSf8fZS.js → htmlbars-DI7O6F29.js} +1 -1
- package/dist/web/assets/{http--SbVa4Rx.js → http-C0sY1iWc.js} +1 -1
- package/dist/web/assets/{hy-Dkckejtv.js → hy-CIk5sEem.js} +1 -1
- package/dist/web/assets/{index-Dp4ZO2F6.js → index-DFBDRXli.js} +6 -6
- package/dist/web/assets/{inform7-BHCjoTda.js → inform7-DZBKh5UK.js} +1 -1
- package/dist/web/assets/{ini-CxuW85O8.js → ini-DQoXZGOi.js} +1 -1
- package/dist/web/assets/{irpf90-BuaeHAtr.js → irpf90-Cbjt0ZNd.js} +1 -1
- package/dist/web/assets/{isbl-BureWMtS.js → isbl-ZtrQkPO2.js} +1 -1
- package/dist/web/assets/{java-Cnni0oyJ.js → java-DpN-PxRJ.js} +1 -1
- package/dist/web/assets/{javascript-Cyp9mGjE.js → javascript-gcBRQquQ.js} +1 -1
- package/dist/web/assets/{jboss-cli-iLmVlRAn.js → jboss-cli-C53DfE5f.js} +1 -1
- package/dist/web/assets/{json-BAhH5ati.js → json-BeEhMDGg.js} +1 -1
- package/dist/web/assets/{julia-BwGHBUOj.js → julia-DkCYe91H.js} +1 -1
- package/dist/web/assets/{julia-repl-B2oHwO4-.js → julia-repl-CBvzyYCC.js} +1 -1
- package/dist/web/assets/{kotlin-CwzCam-2.js → kotlin-tewRCLHl.js} +1 -1
- package/dist/web/assets/{lasso-Bt7TuCTl.js → lasso-BuXaH1Cz.js} +1 -1
- package/dist/web/assets/{latex-CdDEIutL.js → latex-DeX09lqF.js} +1 -1
- package/dist/web/assets/{ldif-p-hc5niR.js → ldif-3lLN9yx8.js} +1 -1
- package/dist/web/assets/{leaf-BuXHhg_-.js → leaf-P_RVjDuK.js} +1 -1
- package/dist/web/assets/{less-CGZ8wWxt.js → less-CVPh26b8.js} +1 -1
- package/dist/web/assets/{lisp-BdqCmmOV.js → lisp-fdA8tQ93.js} +1 -1
- package/dist/web/assets/{livecodeserver-D4OAHAG4.js → livecodeserver-D13MVnB6.js} +1 -1
- package/dist/web/assets/{livescript-D-LGNfax.js → livescript-DIBIQwnL.js} +1 -1
- package/dist/web/assets/{llvm-BigP4eeZ.js → llvm-BpI0ArIa.js} +1 -1
- package/dist/web/assets/{lsl-C2W09_h0.js → lsl-rAKP9d3Y.js} +1 -1
- package/dist/web/assets/{lua-TIfmi05A.js → lua-CiC7oTL4.js} +1 -1
- package/dist/web/assets/{makefile-BcS0r-e4.js → makefile-CpHExib9.js} +1 -1
- package/dist/web/assets/{markdown-h2Q-URCa.js → markdown-BnOmMMQM.js} +1 -1
- package/dist/web/assets/{mathematica-BGrIEjeE.js → mathematica-Bk_jcVP0.js} +1 -1
- package/dist/web/assets/{matlab-CYOu-7yn.js → matlab-qzTsGRbb.js} +1 -1
- package/dist/web/assets/{maxima-D1eA7mtw.js → maxima-DCl4inY8.js} +1 -1
- package/dist/web/assets/{mel-DQj-0TDc.js → mel-CZJ7Kq_2.js} +1 -1
- package/dist/web/assets/{mercury-zR3ZZng0.js → mercury-C6wrj8aa.js} +1 -1
- package/dist/web/assets/{mipsasm-C1Kn2tHy.js → mipsasm-Bmf971XM.js} +1 -1
- package/dist/web/assets/{mizar-B7fMrXb6.js → mizar-CPVP6RUl.js} +1 -1
- package/dist/web/assets/{mojolicious-COHg7Bpa.js → mojolicious-BYnCoBN-.js} +1 -1
- package/dist/web/assets/{monkey-Ci0YFapZ.js → monkey-BRjmOnCu.js} +1 -1
- package/dist/web/assets/{moonscript-DN9txspF.js → moonscript-DVz-51fP.js} +1 -1
- package/dist/web/assets/{n1ql-Bjl40rS6.js → n1ql-CoQ61mdz.js} +1 -1
- package/dist/web/assets/{nginx-BB-GUcl8.js → nginx-BatiPDD8.js} +1 -1
- package/dist/web/assets/{nim-WXlc2v3a.js → nim-BfpeWLRy.js} +1 -1
- package/dist/web/assets/{nix-Dc8zlGDb.js → nix-DiEgpruG.js} +1 -1
- package/dist/web/assets/{node-repl-BrHfE07-.js → node-repl-Bx8JUgAM.js} +1 -1
- package/dist/web/assets/{nsis-DpWxw1Sl.js → nsis-BymSCm1j.js} +1 -1
- package/dist/web/assets/{objectivec-FVemPbFd.js → objectivec-BGkBVReM.js} +1 -1
- package/dist/web/assets/{ocaml-BK3bvJ2q.js → ocaml-w12Jk3fn.js} +1 -1
- package/dist/web/assets/{openscad-CP6NCvvs.js → openscad-DSEdidgS.js} +1 -1
- package/dist/web/assets/{oxygene-DC3ak_3_.js → oxygene-BRA0isao.js} +1 -1
- package/dist/web/assets/{parser3-CyUntQ34.js → parser3-hjMiYg-q.js} +1 -1
- package/dist/web/assets/{perl-bVWe8e8U.js → perl-DUdHp6Qp.js} +1 -1
- package/dist/web/assets/{pf-BOjEiDIC.js → pf-9PFJga4U.js} +1 -1
- package/dist/web/assets/{pgsql-BCWeiBkM.js → pgsql-sBV1j5j8.js} +1 -1
- package/dist/web/assets/{php-BwPsbnI-.js → php-C-avw1mv.js} +1 -1
- package/dist/web/assets/{php-template-DfDKyk9q.js → php-template-DNmkTOaf.js} +1 -1
- package/dist/web/assets/plaintext-BaP0k3PW.js +1 -0
- package/dist/web/assets/{pony-VdkCCOyS.js → pony-DMsSI3l-.js} +1 -1
- package/dist/web/assets/{powershell-Cp26ql04.js → powershell-BC5F8j3h.js} +1 -1
- package/dist/web/assets/{processing-XxLfVLaz.js → processing-C6cuspIW.js} +1 -1
- package/dist/web/assets/{profile-_c3vHi6M.js → profile-KNAYC0IA.js} +1 -1
- package/dist/web/assets/{prolog-B1kdM9jt.js → prolog-qjulfDGc.js} +1 -1
- package/dist/web/assets/{properties-DQgc3zb2.js → properties-W9YAyEqB.js} +1 -1
- package/dist/web/assets/{protobuf-CH3UZKXd.js → protobuf-CxVpsR7E.js} +1 -1
- package/dist/web/assets/{puppet-DrbwOLzq.js → puppet-xAVDzfMS.js} +1 -1
- package/dist/web/assets/{purebasic-DdcJwvWv.js → purebasic-Bn2u8dln.js} +1 -1
- package/dist/web/assets/{python-DJykol0p.js → python-BwUYawwq.js} +1 -1
- package/dist/web/assets/{python-repl-B4C8hSMk.js → python-repl-C5arQlsI.js} +1 -1
- package/dist/web/assets/{q-BQuuKGzs.js → q-D2RK5BO8.js} +1 -1
- package/dist/web/assets/{qml-Bp_L05Jp.js → qml-CiNE0t4L.js} +1 -1
- package/dist/web/assets/{r-uxYCja4N.js → r-BxQZREg0.js} +1 -1
- package/dist/web/assets/{reasonml-CLossjse.js → reasonml-DYzavTKu.js} +1 -1
- package/dist/web/assets/{rib-csmgUNkd.js → rib-CHw8kS-E.js} +1 -1
- package/dist/web/assets/{roboconf-btg9gTDw.js → roboconf-DGB8ho1k.js} +1 -1
- package/dist/web/assets/{routeros-Csuua3zf.js → routeros-yeUGHEHi.js} +1 -1
- package/dist/web/assets/rpc-logger-TPNV75J4-Bm8Prgf2.js +1 -0
- package/dist/web/assets/{rsl-d-YotwOW.js → rsl-t94pfRxW.js} +1 -1
- package/dist/web/assets/{ruby-CkW_KLmF.js → ruby-IW81jD-M.js} +1 -1
- package/dist/web/assets/{ruleslanguage-Q5IKUBV4.js → ruleslanguage-DPon6wnL.js} +1 -1
- package/dist/web/assets/{rust-DSng4mL1.js → rust-CHVG70QY.js} +1 -1
- package/dist/web/assets/{sas-D7AjfG21.js → sas-HW6aEos_.js} +1 -1
- package/dist/web/assets/{scala-CN9Ow8R2.js → scala-CuwMKe4Q.js} +1 -1
- package/dist/web/assets/{scheme-DeP12E93.js → scheme-Bv-sz2hT.js} +1 -1
- package/dist/web/assets/{scilab-B6a2DHb2.js → scilab-BTdkW7MU.js} +1 -1
- package/dist/web/assets/{scss-CYN_e18F.js → scss-DfQ97Zog.js} +1 -1
- package/dist/web/assets/{shell-6-oymzUb.js → shell-CQVcEQcJ.js} +1 -1
- package/dist/web/assets/{smali-BjTNuQ59.js → smali-BaALnMWn.js} +1 -1
- package/dist/web/assets/{smalltalk-1XYXT6Bo.js → smalltalk-gCsmcx60.js} +1 -1
- package/dist/web/assets/{sml-B65mup5O.js → sml-1jX7UZNp.js} +1 -1
- package/dist/web/assets/{sqf-CU1eQuGt.js → sqf-DYcq2vJp.js} +1 -1
- package/dist/web/assets/{sql-DtltUJqs.js → sql-DjBYGR_n.js} +1 -1
- package/dist/web/assets/{sql_more-DzWxEBiQ.js → sql_more-DNfvJjDJ.js} +1 -1
- package/dist/web/assets/{stan-CLSDj931.js → stan-Xk9k0HXm.js} +1 -1
- package/dist/web/assets/{stata-DIyPvtKT.js → stata-BQQmdU-7.js} +1 -1
- package/dist/web/assets/{step21-DB0jCx8R.js → step21-C_TQyuAo.js} +1 -1
- package/dist/web/assets/{stylus-CTX-Buxm.js → stylus-DC8DWqu2.js} +1 -1
- package/dist/web/assets/{subunit-C-qE_LmD.js → subunit-CiAE7LHH.js} +1 -1
- package/dist/web/assets/{swift-Ivjsf5Ma.js → swift-BMh1mq5J.js} +1 -1
- package/dist/web/assets/{taggerscript-DMv7zUSY.js → taggerscript-ChXhpPk7.js} +1 -1
- package/dist/web/assets/{tap-CzK6P33g.js → tap-CJ5zbeDC.js} +1 -1
- package/dist/web/assets/{tcl-DK1IpRCR.js → tcl-BDJFeipW.js} +1 -1
- package/dist/web/assets/{thrift-BrPvxK4Y.js → thrift-CZmZM3HT.js} +1 -1
- package/dist/web/assets/{tp-LlZci2qR.js → tp-DthA3jxu.js} +1 -1
- package/dist/web/assets/{twig-DlfsZ47Z.js → twig-BEWVqyaT.js} +1 -1
- package/dist/web/assets/{typescript-ngl7WuXR.js → typescript-Dhsy2r2b.js} +1 -1
- package/dist/web/assets/{vala-nXdrRg7V.js → vala-C7MXswjC.js} +1 -1
- package/dist/web/assets/{vbnet-CEuJMYzd.js → vbnet-rENqySZ5.js} +1 -1
- package/dist/web/assets/{vbscript-kyCEnU8c.js → vbscript-CP6OUMca.js} +1 -1
- package/dist/web/assets/{vbscript-html-BoWy1w6Y.js → vbscript-html-B8lKLOdp.js} +1 -1
- package/dist/web/assets/{verilog-qpocrDQL.js → verilog-BPJJyQKF.js} +1 -1
- package/dist/web/assets/{vhdl-4ktDPmND.js → vhdl-DwU5IEbv.js} +1 -1
- package/dist/web/assets/{vim-BRIUfjRc.js → vim-DuLmJ3W0.js} +1 -1
- package/dist/web/assets/{x86asm-BwIpKqNW.js → x86asm-BZ6mQBhw.js} +1 -1
- package/dist/web/assets/{xl-DC3aiGV3.js → xl-B6oe5FLF.js} +1 -1
- package/dist/web/assets/{xml-VazG12Yj.js → xml-BHUu2S2j.js} +1 -1
- package/dist/web/assets/{xquery-DF4g6DQC.js → xquery-DltBHu-6.js} +1 -1
- package/dist/web/assets/{yaml-CCbsN06w.js → yaml-DaXd8Q0X.js} +1 -1
- package/dist/web/assets/{zephir-CZQyWE-R.js → zephir-8mtfppXj.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +3 -3
- package/dist/web/assets/plaintext-Dol98Rv8.js +0 -1
- package/dist/web/assets/rpc-logger-TPNV75J4-BBXZhXkP.js +0 -1
package/dist/cdn/inspector.js
CHANGED
|
@@ -26903,7 +26903,7 @@ var Ud = class {
|
|
|
26903
26903
|
//#region src/client/telemetry/utils.ts
|
|
26904
26904
|
function of() {
|
|
26905
26905
|
try {
|
|
26906
|
-
return "12.0.0";
|
|
26906
|
+
return "12.0.1-canary.0";
|
|
26907
26907
|
} catch {
|
|
26908
26908
|
return "0.0.0";
|
|
26909
26909
|
}
|
|
@@ -48446,9 +48446,9 @@ var TM, EM, DM, OM, kM, AM, jM, MM, NM, PM, FM, IM, LM, RM, zM, BM, VM, HM, UM,
|
|
|
48446
48446
|
}(), uce);
|
|
48447
48447
|
}));
|
|
48448
48448
|
//#endregion
|
|
48449
|
-
//#region ../mcp-use/dist/chunk-
|
|
48449
|
+
//#region ../mcp-use/dist/chunk-36SPEUMU.js
|
|
48450
48450
|
Xp();
|
|
48451
|
-
var hce = "1.34.0";
|
|
48451
|
+
var hce = "1.34.1-canary.0";
|
|
48452
48452
|
function _R() {
|
|
48453
48453
|
return hce;
|
|
48454
48454
|
}
|
|
@@ -56348,41 +56348,54 @@ var mde = class {
|
|
|
56348
56348
|
getKey(e) {
|
|
56349
56349
|
return this.session.getKey(e);
|
|
56350
56350
|
}
|
|
56351
|
+
reanchorWellKnownUrl(e) {
|
|
56352
|
+
if (!this.connectionUrl) return e;
|
|
56353
|
+
try {
|
|
56354
|
+
let t = new URL(e), n = new URL(this.connectionUrl);
|
|
56355
|
+
if (t.origin !== n.origin || !t.pathname.startsWith("/.well-known/")) return e;
|
|
56356
|
+
let r = new URL(this.serverUrl), [i, ...a] = t.pathname.slice(13).split("/");
|
|
56357
|
+
if (!i) return e;
|
|
56358
|
+
let o = a.length ? `/${a.join("/")}` : "", s = n.pathname.replace(/\/+$/, ""), c = r.pathname.replace(/\/+$/, ""), l = o && o === s ? c : o;
|
|
56359
|
+
return `${r.origin}/.well-known/${i}${l}${t.search}`;
|
|
56360
|
+
} catch {
|
|
56361
|
+
return e;
|
|
56362
|
+
}
|
|
56363
|
+
}
|
|
56351
56364
|
getProxyFetch(e) {
|
|
56352
56365
|
if (!this.proxyOAuthRequests || !this.oauthProxyUrl) return e;
|
|
56353
56366
|
let t = e ?? globalThis.fetch.bind(globalThis), n = this.oauthProxyUrl, r = this.connectionUrl, i = this.serverUrl;
|
|
56354
56367
|
return async (e, a) => {
|
|
56355
|
-
let o = typeof e == "string" ? e : e instanceof URL ? e.toString() : e.url;
|
|
56356
|
-
if (!(
|
|
56368
|
+
let o = typeof e == "string" ? e : e instanceof URL ? e.toString() : e.url, s = this.reanchorWellKnownUrl(o);
|
|
56369
|
+
if (!(s.includes("/.well-known/") || s.match(/\/(register|token|authorize)$/))) return await t(e, a);
|
|
56357
56370
|
try {
|
|
56358
|
-
let r = new URL(
|
|
56359
|
-
if (r.origin === i.origin && (r.pathname.startsWith(i.pathname) ||
|
|
56371
|
+
let r = new URL(s), i = new URL(n);
|
|
56372
|
+
if (r.origin === i.origin && (r.pathname.startsWith(i.pathname) || s.includes("/inspector/api/oauth"))) return await t(e, a);
|
|
56360
56373
|
} catch {}
|
|
56361
56374
|
try {
|
|
56362
|
-
let e =
|
|
56363
|
-
if (console.log(`[OAuth Proxy] Routing ${e ? "metadata" : "request"} through: ${
|
|
56375
|
+
let e = s.includes("/.well-known/"), o = e ? `${n}/metadata?url=${encodeURIComponent(s)}` : `${n}/proxy`;
|
|
56376
|
+
if (console.log(`[OAuth Proxy] Routing ${e ? "metadata" : "request"} through: ${o}`), e) {
|
|
56364
56377
|
let e = { ...a?.headers ? Object.fromEntries(new Headers(a.headers)) : {} };
|
|
56365
56378
|
r && (e["X-Connection-URL"] = r);
|
|
56366
|
-
let n = new URL(
|
|
56379
|
+
let n = new URL(o);
|
|
56367
56380
|
i && n.searchParams.set("mcp_url", i);
|
|
56368
|
-
let
|
|
56381
|
+
let s = await t(n.toString(), {
|
|
56369
56382
|
...a,
|
|
56370
56383
|
method: "GET",
|
|
56371
56384
|
headers: e
|
|
56372
56385
|
});
|
|
56373
56386
|
try {
|
|
56374
|
-
if ((
|
|
56375
|
-
let e = await
|
|
56387
|
+
if ((s.headers.get("content-type") || "").includes("application/json")) {
|
|
56388
|
+
let e = await s.clone().json(), t = e && typeof e == "object" && typeof e._original_resource == "string" ? e._original_resource : null;
|
|
56376
56389
|
t && (this._lastOriginalResource = t);
|
|
56377
56390
|
}
|
|
56378
56391
|
} catch {}
|
|
56379
|
-
return
|
|
56392
|
+
return s;
|
|
56380
56393
|
}
|
|
56381
|
-
let c = a?.body ? await pde(a.body) : void 0, l = await (await t(
|
|
56394
|
+
let c = a?.body ? await pde(a.body) : void 0, l = await (await t(o, {
|
|
56382
56395
|
method: "POST",
|
|
56383
56396
|
headers: { "Content-Type": "application/json" },
|
|
56384
56397
|
body: JSON.stringify({
|
|
56385
|
-
url:
|
|
56398
|
+
url: s,
|
|
56386
56399
|
method: a?.method || "POST",
|
|
56387
56400
|
headers: a?.headers ? Object.fromEntries(new Headers(a.headers)) : {},
|
|
56388
56401
|
body: c
|
|
@@ -56394,7 +56407,7 @@ var mde = class {
|
|
|
56394
56407
|
headers: new Headers(l.headers)
|
|
56395
56408
|
});
|
|
56396
56409
|
} catch (n) {
|
|
56397
|
-
return console.error("[OAuth Proxy] Request failed, falling back to direct fetch:", n), await t(e, a);
|
|
56410
|
+
return console.error("[OAuth Proxy] Request failed, falling back to direct fetch:", n), s === o ? await t(e, a) : await t(s, a);
|
|
56398
56411
|
}
|
|
56399
56412
|
};
|
|
56400
56413
|
}
|
|
@@ -146422,7 +146435,7 @@ var o4e = class e {
|
|
|
146422
146435
|
}
|
|
146423
146436
|
};
|
|
146424
146437
|
//#endregion
|
|
146425
|
-
//#region ../mcp-use/dist/chunk-
|
|
146438
|
+
//#region ../mcp-use/dist/chunk-N3DGPXFX.js
|
|
146426
146439
|
Xp();
|
|
146427
146440
|
var s4e = class {
|
|
146428
146441
|
static {
|
|
@@ -146491,41 +146504,54 @@ var l4e = class {
|
|
|
146491
146504
|
getKey(e) {
|
|
146492
146505
|
return this.session.getKey(e);
|
|
146493
146506
|
}
|
|
146507
|
+
reanchorWellKnownUrl(e) {
|
|
146508
|
+
if (!this.connectionUrl) return e;
|
|
146509
|
+
try {
|
|
146510
|
+
let t = new URL(e), n = new URL(this.connectionUrl);
|
|
146511
|
+
if (t.origin !== n.origin || !t.pathname.startsWith("/.well-known/")) return e;
|
|
146512
|
+
let r = new URL(this.serverUrl), [i, ...a] = t.pathname.slice(13).split("/");
|
|
146513
|
+
if (!i) return e;
|
|
146514
|
+
let o = a.length ? `/${a.join("/")}` : "", s = n.pathname.replace(/\/+$/, ""), c = r.pathname.replace(/\/+$/, ""), l = o && o === s ? c : o;
|
|
146515
|
+
return `${r.origin}/.well-known/${i}${l}${t.search}`;
|
|
146516
|
+
} catch {
|
|
146517
|
+
return e;
|
|
146518
|
+
}
|
|
146519
|
+
}
|
|
146494
146520
|
getProxyFetch(e) {
|
|
146495
146521
|
if (!this.proxyOAuthRequests || !this.oauthProxyUrl) return e;
|
|
146496
146522
|
let t = e ?? globalThis.fetch.bind(globalThis), n = this.oauthProxyUrl, r = this.connectionUrl, i = this.serverUrl;
|
|
146497
146523
|
return async (e, a) => {
|
|
146498
|
-
let o = typeof e == "string" ? e : e instanceof URL ? e.toString() : e.url;
|
|
146499
|
-
if (!(
|
|
146524
|
+
let o = typeof e == "string" ? e : e instanceof URL ? e.toString() : e.url, s = this.reanchorWellKnownUrl(o);
|
|
146525
|
+
if (!(s.includes("/.well-known/") || s.match(/\/(register|token|authorize)$/))) return await t(e, a);
|
|
146500
146526
|
try {
|
|
146501
|
-
let r = new URL(
|
|
146502
|
-
if (r.origin === i.origin && (r.pathname.startsWith(i.pathname) ||
|
|
146527
|
+
let r = new URL(s), i = new URL(n);
|
|
146528
|
+
if (r.origin === i.origin && (r.pathname.startsWith(i.pathname) || s.includes("/inspector/api/oauth"))) return await t(e, a);
|
|
146503
146529
|
} catch {}
|
|
146504
146530
|
try {
|
|
146505
|
-
let e =
|
|
146506
|
-
if (console.log(`[OAuth Proxy] Routing ${e ? "metadata" : "request"} through: ${
|
|
146531
|
+
let e = s.includes("/.well-known/"), o = e ? `${n}/metadata?url=${encodeURIComponent(s)}` : `${n}/proxy`;
|
|
146532
|
+
if (console.log(`[OAuth Proxy] Routing ${e ? "metadata" : "request"} through: ${o}`), e) {
|
|
146507
146533
|
let e = { ...a?.headers ? Object.fromEntries(new Headers(a.headers)) : {} };
|
|
146508
146534
|
r && (e["X-Connection-URL"] = r);
|
|
146509
|
-
let n = new URL(
|
|
146535
|
+
let n = new URL(o);
|
|
146510
146536
|
i && n.searchParams.set("mcp_url", i);
|
|
146511
|
-
let
|
|
146537
|
+
let s = await t(n.toString(), {
|
|
146512
146538
|
...a,
|
|
146513
146539
|
method: "GET",
|
|
146514
146540
|
headers: e
|
|
146515
146541
|
});
|
|
146516
146542
|
try {
|
|
146517
|
-
if ((
|
|
146518
|
-
let e = await
|
|
146543
|
+
if ((s.headers.get("content-type") || "").includes("application/json")) {
|
|
146544
|
+
let e = await s.clone().json(), t = e && typeof e == "object" && typeof e._original_resource == "string" ? e._original_resource : null;
|
|
146519
146545
|
t && (this._lastOriginalResource = t);
|
|
146520
146546
|
}
|
|
146521
146547
|
} catch {}
|
|
146522
|
-
return
|
|
146548
|
+
return s;
|
|
146523
146549
|
}
|
|
146524
|
-
let c = a?.body ? await c4e(a.body) : void 0, l = await (await t(
|
|
146550
|
+
let c = a?.body ? await c4e(a.body) : void 0, l = await (await t(o, {
|
|
146525
146551
|
method: "POST",
|
|
146526
146552
|
headers: { "Content-Type": "application/json" },
|
|
146527
146553
|
body: JSON.stringify({
|
|
146528
|
-
url:
|
|
146554
|
+
url: s,
|
|
146529
146555
|
method: a?.method || "POST",
|
|
146530
146556
|
headers: a?.headers ? Object.fromEntries(new Headers(a.headers)) : {},
|
|
146531
146557
|
body: c
|
|
@@ -146537,7 +146563,7 @@ var l4e = class {
|
|
|
146537
146563
|
headers: new Headers(l.headers)
|
|
146538
146564
|
});
|
|
146539
146565
|
} catch (n) {
|
|
146540
|
-
return console.error("[OAuth Proxy] Request failed, falling back to direct fetch:", n), await t(e, a);
|
|
146566
|
+
return console.error("[OAuth Proxy] Request failed, falling back to direct fetch:", n), s === o ? await t(e, a) : await t(s, a);
|
|
146541
146567
|
}
|
|
146542
146568
|
};
|
|
146543
146569
|
}
|
package/dist/cli.js
CHANGED
|
@@ -3333,7 +3333,7 @@ function getClientDistPath() {
|
|
|
3333
3333
|
var package_default = {
|
|
3334
3334
|
name: "@mcp-use/inspector",
|
|
3335
3335
|
type: "module",
|
|
3336
|
-
version: "12.0.0",
|
|
3336
|
+
version: "12.0.1-canary.0",
|
|
3337
3337
|
description: "MCP Inspector - A tool for inspecting and debugging MCP servers",
|
|
3338
3338
|
author: "",
|
|
3339
3339
|
license: "MIT",
|
|
@@ -3412,7 +3412,7 @@ var package_default = {
|
|
|
3412
3412
|
},
|
|
3413
3413
|
peerDependencies: {
|
|
3414
3414
|
express: "^4.21.2 || ^5.0.0",
|
|
3415
|
-
"mcp-use": ">=1.34.
|
|
3415
|
+
"mcp-use": ">=1.34.1-canary.0",
|
|
3416
3416
|
react: "^18.0.0 || ^19.0.0",
|
|
3417
3417
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
3418
3418
|
"react-router": "^7.12.0"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerInspectorRoutes
|
|
3
|
+
} from "./chunk-A4VH7AIP.js";
|
|
4
|
+
import {
|
|
5
|
+
registerStaticRoutes
|
|
6
|
+
} from "./chunk-FK3HQLBD.js";
|
|
7
|
+
import {
|
|
8
|
+
checkClientFiles,
|
|
9
|
+
getClientDistPath
|
|
10
|
+
} from "./chunk-IDMHJUEM.js";
|
|
11
|
+
|
|
12
|
+
// src/server/middleware.ts
|
|
13
|
+
import { Hono } from "hono";
|
|
14
|
+
function mountInspector(app, config) {
|
|
15
|
+
const clientDistPath = getClientDistPath();
|
|
16
|
+
if (!checkClientFiles(clientDistPath)) {
|
|
17
|
+
console.warn(
|
|
18
|
+
`\u26A0\uFE0F MCP Inspector client files not found at ${clientDistPath}`
|
|
19
|
+
);
|
|
20
|
+
console.warn(
|
|
21
|
+
` Run 'yarn build' in the inspector package to build the UI`
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
const runtimeConfig = {
|
|
25
|
+
devMode: config?.devMode,
|
|
26
|
+
sandboxOrigin: config?.sandboxOrigin,
|
|
27
|
+
inspectorMode: "embedded"
|
|
28
|
+
};
|
|
29
|
+
if (isHonoApp(app)) {
|
|
30
|
+
registerInspectorRoutes(app, config);
|
|
31
|
+
registerStaticRoutes(app, clientDistPath, runtimeConfig);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const honoApp = new Hono();
|
|
35
|
+
registerInspectorRoutes(honoApp, config);
|
|
36
|
+
registerStaticRoutes(honoApp, clientDistPath, runtimeConfig);
|
|
37
|
+
app.use((req, res, next) => {
|
|
38
|
+
const url = new URL(req.url || "", `http://${req.headers.host}`);
|
|
39
|
+
const request = new Request(url, {
|
|
40
|
+
method: req.method,
|
|
41
|
+
headers: req.headers,
|
|
42
|
+
body: req.method !== "GET" && req.method !== "HEAD" ? JSON.stringify(req.body) : void 0
|
|
43
|
+
});
|
|
44
|
+
Promise.resolve(honoApp.fetch(request)).then(async (fetchResponse) => {
|
|
45
|
+
res.status(fetchResponse.status);
|
|
46
|
+
fetchResponse.headers.forEach((value, key) => {
|
|
47
|
+
res.setHeader(key, value);
|
|
48
|
+
});
|
|
49
|
+
if (fetchResponse.body) {
|
|
50
|
+
const reader = fetchResponse.body.getReader();
|
|
51
|
+
while (true) {
|
|
52
|
+
const { done, value } = await reader.read();
|
|
53
|
+
if (done) {
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
res.write(value);
|
|
57
|
+
}
|
|
58
|
+
res.end();
|
|
59
|
+
} else {
|
|
60
|
+
res.end();
|
|
61
|
+
}
|
|
62
|
+
}).catch(next);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function isHonoApp(app) {
|
|
66
|
+
return typeof app.fetch === "function";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export {
|
|
70
|
+
mountInspector
|
|
71
|
+
};
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getInspectorVersion
|
|
3
|
+
} from "./chunk-UHGKWUJ7.js";
|
|
4
|
+
import {
|
|
5
|
+
checkClientFiles,
|
|
6
|
+
getClientDistPath,
|
|
7
|
+
getContentType
|
|
8
|
+
} from "./chunk-IDMHJUEM.js";
|
|
9
|
+
|
|
10
|
+
// src/server/shared-static.ts
|
|
11
|
+
import { existsSync, readFileSync } from "fs";
|
|
12
|
+
import { join } from "path";
|
|
13
|
+
var USE_CDN = process.env.INSPECTOR_USE_CDN === "true";
|
|
14
|
+
var INSPECTOR_VERSION = getInspectorVersion();
|
|
15
|
+
var CDN_BASE = process.env.INSPECTOR_CDN_BASE ?? "https://inspector-cdn.mcp-use.com";
|
|
16
|
+
var CDN_JS_URL = `${CDN_BASE}/inspector@${INSPECTOR_VERSION}.js`;
|
|
17
|
+
var CDN_CSS_URL = `${CDN_BASE}/inspector@${INSPECTOR_VERSION}.css`;
|
|
18
|
+
function injectRuntimeConfig(html, config) {
|
|
19
|
+
if (!config) return html;
|
|
20
|
+
const scripts = [];
|
|
21
|
+
if (config.devMode) {
|
|
22
|
+
scripts.push(`<script>window.__MCP_DEV_MODE__ = true;</script>`);
|
|
23
|
+
}
|
|
24
|
+
if (config.sandboxOrigin) {
|
|
25
|
+
scripts.push(
|
|
26
|
+
`<script>window.__MCP_SANDBOX_ORIGIN__ = ${JSON.stringify(config.sandboxOrigin)};</script>`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
if (config.proxyUrl !== void 0) {
|
|
30
|
+
scripts.push(
|
|
31
|
+
`<script>window.__MCP_PROXY_URL__ = ${JSON.stringify(config.proxyUrl)};</script>`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
if (config.inspectorMode) {
|
|
35
|
+
scripts.push(
|
|
36
|
+
`<script>window.__MCP_INSPECTOR_MODE__ = ${JSON.stringify(config.inspectorMode)};</script>`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
if (config.manufactChatUrl) {
|
|
40
|
+
scripts.push(
|
|
41
|
+
`<script>window.__MANUFACT_CHAT_URL__ = ${JSON.stringify(config.manufactChatUrl)};</script>`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
if (config.disableTelemetry) {
|
|
45
|
+
scripts.push(
|
|
46
|
+
`<script>window.__MCP_USE_ANONYMIZED_TELEMETRY__ = false;</script>`
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
if (scripts.length === 0) return html;
|
|
50
|
+
const injection = scripts.join("\n ");
|
|
51
|
+
return html.replace("</head>", ` ${injection}
|
|
52
|
+
</head>`);
|
|
53
|
+
}
|
|
54
|
+
function generateCdnShellHtml(config) {
|
|
55
|
+
const runtimeScripts = (() => {
|
|
56
|
+
if (!config) return "";
|
|
57
|
+
const scripts = [];
|
|
58
|
+
if (config.devMode) {
|
|
59
|
+
scripts.push(`<script>window.__MCP_DEV_MODE__ = true;</script>`);
|
|
60
|
+
}
|
|
61
|
+
if (config.sandboxOrigin) {
|
|
62
|
+
scripts.push(
|
|
63
|
+
`<script>window.__MCP_SANDBOX_ORIGIN__ = ${JSON.stringify(config.sandboxOrigin)};</script>`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
if (config.proxyUrl !== void 0) {
|
|
67
|
+
scripts.push(
|
|
68
|
+
`<script>window.__MCP_PROXY_URL__ = ${JSON.stringify(config.proxyUrl)};</script>`
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
if (config.inspectorMode) {
|
|
72
|
+
scripts.push(
|
|
73
|
+
`<script>window.__MCP_INSPECTOR_MODE__ = ${JSON.stringify(config.inspectorMode)};</script>`
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
if (config.manufactChatUrl) {
|
|
77
|
+
scripts.push(
|
|
78
|
+
`<script>window.__MANUFACT_CHAT_URL__ = ${JSON.stringify(config.manufactChatUrl)};</script>`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
if (config.disableTelemetry) {
|
|
82
|
+
scripts.push(
|
|
83
|
+
`<script>window.__MCP_USE_ANONYMIZED_TELEMETRY__ = false;try{localStorage.setItem("MCP_USE_ANONYMIZED_TELEMETRY","false");}catch(e){}</script>`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
return scripts.join("\n ");
|
|
87
|
+
})();
|
|
88
|
+
return `<!doctype html>
|
|
89
|
+
<html lang="en">
|
|
90
|
+
<head>
|
|
91
|
+
<meta charset="UTF-8" />
|
|
92
|
+
<link
|
|
93
|
+
rel="icon"
|
|
94
|
+
type="image/svg+xml"
|
|
95
|
+
href="${CDN_BASE}/favicon-black.svg"
|
|
96
|
+
/>
|
|
97
|
+
<link
|
|
98
|
+
rel="icon"
|
|
99
|
+
type="image/svg+xml"
|
|
100
|
+
href="${CDN_BASE}/favicon-white.svg"
|
|
101
|
+
media="(prefers-color-scheme: dark)"
|
|
102
|
+
/>
|
|
103
|
+
<link
|
|
104
|
+
rel="icon"
|
|
105
|
+
type="image/svg+xml"
|
|
106
|
+
href="${CDN_BASE}/favicon-black.svg"
|
|
107
|
+
media="(prefers-color-scheme: light)"
|
|
108
|
+
/>
|
|
109
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
110
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
111
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
112
|
+
<link
|
|
113
|
+
href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;500;700&display=swap"
|
|
114
|
+
rel="stylesheet"
|
|
115
|
+
/>
|
|
116
|
+
<link rel="stylesheet" href="${CDN_CSS_URL}" />
|
|
117
|
+
<title>Inspector | mcp-use</title>
|
|
118
|
+
<meta
|
|
119
|
+
name="description"
|
|
120
|
+
content="Free, open-source MCP Inspector by mcp-use. Connect to any MCP server, test tools, prompts, and resources, inspect RPC logs, and debug MCP apps \u2014 all in your browser."
|
|
121
|
+
/>
|
|
122
|
+
<meta property="og:type" content="website" />
|
|
123
|
+
<meta property="og:site_name" content="mcp-use" />
|
|
124
|
+
<meta property="og:url" content="https://inspector.mcp-use.com" />
|
|
125
|
+
<meta property="og:title" content="MCP Inspector \u2014 Test & Debug MCP Servers | mcp-use" />
|
|
126
|
+
<meta
|
|
127
|
+
property="og:description"
|
|
128
|
+
content="Free, open-source MCP Inspector by mcp-use. Connect to any MCP server, test tools, prompts, and resources, inspect RPC logs, and debug MCP apps \u2014 all in your browser."
|
|
129
|
+
/>
|
|
130
|
+
<meta
|
|
131
|
+
property="og:image"
|
|
132
|
+
content="https://inspector-cdn.mcp-use.com/inspector-cover.png"
|
|
133
|
+
/>
|
|
134
|
+
<meta property="og:image:alt" content="mcp-use MCP Inspector \u2014 test and debug MCP servers" />
|
|
135
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
136
|
+
<meta name="twitter:site" content="@mcpuse" />
|
|
137
|
+
<meta name="twitter:creator" content="@mcpuse" />
|
|
138
|
+
<meta name="twitter:title" content="MCP Inspector \u2014 Test & Debug MCP Servers | mcp-use" />
|
|
139
|
+
<meta
|
|
140
|
+
name="twitter:description"
|
|
141
|
+
content="Free, open-source MCP Inspector by mcp-use. Connect to any MCP server, test tools, prompts, and resources, inspect RPC logs, and debug MCP apps \u2014 all in your browser."
|
|
142
|
+
/>
|
|
143
|
+
<meta
|
|
144
|
+
name="twitter:image"
|
|
145
|
+
content="https://inspector-cdn.mcp-use.com/inspector-cover.png"
|
|
146
|
+
/>
|
|
147
|
+
<meta name="twitter:image:alt" content="mcp-use MCP Inspector \u2014 test and debug MCP servers" />
|
|
148
|
+
<script>window.__INSPECTOR_VERSION__ = ${JSON.stringify(INSPECTOR_VERSION)};</script>
|
|
149
|
+
${runtimeScripts}
|
|
150
|
+
</head>
|
|
151
|
+
<body>
|
|
152
|
+
<script>
|
|
153
|
+
if (typeof window !== "undefined" && typeof window.process === "undefined") {
|
|
154
|
+
window.process = {
|
|
155
|
+
env: {},
|
|
156
|
+
platform: "browser",
|
|
157
|
+
browser: true,
|
|
158
|
+
version: "v18.0.0",
|
|
159
|
+
versions: { node: "18.0.0" },
|
|
160
|
+
cwd: () => "/",
|
|
161
|
+
nextTick: (fn, ...args) => queueMicrotask(() => fn(...args)),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
</script>
|
|
165
|
+
<div id="root"></div>
|
|
166
|
+
<script type="module" src="${CDN_JS_URL}"></script>
|
|
167
|
+
</body>
|
|
168
|
+
</html>`;
|
|
169
|
+
}
|
|
170
|
+
function registerStaticRoutes(app, clientDistPath, runtimeConfig) {
|
|
171
|
+
const effectiveConfig = {
|
|
172
|
+
...runtimeConfig,
|
|
173
|
+
proxyUrl: runtimeConfig?.proxyUrl !== void 0 ? runtimeConfig.proxyUrl : "/inspector/api/proxy",
|
|
174
|
+
disableTelemetry: runtimeConfig?.disableTelemetry ?? process.env.MCP_USE_ANONYMIZED_TELEMETRY === "false"
|
|
175
|
+
};
|
|
176
|
+
if (USE_CDN) {
|
|
177
|
+
const serveShell = (c) => c.html(generateCdnShellHtml(effectiveConfig));
|
|
178
|
+
app.get("/", (c) => {
|
|
179
|
+
const url = new URL(c.req.url);
|
|
180
|
+
return c.redirect(`/inspector${url.search}`);
|
|
181
|
+
});
|
|
182
|
+
app.get("/inspector", serveShell);
|
|
183
|
+
app.get("/inspector/*", serveShell);
|
|
184
|
+
app.post("/inspector/*", serveShell);
|
|
185
|
+
app.get("*", serveShell);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const distPath = clientDistPath || getClientDistPath();
|
|
189
|
+
if (!checkClientFiles(distPath)) {
|
|
190
|
+
console.warn(`\u26A0\uFE0F MCP Inspector client files not found at ${distPath}`);
|
|
191
|
+
console.warn(
|
|
192
|
+
` Run 'yarn build' in the inspector package to build the UI`
|
|
193
|
+
);
|
|
194
|
+
app.get("*", (c) => {
|
|
195
|
+
return c.html(`
|
|
196
|
+
<!DOCTYPE html>
|
|
197
|
+
<html>
|
|
198
|
+
<head>
|
|
199
|
+
<title>MCP Inspector</title>
|
|
200
|
+
</head>
|
|
201
|
+
<body>
|
|
202
|
+
<h1>MCP Inspector</h1>
|
|
203
|
+
<p>Client files not found. Please run 'yarn build' to build the UI.</p>
|
|
204
|
+
</body>
|
|
205
|
+
</html>
|
|
206
|
+
`);
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
app.get("/inspector/assets/*", (c) => {
|
|
211
|
+
const path = c.req.path.replace("/inspector/assets/", "assets/");
|
|
212
|
+
const fullPath = join(distPath, path);
|
|
213
|
+
if (existsSync(fullPath)) {
|
|
214
|
+
const content = readFileSync(fullPath);
|
|
215
|
+
const contentType = getContentType(fullPath);
|
|
216
|
+
c.header("Content-Type", contentType);
|
|
217
|
+
return c.body(content);
|
|
218
|
+
}
|
|
219
|
+
return c.notFound();
|
|
220
|
+
});
|
|
221
|
+
app.get("/", (c) => {
|
|
222
|
+
const url = new URL(c.req.url);
|
|
223
|
+
const queryString = url.search;
|
|
224
|
+
return c.redirect(`/inspector${queryString}`);
|
|
225
|
+
});
|
|
226
|
+
const serveIndex = (c) => {
|
|
227
|
+
const indexPath = join(distPath, "index.html");
|
|
228
|
+
if (existsSync(indexPath)) {
|
|
229
|
+
const content = injectRuntimeConfig(
|
|
230
|
+
readFileSync(indexPath, "utf-8"),
|
|
231
|
+
effectiveConfig
|
|
232
|
+
);
|
|
233
|
+
return c.html(content);
|
|
234
|
+
}
|
|
235
|
+
return c.html(`
|
|
236
|
+
<!DOCTYPE html>
|
|
237
|
+
<html>
|
|
238
|
+
<head>
|
|
239
|
+
<title>MCP Inspector</title>
|
|
240
|
+
</head>
|
|
241
|
+
<body>
|
|
242
|
+
<h1>MCP Inspector</h1>
|
|
243
|
+
<p>Client files not found. Please run 'yarn build' to build the UI.</p>
|
|
244
|
+
</body>
|
|
245
|
+
</html>
|
|
246
|
+
`);
|
|
247
|
+
};
|
|
248
|
+
app.get("/inspector", serveIndex);
|
|
249
|
+
app.get("/inspector/*", serveIndex);
|
|
250
|
+
app.post("/inspector/*", serveIndex);
|
|
251
|
+
app.get("*", (c) => {
|
|
252
|
+
const indexPath = join(distPath, "index.html");
|
|
253
|
+
if (existsSync(indexPath)) {
|
|
254
|
+
const content = injectRuntimeConfig(
|
|
255
|
+
readFileSync(indexPath, "utf-8"),
|
|
256
|
+
effectiveConfig
|
|
257
|
+
);
|
|
258
|
+
return c.html(content);
|
|
259
|
+
}
|
|
260
|
+
return c.html(`
|
|
261
|
+
<!DOCTYPE html>
|
|
262
|
+
<html>
|
|
263
|
+
<head>
|
|
264
|
+
<title>MCP Inspector</title>
|
|
265
|
+
</head>
|
|
266
|
+
<body>
|
|
267
|
+
<h1>MCP Inspector</h1>
|
|
268
|
+
<p>Client files not found. Please run 'yarn build' to build the UI.</p>
|
|
269
|
+
</body>
|
|
270
|
+
</html>
|
|
271
|
+
`);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
function registerStaticRoutesWithDevProxy(app, clientDistPath, runtimeConfig) {
|
|
275
|
+
const distPath = clientDistPath || getClientDistPath();
|
|
276
|
+
const isDev = process.env.NODE_ENV === "development" || process.env.VITE_DEV === "true";
|
|
277
|
+
if (isDev) {
|
|
278
|
+
console.warn(
|
|
279
|
+
"\u{1F527} Development mode: Proxying client requests to Vite dev server"
|
|
280
|
+
);
|
|
281
|
+
app.get("*", async (c) => {
|
|
282
|
+
const path = c.req.path;
|
|
283
|
+
if (path.startsWith("/api/") || path.startsWith("/inspector/api/") || path === "/inspector/config.json") {
|
|
284
|
+
return c.notFound();
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
const viteUrl = `http://localhost:3000${path}`;
|
|
288
|
+
const response = await fetch(viteUrl, {
|
|
289
|
+
signal: AbortSignal.timeout(1e3)
|
|
290
|
+
});
|
|
291
|
+
if (response.ok) {
|
|
292
|
+
const content = await response.text();
|
|
293
|
+
const contentType = response.headers.get("content-type") || "text/html";
|
|
294
|
+
c.header("Content-Type", contentType);
|
|
295
|
+
return c.html(content);
|
|
296
|
+
}
|
|
297
|
+
} catch (error) {
|
|
298
|
+
console.warn(`Failed to proxy to Vite dev server: ${error}`);
|
|
299
|
+
}
|
|
300
|
+
return c.html(`
|
|
301
|
+
<!DOCTYPE html>
|
|
302
|
+
<html>
|
|
303
|
+
<head>
|
|
304
|
+
<title>MCP Inspector - Development</title>
|
|
305
|
+
</head>
|
|
306
|
+
<body>
|
|
307
|
+
<h1>MCP Inspector - Development Mode</h1>
|
|
308
|
+
<p>Vite dev server is not running. Please start it with:</p>
|
|
309
|
+
<pre>yarn dev:client</pre>
|
|
310
|
+
</body>
|
|
311
|
+
</html>
|
|
312
|
+
`);
|
|
313
|
+
});
|
|
314
|
+
} else {
|
|
315
|
+
registerStaticRoutes(app, distPath, runtimeConfig);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export {
|
|
320
|
+
registerStaticRoutes,
|
|
321
|
+
registerStaticRoutesWithDevProxy
|
|
322
|
+
};
|