@mcp-use/cli 4.0.2-canary.1 → 4.0.2-canary.2
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 +1 -1
- package/dist/{chunk-VUVLJMYY.js → chunk-DODFSHJ5.js} +1 -1
- package/dist/{chunk-ISAAAHEM.js → chunk-F22D552R.js} +5 -5
- package/dist/{chunk-3XW44DRS.js → chunk-JHCVAC2M.js} +1 -1
- package/dist/chunk-JRCSP5WH.js +4 -0
- package/dist/{chunk-FLGSKQGU.js → chunk-LUVZUL5C.js} +1 -1
- package/dist/{chunk-F5XPOFT7.js → chunk-N35NYWRW.js} +1 -1
- package/dist/chunk-WOT6VMZA.js +1 -0
- package/dist/{chunk-JAWUXU2E.js → chunk-XHPZPKHH.js} +2 -2
- package/dist/commands/build.js +5 -5
- package/dist/commands/client.js +1 -1
- package/dist/commands/deploy.js +1 -1
- package/dist/commands/deployments.js +1 -1
- package/dist/commands/dev.js +81 -2
- package/dist/commands/identity.js +1 -1
- package/dist/commands/organizations.js +1 -1
- package/dist/commands/screenshot.js +1 -1
- package/dist/commands/servers.js +1 -1
- package/dist/commands/start.js +1 -1
- package/dist/commands/typecheck.js +1 -1
- package/dist/index.js +1 -1
- package/dist/next-server-shims.js +1 -1
- package/dist/{start-PIY244P7.js → start-7S5RBWJP.js} +2 -2
- package/dist/third-party-licenses/modelcontextprotocol-core-LICENSE +216 -0
- package/dist/third-party-licenses/modelcontextprotocol-server-LICENSE +216 -0
- package/dist/third-party-licenses/zod-LICENSE +21 -0
- package/dist/tunnel-ROVTBKBW.js +1 -0
- package/package.json +15 -4
- package/dist/chunk-ICHICRCP.js +0 -4
- package/dist/node-bridge-WOT2W5YZ.js +0 -1
- package/dist/tunnel-FOJUZGIJ.js +0 -1
- /package/dist/{chunk-N7BU45K6.js → chunk-4EER3N42.js} +0 -0
- /package/dist/{chunk-7G4TXPP4.js → chunk-OMRWADFK.js} +0 -0
- /package/dist/{chunk-STQ3SGCH.js → chunk-RXKUVCL7.js} +0 -0
- /package/dist/{chunk-LNASFQWW.js → chunk-S3WHXP7I.js} +0 -0
package/dist/bin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as
|
|
2
|
+
import{a as o}from"./chunk-XHPZPKHH.js";import"./chunk-RXKUVCL7.js";import"./chunk-WOT6VMZA.js";import{readFileSync as i}from"fs";import{createRequire as a}from"module";import{dirname as t,join as c,parse as m}from"path";function p(){try{let e=a(import.meta.url).resolve("mcp-use"),n=t(e),s=m(n).root;for(;n!==s;){try{let r=JSON.parse(i(c(n,"package.json"),"utf8"));if(r.name==="mcp-use"&&typeof r.version=="string")return r.version}catch{}n=t(n)}}catch{}}o(process.argv.slice(2),{frameworkVersion:p()??"4.0.2-canary.2"}).then(e=>{process.exitCode=e},e=>{console.error(e instanceof Error?e.message:String(e)),process.exitCode=1});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as c}from"./chunk-
|
|
1
|
+
import{a as c}from"./chunk-S3WHXP7I.js";import{constants as l}from"fs";import{access as m,chmod as d,mkdir as w,readFile as y,rename as x,rm as g,writeFile as $}from"fs/promises";import{homedir as S}from"os";import{dirname as b,join as p}from"path";import{createInterface as k}from"readline/promises";var r=class extends Error{exitCode=2},s=class extends Error{code;details;constructor(e,t,o){super(t),this.code=e,this.details=o}},u=class extends s{exitCode=2};function _(n){return n.includes("--json")}function h(n,e,t){e?process.stdout.write(`${JSON.stringify(n)}
|
|
2
2
|
`):t!==void 0?process.stdout.write(`${t}
|
|
3
3
|
`):typeof n=="string"?process.stdout.write(`${n}
|
|
4
4
|
`):process.stdout.write(`${JSON.stringify(n,null,2)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a,b as g,d as z,e as f,f as F,g as G,h as K,i as b,j as
|
|
1
|
+
import{a,b as g,d as z,e as f,f as F,g as G,h as K,i as b,j as x,k as P,m as _}from"./chunk-DODFSHJ5.js";import{createHash as ke}from"crypto";import{rm as ee}from"fs/promises";import{join as A}from"path";import{createInterface as Oe}from"readline/promises";import{parseArgs as E}from"util";var d=["-h, --help","Show this help"],h=["--json","Emit machine-readable JSON (accepted anywhere after client)"],S=new Map;function m(e,t){S.set(e,t)}m("",{usage:"mcp-use client <command>",summary:"Connect to and invoke saved HTTP(S) MCP servers.",commands:[["connect <name> <url>","Connect and save a server"],["list","List saved servers"],["remove <name>","Remove a saved server"],["<name>","Invoke a saved server"]],options:[d]});m("connect",{usage:"mcp-use client connect <name> <url> [options]",summary:"Connect to and save an HTTP(S) MCP server.",options:[['-H, --header <"Key: Value">',"Static header (repeatable)"],["--no-oauth","Skip OAuth on authorization challenges"],["--auth-timeout <ms>","OAuth wait timeout (default: 300000)"],["--protocol <auto|legacy|modern>","Protocol mode (default: auto; modern is stateless/sessionless)"],["--no-open","Print the OAuth URL without opening a browser"],h,d],notes:["JSON mode never opens a browser or prints an OAuth URL/state. If new consent is required, it returns oauth_interaction_required with an interactive retry command."]});m("list",{usage:"mcp-use client list [options]",summary:"List saved MCP servers.",options:[h,d]});m("remove",{usage:"mcp-use client remove <name> [options]",summary:"Immediately remove a saved server and its credentials.",options:[h,d]});m("<name>",{usage:"mcp-use client <name> <command>",summary:"Invoke a saved MCP server.",commands:[["tools","List, describe, or call tools"],["resources","List or read resources"],["prompts","List or get prompts"],["auth","Inspect or clear saved OAuth state"]],options:[d]});m("<name> tools",{usage:"mcp-use client <name> tools <command>",summary:"Use tools on a saved MCP server.",commands:[["list","List tools"],["describe <tool>","Show a tool definition"],["call <tool> [args...]","Call a tool"]],options:[d]});m("<name> tools list",{usage:"mcp-use client <name> tools list [options]",summary:"List tools on a saved MCP server.",options:[h,d]});m("<name> tools describe",{usage:"mcp-use client <name> tools describe <tool> [options]",summary:"Show one tool definition.",options:[h,d]});m("<name> tools call",{usage:"mcp-use client <name> tools call <tool> [args...] [options]",summary:"Call a tool on a saved MCP server.",options:[["--timeout <ms>","Call timeout (default: 30000)"],h,d],notes:["Arguments are one JSON object or key=value/key:=<json> pairs; do not mix forms."]});m("<name> resources",{usage:"mcp-use client <name> resources <command>",summary:"Use resources on a saved MCP server.",commands:[["list","List resources"],["read <uri>","Read a resource"]],options:[d]});m("<name> resources list",{usage:"mcp-use client <name> resources list [options]",summary:"List resources on a saved MCP server.",options:[h,d]});m("<name> resources read",{usage:"mcp-use client <name> resources read <uri> [options]",summary:"Read one resource.",options:[h,d]});m("<name> prompts",{usage:"mcp-use client <name> prompts <command>",summary:"Use prompts on a saved MCP server.",commands:[["list","List prompts"],["get <prompt> [args...]","Get a prompt"]],options:[d]});m("<name> prompts list",{usage:"mcp-use client <name> prompts list [options]",summary:"List prompts on a saved MCP server.",options:[h,d]});m("<name> prompts get",{usage:"mcp-use client <name> prompts get <prompt> [args...] [options]",summary:"Get a prompt from a saved MCP server.",options:[h,d],notes:["Arguments are one JSON object or key=value/key:=<json> pairs; do not mix forms."]});m("<name> auth",{usage:"mcp-use client <name> auth <command>",summary:"Manage saved OAuth state.",commands:[["status","Show OAuth status"],["logout","Delete saved OAuth credentials"]],options:[d]});m("<name> auth status",{usage:"mcp-use client <name> auth status [options]",summary:"Show saved OAuth status.",options:[h,d]});m("<name> auth logout",{usage:"mcp-use client <name> auth logout [options]",summary:"Delete saved OAuth credentials but keep the server.",options:[["--yes","Skip the confirmation prompt"],h,d]});function V(e){let t=e.filter(u=>u!=="--help"&&u!=="-h"&&u!=="--json"),n=t[0];if(n===void 0)return{text:k(S.get(""))};if(n==="connect"||n==="list"||n==="remove")return{text:k(S.get(n))};let o=t[1];if(o===void 0)return{text:k(S.get("<name>"))};if(!["tools","resources","prompts","auth"].includes(o))return{error:`Unknown client command family: ${o}`};let r=t[2],s=`<name> ${o}`;if(r===void 0)return{text:k(S.get(s))};let i=`${s} ${r}`,l=S.get(i);return l===void 0?{error:`Unknown client ${o} command: ${r}`}:{text:k(l)}}function k(e){let t=[`Usage: ${e.usage}`,e.summary];return e.commands!==void 0&&t.push(W("Commands",e.commands)),e.options!==void 0&&t.push(W("Options",e.options)),e.notes!==void 0&&t.push(e.notes.join(`
|
|
2
2
|
`)),t.join(`
|
|
3
3
|
|
|
4
4
|
`)}function W(e,t){let n=Math.max(...t.map(([o])=>o.length));return`${e}:
|
|
@@ -7,8 +7,8 @@ ${t.map(([o,r])=>` ${o.padEnd(n)} ${r}`).join(`
|
|
|
7
7
|
`);async function we(e){let t=fe(e);for(;;){if(await b($(t,"package.json")))return t;let n=pe(t);if(n===t)return;t=n}}async function X(e={}){try{return await Se()}catch(t){if(!Y(t))throw t;if(e.allowInstall===!1)throw new g("client_install_required",`${w} is required for this command.`,{nextSteps:[{description:"Install the optional client SDK",command:`npm install ${w}`}]});let n=await ve();try{return n.location==="sandbox"?await be():await Ce(n.projectRoot)}catch(o){throw Y(o)?new a(he):o}}}async function ve(){let e=Pe(),t=`${w}@${e}`,n=await we(process.cwd());if(process.stderr.write(`[mcp-use] installing ${w}\u2026
|
|
8
8
|
`),n!==void 0){let[s,i]=ye(t);if(await Z(s,i,n)!==0)throw new g("client_install_failed",`Failed to install ${w}.`);return{location:"project",projectRoot:n}}await me(O,{recursive:!0,mode:448}),await de(O,448);let o=$(O,"package.json");if(await b(o)||await P(o,{private:!0,dependencies:{[w]:e}}),await Z("npm",["install",t],O)!==0)throw new g("client_install_failed",`Failed to install ${w}.`);return{location:"sandbox"}}function ye(e){let t=process.env.npm_config_user_agent??"";return t.startsWith("pnpm/")?["pnpm",["add",e]]:t.startsWith("bun/")?["bun",["add",e]]:["npm",["install",e]]}function Pe(){for(let e of["../package.json","../../package.json"])try{let t=le(new URL(e,import.meta.url),"utf8"),n=JSON.parse(t);if(n.name!=="mcp-use")continue;let o=n.peerDependencies?.[w];if(typeof o=="string"&&o.length>0)return o}catch{}return ge}async function Se(){return I(),import("@mcp-use/client")}async function Ce(e){I();let t=Q($(e,"package.json")).href;return import(await import.meta.resolve(w,t))}async function be(){I();let e=$(O,"node_modules",w,"dist","index.js");return await import(Q(e).href)}function I(){let e=Object.getOwnPropertyDescriptor(globalThis,"localStorage");e?.get===void 0||e.configurable!==!0||Object.defineProperty(globalThis,"localStorage",{configurable:!0,enumerable:e.enumerable??!1,value:void 0,writable:!0})}function Y(e){if(!(e instanceof Error))return!1;let t=e.code;return t==="ERR_MODULE_NOT_FOUND"||t==="MODULE_NOT_FOUND"?e.message.includes(w)||e.message.includes("Cannot find package"):!1}function Z(e,t,n){return new Promise((o,r)=>{let s=ue(e,t,{cwd:n,stdio:"inherit",shell:process.platform==="win32"});s.once("error",r),s.once("exit",(i,l)=>{o(l==="SIGINT"?130:i??1)})})}var te=A(_,"client"),L=A(te,"servers.json");async function nt(e){if(e.includes("--help")||e.includes("-h")){let r=V(e);return r.text!==void 0?(process.stdout.write(`${r.text}
|
|
9
9
|
`),0):(process.stderr.write(`${r.error}
|
|
10
|
-
`),2)}let t=z(e),n=e.filter(r=>r!=="--json"),o=n[0];try{if(o==="connect")return await $e(n.slice(1),t);if(o==="list")return await Re(n.slice(1),t);if(o==="remove")return await Ae(n.slice(1),t);if(o===void 0)throw new a("Usage: mcp-use client <connect|list|remove|name>");return await Ee(o,n.slice(1),t)}catch(r){return F(r instanceof TypeError?new a(r.message):r,t)}}async function $e(e,t){let{values:n,positionals:o}=E({args:[...e],allowPositionals:!0,strict:!0,options:{header:{type:"string",short:"H",multiple:!0},"no-oauth":{type:"boolean"},"auth-timeout":{type:"string"},protocol:{type:"string",default:"auto"},"no-open":{type:"boolean"}}});if(o.length!==2)throw new a("Usage: mcp-use client connect <name> <url>");let[r,s]=o;je(r);let i=new URL(s);if(!["http:","https:"].includes(i.protocol))throw new a("Client URLs must use http or https.");let l=Ue(n.protocol),u=re(n["auth-timeout"]??"300000","--auth-timeout"),c=await
|
|
11
|
-
`)||"No saved servers."),0}async function Ae(e,t){let{positionals:n}=E({args:[...e],allowPositionals:!0,strict:!0,options:{}}),o=R(n,"mcp-use client remove <name>"),r=await
|
|
12
|
-
`)),0}if(i==="describe"){let c=R(t.slice(2),`mcp-use client ${e} tools describe <tool>`),p=(await u.listTools()).find(y=>y.name===c);if(p===void 0)throw new a(`Tool not found: ${c}`);return f(p,n),0}if(i==="call")return await
|
|
10
|
+
`),2)}let t=z(e),n=e.filter(r=>r!=="--json"),o=n[0];try{if(o==="connect")return await $e(n.slice(1),t);if(o==="list")return await Re(n.slice(1),t);if(o==="remove")return await Ae(n.slice(1),t);if(o===void 0)throw new a("Usage: mcp-use client <connect|list|remove|name>");return await Ee(o,n.slice(1),t)}catch(r){return F(r instanceof TypeError?new a(r.message):r,t)}}async function $e(e,t){let{values:n,positionals:o}=E({args:[...e],allowPositionals:!0,strict:!0,options:{header:{type:"string",short:"H",multiple:!0},"no-oauth":{type:"boolean"},"auth-timeout":{type:"string"},protocol:{type:"string",default:"auto"},"no-open":{type:"boolean"}}});if(o.length!==2)throw new a("Usage: mcp-use client connect <name> <url>");let[r,s]=o;je(r);let i=new URL(s);if(!["http:","https:"].includes(i.protocol))throw new a("Client URLs must use http or https.");let l=Ue(n.protocol),u=re(n["auth-timeout"]??"300000","--auth-timeout"),c=await T();if(c.servers[r]!==void 0)throw new a(`Saved server already exists: ${r}`);let p={headers:Le(n.header??[])},y={url:i.href,oauth:n["no-oauth"]!==!0,protocol:l};return await(await U(r,y,p,u,oe({noOpen:n["no-open"]===!0,json:t}),t,`mcp-use client connect ${r} <url> --no-open`)).disconnect(),c.servers[r]=y,await P(L,c),await P(J(r),p),f({name:r,url:se(y.url),protocol:l},t,`Connected and saved ${r}.`),0}async function Re(e,t){C(e);let n=await T(),o=Object.entries(n.servers).map(([r,s])=>({name:r,...s,url:se(s.url)}));return f(o,t,o.map(r=>`${r.name} ${r.url}`).join(`
|
|
11
|
+
`)||"No saved servers."),0}async function Ae(e,t){let{positionals:n}=E({args:[...e],allowPositionals:!0,strict:!0,options:{}}),o=R(n,"mcp-use client remove <name>"),r=await T();return delete r.servers[o],await P(L,r),await ee(H(o),{recursive:!0,force:!0}),f({removed:o},t,`Removed ${o}.`),0}async function Ee(e,t,n){let r=(await T()).servers[e];if(r===void 0)throw new a(`Unknown saved server: ${e}. Run \`mcp-use client connect ${e} <url>\`.`);let s=t[0],i=t[1];if(s==="auth"){if(i==="status"){C(t.slice(2));let c=await b(D(e));return f({name:e,oauth:r.oauth,authenticated:c},n,c?"Authenticated.":"No saved OAuth session."),0}if(i==="logout"){let{values:c,positionals:p}=E({args:[...t.slice(2)],allowPositionals:!0,strict:!0,options:{yes:{type:"boolean"}}});if(p.length!==0)throw new a(`Usage: mcp-use client ${e} auth logout`);return await G(`Delete OAuth credentials for ${e}?`,{yes:c.yes===!0,json:n})&&(await ee(D(e),{recursive:!0,force:!0}),f({loggedOut:e},n,`Logged out ${e}.`)),0}}Te(e,s,i,t.slice(2));let l=await x(J(e),{}),u=await U(e,r,l,3e5,oe({noOpen:!1,json:n}),n);try{if(s==="tools"){if(i==="list"){C(t.slice(2));let c=await u.listTools();return f(c,n,c.map(p=>p.description?`${p.name} - ${p.description}`:p.name).join(`
|
|
12
|
+
`)),0}if(i==="describe"){let c=R(t.slice(2),`mcp-use client ${e} tools describe <tool>`),p=(await u.listTools()).find(y=>y.name===c);if(p===void 0)throw new a(`Tool not found: ${c}`);return f(p,n),0}if(i==="call")return await xe(u,e,t.slice(2),n)}if(s==="resources"){if(i==="list"){C(t.slice(2));let c=await u.listResources();return f(c,n),0}if(i==="read"){let c=R(t.slice(2),`mcp-use client ${e} resources read <uri>`);return f(await u.readResource(c),n),0}}if(s==="prompts"){if(i==="list")return C(t.slice(2)),f(await u.listPrompts(),n),0;if(i==="get"){let c=t[2];if(c===void 0)throw new a(`Usage: mcp-use client ${e} prompts get <prompt> [args]`);return f(await u.getPrompt(c,j(t.slice(3))),n),0}}throw new a(`Usage: mcp-use client ${e} <tools|resources|prompts|auth> ...`)}finally{await u.disconnect()}}function Te(e,t,n,o){if(t==="tools"&&n==="list"||t==="resources"&&n==="list"||t==="prompts"&&n==="list"){C(o);return}if(t==="tools"&&n==="describe"){R(o,`mcp-use client ${e} tools describe <tool>`);return}if(t==="tools"&&n==="call"){ne(e,o);return}if(t==="resources"&&n==="read"){R(o,`mcp-use client ${e} resources read <uri>`);return}if(t==="prompts"&&n==="get"){if(o[0]===void 0)throw new a(`Usage: mcp-use client ${e} prompts get <prompt> [args]`);j(o.slice(1));return}throw new a(`Usage: mcp-use client ${e} <tools|resources|prompts|auth> ...`)}async function xe(e,t,n,o){let{tool:r,timeout:s,positionals:i}=ne(t,n),l=await e.callTool(r,j(i),{timeout:s});if(l.isError===!0)throw new g("tool_error",`Tool ${r} returned an error.`,l);return f(l,o),0}function ne(e,t){let n=t[0];if(n===void 0)throw new a(`Usage: mcp-use client ${e} tools call <tool> [args]`);let{values:o,positionals:r}=E({args:[...t.slice(1)],allowPositionals:!0,strict:!0,options:{timeout:{type:"string",default:"30000"}}}),s=re(o.timeout,"--timeout");return j(r),{tool:n,timeout:s,positionals:r}}async function U(e,t,n,o,r=process.stdin.isTTY?"ask":"never",s=!1,i=`mcp-use client ${e} tools list`){let{createOAuthProvider:l,MCPClient:u,logger:c}=await X({allowInstall:!s});s&&(c.level="silent");let p,y=s&&t.oauth?new Promise((v,ce)=>{p=ce}):void 0,B=D(e),M=t.oauth?await l(t.url,{baseDir:B,authTimeoutMs:o,storageKeyPrefix:`mcp-use-cli:${e}`,openBrowser:async v=>{if(s){setImmediate(()=>{p?.(new g("oauth_interaction_required","OAuth interaction is required; retry this command without --json in a terminal.",{server:e,nextSteps:[{description:"Authenticate interactively in a terminal",command:i}]}))});return}if(r==="never"){process.stderr.write(`Open this URL to authenticate:
|
|
13
13
|
${v}
|
|
14
|
-
`);return}await _e(),K(v)}}):void 0,ae=t.protocol==="auto"?{protocolNegotiation:"auto"}:t.protocol==="modern"?{protocolNegotiation:{pin:"2026-07-28"}}:{protocolNegotiation:"legacy",clientOptions:{supportedProtocolVersions:["2025-11-25"]}},q=new u({mcpServers:{[e]:{url:t.url,...n.headers!==void 0?{headers:n.headers}:{},...M!==void 0?{authProvider:M}:{oauth:!1},...ae}}});try{let v=q.connect(e);return await(y===void 0?v:Promise.race([v,y]))}catch(v){throw v instanceof g&&v.code==="oauth_interaction_required"?(M?.dispose?.(),await q.closeSession?.(e),v):Ne(Ie(v,t.protocol),t,n)}}async function ot(e,t=3e5,n=!1){let r=(await
|
|
14
|
+
`);return}await _e(),K(v)}}):void 0,ae=t.protocol==="auto"?{protocolNegotiation:"auto"}:t.protocol==="modern"?{protocolNegotiation:{pin:"2026-07-28"}}:{protocolNegotiation:"legacy",clientOptions:{supportedProtocolVersions:["2025-11-25"]}},q=new u({mcpServers:{[e]:{url:t.url,...n.headers!==void 0?{headers:n.headers}:{},...M!==void 0?{authProvider:M}:{oauth:!1},...ae}}});try{let v=q.connect(e);return await(y===void 0?v:Promise.race([v,y]))}catch(v){throw v instanceof g&&v.code==="oauth_interaction_required"?(M?.dispose?.(),await q.closeSession?.(e),v):Ne(Ie(v,t.protocol),t,n)}}async function ot(e,t=3e5,n=!1){let r=(await T()).servers[e];if(r===void 0)throw new a(`Unknown saved server: ${e}`);let s=await x(J(e),{});return U(e,r,s,t,process.stdin.isTTY?"ask":"never",n)}async function rt(e,t,n=!1){return U("screenshot",{url:e,oauth:!1,protocol:"auto"},{headers:t},3e5,"never",n)}function j(e){if(e.length===0)return{};if(e.length===1&&e[0]?.trimStart().startsWith("{")){let n=JSON.parse(e[0]);if(n===null||Array.isArray(n)||typeof n!="object")throw new a("The JSON argument must be an object.");return n}let t={};for(let n of e){let o=n.indexOf(":="),r=n.indexOf("="),s=o>=0?o:r,i=o>=0?2:1;if(s<=0)throw new a(`Expected key=value or key:=<json>, received: ${n}`);let l=n.slice(0,s).replace(/^--/,""),u=n.slice(s+i);t[l]=o>=0?JSON.parse(u):u}return t}function oe(e){return e.json||e.noOpen||!process.stdin.isTTY?"never":"ask"}async function _e(){let e=Oe({input:process.stdin,output:process.stderr});try{await e.question("This server requires OAuth. Press Enter to open your browser.")}finally{e.close()}}function Le(e){let t={};for(let n of e){let o=n.indexOf(":");if(o<=0)throw new a(`Invalid header: ${n}`);t[n.slice(0,o).trim()]=n.slice(o+1).trim()}return t}function Ue(e){if(e!=="auto"&&e!=="legacy"&&e!=="modern")throw new a("Invalid protocol. Expected auto, legacy, or modern.");return e}function re(e,t){let n=Number(e);if(!Number.isInteger(n)||n<=0)throw new a(`${t} must be a positive integer.`);return n}function je(e){if(!/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(e))throw new a("Server names must be 1-64 filesystem-safe letters, numbers, dots, dashes, or underscores.")}function se(e){let t=new URL(e);(t.username!==""||t.password!=="")&&(t.username="[REDACTED]",t.password="");for(let n of[...t.searchParams.keys()])t.searchParams.set(n,"[REDACTED]");return t.hash!==""&&(t.hash="[REDACTED]"),t.href}async function T(){let e=await x(L,{servers:{}}),t={servers:{}},n=!1;for(let[o,r]of Object.entries(e.servers)){let s=Me(r.protocol);t.servers[o]={...r,protocol:s},n||=s!==r.protocol}return n&&await P(L,t),t}function Me(e){if(e==="auto"||e==="legacy"||e==="modern")return e;if(e===void 0)return"auto";if(e==="2025-11-25")return"legacy";if(e==="2026-07-28")return"modern";throw new a("Saved server has an invalid protocol setting. Remove and reconnect it.")}function Ie(e,t){return t==="auto"||!(e instanceof Error)||!e.message.includes("Unsupported protocol version")&&!e.message.includes("pinned protocol version")?e:t==="legacy"?new g("protocol_mismatch","Server does not support the requested legacy protocol."):new g("protocol_mismatch","Server does not support the requested modern protocol (stateless/sessionless, no fallback).")}function Ne(e,t,n){let o=De(t.url,n.headers);if(!(e instanceof Error)||o.size===0)return e;let r=ie(e.message,o);if(e instanceof g)return new g(e.code,r,N(e.details,o));let s=new Error(r);return s.name=e.name,s}function De(e,t){let n=new Set,o=new URL(e);for(let r of[o.username,o.password,...o.searchParams.values(),o.hash.slice(1)])r!==""&&n.add(r);for(let r of Object.values(t??{}))if(r!==""){n.add(r);let s=r.match(/^Bearer\s+(.+)$/i)?.[1];s!==void 0&&n.add(s)}return n}function N(e,t){return typeof e=="string"?ie(e,t):Array.isArray(e)?e.map(n=>N(n,t)):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([n,o])=>[n,N(o,t)]))}function ie(e,t){let n=e;for(let o of t)n=n.replaceAll(o,"[REDACTED]");return n}function H(e){return A(te,"credentials",ke("sha256").update(e).digest("hex"))}function J(e){return A(H(e),"credentials.json")}function D(e){return A(H(e),"oauth")}function C(e){E({args:[...e],allowPositionals:!1,strict:!0,options:{}})}function R(e,t){if(e.length!==1)throw new a(`Usage: ${t}`);return e[0]}export{nt as a,ot as b,rt as c,j as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as a,j as w,k as h,l as _,m as C}from"./chunk-
|
|
1
|
+
import{b as a,j as w,k as h,l as _,m as C}from"./chunk-DODFSHJ5.js";import{join as O}from"path";var y=O(C,"config.json");function g(){return(process.env.MCP_USE_CLOUD_API_URL??process.env.MCP_API_URL??"https://cloud.manufact.com/api/v1").replace(/\/+$/,"").replace(/\/api\/v1$/,"")+"/api/v1"}function j(){return(process.env.MCP_USE_CLOUD_WEB_URL??"https://manufact.com").replace(/\/+$/,"")}function R(){return g().replace(/\/api\/v1$/,"")}async function I(){return w(y,{})}async function T(t){await h(y,t)}async function E(){await _(y)}function k(t,n){let e=t.filter(i=>i.id===n||i.slug===n);if(e.length!==1)throw new a(e.length===0?"organization_not_found":"organization_ambiguous",`Organization not found: ${n}`);return e[0]}var c=class t{#n;#e;constructor(n,e){this.#n=n,this.#e=e}static async create(n){let e=await I(),i=process.env.MCP_USE_API_KEY??e.apiKey;if(i===void 0||i==="")throw new a("not_authenticated","Not logged in. Run `mcp-use login`.");return new t(i,n??e.orgId)}static withApiKey(n){return new t(n)}async request(n,e={}){let i=b(this.#n,e),r=e.organizationId??this.#e,o=await fetch(`${g()}${n}`,{...e,headers:{Accept:"application/json","x-api-key":this.#n,...r!==void 0?{"x-profile-id":r}:{},...e.body!==void 0?{"Content-Type":"application/json"}:{},...e.headers}}),d=await o.text(),s;try{s=d===""?void 0:JSON.parse(d)}catch{s=d}if(!o.ok)throw A(n,o.status,f(s,i));return s}async multipartRequest(n,e,i={}){let r=v(this.#n,e),o=new AbortController,d=setTimeout(()=>o.abort(),i.timeoutMs??12e4);try{let s=await fetch(`${g()}${n}`,{method:i.method??"POST",headers:{Accept:"application/json","x-api-key":this.#n,...this.#e!==void 0?{"x-profile-id":this.#e}:{}},body:e,signal:o.signal}),l=await s.text(),u;try{u=l===""?void 0:JSON.parse(l)}catch{u=l}if(!s.ok)throw A(n,s.status,f(u,r));return u}catch(s){throw s instanceof Error&&s.name==="AbortError"?new a("cloud_api_timeout",`Cloud upload timed out after ${(i.timeoutMs??12e4)/1e3} seconds.`):s}finally{clearTimeout(d)}}async identity(){let n=await this.request("/test-auth");return{userId:n.user_id,email:n.email,organizations:n.profiles.map(e=>({id:e.id,name:e.profile_name,slug:e.slug,role:e.role})),defaultOrganizationId:n.default_profile_id}}async setDefaultOrganization(n){await this.request(`/organizations/${n}/set-default`,{method:"POST"})}};async function U(t){let n=await I(),e=await(await c.create()).identity(),i=t!==void 0?k(e.organizations,t):e.organizations.find(r=>r.id===(n.orgId??e.defaultOrganizationId));if(i===void 0)throw new a("organization_required","No active organization. Run `mcp-use org use <id-or-slug>`.");return{api:await c.create(i.id),organizationId:i.id}}function P(t){if(typeof t=="string"&&t!=="")return t;if(!(t===null||typeof t!="object"))for(let n of["message","error","detail"]){let e=t[n];if(typeof e=="string"&&e!=="")return e}}function A(t,n,e){let i=P(e)??`Cloud API request failed (${n}).`,r={status:n,...z(e)!==void 0?{validation:z(e)}:{}};if(n===401)return new a("not_authenticated",i,r);if(n===403)return new a("forbidden",i,r);if(n===404&&/^\/servers(?:\/|$)/.test(t))return new a("server_not_found",i,r);if(n===404&&/^\/deployments(?:\/|$)/.test(t))return new a("deployment_not_found",i,r);let o=t.match(/^\/deployments\/([^/]+)\/stop$/);if(o!==null){let d=decodeURIComponent(o[1]??"");return new a("deployment_stop_failed",i,{...r,nextSteps:[{description:"Inspect the deployment state",command:`mcp-use deployments get ${d} --json`},{description:"Delete the deployment instead",command:`mcp-use deployments delete ${d} --yes --json`}]})}return n===400||n===422?new a("validation_error",i,r):new a("cloud_api_error",i,r)}function z(t){if(t===null||typeof t!="object")return;let n=t.details;if(!(n===null||typeof n!="object"&&!Array.isArray(n)))return n}function b(t,n){let e=new Set([t]),i=new Headers(n.headers);for(let r of["authorization","x-api-key"]){let o=i.get(r);o!==null&&e.add(o)}if(typeof n.body=="string")try{p(JSON.parse(n.body),e)}catch{}return e}function v(t,n){let e=new Set([t]);for(let[i,r]of n.entries())if(typeof r=="string")if(/^(?:env|environment|environmentVariables)$/i.test(i))try{m(JSON.parse(r),e)}catch{e.add(r)}else S(i)&&e.add(r);return e}function p(t,n,e=!1){if(typeof t=="string"){e&&n.add(t);return}if(Array.isArray(t)){for(let i of t)p(i,n,e);return}if(!(t===null||typeof t!="object"))for(let[i,r]of Object.entries(t)){let o=e||S(i)||/^(?:env|environment|environmentVariables)$/i.test(i);p(r,n,o)}}function m(t,n){if(typeof t=="string")n.add(t);else if(Array.isArray(t))for(let e of t)m(e,n);else if(t!==null&&typeof t=="object")for(let e of Object.values(t))m(e,n)}function S(t){return/(?:authorization|api[-_]?key|password|secret|token|value)/i.test(t)}function f(t,n){if(typeof t=="string"){let e=t;for(let i of n)i!==""&&(e=e.replaceAll(i,"[REDACTED]"));return e}return Array.isArray(t)?t.map(e=>f(e,n)):t===null||typeof t!="object"?t:Object.fromEntries(Object.entries(t).map(([e,i])=>[e,f(i,n)]))}export{j as a,R as b,I as c,T as d,E as e,k as f,c as g,U as h};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as f,b as l,d as m}from"./chunk-OMRWADFK.js";import{existsSync as V}from"fs";import{join as _}from"path";import{fileURLToPath as I}from"url";var h=["vite.config.ts","vite.config.js","vite.config.mts","vite.config.cjs"];function j(t){for(let e of h){let i=_(t,e);if(V(i))return i}return!1}function C(){return I(import.meta.resolve("tailwindcss/index.css"))}import{join as s}from"path";var E=".mcp-use",D="manifest.json";function N(t){let e=s(t,E),i=s(e,"build");return{projectRoot:t,workspace:e,build:i,generated:s(e,"generated"),cache:s(e,"cache"),state:s(e,"state"),cloud:s(e,"cloud"),buildManifest:s(i,D),tunnel:s(e,"state","tunnel.json")}}import{existsSync as g,readdirSync as x}from"fs";import{isAbsolute as P,join as R,resolve as y}from"path";import S from"@vitejs/plugin-react";var T="views",a="virtual:mcp-use/views/",c=`\0${a}`;function d(t,e){let i=e??T;return P(i)?i:y(t,i)}function J(t,e){let i=d(t,e);if(!g(i))return[];let n=[];for(let r of x(i,{withFileTypes:!0})){if(!r.isDirectory())continue;let o=R(i,r.name,"view.tsx");g(o)&&n.push({name:r.name,entryPath:o})}return n.sort((r,o)=>r.name.localeCompare(o.name)),n}function G(t){return`${a}${t}`}function A(t){return`/@id/__x00__${a}${t}`}function K(t,e,i){let n=d(e,i);return t===n||t.startsWith(`${n}/`)}function Z(t){let e={};for(let i of t)e[i.name]={kind:"external",entry:A(i.name),css:[],scripts:["/@vite/client"]};return e}async function q(t,e,i){let{createServer:n}=await import("vite");return n({root:t,configFile:i,envDir:!1,logLevel:"warn",cacheDir:e,resolve:{tsconfigPaths:!0,alias:f(t)},oxc:{jsx:{runtime:"automatic"}},plugins:[m(t),S()],server:{middlewareMode:!0,hmr:!1,ws:!1},ssr:{...l(t)}})}var u="virtual:mcp-use/tailwind.css",v=`\0${u}`,p="virtual:mcp-use/csp-runtime",w=`\0${p}`,M=["react","react-dom"],b={exclude:["mcp-use/react"],include:["react","react-dom","react-dom/client"]};function Y(t){return{name:"mcp-use-views",config(){return{resolve:{dedupe:M},optimizeDeps:b}},applyToEnvironment(e){return e.name==="client"},resolveId(e){if(e===p)return w;if(e===u)return v;if(e.startsWith(a))return`\0${e}`},load(e){if(e===w)return["globalThis.__zod_globalConfig ??= {};","globalThis.__zod_globalConfig.jitless = true;",""].join(`
|
|
2
|
+
`);if(e===v)return['@import "tailwindcss";',"@custom-variant dark (&:where(.dark, .dark *, [data-theme=dark], [data-theme=dark] *));"].join(`
|
|
3
|
+
`);if(!e.startsWith(c))return;let i=e.slice(c.length),n=t.getViews().find(o=>o.name===i);if(n===void 0)return;let r=[];return r.push(`import ${JSON.stringify(p)};`),t.dev?.reactRefresh===!0&&r.push('import "@vitejs/plugin-react/preamble";'),r.push(`import ${JSON.stringify(u)};`),r.push('import { bootstrapView } from "mcp-use/react";',`import * as viewModule from ${JSON.stringify(n.entryPath)};`,"bootstrapView(viewModule);"),t.dev!==void 0&&r.push("if (import.meta.hot) {"," import.meta.hot.accept();","}"),r.push(""),r.join(`
|
|
4
|
+
`)}}}export{j as a,C as b,N as c,d,J as e,G as f,K as g,Z as h,q as i,M as j,b as k,Y as l};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{existsSync as s}from"fs";import{isAbsolute as
|
|
1
|
+
import{existsSync as s}from"fs";import{isAbsolute as f,join as p,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=f(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=p(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
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 +1 @@
|
|
|
1
|
-
import Y from"http";import{mkdir as D,readFile as H,writeFile as X}from"fs/promises";import{dirname as z}from"path";var J="https://api.tunnel.mcp-use.run",Q=3e4,$=64*1024,w=256*1024,x=1024*1024,O=100,j=25e3,W=5,G=1,V=2,L=3,Z=4,ee=5,te=6,T=36;function K(){return process.env.MCP_USE_TUNNEL_API??J}var v=1e3,F=3e4,ne=new Set(["connection","keep-alive","proxy-authenticate","proxy-authorization","proxy-connection","te","trailer","transfer-encoding","upgrade"]);function M(s){return new Promise(i=>{setTimeout(i,s)})}function C(s){process.env.MCP_USE_TUNNEL_DEBUG==="1"&&console.log(`[mcp-use] ${s}`)}function B(s){return typeof s=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(s)}function U(s,i=!1){let u={};for(let[o,d]of Object.entries(s)){let l=o.toLowerCase();d===void 0||ne.has(l)||i&&(l==="host"||l==="content-length")||(u[l]=typeof d=="number"?String(d):d)}return u}function P(s,i,u){let o=new TextEncoder().encode(i);if(o.byteLength!==T)throw new Error("Invalid tunnel request identifier");let d=new Uint8Array(1+T+u.byteLength);return d[0]=s,d.set(o,1),d.set(u,1+T),d}function re(s){let i=Buffer.from(s);if(i.byteLength<1+T||i.byteLength>1+T+w)return;let u=i.subarray(1,1+T).toString("ascii");if(B(u))return{kind:i[0]??0,requestId:u,body:i.subarray(1+T)}}function N(s){let i=new Uint8Array(s.byteLength);return i.set(s),i}async function oe(s){for(;s.readyState===WebSocket.OPEN&&s.bufferedAmount>x;)await M(5);if(s.readyState!==WebSocket.OPEN)throw new Error("Tunnel socket closed while applying backpressure")}function b(s,i){let u=JSON.stringify(i);if(Buffer.byteLength(u)>$)throw new Error("Tunnel control message exceeds 64 KiB");s.send(u)}async function se(s){let i=await s.text(),u={};try{u=JSON.parse(i)}catch{}if(!s.ok)throw new Error(u.error??`Tunnel relay returned HTTP ${s.status}`);return u}async function ie(s){let i=await fetch(new URL("/api/tunnels/request",K()),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s===void 0?{}:{subdomain:s}),signal:AbortSignal.timeout(1e4)}),u=await se(i);if(typeof u.tunnel_id!="string"||typeof u.token!="string"||typeof u.connect_url!="string"||typeof u.public_url!="string")throw new Error("Tunnel relay returned an invalid reservation");return u}async function A(s){if(s.token!==void 0)try{await fetch(new URL(`/api/tunnels/${encodeURIComponent(s.subdomain)}`,K()),{method:"DELETE",headers:{authorization:`Bearer ${s.token}`},signal:AbortSignal.timeout(2e3)})}catch{}}async function ae(s,i,u){let o=new WebSocket(i.connect_url);o.binaryType="arraybuffer";let d=new Map,l=new Map,f=!1,g=!1,y=!1,_,q=(n,e)=>{let t=d.get(n);if(t!==void 0&&(d.delete(n),t.request.destroy(),t.response?.destroy(),o.readyState===WebSocket.OPEN))try{b(o,{type:"response-error",requestId:n,message:e instanceof Error?e.message:String(e)})}catch{}},I=n=>{if(!B(n.requestId)||d.has(n.requestId)||d.size>=O||typeof n.method!="string"||typeof n.path!="string"||!n.path.startsWith("/")){o.close(1008,"Invalid request");return}let e=U(n.headers,!0),t=n.headers["x-forwarded-host"];typeof t=="string"&&(e.host=t);let r=Y.request({hostname:"127.0.0.1",port:s,method:n.method,path:n.path,headers:e}),c={request:r};d.set(n.requestId,c),r.on("response",a=>{c.response=a,(async()=>{b(o,{type:"response-start",requestId:n.requestId,status:a.statusCode??502,headers:U(a.headers)});for await(let S of a){let p=Buffer.from(S);for(let R=0;R<p.byteLength;R+=w)await oe(o),o.send(P(V,n.requestId,p.subarray(R,R+w)))}d.has(n.requestId)&&(d.delete(n.requestId),b(o,{type:"response-end",requestId:n.requestId}))})().catch(S=>{q(n.requestId,S)})}),r.on("error",a=>{q(n.requestId,a)})},E=(n,e=1e3,t="")=>{let r=l.get(n);if(r!==void 0){l.delete(n);try{r.socket.close(e,t.slice(0,123))}catch{r.socket.close()}}},m=(n,e,t)=>{let r=l.get(n);if(r!==void 0){if(!r.open){if(r.queuedBytes+t.byteLength>x){E(n,1009,"WebSocket buffer limit reached"),b(o,{type:"websocket-error",requestId:n,message:"WebSocket buffer limit reached"});return}r.queue.push({kind:e,body:t}),r.queuedBytes+=t.byteLength;return}r.socket.send(e===L?t.toString("utf8"):N(t))}},h=n=>{if(!B(n.requestId)||l.has(n.requestId)||d.size+l.size>=O||typeof n.path!="string"||!n.path.startsWith("/")||n.protocols!==void 0&&(!Array.isArray(n.protocols)||n.protocols.some(c=>typeof c!="string"||!/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(c)))){o.close(1008,"Invalid WebSocket request");return}let e=new URL(n.path,`ws://127.0.0.1:${s}`);if(e.origin!==`ws://127.0.0.1:${s}`){o.close(1008,"Invalid WebSocket path");return}let t=new WebSocket(e,n.protocols??[]);t.binaryType="arraybuffer";let r={socket:t,open:!1,queue:[],queuedBytes:0};l.set(n.requestId,r),t.addEventListener("open",()=>{if(l.get(n.requestId)===r){r.open=!0;for(let c of r.queue)t.send(c.kind===L?c.body.toString("utf8"):N(c.body));r.queue=[],r.queuedBytes=0,b(o,{type:"websocket-ready",requestId:n.requestId,...t.protocol!==""&&{protocol:t.protocol}})}}),t.addEventListener("message",c=>{if(o.readyState===WebSocket.OPEN){if(typeof c.data=="string"){let a=Buffer.from(c.data);if(a.byteLength>w){E(n.requestId,1009,"WebSocket message too large");return}o.send(P(ee,n.requestId,a))}else if(c.data instanceof ArrayBuffer){let a=Buffer.from(c.data);if(a.byteLength>w){E(n.requestId,1009,"WebSocket message too large");return}o.send(P(te,n.requestId,a))}}}),t.addEventListener("close",c=>{l.get(n.requestId)===r&&(l.delete(n.requestId),o.readyState===WebSocket.OPEN&&b(o,{type:"websocket-close",requestId:n.requestId,code:c.code,reason:c.reason}))}),t.addEventListener("error",()=>{l.get(n.requestId)===r&&o.readyState===WebSocket.OPEN&&b(o,{type:"websocket-error",requestId:n.requestId,message:"Local WebSocket connection failed"})})},k=new Promise((n,e)=>{let t=setTimeout(()=>{o.close(),e(new Error("Tunnel setup timed out"))},Q);o.addEventListener("open",()=>{b(o,{type:"authenticate",token:i.token})}),o.addEventListener("message",r=>{if(r.data instanceof ArrayBuffer){let p=re(r.data);if(p===void 0){o.close(1003,"Invalid body frame");return}p.kind===G?d.get(p.requestId)?.request.write(p.body):p.kind===L||p.kind===Z?m(p.requestId,p.kind,p.body):o.close(1003,"Invalid body frame");return}if(typeof r.data!="string"){o.close(1003,"Invalid message");return}let c=r.data;if(Buffer.byteLength(c)>$){o.close(1009,"Control message too large");return}let a;try{a=JSON.parse(c)}catch{o.close(1003,"Invalid JSON");return}if(a.type==="auth-required")return;if(a.type==="ready"){f||(f=!0,clearTimeout(t),a.keepalive===!0&&(_=setInterval(()=>{if(o.readyState===WebSocket.OPEN){if(y){o.close(1011,"Tunnel keepalive timed out");return}y=!0,b(o,{type:"ping"})}},j),_.unref()),n());return}if(a.type==="pong"){y=!1;return}if(a.type==="request-start"){I(a);return}if(a.type==="websocket-open"){h(a);return}if(!B(a.requestId)){o.close(1008,"Invalid request identifier");return}let S=d.get(a.requestId);if(a.type==="request-end")S?.request.end();else if(a.type==="cancel"&&S!==void 0)d.delete(a.requestId),S.request.destroy(),S.response?.destroy();else if(a.type==="websocket-close"){let p=Number.isInteger(a.code)&&(a.code??0)>=1e3&&(a.code??0)<=4999?a.code:1e3;E(a.requestId,p,a.reason??"")}else o.close(1003,"Unsupported message")}),o.addEventListener("error",()=>{f||(clearTimeout(t),e(new Error("Tunnel WebSocket connection failed")))},{once:!0})});return o.addEventListener("close",n=>{_!==void 0&&clearInterval(_);for(let[e,t]of d)d.delete(e),t.request.destroy(),t.response?.destroy();for(let e of l.keys())E(e,1011,"Tunnel disconnected");!g&&f&&u(n)}),await k,Object.defineProperty(o,"__mcpUseIntentionalClose",{value:()=>{g=!0}}),{url:i.public_url,subdomain:i.tunnel_id,token:i.token,socket:o,reservation:i}}function ue(s){let i=s.__mcpUseIntentionalClose;i?.()}function fe(s){let i,u=null,o,d=!1,l,f=v,g,y=0,_=async()=>{try{let e=await H(s,"utf8"),t=JSON.parse(e);return typeof t.subdomain=="string"?{subdomain:t.subdomain,...typeof t.token=="string"&&{token:t.token},...typeof t.connect_url=="string"&&{connect_url:t.connect_url},...typeof t.public_url=="string"&&{public_url:t.public_url}}:void 0}catch{return}},q=async e=>{try{await D(z(s),{recursive:!0}),await X(s,JSON.stringify(e,null,2),{encoding:"utf8",mode:384})}catch(t){console.warn(`[mcp-use] failed to save tunnel state: ${t instanceof Error?t.message:String(t)}`)}},I=()=>{},E=e=>e?.token!==void 0&&e.connect_url!==void 0&&e.public_url!==void 0?{tunnel_id:e.subdomain,token:e.token,connect_url:e.connect_url,public_url:e.public_url}:void 0,m=e=>({subdomain:e.tunnel_id,token:e.token,connect_url:e.connect_url,public_url:e.public_url}),h=async e=>{await q(m(e.reservation))},k=async(e,t)=>ae(e,t,r=>{i=void 0,u=null;let c=r.code===1008||r.reason==="Tunnel expired"||r.reason==="Tunnel deleted";g=c?void 0:t,C(`tunnel connection closed (${r.code}${r.reason===""?"":`: ${r.reason}`}); ${c?"allocating a replacement":"reattaching"}`),I()}),n=async(e,t)=>{console.log(`[mcp-use] starting tunnel for port ${e}\u2026`);let r=await ie(t);return k(e,r)};return I=()=>{d||o===void 0||u!==null||l!==void 0||(l=(async()=>{for(;!d&&o!==void 0&&u===null;)try{if(g!==void 0&&y<W)try{let r=await k(o,g);i=r,u=r.url,y=0,f=v,await h(r),C("tunnel reattached");return}catch(r){if(y+=1,C(`tunnel reattach attempt ${y} failed: ${r instanceof Error?r.message:String(r)}`),y<W){await M(f),f=Math.min(f*2,F);continue}}let e=await _();e!==void 0&&await A(e),g=void 0,y=0;let t;try{t=await n(o,e?.subdomain)}catch(r){if(e?.subdomain===void 0)throw r;console.log(`[mcp-use] tunnel "${e.subdomain}" unavailable, requesting a new one\u2026`),t=await n(o)}i=t,u=t.url,await h(t),f=v;return}catch(e){console.warn(`[mcp-use] tunnel restart failed: ${e instanceof Error?e.message:String(e)}`),await M(f),f=Math.min(f*2,F)}})().finally(()=>{l=void 0}))},{status(){return{url:u}},async start(e){if(d=!1,o=e,i!==void 0&&u!==null)return{url:u,subdomain:i.subdomain};let t=await _(),r,c=E(t);if(c!==void 0)try{r=await k(e,c)}catch{await A(m(c)),r=await n(e,c.tunnel_id).catch(async()=>(console.log(`[mcp-use] tunnel "${c.tunnel_id}" unavailable, requesting a new one\u2026`),n(e)))}else{t!==void 0&&await A(t);try{r=await n(e,t?.subdomain)}catch(a){if(t?.subdomain===void 0)throw a;console.log(`[mcp-use] tunnel "${t.subdomain}" unavailable, requesting a new one\u2026`),r=await n(e)}}return i=r,u=r.url,g=r.reservation,y=0,await h(r),{url:r.url,subdomain:r.subdomain}},async stop(){d=!0,l!==void 0&&await l;let e=i,t=e?.reservation??g;i=void 0,u=null,o=void 0,f=v,g=void 0,y=0,t!==void 0&&await A(m(t)),e!==void 0&&(ue(e.socket),e.socket.close(1e3,"Client shutdown"))}}}export{K as a,fe as b};
|
|
1
|
+
import Y from"http";import{mkdir as D,readFile as H,writeFile as X}from"fs/promises";import{dirname as z}from"path";var J="https://api.tunnel.mcp-use.run",Q=3e4,$=64*1024,w=256*1024,K=1024*1024,O=100,j=25e3,W=5,G=1,V=2,L=3,Z=4,ee=5,te=6,T=36;function x(){return process.env.MCP_USE_TUNNEL_API??J}var v=1e3,F=3e4,ne=new Set(["connection","keep-alive","proxy-authenticate","proxy-authorization","proxy-connection","te","trailer","transfer-encoding","upgrade"]);function M(s){return new Promise(i=>{setTimeout(i,s)})}function C(s){process.env.MCP_USE_TUNNEL_DEBUG==="1"&&console.log(`[mcp-use] ${s}`)}function B(s){return typeof s=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(s)}function U(s,i=!1){let u={};for(let[o,d]of Object.entries(s)){let l=o.toLowerCase();d===void 0||ne.has(l)||i&&(l==="host"||l==="content-length")||(u[l]=typeof d=="number"?String(d):d)}return u}function P(s,i,u){let o=new TextEncoder().encode(i);if(o.byteLength!==T)throw new Error("Invalid tunnel request identifier");let d=new Uint8Array(1+T+u.byteLength);return d[0]=s,d.set(o,1),d.set(u,1+T),d}function re(s){let i=Buffer.from(s);if(i.byteLength<1+T||i.byteLength>1+T+w)return;let u=i.subarray(1,1+T).toString("ascii");if(B(u))return{kind:i[0]??0,requestId:u,body:i.subarray(1+T)}}function N(s){let i=new Uint8Array(s.byteLength);return i.set(s),i}async function oe(s){for(;s.readyState===WebSocket.OPEN&&s.bufferedAmount>K;)await M(5);if(s.readyState!==WebSocket.OPEN)throw new Error("Tunnel socket closed while applying backpressure")}function b(s,i){let u=JSON.stringify(i);if(Buffer.byteLength(u)>$)throw new Error("Tunnel control message exceeds 64 KiB");s.send(u)}async function se(s){let i=await s.text(),u={};try{u=JSON.parse(i)}catch{}if(!s.ok)throw new Error(u.error??`Tunnel relay returned HTTP ${s.status}`);return u}async function ie(s){let i=await fetch(new URL("/api/tunnels/request",x()),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s===void 0?{}:{subdomain:s}),signal:AbortSignal.timeout(1e4)}),u=await se(i);if(typeof u.tunnel_id!="string"||typeof u.token!="string"||typeof u.connect_url!="string"||typeof u.public_url!="string")throw new Error("Tunnel relay returned an invalid reservation");return u}async function A(s){if(s.token!==void 0)try{await fetch(new URL(`/api/tunnels/${encodeURIComponent(s.subdomain)}`,x()),{method:"DELETE",headers:{authorization:`Bearer ${s.token}`},signal:AbortSignal.timeout(2e3)})}catch{}}async function ae(s,i,u){let o=new WebSocket(i.connect_url);o.binaryType="arraybuffer";let d=new Map,l=new Map,f=!1,g=!1,y=!1,_,q=(n,e)=>{let t=d.get(n);if(t!==void 0&&(d.delete(n),t.request.destroy(),t.response?.destroy(),o.readyState===WebSocket.OPEN))try{b(o,{type:"response-error",requestId:n,message:e instanceof Error?e.message:String(e)})}catch{}},I=n=>{if(!B(n.requestId)||d.has(n.requestId)||d.size>=O||typeof n.method!="string"||typeof n.path!="string"||!n.path.startsWith("/")){o.close(1008,"Invalid request");return}let e=U(n.headers,!0),t=n.headers["x-forwarded-host"];typeof t=="string"&&(e.host=t);let r=Y.request({hostname:"127.0.0.1",port:s,method:n.method,path:n.path,headers:e}),c={request:r};d.set(n.requestId,c),r.on("response",a=>{c.response=a,(async()=>{b(o,{type:"response-start",requestId:n.requestId,status:a.statusCode??502,headers:U(a.headers)});for await(let S of a){let p=Buffer.from(S);for(let R=0;R<p.byteLength;R+=w)await oe(o),o.send(P(V,n.requestId,p.subarray(R,R+w)))}d.has(n.requestId)&&(d.delete(n.requestId),b(o,{type:"response-end",requestId:n.requestId}))})().catch(S=>{q(n.requestId,S)})}),r.on("error",a=>{q(n.requestId,a)})},E=(n,e=1e3,t="")=>{let r=l.get(n);if(r!==void 0){l.delete(n);try{r.socket.close(e,t.slice(0,123))}catch{r.socket.close()}}},m=(n,e,t)=>{let r=l.get(n);if(r!==void 0){if(!r.open){if(r.queuedBytes+t.byteLength>K){E(n,1009,"WebSocket buffer limit reached"),b(o,{type:"websocket-error",requestId:n,message:"WebSocket buffer limit reached"});return}r.queue.push({kind:e,body:t}),r.queuedBytes+=t.byteLength;return}r.socket.send(e===L?t.toString("utf8"):N(t))}},h=n=>{if(!B(n.requestId)||l.has(n.requestId)||d.size+l.size>=O||typeof n.path!="string"||!n.path.startsWith("/")||n.protocols!==void 0&&(!Array.isArray(n.protocols)||n.protocols.some(c=>typeof c!="string"||!/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(c)))){o.close(1008,"Invalid WebSocket request");return}let e=new URL(n.path,`ws://127.0.0.1:${s}`);if(e.origin!==`ws://127.0.0.1:${s}`){o.close(1008,"Invalid WebSocket path");return}let t=new WebSocket(e,n.protocols??[]);t.binaryType="arraybuffer";let r={socket:t,open:!1,queue:[],queuedBytes:0};l.set(n.requestId,r),t.addEventListener("open",()=>{if(l.get(n.requestId)===r){r.open=!0;for(let c of r.queue)t.send(c.kind===L?c.body.toString("utf8"):N(c.body));r.queue=[],r.queuedBytes=0,b(o,{type:"websocket-ready",requestId:n.requestId,...t.protocol!==""&&{protocol:t.protocol}})}}),t.addEventListener("message",c=>{if(o.readyState===WebSocket.OPEN){if(typeof c.data=="string"){let a=Buffer.from(c.data);if(a.byteLength>w){E(n.requestId,1009,"WebSocket message too large");return}o.send(P(ee,n.requestId,a))}else if(c.data instanceof ArrayBuffer){let a=Buffer.from(c.data);if(a.byteLength>w){E(n.requestId,1009,"WebSocket message too large");return}o.send(P(te,n.requestId,a))}}}),t.addEventListener("close",c=>{l.get(n.requestId)===r&&(l.delete(n.requestId),o.readyState===WebSocket.OPEN&&b(o,{type:"websocket-close",requestId:n.requestId,code:c.code,reason:c.reason}))}),t.addEventListener("error",()=>{l.get(n.requestId)===r&&o.readyState===WebSocket.OPEN&&b(o,{type:"websocket-error",requestId:n.requestId,message:"Local WebSocket connection failed"})})},k=new Promise((n,e)=>{let t=setTimeout(()=>{o.close(),e(new Error("Tunnel setup timed out"))},Q);o.addEventListener("open",()=>{b(o,{type:"authenticate",token:i.token})}),o.addEventListener("message",r=>{if(r.data instanceof ArrayBuffer){let p=re(r.data);if(p===void 0){o.close(1003,"Invalid body frame");return}p.kind===G?d.get(p.requestId)?.request.write(p.body):p.kind===L||p.kind===Z?m(p.requestId,p.kind,p.body):o.close(1003,"Invalid body frame");return}if(typeof r.data!="string"){o.close(1003,"Invalid message");return}let c=r.data;if(Buffer.byteLength(c)>$){o.close(1009,"Control message too large");return}let a;try{a=JSON.parse(c)}catch{o.close(1003,"Invalid JSON");return}if(a.type==="auth-required")return;if(a.type==="ready"){f||(f=!0,clearTimeout(t),a.keepalive===!0&&(_=setInterval(()=>{if(o.readyState===WebSocket.OPEN){if(y){o.close(1011,"Tunnel keepalive timed out");return}y=!0,b(o,{type:"ping"})}},j),_.unref()),n());return}if(a.type==="pong"){y=!1;return}if(a.type==="request-start"){I(a);return}if(a.type==="websocket-open"){h(a);return}if(!B(a.requestId)){o.close(1008,"Invalid request identifier");return}let S=d.get(a.requestId);if(a.type==="request-end")S?.request.end();else if(a.type==="cancel"&&S!==void 0)d.delete(a.requestId),S.request.destroy(),S.response?.destroy();else if(a.type==="websocket-close"){let p=Number.isInteger(a.code)&&(a.code??0)>=1e3&&(a.code??0)<=4999?a.code:1e3;E(a.requestId,p,a.reason??"")}else o.close(1003,"Unsupported message")}),o.addEventListener("error",()=>{f||(clearTimeout(t),e(new Error("Tunnel WebSocket connection failed")))},{once:!0})});return o.addEventListener("close",n=>{_!==void 0&&clearInterval(_);for(let[e,t]of d)d.delete(e),t.request.destroy(),t.response?.destroy();for(let e of l.keys())E(e,1011,"Tunnel disconnected");!g&&f&&u(n)}),await k,Object.defineProperty(o,"__mcpUseIntentionalClose",{value:()=>{g=!0}}),{url:i.public_url,subdomain:i.tunnel_id,token:i.token,socket:o,reservation:i}}function ue(s){let i=s.__mcpUseIntentionalClose;i?.()}function fe(s){let i,u=null,o,d=!1,l,f=v,g,y=0,_=async()=>{try{let e=await H(s,"utf8"),t=JSON.parse(e);return typeof t.subdomain=="string"?{subdomain:t.subdomain,...typeof t.token=="string"&&{token:t.token},...typeof t.connect_url=="string"&&{connect_url:t.connect_url},...typeof t.public_url=="string"&&{public_url:t.public_url}}:void 0}catch{return}},q=async e=>{try{await D(z(s),{recursive:!0}),await X(s,JSON.stringify(e,null,2),{encoding:"utf8",mode:384})}catch(t){console.warn(`[mcp-use] failed to save tunnel state: ${t instanceof Error?t.message:String(t)}`)}},I=()=>{},E=e=>e?.token!==void 0&&e.connect_url!==void 0&&e.public_url!==void 0?{tunnel_id:e.subdomain,token:e.token,connect_url:e.connect_url,public_url:e.public_url}:void 0,m=e=>({subdomain:e.tunnel_id,token:e.token,connect_url:e.connect_url,public_url:e.public_url}),h=async e=>{await q(m(e.reservation))},k=async(e,t)=>ae(e,t,r=>{i=void 0,u=null;let c=r.code===1008||r.reason==="Tunnel expired"||r.reason==="Tunnel deleted";g=c?void 0:t,C(`tunnel connection closed (${r.code}${r.reason===""?"":`: ${r.reason}`}); ${c?"allocating a replacement":"reattaching"}`),I()}),n=async(e,t)=>{console.log(`[mcp-use] starting tunnel for port ${e}\u2026`);let r=await ie(t);return k(e,r)};return I=()=>{d||o===void 0||u!==null||l!==void 0||(l=(async()=>{for(;!d&&o!==void 0&&u===null;)try{if(g!==void 0&&y<W)try{let r=await k(o,g);i=r,u=r.url,y=0,f=v,await h(r),C("tunnel reattached");return}catch(r){if(y+=1,C(`tunnel reattach attempt ${y} failed: ${r instanceof Error?r.message:String(r)}`),y<W){await M(f),f=Math.min(f*2,F);continue}}let e=await _();e!==void 0&&await A(e),g=void 0,y=0;let t;try{t=await n(o,e?.subdomain)}catch(r){if(e?.subdomain===void 0)throw r;console.log(`[mcp-use] tunnel "${e.subdomain}" unavailable, requesting a new one\u2026`),t=await n(o)}i=t,u=t.url,await h(t),f=v;return}catch(e){console.warn(`[mcp-use] tunnel restart failed: ${e instanceof Error?e.message:String(e)}`),await M(f),f=Math.min(f*2,F)}})().finally(()=>{l=void 0}))},{status(){return{url:u}},async start(e){if(d=!1,o=e,i!==void 0&&u!==null)return{url:u,subdomain:i.subdomain};let t=await _(),r,c=E(t);if(c!==void 0)try{r=await k(e,c)}catch{await A(m(c)),r=await n(e,c.tunnel_id).catch(async()=>(console.log(`[mcp-use] tunnel "${c.tunnel_id}" unavailable, requesting a new one\u2026`),n(e)))}else{t!==void 0&&await A(t);try{r=await n(e,t?.subdomain)}catch(a){if(t?.subdomain===void 0)throw a;console.log(`[mcp-use] tunnel "${t.subdomain}" unavailable, requesting a new one\u2026`),r=await n(e)}}return i=r,u=r.url,g=r.reservation,y=0,await h(r),{url:r.url,subdomain:r.subdomain}},async stop(){d=!0,l!==void 0&&await l;let e=i,t=e?.reservation??g;i=void 0,u=null,o=void 0,f=v,g=void 0,y=0,t!==void 0&&await A(m(t)),e!==void 0&&(ue(e.socket),e.socket.close(1e3,"Client shutdown"))}}}export{fe as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var d=Object.defineProperty;var e=(c,a)=>{for(var b in a)d(c,b,{get:a[b],enumerable:!0})};export{e as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as l,b as p}from"./chunk-RXKUVCL7.js";import{resolve as u}from"path";var c=Object.getOwnPropertyDescriptor(globalThis,"localStorage");c?.get!==void 0&&c.configurable&&Object.defineProperty(globalThis,"localStorage",{configurable:!0,enumerable:c.enumerable??!1,value:void 0,writable:!0});var s=`mcp-use \u2014 run MCP servers built with mcp-use
|
|
2
2
|
|
|
3
3
|
Usage: mcp-use <command> [options]
|
|
4
4
|
|
|
@@ -84,7 +84,7 @@ Options:
|
|
|
84
84
|
--tunnel Start a public tunnel
|
|
85
85
|
-h, --help Show this help
|
|
86
86
|
|
|
87
|
-
Exit codes: 0 started/help, 2 invalid arguments, 1 startup failure`};async function h(t,e={frameworkVersion:"unknown"}){if(t.length===1&&["--version","-v"].includes(t[0]??""))return console.log(e.frameworkVersion),0;if(t.some(r=>r==="--help"||r==="-h")){let r=t[0];if(r===void 0||r==="--help"||r==="-h")return console.log(s),0;let a=m[r];if(a!==void 0)return console.log(a),0}let o=t[0],i=
|
|
87
|
+
Exit codes: 0 started/help, 2 invalid arguments, 1 startup failure`};async function h(t,e={frameworkVersion:"unknown"}){if(t.length===1&&["--version","-v"].includes(t[0]??""))return console.log(e.frameworkVersion),0;if(t.some(r=>r==="--help"||r==="-h")){let r=t[0];if(r===void 0||r==="--help"||r==="-h")return console.log(s),0;let a=m[r];if(a!==void 0)return console.log(a),0}let o=t[0],i=p(t.slice(1));if(o==="login"||o==="logout"||o==="whoami"){let{runIdentity:r}=await import("./commands/identity.js");return r(o,i)}if(o==="org"){let{runOrganizations:r}=await import("./commands/organizations.js");return r(i)}if(o==="servers"){let{runServers:r}=await import("./commands/servers.js");return r(i)}if(o==="deployments"){let{runDeployments:r}=await import("./commands/deployments.js");return r(i)}if(o==="deploy"){let{runDeploy:r}=await import("./commands/deploy.js");return r(i)}if(o==="client"){let{runClient:r}=await import("./commands/client.js");return r(i)}if(o==="screenshot"){let{runScreenshot:r}=await import("./commands/screenshot.js");return r(i)}let n;try{n=l(t)}catch(r){return console.error(r instanceof Error?r.message:String(r)),2}if(n.version)return console.log(e.frameworkVersion),0;if(n.help)return console.log(s),0;switch(n.command){case"start":return y(n);case"dev":case"build":return w(n.command,n);case"typecheck":return f(n);case void 0:return console.error(s),2;default:return console.error(`Unknown command: ${n.command}
|
|
88
88
|
|
|
89
89
|
${s}`),2}}async function f(t){try{let{runTypecheck:e}=await import("./commands/typecheck.js");return await e({cwd:u(process.cwd(),t.path??"."),...t.entry!==void 0&&{entry:t.entry},...t.mcpDir!==void 0&&{mcpDir:t.mcpDir},...t.passthrough.length>0&&{tscArgs:t.passthrough}})}catch(e){return console.error(d(e)),1}}async function y(t){let e;try{let{runStart:n}=await import("./commands/start.js");e=await n({cwd:u(process.cwd(),t.path??"."),port:t.port,host:t.host,...t.inspector===!0&&{withInspector:!0},tunnel:t.tunnel})}catch(n){return console.error(n instanceof Error?n.message:String(n)),1}console.log(`mcp-use server running at ${e.url}`),t.inspector===!0&&console.log(`mcp-use inspector at ${e.url.replace(/\/$/,"")}/inspector`),e.tunnelUrl!==void 0&&console.log(`mcp-use public MCP URL: ${e.tunnelUrl}`);let o=!1,i=()=>{o||(o=!0,e.close().then(()=>process.exit(0),n=>{console.error(n instanceof Error?n.message:String(n)),process.exit(1)}))};return process.once("SIGINT",i),process.once("SIGTERM",i),0}async function w(t,e){let o={cwd:u(process.cwd(),e.path??"."),...e.entry!==void 0&&{entry:e.entry},...e.mcpDir!==void 0&&{mcpDir:e.mcpDir},...e.viewsDir!==void 0&&{viewsDir:e.viewsDir},...e.port!==void 0&&{port:e.port},...e.host!==void 0&&{host:e.host},...e.tunnel&&{tunnel:!0},...!e.open&&{open:!1},...e.inspector===!1&&{inspector:!1},...e.sourceMaps&&{sourceMaps:!0},...e.inline&&{inline:!0}};try{if(t==="dev"){let{runDev:i}=await import("./commands/dev.js");await i(o)}else{let{runBuild:i}=await import("./commands/build.js");await i(o)}return 0}catch(i){return console.error(d(i)),1}}function d(t){let e=t instanceof Error?t.message:String(t);return/tunnel|bore connection/i.test(e)?["[tunnel_connection_timeout] Public tunnel could not establish a connection.",`Cause: ${e}`,"","Retry:"," mcp-use dev --tunnel","","Verify outbound network access and tunnel service status:"," https://local.mcp-use.run"].join(`
|
|
90
90
|
`):e}export{h as a};
|
package/dist/commands/build.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{a as
|
|
2
|
-
`)),
|
|
3
|
-
`)}}return{kind:"external",entry:l.replace(/^\/+/,""),css:
|
|
4
|
-
`);let
|
|
5
|
-
`);let
|
|
1
|
+
import{a as L,b as U,c as O,d as R,e as j,f as I,i as A,l as T}from"../chunk-JRCSP5WH.js";import{a as P,b as S,c as N,d as _}from"../chunk-OMRWADFK.js";import{a as D,b as C}from"../chunk-LUVZUL5C.js";import"../chunk-WOT6VMZA.js";import{randomBytes as z}from"crypto";import{existsSync as q}from"fs";import{cp as te,mkdir as M,rm as ne,writeFile as V}from"fs/promises";import{join as m,relative as y,resolve as se}from"path";import ae from"@tailwindcss/vite";import oe from"@vitejs/plugin-react";import{build as x}from"vite";import{createServerModuleRunner as k}from"vite";var ee="/mcp",F="http://localhost:3000";async function re(e,r){let n=k(e,{hmr:!1,sourcemapInterceptor:"node"}),i=process.env.MCP_URL;try{i===void 0&&(process.env.MCP_URL=F);let t=(await n.import(r)).default;if(t===null||typeof t!="object")throw new Error("The server entry must default-export the MCPServer instance.");return t.basePath??ee}finally{i===void 0?delete process.env.MCP_URL:process.env.MCP_URL=i,await n.close()}}async function J(e,r){return re(e,r)}async function B(e,r,n){let i=k(e,{hmr:!1,sourcemapInterceptor:"node"}),s=process.env.MCP_URL;try{s===void 0&&(process.env.MCP_URL=F);let c=(await i.import(r)).default;if(c===null||typeof c!="object")throw new Error("The server entry must default-export the MCPServer instance.");if(typeof c.__primeViews!="function")throw new Error("The entry's default export does not support __primeViews.");c.__primeViews(n),c.__mount()}finally{s===void 0?delete process.env.MCP_URL:process.env.MCP_URL=s,await i.close()}}function W(e){return e.replace(/\/+$/,"")}function ie(e,r){let n=r.replace(/^\/+/,"");return e==="/"?`/${n}`:`${e}/${n}`}function E(e,r){return`${ie(e,`_mcp-use/views/${r}`)}/`}var w="index.js",ce="entry-wrapper.ts",ue=100*1024*1024;async function Y(e,r){let n=m(e,"public");q(n)&&await te(n,r,{recursive:!0})}async function H(e,r,n){let i=m(e,ce);await M(e,{recursive:!0});let s=JSON.stringify(n);return await V(i,[`import server from ${JSON.stringify(r)};`,'import { registerViews } from "mcp-use";',`server[registerViews](${s});`,"export default server;",""].join(`
|
|
2
|
+
`)),i}function le(){let e=process.env.MCP_ASSETS_URL;if(!(e===void 0||e.trim()===""))try{return W(new URL(e).href.replace(/\/$/,""))}catch{return}}function $(e,r,n,i){let s=e.replace(/^\/+/,"");return`${n}${E(i,r)}${s}`}function de(e,r,n,i){return e.kind!=="external"?e:{...e,entry:$(e.entry,r,n,i),css:e.css.map(s=>$(s,r,n,i)),...e.scripts!==void 0&&{scripts:e.scripts.map(s=>$(s,r,n,i))}}}async function fe(e,r){let n=m(r.viewsOutDir,e.name),i=await x({root:r.cwd,configFile:r.userViteConfig,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:r.cacheDir,resolve:{tsconfigPaths:!0,alias:{tailwindcss:U()}},oxc:{jsx:{runtime:"automatic"}},plugins:[ae(),oe(),T({getViews:()=>[e]})],build:{outDir:n,emptyOutDir:!0,write:!r.inline,target:"es2022",sourcemap:r.inline?!1:r.sourceMaps,minify:!0,cssCodeSplit:!1,chunkSizeWarningLimit:1e3,assetsInlineLimit:ue,rollupOptions:{input:{[e.name]:I(e.name)},output:{format:"es",codeSplitting:!r.inline,entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}}},base:"./"}),s=Array.isArray(i)?i[0]:i;if(s===void 0||!("output"in s))throw new Error(`Client build for view "${e.name}" produced no output.`);let t=s.output,c=Array.isArray(t)?t:Object.values(t),l,p,d,f=[];for(let o of c){if(typeof o!="object"||o===null||!("fileName"in o)||typeof o.fileName!="string")continue;let a=o;a.type==="chunk"&&a.isEntry===!0?(l=a.fileName,d=a.code):a.type==="asset"&&a.fileName.endsWith(".css")&&(p=a.fileName,typeof a.source=="string"?f.push(a.source):a.source instanceof Uint8Array&&f.push(new TextDecoder().decode(a.source)))}if(l===void 0)throw new Error(`Client build produced no entry chunk for view "${e.name}".`);if(r.inline){if(d===void 0)throw new Error(`Client build produced no entry source for view "${e.name}".`);return{kind:"inline",js:d,css:f.join(`
|
|
3
|
+
`)}}return{kind:"external",entry:l.replace(/^\/+/,""),css:p!==void 0?[p.replace(/^\/+/,"")]:[]}}async function me(e){let r=performance.now();N(e.cwd,"production");let n=e.mcpDir===void 0?e.cwd:se(e.cwd,e.mcpDir),i=e.entry===void 0?D(n):D(e.cwd,e.entry),s=await C(e.cwd,i);(s==="created"||s==="updated")&&console.log(`[mcp-use] ${s} mcp-env.d.ts`);let t=O(e.cwd),c=e.viewsDir??(e.mcpDir===void 0?void 0:m(e.mcpDir,"views"));q(R(e.cwd,c))||console.log("[mcp-use] views directory not configured.");let l=j(e.cwd,c),p=L(e.cwd),d=e.sourceMaps===!0,f=e.inline===!0,o;if(l.length===0){o??=await A(e.cwd,t.cache,!1);try{await B(o.environments.ssr,i,{});let Z=await H(t.cache,i,{});await x({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:t.cache,resolve:{tsconfigPaths:!0,alias:P(e.cwd)},plugins:[_(e.cwd)],build:{ssr:Z,outDir:t.build,emptyOutDir:!0,target:"node22",sourcemap:d,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:w}}},ssr:{...S(e.cwd),target:"node"}})}finally{await o?.close()}await Y(e.cwd,m(t.build,"views/public"));let u={buildId:z(8).toString("hex"),entryPoint:w,createdAt:new Date().toISOString(),views:{}};await M(t.build,{recursive:!0}),await V(t.buildManifest,`${JSON.stringify(u,null,2)}
|
|
4
|
+
`);let g=Math.round(performance.now()-r);console.log(`[mcp-use] built ${y(e.cwd,i)} \u2192 ${y(e.cwd,t.build)}/${w} (${g}ms)`);return}await ne(t.build,{recursive:!0,force:!0});let v=m(t.build,"views");await M(v,{recursive:!0}),o??=await A(e.cwd,t.cache,!1);let a,h={},b=le();try{a=await J(o.environments.ssr,i);for(let u of l){let g=await fe(u,{cwd:e.cwd,cacheDir:t.cache,viewsOutDir:v,userViteConfig:p,sourceMaps:d,inline:f});b!==void 0&&!f&&(g=de(g,u.name,b,a)),h[u.name]=g}if(b!==void 0&&!f){let u=`${b}${E(a,"<view-name>")}`;console.log(`[mcp-use] MCP_ASSETS_URL set \u2014 publish ${y(e.cwd,v)}/ at ${u}`),a!=="/mcp"&&console.log(`[mcp-use] CDN manifest uses basePath ${a} from server entry`)}await Y(e.cwd,m(v,"public")),await B(o.environments.ssr,i,h)}finally{await o.close()}let G=await H(t.cache,i,h);await x({root:e.cwd,configFile:!1,envDir:!1,publicDir:!1,logLevel:"warn",cacheDir:t.cache,resolve:{tsconfigPaths:!0,alias:P(e.cwd)},oxc:{jsx:{runtime:"automatic"}},plugins:[_(e.cwd)],build:{ssr:G,outDir:t.build,emptyOutDir:!1,target:"node22",sourcemap:d,minify:!1,rollupOptions:{output:{format:"es",entryFileNames:w}}},ssr:{...S(e.cwd),target:"node"}});let K={buildId:z(8).toString("hex"),entryPoint:w,createdAt:new Date().toISOString(),views:h};await M(t.build,{recursive:!0}),await V(t.buildManifest,`${JSON.stringify(K,null,2)}
|
|
5
|
+
`);let Q=Math.round(performance.now()-r),X=l.map(u=>u.name).join(", ");console.log(`[mcp-use] built ${y(e.cwd,i)} + views (${X}) \u2192 ${y(e.cwd,t.build)}/${w} (${Q}ms)`)}export{me as runBuild};
|
package/dist/commands/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"../chunk-
|
|
1
|
+
import{a,b,c,d}from"../chunk-F22D552R.js";import"../chunk-DODFSHJ5.js";import"../chunk-S3WHXP7I.js";import"../chunk-WOT6VMZA.js";export{c as openDirectConnection,b as openSavedConnection,d as parseMcpArguments,a as runClient};
|
package/dist/commands/deploy.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as N,h as K}from"../chunk-
|
|
1
|
+
import{a as N,h as K}from"../chunk-JHCVAC2M.js";import{a as h,b as p,c as v,d as M,e as J,f as F,g as V,h as Y,i as E,j as W,k as U}from"../chunk-DODFSHJ5.js";import"../chunk-S3WHXP7I.js";import"../chunk-WOT6VMZA.js";import{execFile as Se}from"child_process";import{createReadStream as Ce}from"fs";import{appendFile as re,lstat as Ie,opendir as je,readFile as T,writeFile as $e}from"fs/promises";import{basename as se,isAbsolute as Z,join as k,relative as _e,resolve as ae}from"path";import{createInterface as ce}from"readline/promises";import{parseArgs as Re,promisify as Ge}from"util";import{createGzip as Ee}from"zlib";var de=Ge(Se),X=80*1024*1024,Ae=new Set([".git","node_modules","dist","build",".next",".turbo",".vercel",".cache",".parcel-cache",".pytest_cache",".ruff_cache",".mypy_cache","__pycache__",".venv","venv","coverage",".nyc_output",".output","out","target",".mcp-use"]),De=`Deploy an MCP server to Manufact Cloud.
|
|
2
2
|
|
|
3
3
|
Usage:
|
|
4
4
|
mcp-use deploy [path] [options]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as m}from"../chunk-
|
|
1
|
+
import{h as m}from"../chunk-JHCVAC2M.js";import{a as u,d as h,e as a,f as w,g as b}from"../chunk-DODFSHJ5.js";import"../chunk-S3WHXP7I.js";import"../chunk-WOT6VMZA.js";import{parseArgs as E}from"util";var A=`Usage: mcp-use deployments <command> [options]
|
|
2
2
|
|
|
3
3
|
Manage cloud deployments and logs.
|
|
4
4
|
|