@mcp-use/cli 4.0.0-beta.10 → 4.0.0-beta.11

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/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{a as n}from"./chunk-7JXZ37OF.js";import"./chunk-USIKTT3N.js";n(process.argv.slice(2),{frameworkVersion:"4.0.0-beta.10"}).then(e=>{process.exitCode=e},e=>{console.error(e instanceof Error?e.message:String(e)),process.exitCode=1});
2
+ import{a as n}from"./chunk-FTF3BR6T.js";import"./chunk-USIKTT3N.js";n(process.argv.slice(2),{frameworkVersion:"4.0.0-beta.11"}).then(e=>{process.exitCode=e},e=>{console.error(e instanceof Error?e.message:String(e)),process.exitCode=1});
@@ -1,2 +1,2 @@
1
- import{existsSync as s}from"fs";import{isAbsolute as p,join as f,resolve as d}from"path";var i=["src/index.ts","src/index.tsx","src/server.ts","src/server.tsx","index.ts","index.tsx","server.ts","server.tsx"];function j(t,e){if(e!==void 0){let n=p(e)?e:d(t,e);if(!s(n))throw new Error(`Entry not found: ${n} (from --entry "${e}")`);return n}for(let n of i){let r=f(t,n);if(s(r))return r}throw new Error(`No server entry found in ${t}. Looked for: ${i.join(", ")}. Create one of these (default-exporting your MCPServer instance) or pass --entry <path>.`)}import{readFile as l,writeFile as a}from"fs/promises";import{extname as E,join as m,relative as g,sep as x}from"path";var h="mcp-env.d.ts",u="// Generated by mcp-use. Do not edit.",y=["// mcp-use generated env declaration","// mcp-use auto-generated typing"];function A(t,e){let n=g(t,e).split(x).join("/"),r=E(n),o=r===".mts"?".mjs":r===".cts"?".cjs":r===".ts"||r===".tsx"?".js":r;return r!==o&&(n=`${n.slice(0,-r.length)}${o}`),n.startsWith(".")?n:`./${n}`}function D(t,e){let n=A(t,e);return[u,'declare module "*.css";',"",'declare module "mcp-use/react" {'," interface Register {",` tools: typeof import(${JSON.stringify(n)});`," }","}","","export {};",""].join(`
2
- `)}async function N(t,e){let n=m(t,h),r=D(t,e);try{let o=await l(n,"utf8");return o===r?"unchanged":v(o)?(await a(n,r,"utf8"),"updated"):"user-owned"}catch(o){if(!c(o,"ENOENT"))throw o}try{return await a(n,r,{encoding:"utf8",flag:"wx"}),"created"}catch(o){if(!c(o,"EEXIST"))throw o;return N(t,e)}}function v(t){return[u,...y].some(e=>t.startsWith(e))}function c(t,e){return t!==null&&typeof t=="object"&&"code"in t&&t.code===e}export{j as a,N as b};
1
+ import{existsSync as s}from"fs";import{isAbsolute as p,join as f,resolve as d}from"path";var i=["src/index.ts","src/index.tsx","src/server.ts","src/server.tsx","index.ts","index.tsx","server.ts","server.tsx"];function j(t,e){if(e!==void 0){let n=p(e)?e:d(t,e);if(!s(n))throw new Error(`Entry not found: ${n} (from --entry "${e}")`);return n}for(let n of i){let r=f(t,n);if(s(r))return r}throw new Error(`No server entry found in ${t}. Looked for: ${i.join(", ")}. Create one of these (default-exporting your MCPServer instance) or pass --entry <path>.`)}import{readFile as l,writeFile as c}from"fs/promises";import{extname as m,join as E,relative as g,sep as x}from"path";var h="mcp-env.d.ts",u="// Generated by mcp-use. Do not edit.",y=["// mcp-use generated env declaration","// mcp-use auto-generated typing"];function A(t,e){let n=g(t,e).split(x).join("/"),r=m(n),o=r===".mts"?".mjs":r===".cts"?".cjs":r===".ts"||r===".tsx"?".js":r;return r!==o&&(n=`${n.slice(0,-r.length)}${o}`),n.startsWith(".")?n:`./${n}`}function D(t,e){let n=A(t,e);return[u,'import "mcp-use/vite-client";',"",'declare module "mcp-use/react" {'," interface Register {",` tools: typeof import(${JSON.stringify(n)});`," }","}","","export {};",""].join(`
2
+ `)}async function v(t,e){let n=E(t,h),r=D(t,e);try{let o=await l(n,"utf8");return o===r?"unchanged":N(o)?(await c(n,r,"utf8"),"updated"):"user-owned"}catch(o){if(!a(o,"ENOENT"))throw o}try{return await c(n,r,{encoding:"utf8",flag:"wx"}),"created"}catch(o){if(!a(o,"EEXIST"))throw o;return v(t,e)}}function N(t){return[u,...y].some(e=>t.startsWith(e))}function a(t,e){return t!==null&&typeof t=="object"&&"code"in t&&t.code===e}export{j as a,v as b};
@@ -1,5 +1,5 @@
1
- import{a as B,b as V,c as P,d as C,e as L,h as N,i as O}from"../chunk-ALPMVGHI.js";import{a as $,b as x,c as U,d as R}from"../chunk-7G4TXPP4.js";import{a as S,b as D}from"../chunk-DB3E6LBX.js";import{randomBytes as W}from"crypto";import{existsSync as X}from"fs";import{cp as ee,mkdir as v,rm as te,writeFile as A}from"fs/promises";import{join as f,relative as w,resolve as re}from"path";import ne from"@tailwindcss/vite";import ie from"@vitejs/plugin-react";import{build as _}from"vite";import{createServerModuleRunner as j}from"vite";var Z="/mcp",K="http://localhost:3000";async function T(e,t){let i=j(e,{hmr:!1,sourcemapInterceptor:"node"}),n=process.env.MCP_URL;try{n===void 0&&(process.env.MCP_URL=K);let r=(await i.import(t)).default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance.");return r.basePath??Z}finally{n===void 0?delete process.env.MCP_URL:process.env.MCP_URL=n,await i.close()}}async function F(e,t,i){let n=j(e,{hmr:!1,sourcemapInterceptor:"node"});try{let r=(await n.import(t)).default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance.");if(typeof r.__primeViews!="function")throw new Error("The entry's default export does not support __primeViews.");r.__primeViews(i),r.__mount()}finally{await n.close()}}function Q(e){return e.replace(/\/+$/,"")}function I(e){return Q(e)}import{hostHeaderValidationResponse as we,originValidationResponse as he}from"@modelcontextprotocol/server";function k(e,t){let i=t.replace(/^\/+/,"");return e==="/"?`/${i}`:`${e}/${i}`}function q(e,t){return`${k(e,`_mcp-use/views/${t}`)}/`}var p="index.js",se="entry-wrapper.ts",oe=100*1024*1024;async function H(e,t){let i=f(e,"public");X(i)&&await ee(i,t,{recursive:!0})}async function ae(e,t,i){let n=f(e,se);await v(e,{recursive:!0});let s=JSON.stringify(i);return await A(n,[`import server from ${JSON.stringify(t)};`,'import { registerViews } from "mcp-use";',`server[registerViews](${s});`,"export default server;",""].join(`
2
- `)),n}function ce(){let e=process.env.MCP_ASSETS_URL;if(!(e===void 0||e.trim()===""))try{return I(new URL(e).href.replace(/\/$/,""))}catch{return}}function E(e,t,i,n){let s=e.replace(/^\/+/,"");return`${i}${q(n,t)}${s}`}function ue(e,t,i,n){return e.kind!=="external"?e:{...e,entry:E(e.entry,t,i,n),css:e.css.map(s=>E(s,t,i,n)),...e.scripts!==void 0&&{scripts:e.scripts.map(s=>E(s,t,i,n))}}}async function le(e,t){let i=f(t.viewsOutDir,e.name),n=await _({root:t.cwd,configFile:t.userViteConfig,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:t.cacheDir,define:{__MCP_USE_VIEW_USAGE_DISABLED__:JSON.stringify(process.env.MCP_USE_ANONYMIZED_TELEMETRY==="false")},resolve:{tsconfigPaths:!0,alias:{tailwindcss:V()}},plugins:[ne(),ie(),O({getViews:()=>[e]})],build:{outDir:i,emptyOutDir:!0,write:!t.inline,target:"es2022",sourcemap:t.inline?!1:t.sourceMaps,minify:!0,cssCodeSplit:!1,chunkSizeWarningLimit:1e3,assetsInlineLimit:oe,rollupOptions:{input:{[e.name]:L(e.name)},output:{format:"es",codeSplitting:!t.inline,entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}}},base:"./"}),s=Array.isArray(n)?n[0]:n;if(s===void 0||!("output"in s))throw new Error(`Client build for view "${e.name}" produced no output.`);let r=s.output,b=Array.isArray(r)?r:Object.values(r),c,m,u,l=[];for(let a of b){if(typeof a!="object"||a===null||!("fileName"in a)||typeof a.fileName!="string")continue;let o=a;o.type==="chunk"&&o.isEntry===!0?(c=o.fileName,u=o.code):o.type==="asset"&&o.fileName.endsWith(".css")&&(m=o.fileName,typeof o.source=="string"?l.push(o.source):o.source instanceof Uint8Array&&l.push(new TextDecoder().decode(o.source)))}if(c===void 0)throw new Error(`Client build produced no entry chunk for view "${e.name}".`);if(t.inline){if(u===void 0)throw new Error(`Client build produced no entry source for view "${e.name}".`);return{kind:"inline",js:u,css:l.join(`
3
- `)}}return{kind:"external",entry:c.replace(/^\/+/,""),css:m!==void 0?[m.replace(/^\/+/,"")]:[]}}async function de(e){let t=performance.now();U(e.cwd,"production");let i=e.mcpDir===void 0?e.cwd:re(e.cwd,e.mcpDir),n=e.entry===void 0?S(i):S(e.cwd,e.entry),s=await D(e.cwd,n);(s==="created"||s==="updated")&&console.log(`[mcp-use] ${s} mcp-env.d.ts`);let r=P(e.cwd),b=e.viewsDir??(e.mcpDir===void 0?void 0:f(e.mcpDir,"views")),c=C(e.cwd,b),m=B(e.cwd),u=e.sourceMaps===!0,l=e.inline===!0;if(c.length===0){await _({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:r.cache,resolve:{tsconfigPaths:!0,alias:$(e.cwd)},plugins:[R(e.cwd)],build:{ssr:n,outDir:r.build,emptyOutDir:!0,target:"node22",sourcemap:u,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:p}}},ssr:{...x(e.cwd),target:"node"}}),await H(e.cwd,f(r.build,"views/public"));let d={buildId:W(8).toString("hex"),entryPoint:p,createdAt:new Date().toISOString(),views:{}};await v(r.build,{recursive:!0}),await A(r.buildManifest,`${JSON.stringify(d,null,2)}
4
- `);let g=Math.round(performance.now()-t);console.log(`[mcp-use] built ${w(e.cwd,n)} \u2192 ${w(e.cwd,r.build)}/${p} (${g}ms)`);return}await te(r.build,{recursive:!0,force:!0});let a=f(r.build,"views");await v(a,{recursive:!0});let h=await N(e.cwd,r.cache,!1),o,y={},M=ce();try{o=await T(h.environments.ssr,n);for(let d of c){let g=await le(d,{cwd:e.cwd,cacheDir:r.cache,viewsOutDir:a,userViteConfig:m,sourceMaps:u,inline:l});M!==void 0&&!l&&(g=ue(g,d.name,M,o)),y[d.name]=g}M!==void 0&&!l&&(console.log(`[mcp-use] MCP_ASSETS_URL set \u2014 manifest uses CDN URLs; upload ${w(e.cwd,a)}/ to your asset host.`),o!=="/mcp"&&console.log(`[mcp-use] CDN manifest uses basePath ${o} from server entry`)),await H(e.cwd,f(a,"public")),await F(h.environments.ssr,n,y)}finally{await h.close()}let J=await ae(r.cache,n,y);await _({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:r.cache,resolve:{tsconfigPaths:!0,alias:$(e.cwd)},plugins:[R(e.cwd)],build:{ssr:J,outDir:r.build,emptyOutDir:!1,target:"node22",sourcemap:u,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:p}}},ssr:{...x(e.cwd),target:"node"}});let z={buildId:W(8).toString("hex"),entryPoint:p,createdAt:new Date().toISOString(),views:y};await v(r.build,{recursive:!0}),await A(r.buildManifest,`${JSON.stringify(z,null,2)}
1
+ import{a as U,b as V,c as P,d as C,e as L,h as N,i as j}from"../chunk-ALPMVGHI.js";import{a as x,b as R,c as B,d as S}from"../chunk-7G4TXPP4.js";import{a as $,b as _}from"../chunk-FLGSKQGU.js";import{randomBytes as H}from"crypto";import{existsSync as Z}from"fs";import{cp as ee,mkdir as v,rm as te,writeFile as E}from"fs/promises";import{join as f,relative as w,resolve as re}from"path";import ne from"@tailwindcss/vite";import ie from"@vitejs/plugin-react";import{build as D}from"vite";import{createServerModuleRunner as O}from"vite";var K="/mcp",Q="http://localhost:3000";async function F(e,t){let i=O(e,{hmr:!1,sourcemapInterceptor:"node"}),n=process.env.MCP_URL;try{n===void 0&&(process.env.MCP_URL=Q);let r=(await i.import(t)).default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance.");return r.basePath??K}finally{n===void 0?delete process.env.MCP_URL:process.env.MCP_URL=n,await i.close()}}async function T(e,t,i){let n=O(e,{hmr:!1,sourcemapInterceptor:"node"});try{let r=(await n.import(t)).default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance.");if(typeof r.__primeViews!="function")throw new Error("The entry's default export does not support __primeViews.");r.__primeViews(i),r.__mount()}finally{await n.close()}}function X(e){return e.replace(/\/+$/,"")}function k(e){return X(e)}import{hostHeaderValidationResponse as we,originValidationResponse as he}from"@modelcontextprotocol/server";function I(e,t){let i=t.replace(/^\/+/,"");return e==="/"?`/${i}`:`${e}/${i}`}function q(e,t){return`${I(e,`_mcp-use/views/${t}`)}/`}var p="index.js",se="entry-wrapper.ts",oe=100*1024*1024;async function W(e,t){let i=f(e,"public");Z(i)&&await ee(i,t,{recursive:!0})}async function ae(e,t,i){let n=f(e,se);await v(e,{recursive:!0});let s=JSON.stringify(i);return await E(n,[`import server from ${JSON.stringify(t)};`,'import { registerViews } from "mcp-use";',`server[registerViews](${s});`,"export default server;",""].join(`
2
+ `)),n}function ce(){let e=process.env.MCP_ASSETS_URL;if(!(e===void 0||e.trim()===""))try{return k(new URL(e).href.replace(/\/$/,""))}catch{return}}function A(e,t,i,n){let s=e.replace(/^\/+/,"");return`${i}${q(n,t)}${s}`}function ue(e,t,i,n){return e.kind!=="external"?e:{...e,entry:A(e.entry,t,i,n),css:e.css.map(s=>A(s,t,i,n)),...e.scripts!==void 0&&{scripts:e.scripts.map(s=>A(s,t,i,n))}}}async function le(e,t){let i=f(t.viewsOutDir,e.name),n=await D({root:t.cwd,configFile:t.userViteConfig,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:t.cacheDir,resolve:{tsconfigPaths:!0,alias:{tailwindcss:V()}},plugins:[ne(),ie(),j({getViews:()=>[e]})],build:{outDir:i,emptyOutDir:!0,write:!t.inline,target:"es2022",sourcemap:t.inline?!1:t.sourceMaps,minify:!0,cssCodeSplit:!1,chunkSizeWarningLimit:1e3,assetsInlineLimit:oe,rollupOptions:{input:{[e.name]:L(e.name)},output:{format:"es",codeSplitting:!t.inline,entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}}},base:"./"}),s=Array.isArray(n)?n[0]:n;if(s===void 0||!("output"in s))throw new Error(`Client build for view "${e.name}" produced no output.`);let r=s.output,b=Array.isArray(r)?r:Object.values(r),c,m,u,l=[];for(let a of b){if(typeof a!="object"||a===null||!("fileName"in a)||typeof a.fileName!="string")continue;let o=a;o.type==="chunk"&&o.isEntry===!0?(c=o.fileName,u=o.code):o.type==="asset"&&o.fileName.endsWith(".css")&&(m=o.fileName,typeof o.source=="string"?l.push(o.source):o.source instanceof Uint8Array&&l.push(new TextDecoder().decode(o.source)))}if(c===void 0)throw new Error(`Client build produced no entry chunk for view "${e.name}".`);if(t.inline){if(u===void 0)throw new Error(`Client build produced no entry source for view "${e.name}".`);return{kind:"inline",js:u,css:l.join(`
3
+ `)}}return{kind:"external",entry:c.replace(/^\/+/,""),css:m!==void 0?[m.replace(/^\/+/,"")]:[]}}async function de(e){let t=performance.now();B(e.cwd,"production");let i=e.mcpDir===void 0?e.cwd:re(e.cwd,e.mcpDir),n=e.entry===void 0?$(i):$(e.cwd,e.entry),s=await _(e.cwd,n);(s==="created"||s==="updated")&&console.log(`[mcp-use] ${s} mcp-env.d.ts`);let r=P(e.cwd),b=e.viewsDir??(e.mcpDir===void 0?void 0:f(e.mcpDir,"views")),c=C(e.cwd,b),m=U(e.cwd),u=e.sourceMaps===!0,l=e.inline===!0;if(c.length===0){await D({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:r.cache,resolve:{tsconfigPaths:!0,alias:x(e.cwd)},plugins:[S(e.cwd)],build:{ssr:n,outDir:r.build,emptyOutDir:!0,target:"node22",sourcemap:u,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:p}}},ssr:{...R(e.cwd),target:"node"}}),await W(e.cwd,f(r.build,"views/public"));let d={buildId:H(8).toString("hex"),entryPoint:p,createdAt:new Date().toISOString(),views:{}};await v(r.build,{recursive:!0}),await E(r.buildManifest,`${JSON.stringify(d,null,2)}
4
+ `);let g=Math.round(performance.now()-t);console.log(`[mcp-use] built ${w(e.cwd,n)} \u2192 ${w(e.cwd,r.build)}/${p} (${g}ms)`);return}await te(r.build,{recursive:!0,force:!0});let a=f(r.build,"views");await v(a,{recursive:!0});let h=await N(e.cwd,r.cache,!1),o,y={},M=ce();try{o=await F(h.environments.ssr,n);for(let d of c){let g=await le(d,{cwd:e.cwd,cacheDir:r.cache,viewsOutDir:a,userViteConfig:m,sourceMaps:u,inline:l});M!==void 0&&!l&&(g=ue(g,d.name,M,o)),y[d.name]=g}M!==void 0&&!l&&(console.log(`[mcp-use] MCP_ASSETS_URL set \u2014 manifest uses CDN URLs; upload ${w(e.cwd,a)}/ to your asset host.`),o!=="/mcp"&&console.log(`[mcp-use] CDN manifest uses basePath ${o} from server entry`)),await W(e.cwd,f(a,"public")),await T(h.environments.ssr,n,y)}finally{await h.close()}let J=await ae(r.cache,n,y);await D({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:r.cache,resolve:{tsconfigPaths:!0,alias:x(e.cwd)},plugins:[S(e.cwd)],build:{ssr:J,outDir:r.build,emptyOutDir:!1,target:"node22",sourcemap:u,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:p}}},ssr:{...R(e.cwd),target:"node"}});let z={buildId:H(8).toString("hex"),entryPoint:p,createdAt:new Date().toISOString(),views:y};await v(r.build,{recursive:!0}),await E(r.buildManifest,`${JSON.stringify(z,null,2)}
5
5
  `);let Y=Math.round(performance.now()-t),G=c.map(d=>d.name).join(", ");console.log(`[mcp-use] built ${w(e.cwd,n)} + views (${G}) \u2192 ${w(e.cwd,r.build)}/${p} (${Y}ms)`)}export{de as runBuild};
@@ -1,2 +1,2 @@
1
- import{b as ne}from"../chunk-OVFUQAEG.js";import{a as Z,b as Q}from"../chunk-N7BU45K6.js";import{b as Y,c as z}from"../chunk-USIKTT3N.js";import{a as re,b as oe,c as se,d as T,f as x,g as ie,i as ae}from"../chunk-ALPMVGHI.js";import{b as ee,c as te,d as A}from"../chunk-7G4TXPP4.js";import{a as $,b as X}from"../chunk-DB3E6LBX.js";import{a as K}from"../chunk-LNASFQWW.js";import{createServer as Ce}from"http";import{networkInterfaces as je}from"os";import{join as ke,resolve as Le}from"path";import $e from"@tailwindcss/vite";import Ae from"@vitejs/plugin-react";import{createServer as Te,createServerModuleRunner as xe}from"vite";import{InMemoryServerEventBus as Ve,localhostAllowedHostnames as Fe,localhostAllowedOrigins as Be,validateHostHeader as Ne,validateOriginHeader as We}from"@modelcontextprotocol/server";import{connect as be,createServer as Me}from"net";var ce=100,_e=300,Ie=new Set(["127.0.0.1","localhost","::1"]);function Se(e,r){return new Promise(s=>{let n=Me();n.unref(),n.once("error",()=>s(!1)),n.listen({port:e,host:r},()=>{n.close(()=>s(!0))})})}function le(e,r){return new Promise(s=>{let n=be({port:e,host:r});n.setTimeout(_e),n.once("connect",()=>{n.destroy(),s(!0)}),n.once("timeout",()=>{n.destroy(),s(!1)}),n.once("error",()=>{n.destroy(),s(!1)})})}async function De(e){return await le(e,"127.0.0.1")||await le(e,"::1")}async function de(e,r){for(let s=e;s<e+ce;s++)if(await Se(s,r)&&!(Ie.has(r)&&await De(s)))return{port:s,requested:e};throw new Error(`No free port found between ${e} and ${e+ce-1} on ${r}.`)}function ue(e,r){let s=()=>{let n=e.getBasePath(),{url:c}=e.tunnel.status();return{mcpUrl:c!==null?`${c.replace(/\/+$/,"")}${n}`:null,port:e.port,fromCli:!0,tunnelUrl:c}};return async n=>{let c=e.getBasePath(),l=`${c}/inspector/api/dev/info`,d=`${c}/inspector/api/dev/start-tunnel`,u=`${c}/inspector/api/dev/stop-tunnel`,w=new URL(n.url).pathname;if(n.method==="GET"&&w===l)return Response.json(s());if(n.method==="POST"&&w===d)try{return await e.tunnel.start(e.port),Response.json({ok:!0,restarting:!1})}catch(g){let S=g instanceof Error?g.message:"Failed to start tunnel";return Response.json({error:S},{status:500})}return n.method==="POST"&&w===u?(await e.tunnel.stop(),Response.json({ok:!0})):r(n)}}import{readFileSync as Ee}from"fs";import{createRequire as He}from"module";import{join as Oe}from"path";import{pathToFileURL as Ue}from"url";async function me(e){let r=Oe(e,"package.json"),s=JSON.parse(Ee(r,"utf8"));if([s.dependencies,s.devDependencies,s.optionalDependencies].some(l=>l!==null&&typeof l=="object"&&"@mcp-use/inspector"in l)){let l=He(r);try{let d=l.resolve("@mcp-use/inspector");return pe(await import(Ue(d).href))}catch(d){if(!fe(d))throw d}}try{return pe(await import("@mcp-use/inspector"))}catch(l){if(fe(l))return{installed:!1};throw l}}function pe(e){if(typeof e.mountInspector!="function")throw new Error("The installed @mcp-use/inspector is incompatible: its package entry does not export mountInspector(). Update the development dependency.");return{installed:!0,module:e}}function fe(e){let r=e!==null&&typeof e=="object"&&"code"in e?String(e.code):void 0;return r==="ERR_MODULE_NOT_FOUND"||r==="MODULE_NOT_FOUND"}function Ge(e){K(e)}function qe(){for(let e of Object.values(je()))for(let r of e??[])if(!r.internal&&r.family==="IPv4")return r.address}function Je(e){if(e!==void 0)try{return new URL(`http://${e}`).hostname.replace(/^\[|\]$/g,"")}catch{return}}function Ye(e){let r=e.getHeader("Vary"),s=typeof r=="string"?r:Array.isArray(r)?r.join(", "):r!==void 0?String(r):"";s.split(",").map(n=>n.trim().toLowerCase()).includes("origin")||e.setHeader("Vary",s===""?"Origin":`${s}, Origin`)}function ze(e,r,s){if(s.tunnelActive){r.setHeader("Access-Control-Allow-Origin","*");return}if(!s.localhostBind)return;let n=e.headers.origin;if(n==="null"){r.setHeader("Access-Control-Allow-Origin","null");return}if(typeof n!="string"||n==="")return;let c=We(n,Be());!c.ok||c.origin===void 0||(r.setHeader("Access-Control-Allow-Origin",c.origin),Ye(r))}function Ke(e){let r=e.default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance (`export default server`) and never call listen() itself \u2014 `mcp-use dev` owns the socket.");let s=r;if(typeof s.fetch!="function")throw new Error("The entry's default export has no fetch() \u2014 it must be the MCPServer instance (`export default server`).");return s}async function Xe(e){process.env.MCP_USE_DEV_CLI="1";let r=se(e.cwd),s=new Ve(t=>{console.error("[mcp-use] notification delivery failed:",t)});te(e.cwd,"development");let n=z(e.host),c=["127.0.0.1","localhost","::1"].includes(n),l=n==="0.0.0.0"||n==="::",d=Ce(),{port:u,requested:w}=await de(Y(e.port),n);u!==w&&console.log(`[mcp-use] port ${w} is taken, using ${u}`),process.env.PORT=String(u);let g=process.env.MCP_URL===void 0&&(n==="127.0.0.1"||n==="localhost"||n==="::1")?`http://localhost:${u}`:void 0,S=e.mcpDir===void 0?e.cwd:Le(e.cwd,e.mcpDir),V=e.entry===void 0?$(S):$(e.cwd,e.entry),D=await X(e.cwd,V);(D==="created"||D==="updated")&&console.log(`[mcp-use] ${D} mcp-env.d.ts`);let _=e.viewsDir??(e.mcpDir===void 0?void 0:ke(e.mcpDir,"views")),p=T(e.cwd,_),P=p.length>0,ve=re(e.cwd),E=["127.0.0.1","localhost","0.0.0.0","::","::1"].includes(n)?"localhost":n,y=`http://${E.includes(":")?`[${E}]`:E}:${u}`,f=await Te({root:e.cwd,configFile:P?ve:!1,envDir:!1,logLevel:"warn",cacheDir:r.cache,define:{__MCP_USE_VIEW_USAGE_DISABLED__:JSON.stringify(process.env.MCP_USE_ANONYMIZED_TELEMETRY==="false")},resolve:{tsconfigPaths:!0,alias:{tailwindcss:oe()}},plugins:P?[A(e.cwd),$e(),ae({getViews:()=>p,dev:{reactRefresh:!0}}),Ae()]:[A(e.cwd)],server:{middlewareMode:!0,...P&&{origin:y},cors:!1,hmr:P?{server:d}:!1},ssr:{...ee(e.cwd)}}),H=f.environments.ssr,R=xe(H,{hmr:!1,sourcemapInterceptor:"node"}),F=async()=>{let t=async()=>{let i=await R.import(V),a=Ke(i);if(p.length>0){let v=ie(p);if(typeof a.__primeViews!="function")throw new Error("Loaded MCPServer instance does not support __primeViews.");a.__primeViews(v,{dev:!0,projectRoot:e.cwd})}return a};if(g===void 0)return t();let o=process.env.MCP_URL;try{return process.env.MCP_URL=g,await t()}finally{o===void 0?delete process.env.MCP_URL:process.env.MCP_URL=o}},O,m;try{let t=await F();t.__setEventBus(s),t.__mount(),O=async o=>t.fetch(o),m=t.basePath??"/mcp"}catch(t){throw await R.close(),await f.close(),t}let U,b,B,N=t=>{if(U===void 0||B===t)return;let o=U.mountInspector({basePath:t,autoConnectUrl:`${y}${t}`,oauthProxyAllowLoopback:c||l,devMode:!0,manufactChatUrl:process.env.MANUFACT_CHAT_URL});if(typeof o!="function")throw new Error("The installed @mcp-use/inspector is incompatible: mountInspector() did not return a Fetch handler.");b=o,B=t};try{if(e.inspector!==!1){let t=await me(e.cwd);t.installed&&(U=t.module,N(m))}}catch(t){throw await R.close(),await f.close(),t}let C=!1,j=!1,W=()=>{if(C){j=!0;return}C=!0,(async()=>{do{j=!1;try{R.evaluatedModules.clear();let t=await F();t.__setEventBus(s),t.__mount();let o=async a=>t.fetch(a),i=t.basePath??"/mcp";N(i),O=o,m=i,s.publish({kind:"tools_list_changed"}),s.publish({kind:"prompts_list_changed"}),s.publish({kind:"resources_list_changed"}),console.log("[mcp-use] reloaded server entry")}catch(t){console.error(`[mcp-use] reload failed \u2014 keeping the previous server:
2
- `,t)}}while(j);C=!1})()},k=t=>{if(x(t,e.cwd,_))return;let o=H.moduleGraph.getModulesByFile(t);if(!(o===void 0||o.size===0)){for(let i of o)H.moduleGraph.invalidateModule(i);W()}},he=t=>{if(!x(t,e.cwd,_))return;let o=p;p=T(e.cwd,_),(o.length!==p.length||o.some((a,v)=>a.name!==p[v]?.name||a.entryPath!==p[v]?.entryPath))&&W()},I=t=>{he(t),k(t)};f.watcher.on("change",k),f.watcher.on("add",I),f.watcher.on("unlink",I);let h=ne(r.tunnel);d.prependListener("upgrade",t=>{let o=h.status().url;if(o===null)return;let i=new URL(o).hostname;t.headers.host?.split(":")[0]===i&&(t.headers.host=`localhost:${u}`)});let we=(t,o)=>{let i=h.status().url,a=i!==null?new URL(i).hostname:null,v=a!==null?[a]:[],M=Ne(t.headers.host,[...Fe(),...v]);return M.ok?!1:(o.writeHead(403,{"content-type":"application/json"}),o.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:M.message},id:null})),!0)},G=async()=>{f.watcher.off("change",k),f.watcher.off("add",I),f.watcher.off("unlink",I),await h.stop(),await new Promise(t=>d.close(()=>t())),await R.close(),await f.close()},ge=ue({getBasePath:()=>m,port:u,tunnel:h},t=>b!==void 0&&Z(t,m)?b(t):O(t)),{toNodeHandler:Pe}=await import("../node-bridge-JJIA6K5P.js"),q=Pe({fetch:ge}),ye=(t,o)=>{if(c&&we(t,o))return;let i=t.url??"/",a=new URL(i,"http://127.0.0.1").pathname,v=h.status().url,M=v===null?null:new URL(v).hostname,L=Je(t.headers.host);if((M!==null&&L===M||l&&L!==void 0&&!["localhost","127.0.0.1","::1"].includes(L))&&Q(a,m)){o.writeHead(404,{"content-type":"text/plain; charset=utf-8"}),o.end("Not Found");return}let J=P&&p.length>0,Re=t.method==="GET"&&(a.startsWith("/@")||a.startsWith("/node_modules/")||a.startsWith("/.mcp-use/")||J&&a.startsWith("/views/"));J&&Re?(ze(t,o,{tunnelActive:h.status().url!==null,localhostBind:c}),f.middlewares(t,o,()=>{q(t,o)})):q(t,o)};if(d.on("request",ye),await new Promise((t,o)=>{d.once("error",o),d.listen(u,n,()=>t())}),console.log("[mcp-use] dev server ready"),p.length>0&&console.log(` \u279C Views: ${p.map(t=>t.name).join(", ")}`),console.log(` \u279C MCP endpoint: ${y}${m}`),b!==void 0?console.log(` \u279C Inspector: ${y}${m}/inspector`):e.inspector!==!1&&console.warn("[mcp-use] Built-in Inspector is unavailable; reinstall mcp-use to restore visual testing."),n==="0.0.0.0"||n==="::"){let t=qe();t!==void 0&&console.log(` \u279C Network: http://${t}:${u}${m}`)}if(c||console.warn(`[mcp-use] --host ${n} serves beyond this machine without Host validation or authentication \u2014 anyone with network access can call the MCP endpoint and dev routes.`),e.tunnel===!0)try{let{url:t}=await h.start(u);console.log(` \u279C Tunnel: ${t}${m}`)}catch(t){throw await G(),t}b!==void 0&&e.open!==!1&&process.stdout.isTTY===!0&&Ge(`${y}${m}/inspector`),await new Promise(t=>{let o=!1,i=()=>{o||(o=!0,process.off("SIGINT",i),process.off("SIGTERM",i),(async()=>(await G(),t()))())};process.on("SIGINT",i),process.on("SIGTERM",i),e.signal!==void 0&&(e.signal.aborted?i():e.signal.addEventListener("abort",i,{once:!0}))})}export{Xe as runDev};
1
+ import{b as ne}from"../chunk-OVFUQAEG.js";import{a as Q,b as Z}from"../chunk-N7BU45K6.js";import{b as z,c as K}from"../chunk-USIKTT3N.js";import{a as re,b as oe,c as se,d as T,f as x,g as ie,i as ae}from"../chunk-ALPMVGHI.js";import{b as ee,c as te,d as A}from"../chunk-7G4TXPP4.js";import{a as L,b as Y}from"../chunk-FLGSKQGU.js";import{a as X}from"../chunk-LNASFQWW.js";import{createServer as ke}from"http";import{networkInterfaces as Ce}from"os";import{join as $e,resolve as Ee}from"path";import Le from"@tailwindcss/vite";import Ae from"@vitejs/plugin-react";import{createServer as Te,createServerModuleRunner as xe}from"vite";import{InMemoryServerEventBus as Ve,localhostAllowedHostnames as Fe,localhostAllowedOrigins as Be,validateHostHeader as Ne,validateOriginHeader as We}from"@modelcontextprotocol/server";import{connect as be,createServer as Me}from"net";var ce=100,Ie=300,Se=new Set(["127.0.0.1","localhost","::1"]);function _e(e,r){return new Promise(s=>{let n=Me();n.unref(),n.once("error",()=>s(!1)),n.listen({port:e,host:r},()=>{n.close(()=>s(!0))})})}function le(e,r){return new Promise(s=>{let n=be({port:e,host:r});n.setTimeout(Ie),n.once("connect",()=>{n.destroy(),s(!0)}),n.once("timeout",()=>{n.destroy(),s(!1)}),n.once("error",()=>{n.destroy(),s(!1)})})}async function He(e){return await le(e,"127.0.0.1")||await le(e,"::1")}async function de(e,r){for(let s=e;s<e+ce;s++)if(await _e(s,r)&&!(Se.has(r)&&await He(s)))return{port:s,requested:e};throw new Error(`No free port found between ${e} and ${e+ce-1} on ${r}.`)}function ue(e,r){let s=()=>{let n=e.getBasePath(),{url:c}=e.tunnel.status();return{mcpUrl:c!==null?`${c.replace(/\/+$/,"")}${n}`:null,port:e.port,fromCli:!0,tunnelUrl:c}};return async n=>{let c=e.getBasePath(),l=`${c}/inspector/api/dev/info`,d=`${c}/inspector/api/dev/start-tunnel`,u=`${c}/inspector/api/dev/stop-tunnel`,w=new URL(n.url).pathname;if(n.method==="GET"&&w===l)return Response.json(s());if(n.method==="POST"&&w===d)try{return await e.tunnel.start(e.port),Response.json({ok:!0,restarting:!1})}catch(g){let _=g instanceof Error?g.message:"Failed to start tunnel";return Response.json({error:_},{status:500})}return n.method==="POST"&&w===u?(await e.tunnel.stop(),Response.json({ok:!0})):r(n)}}import{readFileSync as De}from"fs";import{createRequire as Oe}from"module";import{join as Ue}from"path";import{pathToFileURL as je}from"url";async function me(e){let r=Ue(e,"package.json"),s=JSON.parse(De(r,"utf8"));if([s.dependencies,s.devDependencies,s.optionalDependencies].some(l=>l!==null&&typeof l=="object"&&"@mcp-use/inspector"in l)){let l=Oe(r);try{let d=l.resolve("@mcp-use/inspector");return pe(await import(je(d).href))}catch(d){if(!fe(d))throw d}}try{return pe(await import("@mcp-use/inspector"))}catch(l){if(fe(l))return{installed:!1};throw l}}function pe(e){if(typeof e.mountInspector!="function")throw new Error("The installed @mcp-use/inspector is incompatible: its package entry does not export mountInspector(). Update the development dependency.");return{installed:!0,module:e}}function fe(e){let r=e!==null&&typeof e=="object"&&"code"in e?String(e.code):void 0;return r==="ERR_MODULE_NOT_FOUND"||r==="MODULE_NOT_FOUND"}function Ge(e){X(e)}function qe(){for(let e of Object.values(Ce()))for(let r of e??[])if(!r.internal&&r.family==="IPv4")return r.address}function Je(e){if(e!==void 0)try{return new URL(`http://${e}`).hostname.replace(/^\[|\]$/g,"")}catch{return}}function ze(e){let r=e.getHeader("Vary"),s=typeof r=="string"?r:Array.isArray(r)?r.join(", "):r!==void 0?String(r):"";s.split(",").map(n=>n.trim().toLowerCase()).includes("origin")||e.setHeader("Vary",s===""?"Origin":`${s}, Origin`)}function Ke(e,r,s){if(s.tunnelActive){r.setHeader("Access-Control-Allow-Origin","*");return}if(!s.localhostBind)return;let n=e.headers.origin;if(n==="null"){r.setHeader("Access-Control-Allow-Origin","null");return}if(typeof n!="string"||n==="")return;let c=We(n,Be());!c.ok||c.origin===void 0||(r.setHeader("Access-Control-Allow-Origin",c.origin),ze(r))}function Xe(e){let r=e.default;if(r===null||typeof r!="object")throw new Error("The server entry must default-export the MCPServer instance (`export default server`) and never call listen() itself \u2014 `mcp-use dev` owns the socket.");let s=r;if(typeof s.fetch!="function")throw new Error("The entry's default export has no fetch() \u2014 it must be the MCPServer instance (`export default server`).");return s}async function Ye(e){process.env.MCP_USE_DEV_CLI="1";let r=se(e.cwd),s=new Ve(t=>{console.error("[mcp-use] notification delivery failed:",t)});te(e.cwd,"development");let n=K(e.host),c=["127.0.0.1","localhost","::1"].includes(n),l=n==="0.0.0.0"||n==="::",d=ke(),{port:u,requested:w}=await de(z(e.port),n);u!==w&&console.log(`[mcp-use] port ${w} is taken, using ${u}`),process.env.PORT=String(u);let g=process.env.MCP_URL===void 0&&(n==="127.0.0.1"||n==="localhost"||n==="::1")?`http://localhost:${u}`:void 0,_=e.mcpDir===void 0?e.cwd:Ee(e.cwd,e.mcpDir),V=e.entry===void 0?L(_):L(e.cwd,e.entry),H=await Y(e.cwd,V);(H==="created"||H==="updated")&&console.log(`[mcp-use] ${H} mcp-env.d.ts`);let I=e.viewsDir??(e.mcpDir===void 0?void 0:$e(e.mcpDir,"views")),p=T(e.cwd,I),P=p.length>0,ve=re(e.cwd),D=["127.0.0.1","localhost","0.0.0.0","::","::1"].includes(n)?"localhost":n,y=`http://${D.includes(":")?`[${D}]`:D}:${u}`,f=await Te({root:e.cwd,configFile:P?ve:!1,envDir:!1,logLevel:"warn",cacheDir:r.cache,resolve:{tsconfigPaths:!0,alias:{tailwindcss:oe()}},plugins:P?[A(e.cwd),Le(),ae({getViews:()=>p,dev:{reactRefresh:!0}}),Ae()]:[A(e.cwd)],server:{middlewareMode:!0,...P&&{origin:y},cors:!1,hmr:P?{server:d}:!1},ssr:{...ee(e.cwd)}}),O=f.environments.ssr,R=xe(O,{hmr:!1,sourcemapInterceptor:"node"}),F=async()=>{let t=async()=>{let i=await R.import(V),a=Xe(i);if(p.length>0){let v=ie(p);if(typeof a.__primeViews!="function")throw new Error("Loaded MCPServer instance does not support __primeViews.");a.__primeViews(v,{dev:!0,projectRoot:e.cwd})}return a};if(g===void 0)return t();let o=process.env.MCP_URL;try{return process.env.MCP_URL=g,await t()}finally{o===void 0?delete process.env.MCP_URL:process.env.MCP_URL=o}},U,m;try{let t=await F();t.__setEventBus(s),t.__mount(),U=async o=>t.fetch(o),m=t.basePath??"/mcp"}catch(t){throw await R.close(),await f.close(),t}let j,b,B,N=t=>{if(j===void 0||B===t)return;let o=j.mountInspector({basePath:t,autoConnectUrl:`${y}${t}`,oauthProxyAllowLoopback:c||l,devMode:!0,manufactChatUrl:process.env.MANUFACT_CHAT_URL});if(typeof o!="function")throw new Error("The installed @mcp-use/inspector is incompatible: mountInspector() did not return a Fetch handler.");b=o,B=t};try{if(e.inspector!==!1){let t=await me(e.cwd);t.installed&&(j=t.module,N(m))}}catch(t){throw await R.close(),await f.close(),t}let k=!1,C=!1,W=()=>{if(k){C=!0;return}k=!0,(async()=>{do{C=!1;try{R.evaluatedModules.clear();let t=await F();t.__setEventBus(s),t.__mount();let o=async a=>t.fetch(a),i=t.basePath??"/mcp";N(i),U=o,m=i,s.publish({kind:"tools_list_changed"}),s.publish({kind:"prompts_list_changed"}),s.publish({kind:"resources_list_changed"}),console.log("[mcp-use] reloaded server entry")}catch(t){console.error(`[mcp-use] reload failed \u2014 keeping the previous server:
2
+ `,t)}}while(C);k=!1})()},$=t=>{if(x(t,e.cwd,I))return;let o=O.moduleGraph.getModulesByFile(t);if(!(o===void 0||o.size===0)){for(let i of o)O.moduleGraph.invalidateModule(i);W()}},he=t=>{if(!x(t,e.cwd,I))return;let o=p;p=T(e.cwd,I),(o.length!==p.length||o.some((a,v)=>a.name!==p[v]?.name||a.entryPath!==p[v]?.entryPath))&&W()},S=t=>{he(t),$(t)};f.watcher.on("change",$),f.watcher.on("add",S),f.watcher.on("unlink",S);let h=ne(r.tunnel);d.prependListener("upgrade",t=>{let o=h.status().url;if(o===null)return;let i=new URL(o).hostname;t.headers.host?.split(":")[0]===i&&(t.headers.host=`localhost:${u}`)});let we=(t,o)=>{let i=h.status().url,a=i!==null?new URL(i).hostname:null,v=a!==null?[a]:[],M=Ne(t.headers.host,[...Fe(),...v]);return M.ok?!1:(o.writeHead(403,{"content-type":"application/json"}),o.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:M.message},id:null})),!0)},G=async()=>{f.watcher.off("change",$),f.watcher.off("add",S),f.watcher.off("unlink",S),await h.stop(),await new Promise(t=>d.close(()=>t())),await R.close(),await f.close()},ge=ue({getBasePath:()=>m,port:u,tunnel:h},t=>b!==void 0&&Q(t,m)?b(t):U(t)),{toNodeHandler:Pe}=await import("../node-bridge-JJIA6K5P.js"),q=Pe({fetch:ge}),ye=(t,o)=>{if(c&&we(t,o))return;let i=t.url??"/",a=new URL(i,"http://127.0.0.1").pathname,v=h.status().url,M=v===null?null:new URL(v).hostname,E=Je(t.headers.host);if((M!==null&&E===M||l&&E!==void 0&&!["localhost","127.0.0.1","::1"].includes(E))&&Z(a,m)){o.writeHead(404,{"content-type":"text/plain; charset=utf-8"}),o.end("Not Found");return}let J=P&&p.length>0,Re=t.method==="GET"&&(a.startsWith("/@")||a.startsWith("/node_modules/")||a.startsWith("/.mcp-use/")||J&&a.startsWith("/views/"));J&&Re?(Ke(t,o,{tunnelActive:h.status().url!==null,localhostBind:c}),f.middlewares(t,o,()=>{q(t,o)})):q(t,o)};if(d.on("request",ye),await new Promise((t,o)=>{d.once("error",o),d.listen(u,n,()=>t())}),console.log("[mcp-use] dev server ready"),p.length>0&&console.log(` \u279C Views: ${p.map(t=>t.name).join(", ")}`),console.log(` \u279C MCP endpoint: ${y}${m}`),b!==void 0?console.log(` \u279C Inspector: ${y}${m}/inspector`):e.inspector!==!1&&console.warn("[mcp-use] Built-in Inspector is unavailable; reinstall mcp-use to restore visual testing."),n==="0.0.0.0"||n==="::"){let t=qe();t!==void 0&&console.log(` \u279C Network: http://${t}:${u}${m}`)}if(c||console.warn(`[mcp-use] --host ${n} serves beyond this machine without Host validation or authentication \u2014 anyone with network access can call the MCP endpoint and dev routes.`),e.tunnel===!0)try{let{url:t}=await h.start(u);console.log(` \u279C Tunnel: ${t}${m}`)}catch(t){throw await G(),t}b!==void 0&&e.open!==!1&&process.stdout.isTTY===!0&&Ge(`${y}${m}/inspector`),await new Promise(t=>{let o=!1,i=()=>{o||(o=!0,process.off("SIGINT",i),process.off("SIGTERM",i),(async()=>(await G(),t()))())};process.on("SIGINT",i),process.on("SIGTERM",i),e.signal!==void 0&&(e.signal.aborted?i():e.signal.addEventListener("abort",i,{once:!0}))})}export{Ye as runDev};
@@ -1 +1 @@
1
- import{a as i,b as o}from"../chunk-DB3E6LBX.js";import{spawn as d}from"child_process";import{createRequire as l}from"module";import{dirname as u,join as p,resolve as y}from"path";async function f(e){let c=e.mcpDir===void 0?e.cwd:y(e.cwd,e.mcpDir),n=e.entry===void 0?i(c):i(e.cwd,e.entry),r=await o(e.cwd,n);r==="created"||r==="updated"?console.log(`[mcp-use] ${r} mcp-env.d.ts`):r==="user-owned"&&console.warn("[mcp-use] mcp-env.d.ts is user-owned; leaving it unchanged");let t=g(e.cwd);return w(t,e.cwd,e.tscArgs??[])}function g(e){let c=l(p(e,"package.json"));try{let n=c.resolve("typescript/package.json");return p(u(n),"bin","tsc")}catch{throw new Error(`TypeScript is not installed in ${e}. Install it with npm install --save-dev typescript.`)}}function w(e,c,n){return new Promise((r,t)=>{let s=d(process.execPath,[e,...n,"--noEmit"],{cwd:c,stdio:"inherit"});s.once("error",t),s.once("close",(a,m)=>{r(a??(m==="SIGINT"?130:1))})})}export{f as runTypecheck};
1
+ import{a as i,b as o}from"../chunk-FLGSKQGU.js";import{spawn as d}from"child_process";import{createRequire as l}from"module";import{dirname as u,join as p,resolve as y}from"path";async function f(e){let c=e.mcpDir===void 0?e.cwd:y(e.cwd,e.mcpDir),n=e.entry===void 0?i(c):i(e.cwd,e.entry),r=await o(e.cwd,n);r==="created"||r==="updated"?console.log(`[mcp-use] ${r} mcp-env.d.ts`):r==="user-owned"&&console.warn("[mcp-use] mcp-env.d.ts is user-owned; leaving it unchanged");let t=g(e.cwd);return w(t,e.cwd,e.tscArgs??[])}function g(e){let c=l(p(e,"package.json"));try{let n=c.resolve("typescript/package.json");return p(u(n),"bin","tsc")}catch{throw new Error(`TypeScript is not installed in ${e}. Install it with npm install --save-dev typescript.`)}}function w(e,c,n){return new Promise((r,t)=>{let s=d(process.execPath,[e,...n,"--noEmit"],{cwd:c,stdio:"inherit"});s.once("error",t),s.once("close",(a,m)=>{r(a??(m==="SIGINT"?130:1))})})}export{f as runTypecheck};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-7JXZ37OF.js";import"./chunk-USIKTT3N.js";export{a as main};
1
+ import{a}from"./chunk-FTF3BR6T.js";import"./chunk-USIKTT3N.js";export{a as main};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mcp-use/cli",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.10",
4
+ "version": "4.0.0-beta.11",
5
5
  "description": "Prebuilt CLI, development server, and build pipeline for mcp-use",
6
6
  "author": "mcp-use, Inc.",
7
7
  "license": "MIT",
@@ -26,6 +26,9 @@
26
26
  ".": {
27
27
  "types": "./types/index.d.ts",
28
28
  "import": "./dist/index.js"
29
+ },
30
+ "./vite-client": {
31
+ "types": "./types/vite-client.d.ts"
29
32
  }
30
33
  },
31
34
  "files": [
@@ -0,0 +1,3 @@
1
+ import "vite/client";
2
+
3
+ export {};
File without changes