mcp-use 2.8.0 → 2.8.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +1 -1
- package/dist/index-node.js +2 -2
- package/dist/index.js +7 -7
- package/dist/internal/usage.js +1 -1
- package/dist/logging.d.ts +5 -3
- package/package.json +3 -3
package/dist/bin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var{main}=await import("@mcp-use/cli");main(process.argv.slice(2),{frameworkVersion:"2.8.0"}).then(code=>{process.exitCode=code},error=>{console.error(error instanceof Error?error.message:String(error)),process.exitCode=1});
|
|
2
|
+
var{main}=await import("@mcp-use/cli");main(process.argv.slice(2),{frameworkVersion:"2.8.1-canary.0"}).then(code=>{process.exitCode=code},error=>{console.error(error instanceof Error?error.message:String(error)),process.exitCode=1});
|
package/dist/index-node.js
CHANGED
|
@@ -765,10 +765,10 @@ a:hover { text-decoration: underline; }
|
|
|
765
765
|
</html>`}var MANUFACT_INSPECTOR_ORIGIN,LOGO_SVG_PATHS,LINE_INTERSECTION_PATH,init_landing=__esm({"src/landing.ts"(){"use strict";MANUFACT_INSPECTOR_ORIGIN="https://inspector.manufact.com";LOGO_SVG_PATHS={path1:"M105.933 0C164.437 0.000115889 211.865 47.607 211.865 106.333C211.865 131.828 210.494 158.401 221.068 181.6L228.976 198.947C243.585 230.997 269.266 256.7 301.304 271.336L316.156 278.121C340.143 289.079 367.695 287.335 394.067 287.335C452.572 287.335 500 334.942 500 393.668C500 452.394 452.572 500.001 394.067 500.001C335.563 500.001 288.135 452.394 288.135 393.668C288.135 368.974 289.241 343.275 278.992 320.807L270.587 302.38C255.949 270.289 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.92992e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z",circle:{cx:100.426,cy:399.575,r:100.426},path2:"M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z"},LINE_INTERSECTION_PATH="M10.5 4C10.5 7.31371 7.81371 10 4.5 10H0.5V11H4.5C7.81371 11 10.5 13.6863 10.5 17V21H11.5V17C11.5 13.6863 14.1863 11 17.5 11H21.5V10H17.5C14.1863 10 11.5 7.31371 11.5 4V0H10.5V4Z"}});var landing_handler_exports={};__export(landing_handler_exports,{createLandingPageResponse:()=>createLandingPageResponse});function createLandingPageResponse(request,basePath,config2,branding,tools,prompts,resources){let origin=resolveServerOrigin(request),url2=new URL(basePath,`${origin}/`).href,html2=generateLandingPage({...config2,url:url2,...branding.favicon!==void 0&&{iconUrl:new URL("/favicon.ico",`${origin}/`).href,...branding.faviconMimeType!==void 0&&{iconType:branding.faviconMimeType}},tools:Array.from(tools,entry=>entry.definition),prompts:Array.from(prompts,entry=>entry.definition),resources:Array.from(resources,entry=>entry.definition)});return new Response(request.method==="HEAD"?null:html2,{status:200,headers:{"cache-control":"no-store","content-type":"text/html; charset=utf-8","x-content-type-options":"nosniff"}})}var init_landing_handler=__esm({"src/landing-handler.ts"(){"use strict";init_landing();init_origin()}});var DEFAULT_DISPLAY_MODES=["inline","fullscreen","pip"],VALID_DISPLAY_MODES=new Set(["inline","fullscreen","pip"]);function normalizeViewConfig(config2){let autoResize=config2?.autoResize??!0,modes=config2?.displayModes===void 0?DEFAULT_DISPLAY_MODES:config2.displayModes;if(!Array.isArray(modes)||modes.length===0)throw new Error('viewConfig.displayModes must be a non-empty array that includes "inline"');let seen=new Set,normalizedModes=[];for(let mode of modes){if(typeof mode!="string"||!VALID_DISPLAY_MODES.has(mode))throw new Error(`viewConfig.displayModes contains invalid mode ${JSON.stringify(mode)}; expected "inline", "fullscreen", or "pip"`);if(seen.has(mode))throw new Error(`viewConfig.displayModes contains duplicate mode "${mode}"`);seen.add(mode),normalizedModes.push(mode)}if(!seen.has("inline"))throw new Error('viewConfig.displayModes must include "inline"');let preferred=config2?.preferredDisplayMode;if(preferred!==void 0&&preferred!=="inline"&&preferred!=="fullscreen")throw new Error('viewConfig.preferredDisplayMode must be "inline" or "fullscreen"');if(preferred!==void 0&&!seen.has(preferred))throw new Error("viewConfig.preferredDisplayMode must belong to displayModes");return{...preferred!==void 0&&{preferredDisplayMode:preferred},autoResize,displayModes:normalizedModes}}init_dist();import{createServer as createNodeHttpServer}from"node:http";var GET_MATCH_RESULT=Symbol();var bufferToFormData=(arrayBuffer,contentType)=>new Response(arrayBuffer,{headers:{"Content-Type":contentType.replace(/^[^;]+/,mediaType=>mediaType.toLowerCase())}}).formData();var MAX_NESTED_OBJECTS=1e4,isRawRequest=request=>"headers"in request,parseBody=async(request,options=Object.create(null))=>{let{all=!1,dot=!1}=options,mediaType=(isRawRequest(request)?request.headers:request.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return mediaType==="multipart/form-data"||mediaType==="application/x-www-form-urlencoded"?parseFormData(request,{all,dot}):{}};async function parseFormData(request,options){if(!isRawRequest(request)&&request.bodyCache.formData)return convertFormDataToBodyData(await request.bodyCache.formData,options);let headers=isRawRequest(request)?request.headers:request.raw.headers,arrayBuffer=await request.arrayBuffer(),formDataPromise=bufferToFormData(arrayBuffer,headers.get("Content-Type")||"");isRawRequest(request)||(request.bodyCache.formData=formDataPromise);let formData=await formDataPromise;return formData?convertFormDataToBodyData(formData,options):{}}function convertFormDataToBodyData(formData,options){let form=Object.create(null),nestingState={count:0};return formData.forEach((value,key)=>{options.all||key.endsWith("[]")?handleParsingAllValues(form,key,value):form[key]=value}),options.dot&&Object.entries(form).forEach(([key,value])=>{key.includes(".")&&(handleParsingNestedValues(form,key,value,nestingState),delete form[key])}),form}var handleParsingAllValues=(form,key,value)=>{form[key]!==void 0?Array.isArray(form[key])?form[key].push(value):form[key]=[form[key],value]:key.endsWith("[]")?form[key]=[value]:form[key]=value},handleParsingNestedValues=(form,key,value,state)=>{if(/(?:^|\.)__proto__\./.test(key))return;let nestedForm=form,keys=key.split(".",34);keys.length>33&&throwNestingLimitExceeded(),keys.forEach((key2,index)=>{index===keys.length-1?nestedForm[key2]=value:((!nestedForm[key2]||typeof nestedForm[key2]!="object"||Array.isArray(nestedForm[key2])||nestedForm[key2]instanceof File)&&(state.count++>=MAX_NESTED_OBJECTS&&throwNestingLimitExceeded(),nestedForm[key2]=Object.create(null)),nestedForm=nestedForm[key2])})},throwNestingLimitExceeded=()=>{throw new Error("Nesting limit exceeded")};var splitPath=path=>{let paths=path.split("/");return paths[0]===""&&paths.shift(),paths},splitRoutingPath=routePath=>{let{groups,path}=extractGroupsFromPath(routePath),paths=splitPath(path);return replaceGroupMarks(paths,groups)},extractGroupsFromPath=path=>{let groups=[];return path=path.replace(/\{[^}]+\}/g,(match2,index)=>{let mark=`@${index}`;return groups.push([mark,match2]),mark}),{groups,path}},replaceGroupMarks=(paths,groups)=>{for(let i=groups.length-1;i>=0;i--){let[mark]=groups[i];for(let j=paths.length-1;j>=0;j--)if(paths[j].includes(mark)){paths[j]=paths[j].replace(mark,groups[i][1]);break}}return paths},patternCache={},getPattern=(label,next)=>{if(label==="*")return"*";let match2=label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(match2){let cacheKey=`${label}#${next}`;return patternCache[cacheKey]||(match2[2]?patternCache[cacheKey]=next&&next[0]!==":"&&next[0]!=="*"?[cacheKey,match2[1],new RegExp(`^${match2[2]}(?=/${next})`)]:[label,match2[1],new RegExp(`^${match2[2]}$`)]:patternCache[cacheKey]=[label,match2[1],!0]),patternCache[cacheKey]}return null},tryDecode=(str,decoder)=>{try{return decoder(str)}catch{return str.replace(/(?:%[0-9A-Fa-f]{2})+/g,match2=>{try{return decoder(match2)}catch{return match2}})}},tryDecodeURI=str=>tryDecode(str,decodeURI),getPath=request=>{let url2=request.url,start=url2.indexOf("/",url2.indexOf(":")+4),i=start;for(;i<url2.length;i++){let charCode=url2.charCodeAt(i);if(charCode===37){let queryIndex=url2.indexOf("?",i),hashIndex=url2.indexOf("#",i),end=queryIndex===-1?hashIndex===-1?void 0:hashIndex:hashIndex===-1?queryIndex:Math.min(queryIndex,hashIndex),path=url2.slice(start,end);return tryDecodeURI(path.includes("%25")?path.replace(/%25/g,"%2525"):path)}else if(charCode===63||charCode===35)break}return url2.slice(start,i)};var getPathNoStrict=request=>{let result=getPath(request);return result.length>1&&result.at(-1)==="/"?result.slice(0,-1):result},mergePath=(base,sub,...rest)=>(rest.length&&(sub=mergePath(sub,...rest)),`${base?.[0]==="/"?"":"/"}${base}${sub==="/"?"":`${base?.at(-1)==="/"?"":"/"}${sub?.[0]==="/"?sub.slice(1):sub}`}`),checkOptionalParameter=path=>{if(path.charCodeAt(path.length-1)!==63||!path.includes(":"))return null;let segments=path.split("/"),results=[],basePath="";return segments.forEach(segment=>{if(segment!==""&&!/\:/.test(segment))basePath+="/"+segment;else if(/\:/.test(segment))if(segment.charCodeAt(segment.length-1)===63){results.length===0&&basePath===""?results.push("/"):results.push(basePath);let optionalSegment=segment.slice(0,-1);basePath+="/"+optionalSegment,results.push(basePath)}else basePath+="/"+segment}),results.filter((v,i,a)=>a.indexOf(v)===i)},tryDecodeURIComponent=str=>str.indexOf("%")!==-1?tryDecode(str,decodeURIComponent_):str,_decodeURI=value=>(value.indexOf("+")!==-1&&(value=value.replace(/\+/g," ")),tryDecodeURIComponent(value)),_getQueryParam=(url2,key,multiple)=>{let hashIndex=url2.indexOf("#",8);hashIndex!==-1&&(url2=url2.slice(0,hashIndex));let encoded;if(!multiple&&key&&key.indexOf("%")===-1&&key.indexOf("+")===-1){let keyIndex2=url2.indexOf("?",8);if(keyIndex2===-1)return;for(url2.startsWith(key,keyIndex2+1)||(keyIndex2=url2.indexOf(`&${key}`,keyIndex2+1));keyIndex2!==-1;){let trailingKeyCode=url2.charCodeAt(keyIndex2+key.length+1);if(trailingKeyCode===61){let valueIndex=keyIndex2+key.length+2,endIndex=url2.indexOf("&",valueIndex);return _decodeURI(url2.slice(valueIndex,endIndex===-1?void 0:endIndex))}else if(trailingKeyCode==38||isNaN(trailingKeyCode))return"";keyIndex2=url2.indexOf(`&${key}`,keyIndex2+1)}if(encoded=/[%+]/.test(url2),!encoded)return}let results=Object.create(null);encoded??=/[%+]/.test(url2);let keyIndex=url2.indexOf("?",8);for(;keyIndex!==-1;){let nextKeyIndex=url2.indexOf("&",keyIndex+1),valueIndex=url2.indexOf("=",keyIndex);valueIndex>nextKeyIndex&&nextKeyIndex!==-1&&(valueIndex=-1);let name=url2.slice(keyIndex+1,valueIndex===-1?nextKeyIndex===-1?void 0:nextKeyIndex:valueIndex);if(encoded&&(name=_decodeURI(name)),keyIndex=nextKeyIndex,name==="")continue;let value;valueIndex===-1?value="":(value=url2.slice(valueIndex+1,nextKeyIndex===-1?void 0:nextKeyIndex),encoded&&(value=_decodeURI(value))),multiple?(results[name]&&Array.isArray(results[name])||(results[name]=[]),results[name].push(value)):results[name]??=value}return key?results[key]:results},getQueryParam=_getQueryParam,getQueryParams=(url2,key)=>_getQueryParam(url2,key,!0),decodeURIComponent_=decodeURIComponent;var HonoRequest=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(request,path="/",matchResult=[[]]){this.raw=request,this.path=path,this.#matchResult=matchResult}param(key){return key?this.#getDecodedParam(key):this.#getAllDecodedParams()}#getDecodedParam(key){let paramKey=this.#matchResult[0][this.routeIndex]?.[1][key],param=this.#getParamValue(paramKey);return param&&tryDecodeURIComponent(param)}#getAllDecodedParams(){let decoded={},keys=Object.keys(this.#matchResult[0][this.routeIndex]?.[1]??{});for(let key of keys){let value=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);value!==void 0&&(decoded[key]=tryDecodeURIComponent(value))}return decoded}#getParamValue(paramKey){return this.#matchResult[1]?this.#matchResult[1][paramKey]:paramKey}query(key){return getQueryParam(this.url,key)}queries(key){return getQueryParams(this.url,key)}header(name){if(name)return this.raw.headers.get(name)??void 0;let headerData=Object.create(null);return this.raw.headers.forEach((value,key)=>{headerData[key]=value}),headerData}async parseBody(options){return parseBody(this,options)}#cachedBody=key=>{let{bodyCache,raw:raw2}=this,cachedBody=bodyCache[key];if(cachedBody)return cachedBody;for(let anyCachedKey in bodyCache)return bodyCache[anyCachedKey].then(body=>{anyCachedKey==="json"&&(body=JSON.stringify(body));let contentType=anyCachedKey==="formData"?void 0:raw2.headers.get("content-type");return new Response(body,{headers:contentType?{"Content-Type":contentType}:void 0})[key]()});return bodyCache[key]=raw2[key]()};json(){return this.#cachedBody("text").then(text2=>JSON.parse(text2))}text(){return this.#cachedBody("text")}arrayBuffer(){return this.#cachedBody("arrayBuffer")}bytes(){return this.#cachedBody("arrayBuffer").then(buffer=>new Uint8Array(buffer))}blob(){return this.#cachedBody("blob")}formData(){return this.#cachedBody("formData")}addValidatedData(target,data){(this.#validatedData??={})[target]=data}valid(target){return this.#validatedData?.[target]}get url(){return this.raw.url}get method(){return this.raw.method}get[GET_MATCH_RESULT](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,route]])=>route)}get routePath(){return this.#matchResult[0].map(([[,route]])=>route)[this.routeIndex].path}};var HtmlEscapedCallbackPhase={Stringify:1,BeforeStream:2,Stream:3},raw=(value,callbacks)=>{let escapedString=new String(value);return escapedString.isEscaped=!0,escapedString.callbacks=callbacks,escapedString};var resolveCallback=async(str,phase,preserveCallbacks,context,buffer)=>{typeof str=="object"&&!(str instanceof String)&&(str instanceof Promise||(str=str.toString()),str instanceof Promise&&(str=await str));let callbacks=str.callbacks;if(!callbacks?.length)return Promise.resolve(str);buffer?buffer[0]+=str:buffer=[str];let resStr=Promise.all(callbacks.map(c=>c({phase,buffer,context}))).then(res=>Promise.all(res.filter(Boolean).map(str2=>resolveCallback(str2,phase,!1,context,buffer))).then(()=>buffer[0]));return preserveCallbacks?raw(await resStr,callbacks):resStr};var TEXT_PLAIN="text/plain; charset=UTF-8",setDefaultContentType=(contentType,headers)=>({"Content-Type":contentType,...headers}),createResponseInstance=(body,init)=>new Response(body,init),Context=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(req,options){this.#rawRequest=req,options&&(this.#executionCtx=options.executionCtx,this.env=options.env,this.#notFoundHandler=options.notFoundHandler,this.#path=options.path,this.#matchResult=options.matchResult)}get req(){return this.#req??=new HonoRequest(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&"respondWith"in this.#executionCtx)return this.#executionCtx;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error("This context has no ExecutionContext")}get res(){return this.#res||=createResponseInstance(null,{headers:this.#preparedHeaders??=new Headers})}set res(_res){if(this.#res&&_res){_res=createResponseInstance(_res.body,_res);for(let[k,v]of this.#res.headers.entries())if(k!=="content-type")if(k==="set-cookie"){let cookies=this.#res.headers.getSetCookie();_res.headers.delete("set-cookie");for(let cookie of cookies)_res.headers.append("set-cookie",cookie)}else _res.headers.set(k,v)}this.#res=_res,this.finalized=!0}render=(...args)=>(this.#renderer??=content=>this.html(content),this.#renderer(...args));setLayout=layout=>this.#layout=layout;getLayout=()=>this.#layout;setRenderer=renderer=>{this.#renderer=renderer};header=(name,value,options)=>{this.finalized&&(this.#res=createResponseInstance(this.#res.body,this.#res));let headers=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;value===void 0?headers.delete(name):options?.append?headers.append(name,value):headers.set(name,value)};status=status=>{this.#status=status};set=(key,value)=>{this.#var??=new Map,this.#var.set(key,value)};get=key=>this.#var?this.#var.get(key):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(data,arg,headers){let responseHeaders=this.#res?new Headers(this.#res.headers):this.#preparedHeaders;if(typeof arg=="object"&&arg.headers){responseHeaders??=new Headers;for(let[key,value]of new Headers(arg.headers))key==="set-cookie"?responseHeaders.append(key,value):responseHeaders.set(key,value)}if(headers){if(!responseHeaders){let count=0;for(let k in headers)if(++count>1||typeof headers[k]!="string"){responseHeaders=new Headers;break}}if(responseHeaders)for(let k in headers){let v=headers[k];if(typeof v=="string")responseHeaders.set(k,v);else{responseHeaders.delete(k);for(let v2 of v)responseHeaders.append(k,v2)}}}let status=typeof arg=="number"?arg:arg?.status??this.#status;return createResponseInstance(data,{status,headers:responseHeaders??headers})}newResponse=(...args)=>this.#newResponse(...args);body=(data,arg,headers)=>this.#newResponse(data,arg,headers);text=(text2,arg,headers)=>!this.#preparedHeaders&&!this.#status&&!arg&&!headers&&!this.finalized?new Response(text2):this.#newResponse(text2,arg,setDefaultContentType(TEXT_PLAIN,headers));json=(object5,arg,headers)=>this.#newResponse(JSON.stringify(object5),arg,setDefaultContentType("application/json",headers));html=(html2,arg,headers)=>{let res=html3=>this.#newResponse(html3,arg,setDefaultContentType("text/html; charset=UTF-8",headers));return typeof html2=="object"?resolveCallback(html2,HtmlEscapedCallbackPhase.Stringify,!1,{}).then(res):res(html2)};redirect=(location,status)=>{let locationString=String(location);return this.header("Location",/[^\x00-\xFF]/.test(locationString)?encodeURI(locationString):locationString),this.newResponse(null,status??302)};notFound=()=>(this.#notFoundHandler??=()=>createResponseInstance(),this.#notFoundHandler(this))};var compose=(middleware,onError,onNotFound)=>(context,next)=>{let index=-1;return dispatch(0);async function dispatch(i){if(i<=index)throw new Error("next() called multiple times");index=i;let res,isError=!1,handler;if(middleware[i]?(handler=middleware[i][0][0],context.req.routeIndex=i):handler=i===middleware.length&&next||void 0,handler)try{res=await handler(context,()=>dispatch(i+1))}catch(err){if(err instanceof Error&&onError)context.error=err,res=await onError(err,context),isError=!0;else throw err}else context.finalized===!1&&onNotFound&&(res=await onNotFound(context));return res&&(context.finalized===!1||isError)&&(context.res=res),context}};var METHODS=["get","post","put","delete","options","patch","query"],MESSAGE_MATCHER_IS_ALREADY_BUILT="Can not add a route since the matcher is already built.",UnsupportedPathError=class extends Error{};var COMPOSED_HANDLER="__COMPOSED_HANDLER";var notFoundHandler=c=>c.text("404 Not Found",404),errorHandler=(err,c)=>{if("getResponse"in err){let res=err.getResponse();return c.newResponse(res.body,res)}return console.error(err),c.text("Internal Server Error",500)},Hono=class Hono2{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#path="/";routes=[];constructor(options={}){[...METHODS,"all"].forEach(method=>{this[method]=(args1,...args)=>{let methodName=method.toUpperCase();return typeof args1=="string"?this.#path=args1:this.#addRoute(methodName,this.#path,args1),args.forEach(handler=>{this.#addRoute(methodName,this.#path,handler)}),this}}),this.on=(method,path,...handlers)=>{for(let p of[path].flat()){this.#path=p;for(let m of[method].flat()){let methodName=m.toUpperCase();for(let handler of handlers)this.#addRoute(methodName,this.#path,handler)}}return this},this.use=(arg1,...handlers)=>(typeof arg1=="string"?this.#path=arg1:(this.#path="*",handlers.unshift(arg1)),handlers.forEach(handler=>{this.#addRoute("ALL",this.#path,handler)}),this);let{strict,...optionsWithoutStrict}=options;Object.assign(this,optionsWithoutStrict),this.getPath=strict??!0?options.getPath??getPath:getPathNoStrict}#clone(){let clone2=new Hono2({router:this.router,getPath:this.getPath});return clone2.errorHandler=this.errorHandler,clone2.#notFoundHandler=this.#notFoundHandler,clone2.routes=this.routes,clone2}#notFoundHandler=notFoundHandler;errorHandler=errorHandler;route(path,app){let subApp=this.basePath(path);return app.routes.map(r=>{let handler;app.errorHandler===errorHandler?handler=r.handler:(handler=async(c,next)=>(await compose([],app.errorHandler)(c,()=>r.handler(c,next))).res,handler[COMPOSED_HANDLER]=r.handler),subApp.#addRoute(r.method,r.path,handler,r.basePath)}),this}basePath(path){let subApp=this.#clone();return subApp._basePath=mergePath(this._basePath,path),subApp}onError=handler=>(this.errorHandler=handler,this);notFound=handler=>(this.#notFoundHandler=handler,this);mount(path,applicationHandler,options){let replaceRequest,optionHandler;options&&(typeof options=="function"?optionHandler=options:(optionHandler=options.optionHandler,options.replaceRequest===!1?replaceRequest=request=>request:replaceRequest=options.replaceRequest));let getOptions=optionHandler?c=>{let options2=optionHandler(c);return Array.isArray(options2)?options2:[options2]}:c=>{let executionContext;try{executionContext=c.executionCtx}catch{}return[c.env,executionContext]};replaceRequest||=(()=>{let mergedPath=mergePath(this._basePath,path),pathPrefixLength=mergedPath==="/"?0:mergedPath.length;return request=>{let url2=new URL(request.url);return url2.pathname=this.getPath(request).slice(pathPrefixLength)||"/",new Request(url2,request)}})();let handler=async(c,next)=>{let res=await applicationHandler(replaceRequest(c.req.raw),...getOptions(c));if(res)return res;await next()};return this.#addRoute("ALL",mergePath(path,"*"),handler),this}#addRoute(method,path,handler,baseRoutePath){path=mergePath(this._basePath,path);let r={basePath:baseRoutePath!==void 0?mergePath(this._basePath,baseRoutePath):this._basePath,path,method,handler};this.router.add(method,path,[handler,r]),this.routes.push(r)}#handleError(err,c){if(err instanceof Error)return this.errorHandler(err,c);throw err}#dispatch(request,executionCtx,env2,method){if(method==="HEAD")return(async()=>new Response(null,await this.#dispatch(request,executionCtx,env2,"GET")))();let path=this.getPath(request,{env:env2}),matchResult=this.router.match(method,path),c=new Context(request,{path,matchResult,env:env2,executionCtx,notFoundHandler:this.#notFoundHandler});if(matchResult[0].length===1){let res;try{res=matchResult[0][0][0][0](c,async()=>{c.res=await this.#notFoundHandler(c)})}catch(err){return this.#handleError(err,c)}return res instanceof Promise?res.then(resolved=>resolved||(c.finalized?c.res:this.#notFoundHandler(c))).catch(err=>this.#handleError(err,c)):res??this.#notFoundHandler(c)}let composed=compose(matchResult[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let context=await composed(c);if(!context.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return context.res}catch(err){return this.#handleError(err,c)}})()}fetch=(request,...rest)=>this.#dispatch(request,rest[1],rest[0],request.method);request=(input,requestInit,Env,executionCtx)=>input instanceof Request?this.fetch(requestInit?new Request(input,requestInit):input,Env,executionCtx):(input=input.toString(),this.fetch(new Request(/^https?:\/\//.test(input)?input:`http://localhost${mergePath("/",input)}`,requestInit),Env,executionCtx));fire=()=>{addEventListener("fetch",event=>{event.respondWith(this.#dispatch(event.request,event,void 0,event.request.method))})}};var createNullObject=()=>Object.create(null);var emptyParam=[];function match(method,path){let matchers=this.buildAllMatchers(),match2=((method2,path2)=>{let matcher=matchers[method2]||matchers.ALL,staticMatch=matcher[2][path2];if(staticMatch)return staticMatch;let match3=path2.match(matcher[0]);if(!match3)return[[],emptyParam];let index=match3.indexOf("",1);return[matcher[1][index],match3]});return this.match=match2,match2(method,path)}var LABEL_REG_EXP_STR="[^/]+";var TAIL_WILDCARD_REG_EXP_STR="(?:|/.*)",PATH_ERROR=Symbol(),regExpMetaChars=new Set(".\\+*[^]$()");function compareKey(a,b){return a.length===1?b.length===1?a<b?-1:1:-1:b.length===1?1:a===".*"||a==="(?:|/.*)"?b==="(?:|/.*)"?-1:1:b===".*"||b==="(?:|/.*)"?-1:a==="[^/]+"?1:b==="[^/]+"?-1:a.length===b.length?a<b?-1:1:b.length-a.length}var Node=class Node2{#index;#varIndex;#children=createNullObject();insert(tokens,index,paramMap,context,isStatic){let node=this;for(let i=0,len=tokens.length;i<len;i++){let token=tokens[i],pattern=token.length===1?token==="*"?i===len-1?["","",".*"]:["","",LABEL_REG_EXP_STR]:null:token==="/*"?["","",TAIL_WILDCARD_REG_EXP_STR]:token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),nextNode;if(pattern){let name=pattern[1],regexpStr=pattern[2]||"[^/]+";if(name&&pattern[2]&&(regexpStr===".*"||(regexpStr=regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(regexpStr))||regexpStr.length===1&®ExpMetaChars.has(regexpStr)))throw PATH_ERROR;if(nextNode=node.#children[regexpStr],!nextNode){if(regexpStr!==".*"&®expStr!=="(?:|/.*)"){for(let k in node.#children)if((regexpStr.length>1||k.length>1)&&k!==".*"&&k!=="(?:|/.*)")throw PATH_ERROR}nextNode=node.#children[regexpStr]=new Node2}name!==""&&(nextNode.#varIndex??=context.varIndex++,paramMap.push([name,nextNode.#varIndex]))}else if(nextNode=node.#children[token],!nextNode){for(let k in node.#children)if(k.length>1&&k!==".*"&&k!=="(?:|/.*)")throw PATH_ERROR;nextNode=node.#children[token]=new Node2}node=nextNode}if(node.#index!==void 0)throw PATH_ERROR;node.#index=isStatic?-1:index}buildRegExpStr(){let strList=Object.keys(this.#children).sort(compareKey).map(k=>{let c=this.#children[k],childStr=c.buildRegExpStr();return childStr===""?"":(typeof c.#varIndex=="number"?`(${k})@${c.#varIndex}`:regExpMetaChars.has(k)?`\\${k}`:k)+childStr}).filter(Boolean);return typeof this.#index=="number"&&this.#index!==-1&&strList.unshift(`#${this.#index}`),strList.length===0?"":strList.length===1?strList[0]:"(?:"+strList.join("|")+")"}};var Trie=class{#context={varIndex:0};#root=new Node;#index=0;paths=createNullObject();insert(path,isStatic){if(isStatic){this.#root.insert(path.split(""),0,[],this.#context,!0);return}let paramAssoc=[],groups=[],markedPath=path;for(let i=0;;){let replaced=!1;if(markedPath=markedPath.replace(/\{[^}]+\}/g,m=>{let mark=`@\\${i}`;return groups[i]=[mark,m],i++,replaced=!0,mark}),!replaced)break}let tokens=markedPath.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let i=groups.length-1;i>=0;i--){let[mark]=groups[i];for(let j=tokens.length-1;j>=0;j--)if(tokens[j].indexOf(mark)!==-1){tokens[j]=tokens[j].replace(mark,groups[i][1]);break}}this.#root.insert(tokens,this.#index,paramAssoc,this.#context,!1),this.paths[path]=[this.#index++,paramAssoc]}buildRegExp(){let regexp=this.#root.buildRegExpStr();if(regexp==="")return[/^$/,[],[]];let captureIndex=0,indexReplacementMap=[],paramReplacementMap=[];return regexp=regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g,(_,handlerIndex,paramIndex)=>handlerIndex!==void 0?(indexReplacementMap[++captureIndex]=Number(handlerIndex),"$()"):(paramIndex!==void 0&&(paramReplacementMap[Number(paramIndex)]=++captureIndex),"")),[new RegExp(`^${regexp}`),indexReplacementMap,paramReplacementMap]}};var wildcardRegExpCache=createNullObject();function buildWildcardRegExp(path){return wildcardRegExpCache[path]??=new RegExp(`^${path.replace(/\/:[^/{}]+(?:\{\[\^\/]\+})?(?=[/{]|$)|\/?\*$|([.\\+*[^\]$()?{}|])/g,(match2,metaChar)=>metaChar?`\\${metaChar}`:match2==="/*"?TAIL_WILDCARD_REG_EXP_STR:match2==="*"?".*":`/:${LABEL_REG_EXP_STR}`)}$`)}function findMiddleware(middleware,path){for(let k of Object.keys(middleware).sort((a,b)=>b.length-a.length))if(buildWildcardRegExp(k).test(path))return[...middleware[k]]}var RegExpRouter=class{name="RegExpRouter";#middleware;#routes;#tries;constructor(){this.#middleware={ALL:createNullObject()},this.#routes={ALL:createNullObject()},this.#tries={ALL:new Trie}}#insertPath(method,path){try{this.#tries[method].insert(path,!/\*|\/:/.test(path))}catch(e){throw e===PATH_ERROR?new UnsupportedPathError(path):e}}add(method,path,handler){let middleware=this.#middleware,routes=this.#routes;if(!middleware)throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);if(!middleware[method]){this.#tries[method]=new Trie;for(let handlerMap of[middleware,routes]){handlerMap[method]=createNullObject();for(let p in handlerMap.ALL)handlerMap[method][p]=[...handlerMap.ALL[p]],this.#insertPath(method,p)}}path==="/*"&&(path="*");let methods=method==="ALL"?Object.keys(middleware):[method];if(/\*$/.test(path)){let re=buildWildcardRegExp(path);for(let m of methods)middleware[m][path]||(this.#insertPath(m,path),middleware[m][path]=findMiddleware(middleware[m],path)||findMiddleware(middleware.ALL,path)||[]);for(let handlerMap of[middleware,routes])for(let m of methods)for(let p in handlerMap[m])re.test(p)&&handlerMap[m][p].push([handler,path]);return}let paths=checkOptionalParameter(path)||[path];for(let path2 of paths)for(let m of methods)routes[m][path2]||(this.#insertPath(m,path2),routes[m][path2]=findMiddleware(middleware[m],path2)||findMiddleware(middleware.ALL,path2)||[]),routes[m][path2].push([handler,path2])}match=match;buildAllMatchers(){let matchers=createNullObject();for(let method of Object.keys(this.#routes))matchers[method]=this.#buildMatcher(method);return this.#middleware=this.#routes=this.#tries=void 0,wildcardRegExpCache=createNullObject(),matchers}#buildMatcher(method){let middleware=this.#middleware[method],routes=this.#routes[method],trie=this.#tries[method],staticMap=createNullObject(),handlerData=[],[regexp,indexReplacementMap,paramReplacementMap]=trie.buildRegExp();for(let r of[middleware,routes])for(let path in r){let handlers=r[path],pathData=trie.paths[path];if(!pathData){staticMap[path]=[handlers.map(([h])=>[h,createNullObject()]),emptyParam];continue}handlerData[pathData[0]]=handlers.map(([h,handlerPath])=>[h,trie.paths[handlerPath][1].reduceRight((map,[key],i)=>(map[key]=paramReplacementMap[pathData[1][i][1]],map),createNullObject())])}return[regexp,indexReplacementMap.map(i=>handlerData[i]),staticMap]}};var SmartRouter=class{name="SmartRouter";#routers=[];#routes=[];constructor(init){this.#routers=init.routers}add(method,path,handler){if(!this.#routes)throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);this.#routes.push([method,path,handler])}match(method,path){if(!this.#routes)throw new Error("Fatal error");let routers=this.#routers,routes=this.#routes,len=routers.length,i=0,res;for(;i<len;i++){let router=routers[i];try{for(let i2=0,len2=routes.length;i2<len2;i2++)router.add(...routes[i2]);res=router.match(method,path)}catch(e){if(e instanceof UnsupportedPathError)continue;throw e}this.match=router.match.bind(router),this.#routers=[router],this.#routes=void 0;break}if(i===len)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,res}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw new Error("No active router has been determined yet.");return this.#routers[0]}};var emptyParams=createNullObject(),order=0,Node3=class Node4{#methods=[];#children=createNullObject();#patterns=[];#pattern;#params=emptyParams;insert(method,path,handler){let curNode=this,parts=splitRoutingPath(path),possibleKeys=new Set,i=0;for(let p of parts){let nextP=parts[++i],pattern=getPattern(p,nextP)||(nextP===void 0&&p&&p.indexOf("*")===p.length-1?p:null),isParam=Array.isArray(pattern),key=isParam?pattern[0]:pattern||p,child=curNode.#children[key]||=new Node4;pattern&&!child.#pattern&&(child.#pattern=pattern,curNode.#patterns.push(child)),curNode=child,isParam&&possibleKeys.add(pattern[1])}curNode.#methods.push({[method]:{handler,possibleKeys:[...possibleKeys],score:++order}})}#pushHandlerSets(handlerSets,node,method,nodeParams,params){for(let i=0,len=node.#methods.length;i<len;i++){let m=node.#methods[i],handlerSet=m[method]||m.ALL;if(handlerSet){handlerSet.params=createNullObject(),handlerSets.push(handlerSet);for(let i2=0,len2=handlerSet.possibleKeys.length;i2<len2;i2++){let key=handlerSet.possibleKeys[i2];handlerSet.params[key]=params?.[key]&&!i2?params[key]:nodeParams[key]??params?.[key]}}}}search(method,path){let handlerSets=[];this.#params=emptyParams;let curNodes=[this],parts=splitPath(path),curNodesQueue=[],len=parts.length,partOffsets=null;for(let i=0;i<len;i++){let part=parts[i],isLast=i===len-1,tempNodes=[];for(let j=0,len2=curNodes.length;j<len2;j++){let node=curNodes[j],nextNode=node.#children[part];nextNode&&(nextNode.#params=node.#params,isLast?(nextNode.#children["*"]&&this.#pushHandlerSets(handlerSets,nextNode.#children["*"],method,node.#params),this.#pushHandlerSets(handlerSets,nextNode,method,node.#params)):tempNodes.push(nextNode));for(let child of node.#patterns){let pattern=child.#pattern,params=node.#params===emptyParams?{}:{...node.#params};if(typeof pattern=="string"){(pattern==="*"||part.startsWith(pattern.slice(0,-1)))&&(this.#pushHandlerSets(handlerSets,child,method,node.#params),pattern==="*"&&(child.#params=params,tempNodes.push(child)));continue}let[,name,matcher]=pattern;if(!(!part&&matcher===!0)){if(matcher!==!0){if(!partOffsets){partOffsets=[];let offset=path[0]==="/"?1:0;for(let p=0;p<len;p++)partOffsets[p]=offset,offset+=parts[p].length+1}let restPathString=path.slice(partOffsets[i]),m=matcher.exec(restPathString);if(m){params[name]=m[0],this.#pushHandlerSets(handlerSets,child,method,node.#params,params),m[0].length===restPathString.length&&child.#children["*"]&&this.#pushHandlerSets(handlerSets,child.#children["*"],method,node.#params,params);for(let _ in child.#children){child.#params=params;let componentCount=m[0].match(/\//g)?.length??0;(curNodesQueue[componentCount]||=[]).push(child);break}continue}}(matcher===!0||matcher.test(part))&&(params[name]=part,isLast?(this.#pushHandlerSets(handlerSets,child,method,params,node.#params),child.#children["*"]&&this.#pushHandlerSets(handlerSets,child.#children["*"],method,params,node.#params)):(child.#params=params,tempNodes.push(child)))}}}let shifted=curNodesQueue.shift();curNodes=shifted?tempNodes.concat(shifted):tempNodes}return handlerSets[1]&&handlerSets.sort((a,b)=>a.score-b.score),[handlerSets.map(({handler,params})=>[handler,params])]}};var TrieRouter=class{name="TrieRouter";#node=new Node3;add(method,path,handler){for(let result of checkOptionalParameter(path)||[path])this.#node.insert(method,result,handler)}match(method,path){return this.#node.search(method,path)}};var Hono3=class extends Hono{constructor(options={}){super(options),this.router=options.router??new SmartRouter({routers:[new RegExpRouter,new TrieRouter]})}};init_origin();init_public_route();var FAVICON_CACHE_CONTROL="public, max-age=31536000, immutable",FAVICON_REDIRECT_CACHE_CONTROL="public, max-age=300";function protocolOf(value){return/^([a-z][a-z\d+.-]*):/i.exec(value)?.[1]?.toLowerCase()}function publicAssetPath(basePath,source){return`${basePath==="/"?"":basePath}/_mcp-use/public/${source.split("/").map(segment=>encodeURIComponent(segment)).join("/")}`}function isLocalPublicSource(source){return protocolOf(source)===void 0}function selectFaviconFromIcons(icons){return icons[0]}function assertLocalPublicSource(source,field){if(source.startsWith("/")||source.includes("\\")||source.includes("?")||source.includes("#")||source.split("/").some(segment=>segment===""||segment===".."))throw new TypeError(`${field} must be an http(s) URL, image data URL, or safe path relative to public/`)}function parseDataImage(source,field){let comma=source.indexOf(",");if(comma<0)throw new TypeError(`${field} must be a valid image data URL`);let metadata=source.slice(5,comma),payload=source.slice(comma+1),parts=metadata.split(";"),mimeType=parts[0]?.toLowerCase()??"";if(!mimeType.startsWith("image/"))throw new TypeError(`${field} data URL must use an image MIME type`);try{if(parts.includes("base64")){let binary2=atob(payload);return{mimeType,bytes:Uint8Array.from(binary2,character=>character.charCodeAt(0))}}return{mimeType,bytes:new TextEncoder().encode(decodeURIComponent(payload))}}catch{throw new TypeError(`${field} must be a valid image data URL`)}}function assertBrandingSource(source,field){if(typeof source!="string"||source.length===0)throw new TypeError(`${field} must be a non-empty string`);let protocol=protocolOf(source);if(protocol===void 0)return assertLocalPublicSource(source,field),source;if(protocol==="data")return parseDataImage(source,field),source;if(protocol!=="http"&&protocol!=="https")throw new TypeError(`${field} must be an http(s) URL, image data URL, or safe path relative to public/`);try{new URL(source)}catch{throw new TypeError(`${field} must be a valid absolute http(s) URL`)}return source}function normalizeServerBranding(config2){let websiteUrl;if(config2.websiteUrl!==void 0){if(typeof config2.websiteUrl!="string"||config2.websiteUrl.length===0)throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");let parsed;try{parsed=new URL(config2.websiteUrl)}catch{throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL")}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");websiteUrl=config2.websiteUrl}let icons;if(config2.icons!==void 0){if(!Array.isArray(config2.icons))throw new TypeError("icons must be an array of MCP Icon objects");icons=Object.freeze(config2.icons.map((value,index)=>{if(typeof value!="object"||value===null)throw new TypeError(`icons[${index}] must be an MCP Icon object`);let icon=value,src=assertBrandingSource(icon.src,`icons[${index}].src`),mimeType=icon.mimeType;if(mimeType!==void 0&&(typeof mimeType!="string"||!mimeType.toLowerCase().startsWith("image/")))throw new TypeError(`icons[${index}].mimeType must be an image MIME type when provided`);let sizes=icon.sizes;if(sizes!==void 0&&(!Array.isArray(sizes)||sizes.some(size=>typeof size!="string"||size.length===0)))throw new TypeError(`icons[${index}].sizes must be an array of non-empty strings when provided`);let normalizedSizes=sizes===void 0?void 0:sizes.map(size=>size),theme=icon.theme;if(theme!==void 0&&theme!=="light"&&theme!=="dark")throw new TypeError(`icons[${index}].theme must be "light" or "dark" when provided`);return Object.freeze({src,...mimeType!==void 0&&{mimeType},...normalizedSizes!==void 0&&{sizes:Object.freeze(normalizedSizes)},...theme!==void 0&&{theme}})}))}let explicitFavicon=config2.favicon===void 0?void 0:assertBrandingSource(config2.favicon,"favicon"),inferred=explicitFavicon===void 0?selectFaviconFromIcons(icons??[]):void 0,favicon=explicitFavicon??inferred?.src,faviconMimeType=inferred?.mimeType??icons?.find(icon=>icon.src===explicitFavicon)?.mimeType;return Object.freeze({...favicon!==void 0&&{favicon},...faviconMimeType!==void 0&&{faviconMimeType},...icons!==void 0&&{icons},...websiteUrl!==void 0&&{websiteUrl}})}function resolveImplementationIcons(icons,request,basePath){return icons.map(icon=>({...icon,src:request!==void 0&&isLocalPublicSource(icon.src)?`${resolveAssetsBase(request)}${publicAssetPath(basePath,icon.src)}`:icon.src,...icon.sizes!==void 0&&{sizes:[...icon.sizes]}}))}function hasLocalBrandingAsset(branding){return branding.favicon!==void 0&&isLocalPublicSource(branding.favicon)||branding.icons?.some(icon=>isLocalPublicSource(icon.src))===!0}function createFaviconHandler(branding,options){let source=branding.favicon;if(source!==void 0)return async request=>{if(request.method!=="GET"&&request.method!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{Allow:"GET, HEAD"}});if(new URL(request.url).pathname!=="/favicon.ico")return new Response("Not Found",{status:404});let protocol=protocolOf(source);if(protocol==="http"||protocol==="https")return new Response(null,{status:307,headers:{Location:source,"Cache-Control":FAVICON_REDIRECT_CACHE_CONTROL}});if(protocol==="data"){let data=parseDataImage(source,"favicon");return new Response(request.method==="HEAD"?null:data.bytes.buffer,{status:200,headers:{"Content-Type":branding.faviconMimeType??data.mimeType,"Cache-Control":FAVICON_CACHE_CONTROL,"X-Content-Type-Options":"nosniff"}})}let{join}=await import("path"),publicRoot=options.dev?join(options.projectRoot,"public"):join(options.projectRoot,".mcp-use/build/views/public"),diskPath=await resolvePublicFilePath(publicRoot,source);if(diskPath===null)return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});let response=await servePublicFile(diskPath,{...options.deferCors===!0&&{deferCors:!0},...request.method==="HEAD"&&{head:!0}});return response.headers.set("Cache-Control",FAVICON_CACHE_CONTROL),response.headers.set("X-Content-Type-Options","nosniff"),branding.faviconMimeType!==void 0&&response.headers.set("Content-Type",branding.faviconMimeType),response}}function isOAuthProviderLike(value){if(typeof value!="object"||value===null)return!1;let provider=value;return typeof provider.createTokenVerifier=="function"&&typeof provider.mapAuthInfo=="function"&&typeof provider.oauthMetadata=="object"&&provider.oauthMetadata!==null}function assertServerConfig(config2){if(config2.mixedAuth!==void 0&&typeof config2.mixedAuth!="boolean")throw new TypeError("mixedAuth must be a boolean");if(config2.mixedAuth===!0&&!isOAuthProviderLike(config2.oauth))throw new TypeError("mixedAuth requires an OAuth provider; set oauth on the server");if(config2.basePath!==void 0){if(typeof config2.basePath!="string")throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace");let{basePath}=config2;if(!basePath.startsWith("/")||basePath.includes("?")||basePath.includes("#")||/\s/.test(basePath)||basePath.includes("//")||basePath.length>1&&basePath.endsWith("/"))throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace")}if(config2.port!==void 0&&(typeof config2.port!="number"||!Number.isInteger(config2.port)||config2.port<0||config2.port>65535))throw new TypeError("port must be an integer between 0 and 65535");if(config2.skills!==void 0&&typeof config2.skills!="boolean"){if(typeof config2.skills!="object"||config2.skills===null||Array.isArray(config2.skills))throw new TypeError("skills must be a boolean or configuration object");let directory=config2.skills.directory;if(directory!==void 0&&typeof directory!="string")throw new TypeError("skills.directory must be a string when provided")}}var DEFAULT_LISTEN_HOST="127.0.0.1";function resolveListenHost(explicitHost,configuredHost,env2=process.env){if(explicitHost!==void 0)return explicitHost;let envHost=env2.HOST?.trim();return envHost!==void 0&&envHost!==""?envHost:configuredHost??DEFAULT_LISTEN_HOST}function resolveListenPort(explicitPort,configuredPort,env2=process.env){if(explicitPort!==void 0)return explicitPort;let envPort=parsePort(env2.PORT);return envPort!==void 0?envPort:configuredPort??3e3}function parsePort(value){if(value===void 0||value.trim()==="")return;let port=Number(value);return Number.isInteger(port)&&port>=0&&port<=65535?port:void 0}import{isBufferedResponse}from"#mcp-use-buffered-response";function toNodeHandler(handler,opts){return async(req,res,parsedBody)=>{typeof parsedBody=="function"&&(parsedBody=void 0);let finished=!1,abort=new AbortController;res.on("close",()=>{finished||abort.abort()}),res.destroyed===!0&&abort.abort();let request,response;try{request=await toWebRequest(req,parsedBody,{signal:abort.signal}),response=await handler.fetch(request,{...req.auth!==void 0&&{authInfo:req.auth},...parsedBody!==void 0&&{parsedBody}})}catch(error3){try{opts?.onerror?.(error3 instanceof Error?error3:new Error(String(error3)))}catch{}response=internalServerErrorResponse2(echoableRequestId2(parsedBody))}let headers={},setCookies=response.headers.getSetCookie?.();for(let[name,value]of response.headers){if(name==="set-cookie"&&setCookies?.length){headers[name]=setCookies;continue}headers[name]=value}if(res.writeHead(response.status,headers),response.body===null){finished=!0,res.end();return}if(isBufferedResponse(response,request)){try{let bytes=new Uint8Array(await response.arrayBuffer());finished=!0,res.end(bytes)}catch{finished=!0,res.end()}return}let drainResolve,releaseDrainWait=()=>{drainResolve?.(),drainResolve=void 0},waitForDrain=()=>new Promise(resolve=>{drainResolve=resolve});res.on("drain",releaseDrainWait);let closed=new Promise(resolve=>{abort.signal.addEventListener("abort",()=>resolve(),{once:!0})});try{for await(let chunk of response.body){if(abort.signal.aborted)break;let bytes=chunk instanceof Uint8Array?chunk:new Uint8Array(chunk);res.write(bytes)===!1&&await Promise.race([waitForDrain(),closed])}}catch{}finished=!0,res.end()}}async function toWebRequest(req,parsedBody,options){let method=(req.method??"GET").toUpperCase(),url2=`http://${singleHeaderValue(req.headers.host)??singleHeaderValue(req.headers[":authority"])??"localhost"}${req.url??"/"}`,headers=new Headers;for(let[name,value]of Object.entries(req.headers))if(!(value===void 0||name.startsWith(":")))if(Array.isArray(value))for(let item of value)headers.append(name,item);else headers.set(name,value);let body;if(method!=="GET"&&method!=="HEAD")if(parsedBody===void 0){let decoder=new TextDecoder,collected="";for await(let chunk of req)collected+=typeof chunk=="string"?chunk:decoder.decode(chunk,{stream:!0});collected+=decoder.decode(),collected.length>0&&(body=collected)}else{let serialized=JSON.stringify(parsedBody);headers.delete("content-encoding"),headers.delete("transfer-encoding"),serialized===void 0?headers.delete("content-length"):(body=serialized,headers.set("content-length",String(new TextEncoder().encode(serialized).byteLength)))}return new Request(url2,{method,headers,...options?.signal!==void 0&&{signal:options.signal},...body!==void 0&&{body}})}function singleHeaderValue(value){return Array.isArray(value)?value[0]:value}function echoableRequestId2(body){if(body===null||typeof body!="object"||Array.isArray(body))return null;let{method,id}=body;return typeof method!="string"?null:typeof id=="string"||typeof id=="number"?id:null}function internalServerErrorResponse2(id){return Response.json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id},{status:500})}init_dist();init_fetch_app();init_dist();var UI_EXTENSION_ID="io.modelcontextprotocol/ui",UI_MIME_TYPE="text/html;profile=mcp-app",UI_RESOURCE_URI_PREFIX="ui://views/";var UI_RESOURCE_URI_META_KEY="ui/resourceUri";function viewResourceUri(viewName){return`${UI_RESOURCE_URI_PREFIX}${viewName}.html`}var clientCapabilitiesByRequest=new WeakMap;function stashClientCapabilities(request,capabilities){clientCapabilitiesByRequest.set(request,capabilities)}function extractClientCapabilitiesFromBody(body){if(typeof body!="object"||body===null)return;let params=body.params;if(typeof params!="object"||params===null)return;let meta2=params._meta;if(typeof meta2!="object"||meta2===null)return;let capabilities=meta2[CLIENT_CAPABILITIES_META_KEY];if(!(typeof capabilities!="object"||capabilities===null))return capabilities}function supportsViews(capabilities){let extensions=capabilities?.extensions;if(extensions===void 0)return!1;let uiExtension=extensions[UI_EXTENSION_ID];if(typeof uiExtension!="object"||uiExtension===null)return!1;let mimeTypes=uiExtension.mimeTypes;return Array.isArray(mimeTypes)?mimeTypes.includes(UI_MIME_TYPE):!1}function requireOAuthAuthInfo(authInfo){if(authInfo===void 0||authInfo.extra===void 0||authInfo.expiresAt===void 0)throw new Error("OAuth callback did not receive mapped AuthInfo.extra")}function stringValue(value){return typeof value=="string"?value:void 0}function coordinateValue(value){return typeof value=="string"||typeof value=="number"&&Number.isFinite(value)?value:void 0}function normalizeUserContext(meta2){if(meta2===void 0)return;let locale=stringValue(meta2["openai/locale"])??stringValue(meta2["webplus/i18n"]),userAgent=stringValue(meta2["openai/userAgent"]),subject=stringValue(meta2["openai/subject"]),conversationId=stringValue(meta2["openai/session"]),organizationId=stringValue(meta2["openai/organization"]),rawLocation=meta2["openai/userLocation"],location;if(typeof rawLocation=="object"&&rawLocation!==null&&!Array.isArray(rawLocation)){let values=rawLocation,normalized={city:stringValue(values.city),region:stringValue(values.region),country:stringValue(values.country),timezone:stringValue(values.timezone),latitude:coordinateValue(values.latitude),longitude:coordinateValue(values.longitude)},entries=Object.entries(normalized).filter(entry=>entry[1]!==void 0);entries.length>0&&(location=Object.fromEntries(entries))}if(!(locale===void 0&&userAgent===void 0&&location===void 0&&subject===void 0&&conversationId===void 0&&organizationId===void 0))return{...locale!==void 0&&{locale},...userAgent!==void 0&&{userAgent},...location!==void 0&&{location},...subject!==void 0&&{subject},...conversationId!==void 0&&{conversationId},...organizationId!==void 0&&{organizationId}}}function requestEnvelope(ctx){return ctx.mcpReq.envelope}function requestClientInfo(ctx){return{...requestEnvelope(ctx)?.[CLIENT_INFO_META_KEY]??{}}}function toClientContext(ctx){let capabilities={...requestEnvelope(ctx)?.[CLIENT_CAPABILITIES_META_KEY]??{}},info=requestClientInfo(ctx),user=normalizeUserContext(ctx.mcpReq._meta);return{can(capability){return Object.hasOwn(capabilities,capability)},capabilities(){return{...capabilities}},extension(id){let settings=capabilities.extensions?.[id];return settings===void 0?void 0:{...settings}},info(){return{...info}},user(){return user===void 0?void 0:{...user,...user.location!==void 0&&{location:{...user.location}}}},supportsViews(){return supportsViews(capabilities)}}}function toRequestContext(ctx){let rawRequest=ctx.http?.req,http=rawRequest===void 0?void 0:getRequestBag(rawRequest).honoContext,request=http?.req??(rawRequest===void 0?void 0:new HonoRequest(rawRequest)),additions={signal:ctx.mcpReq.signal,...request!==void 0&&{request},...ctx.mcpReq.inputResponses!==void 0&&{inputResponses:ctx.mcpReq.inputResponses},client:toClientContext(ctx),requestState:()=>ctx.mcpReq.requestState(),async sendNotification(method,params){await ctx.mcpReq.notify({method,...params!==void 0&&{params}})},async reportProgress(progress,total,message){let progressToken=ctx.mcpReq._meta?.progressToken;return progressToken===void 0?!1:(await ctx.mcpReq.notify({method:"notifications/progress",params:{progressToken,progress,...total!==void 0&&{total},...message!==void 0&&{message}}}),!0)},async sendLog(level,data,logger){await ctx.mcpReq.notify({method:"notifications/message",params:{level,data,...logger!==void 0&&{logger}}})}};return http!==void 0?Object.assign(http,additions):{...additions,...request!==void 0&&{req:request}}}function toAuthenticatedRequestContext(ctx){let authInfo=ctx.http?.authInfo;return requireOAuthAuthInfo(authInfo),Object.assign(toRequestContext(ctx),{auth:{user:authInfo.extra.user,payload:authInfo.extra.payload,accessToken:authInfo.token,scopes:[...authInfo.scopes],permissions:[...authInfo.extra.permissions],...authInfo.clientId.length>0&&{clientId:authInfo.clientId},expiresAt:authInfo.expiresAt,...authInfo.resource!==void 0&&{resource:authInfo.resource}}})}init_dist();function isReadResourceResult(result){return"contents"in result&&Array.isArray(result.contents)}function isGetPromptResult(result){return"messages"in result&&Array.isArray(result.messages)}function toResourceResult(result,uri){if(isReadResourceResult(result))return result;let mime=result._meta&&typeof result._meta=="object"&&typeof result._meta.mimeType=="string"?result._meta.mimeType:void 0,contents=[];for(let block of result.content??[]){let mapped=contentBlockToResourceContents(block,uri,mime);mapped!==void 0&&contents.push(mapped)}return contents.length===0&&result.structuredContent!==void 0&&contents.push({uri,mimeType:"application/json",text:JSON.stringify(result.structuredContent)}),contents.length===0&&contents.push({uri,mimeType:"text/plain",text:""}),{contents}}function contentBlockToResourceContents(block,uri,mimeHint){if(block.type==="text")return{uri,mimeType:mimeHint??"text/plain",text:block.text};if(block.type==="image"||block.type==="audio")return{uri,mimeType:block.mimeType,blob:block.data};if(block.type==="resource")return{...block.resource}}function toPromptResult(result){if(isInputRequiredResult(result)||isGetPromptResult(result))return result;let messages=(result.content??[]).map(content=>({role:"user",content}));return messages.length===0&&result.structuredContent!==void 0&&messages.push({role:"user",content:{type:"text",text:JSON.stringify(result.structuredContent)}}),messages.length===0&&messages.push({role:"user",content:{type:"text",text:""}}),{messages}}init_fetch_app();import{inheritBufferedResponse}from"#mcp-use-buffered-response";var DEFAULT_METHODS=["GET","HEAD","POST","OPTIONS"],DEFAULT_ALLOWED_HEADERS=["Content-Type","Authorization","mcp-protocol-version","mcp-method","mcp-name"];function resolveAllowedOrigin(origin,requestOrigin){return origin===void 0?requestOrigin:typeof origin=="function"?origin(requestOrigin):origin==="*"?"*":Array.isArray(origin)?requestOrigin!==null&&origin.includes(requestOrigin)?requestOrigin:null:origin}function corsHeaders(options,request){if(request.headers.has("Access-Control-Allow-Origin"))return;let requestOrigin=request.headers.get("Origin"),allowedOrigin=resolveAllowedOrigin(options.origin,requestOrigin);if(allowedOrigin===null)return;let headers={"Access-Control-Allow-Origin":allowedOrigin,"Access-Control-Allow-Methods":options.methods.join(", "),"Access-Control-Allow-Headers":options.allowedHeaders.join(", ")};return options.credentials&&(headers["Access-Control-Allow-Credentials"]="true"),allowedOrigin!=="*"&&(headers.Vary="Origin"),headers}function mergeCorsHeaders(response,headers){if(response.headers.has("Access-Control-Allow-Origin"))return response;let merged=new Headers(response.headers);return new Headers(headers).forEach((value,key)=>{merged.set(key,value)}),inheritBufferedResponse(response,new Response(response.body,{status:response.status,statusText:response.statusText,headers:merged}))}function corsFetchMiddleware(options){if(!(options.enabled!==!1))return async(_request,next)=>next();let resolved={...options.origin!==void 0&&{origin:options.origin},methods:options.methods??DEFAULT_METHODS,allowedHeaders:options.allowedHeaders??DEFAULT_ALLOWED_HEADERS,credentials:options.credentials??!1};return async(request,next)=>{let headers=corsHeaders(resolved,request);if(headers===void 0)return next();if(request.method==="OPTIONS")return new Response(null,{status:204,headers});let response=await next();return mergeCorsHeaders(response,headers)}}function isGlobalCorsEnabled(cors){return cors!==void 0&&cors.enabled!==!1}init_auth_BNDyLTqp();init_dist();var MCP_MIDDLEWARE_METHODS=["tools/call","tools/list","resources/read","resources/list","prompts/get","prompts/list"];function withMcpMiddlewareParams(request,params){if(typeof request!="object"||request===null||Array.isArray(request))throw new TypeError("[mcp-use] MCP middleware received an invalid downstream request");return{...request,params}}function createMcpMiddlewareEntry(pattern,handler){let normalizedPattern=normalizeMcpMiddlewarePattern(pattern),invoke2=handler;if(normalizedPattern!=="*"&&!isMcpMiddlewareMethod(normalizedPattern))throw new TypeError(`Unsupported MCP middleware pattern "${pattern}". Use an exact MCP method or "mcp:*".`);return normalizedPattern==="*"?{pattern:normalizedPattern,handler:async(ctx,next)=>{let downstreamCalled=!1,downstreamResult;if(await invoke2(ctx,async()=>{downstreamResult=await next(),downstreamCalled=!0}),!downstreamCalled)throw new Error(`Wildcard MCP middleware "${normalizedPattern}" must call next()`);return downstreamResult}}:{pattern:normalizedPattern,handler:(ctx,next)=>invoke2(ctx,next)}}function createMcpEventListenerEntry(pattern,handler){let{pattern:normalizedPattern,phase}=parseMcpPattern(pattern),invoke2=handler;return{pattern:normalizedPattern,phase,handler:(ctx,result)=>invoke2(ctx,result)}}function matchesPattern(pattern,method){if(pattern==="*")return!0;if(pattern.endsWith("/*")){let prefix=pattern.slice(0,-1);return method.startsWith(prefix)}return pattern===method}function isMcpMiddlewareMethod(value){return MCP_MIDDLEWARE_METHODS.some(method=>method===value)}function composeMiddleware(entries,method,innerFn){let matching=entries.filter(entry=>matchesPattern(entry.pattern,method));return matching.length===0?_ctx=>innerFn():ctx=>{let index=-1,dispatch=i=>i<=index?Promise.reject(new Error("next() called multiple times")):(index=i,i===matching.length?innerFn():matching[i].handler(ctx,()=>dispatch(i+1)));return dispatch(0)}}function freezeMiddlewareContext(ctx){return Object.freeze({method:ctx.method,params:Object.freeze({...ctx.params}),...ctx.request!==void 0&&{request:ctx.request},...ctx.req!==void 0&&{req:ctx.req},...ctx.session!==void 0&&{session:Object.freeze({...ctx.session})},...ctx.auth!==void 0&&{auth:ctx.auth},state:new Map(ctx.state)})}async function runMcpOperation(middlewares,events,method,ctx,innerFn){dispatchMcpEvents(events,method,"before",ctx);let result=await composeMiddleware(middlewares,method,innerFn)(ctx);return assertValidMiddlewareResult(method,result),dispatchMcpEvents(events,method,"complete",ctx,result),result}function assertValidMiddlewareResult(method,result){if((method==="tools/call"||method==="resources/read"||method==="prompts/get")&&isInputRequiredResult(result))return;let validation=(()=>{switch(method){case"tools/call":return assertArrayProperty(method,result,"content"),CallToolResultSchema.safeParse(result);case"tools/list":return assertArrayResult(method,result),ListToolsResultSchema.safeParse({tools:result});case"resources/read":return assertArrayProperty(method,result,"contents"),ReadResourceResultSchema.safeParse(result);case"resources/list":return assertArrayResult(method,result),ListResourcesResultSchema.safeParse({resources:result});case"prompts/get":return assertArrayProperty(method,result,"messages"),GetPromptResultSchema.safeParse(result);case"prompts/list":return assertArrayResult(method,result),ListPromptsResultSchema.safeParse({prompts:result});default:throw new TypeError(`Unsupported MCP middleware method "${method}"`)}})();if(!validation.success)throw new TypeError(`[mcp-use] ${method} middleware returned an invalid result: ${validation.error.message}`)}function assertArrayResult(method,result){if(!Array.isArray(result))throw new TypeError(`[mcp-use] ${method} middleware returned an invalid result: expected an array`)}function assertArrayProperty(method,result,property){if(typeof result!="object"||result===null||!Array.isArray(result[property]))throw new TypeError(`[mcp-use] ${method} middleware returned an invalid result: expected a ${property} array`)}function dispatchMcpEvents(events,method,phase,ctx,result){let frozen=freezeMiddlewareContext(ctx);for(let entry of events)if(!(entry.phase!==phase||!matchesPattern(entry.pattern,method)))try{entry.handler(frozen,result)}catch(error3){console.error(`[mcp-use] MCP event listener for "${entry.pattern}" (${phase}) threw:`,error3)}}function parseMcpPattern(raw2){let pattern=raw2.startsWith("mcp:")?raw2.slice(4):raw2;return pattern.endsWith(":complete")?{pattern:pattern.slice(0,-9),phase:"complete"}:{pattern,phase:"before"}}function normalizeMcpMiddlewarePattern(raw2){return raw2.startsWith("mcp:")?raw2.slice(4):raw2}init_dist();init_fetch_app();import{isBufferedResponse as isBufferedResponse2,trackBufferedResponse}from"#mcp-use-buffered-response";function colorsEnabled(){return typeof process>"u"||process.env?.NO_COLOR!==void 0?!1:process.stdout?.isTTY===!0}function ansi(open,close){return text2=>colorsEnabled()?`\x1B[${open}m${text2}\x1B[${close}m`:text2}var bold=ansi(1,22),dim=ansi(2,22),red=ansi(31,39),green=ansi(32,39),yellow=ansi(33,39),blue=ansi(34,39),magenta=ansi(35,39),cyan=ansi(36,39),gray=ansi(90,39);function resolveLogLevel(configured){let raw2=typeof process>"u"?void 0:process.env?.MCP_USE_LOG_LEVEL?.toLowerCase();return raw2==="info"||raw2==="debug"||raw2==="trace"?raw2:configured??"info"}function formatClientInfo(info){if(!(info===void 0||typeof info.name!="string"))return typeof info.version=="string"&&info.version!==""?`${info.name}/${info.version}`:info.name}var detailFormatters={initialize:p=>({subject:formatClientInfo(p.clientInfo)}),ping:()=>({}),"server/discover":()=>({}),"completion/complete":p=>({subject:p.ref.type==="ref/prompt"?p.ref.name:p.ref.uri,input:p.argument}),"logging/setLevel":p=>({subject:p.level}),"prompts/get":p=>({subject:p.name,input:p.arguments}),"prompts/list":()=>({}),"resources/list":()=>({}),"resources/templates/list":()=>({}),"resources/read":p=>({subject:p.uri}),"resources/subscribe":p=>({subject:p.uri}),"resources/unsubscribe":p=>({subject:p.uri}),"subscriptions/listen":()=>({}),"tools/call":p=>({subject:p.name,input:p.arguments}),"tools/list":()=>({}),"sampling/createMessage":()=>({}),"elicitation/create":()=>({}),"roots/list":()=>({})};function isKnownMethod(method){return Object.prototype.hasOwnProperty.call(detailFormatters,method)}function formatDetail(message){if(!isKnownMethod(message.method))return{};try{let formatter=detailFormatters[message.method],detail=formatter(message.params);return typeof detail.subject=="string"||detail.subject===void 0?detail:{}}catch{return{}}}var INLINE_JSON_MAX_LENGTH=80;function inlineJson(value){let text2;try{text2=JSON.stringify(value)??String(value)}catch{text2=String(value)}return text2.length>INLINE_JSON_MAX_LENGTH?`${text2.slice(0,INLINE_JSON_MAX_LENGTH)}...`:text2}function formatClientIdentity(message){let meta2=message.params?._meta;if(meta2===void 0)return;let info=meta2[CLIENT_INFO_META_KEY];if(!(typeof info!="object"||info===null||typeof info.name!="string"))return formatClientInfo(info)}function formatMcpClient(message){let modern=formatClientIdentity(message);if(modern!==void 0)return modern;if(message.method==="initialize")try{return formatClientInfo(message.params.clientInfo)}catch{return}}function sanitize(text2){return text2.replace(/[\u0000-\u001F\u007F-\u009F]+/g," ")}function methodStyle(method){return method.startsWith("tools/")?cyan:method.startsWith("resources/")?green:method.startsWith("prompts/")?magenta:method==="initialize"||method==="ping"?gray:blue}function describeRequest(httpMethod,pathname,mcpPath,body){if(pathname!==mcpPath)return{method:httpMethod,client:void 0,mcpRequest:void 0,streaming:!1};let requests=Array.isArray(body)?body.filter(isJSONRPCRequest):isJSONRPCRequest(body)?[body]:[],mcpRequest=requests[0];return mcpRequest===void 0?{method:httpMethod,client:void 0,mcpRequest:void 0,streaming:!1}:{method:requests.length===1?sanitize(mcpRequest.method):`batch(${requests.map(request=>sanitize(request.method)).join(",")})`,client:formatMcpClient(mcpRequest)??"unknown",mcpRequest,streaming:mcpRequest.method==="subscriptions/listen"}}var REDACTED_HEADERS=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key"]);function redactHeaders(headers){return Object.fromEntries(Object.entries(headers).map(([name,value])=>[name,REDACTED_HEADERS.has(name.toLowerCase())?"[REDACTED]":value]))}async function extractResponseOutcome(res,request){if(!res.body)return{errorMessage:null};let text2;try{let wasBuffered=isBufferedResponse2(res,request),clone2=res.clone();wasBuffered&&trackBufferedResponse(request,res),text2=await clone2.text()}catch{return{errorMessage:null}}if(!text2)return{errorMessage:null};let isSse=(res.headers.get("content-type")??"").includes("text/event-stream"),payloads=[],tryParse=raw2=>{try{payloads.push(JSON.parse(raw2))}catch{}};if(isSse){for(let line of text2.split(/\r?\n/))if(line.startsWith("data:")){let data=line.slice(5).trim();data&&tryParse(data)}}else tryParse(text2);let result;for(let payload of payloads){if(payload===null||typeof payload!="object")continue;let message=payload;if(typeof message.error?.message=="string")return{errorMessage:message.error.message};if(message.result?.isError===!0){let textBlock=(Array.isArray(message.result.content)?message.result.content:[]).find(b=>b?.type==="text"&&typeof b.text=="string");return{errorMessage:textBlock?String(textBlock.text):"tool error"}}"result"in message&&(result=message.result)}return{errorMessage:null,result}}function compactToolResult(result){if(result===null||typeof result!="object")return result;let{structuredContent,content}=result;if(structuredContent!==void 0)return structuredContent;if(Array.isArray(content)){let[block]=content;if(content.length===1&&block?.type==="text")return block.text}return content}function formatForDump(value){function truncate(val){return typeof val=="string"&&val.length>100?`${val.slice(0,100)}...`:Array.isArray(val)?val.map(truncate):val!==null&&typeof val=="object"?Object.fromEntries(Object.entries(val).map(([k,v])=>[k,truncate(v)])):val}try{return JSON.stringify(truncate(value),null,2)}catch{return String(value)}}var DUMP_BODY_MAX_LENGTH=1e4;async function printTraceDump(response,requestHeaders,requestBody,readResponseBody){console.log(`
|
|
766
766
|
${cyan("=".repeat(80))}`),console.log(bold(cyan("[TRACE] Request Details"))),console.log(cyan("-".repeat(80))),Object.keys(requestHeaders).length>0&&(console.log(yellow("Request Headers:")),console.log(formatForDump(redactHeaders(requestHeaders)))),requestBody!==void 0&&(console.log(yellow("Request Body:")),console.log(typeof requestBody=="string"?requestBody:formatForDump(requestBody)));let responseHeaders={};if(response.headers.forEach((value,key)=>{responseHeaders[key]=value}),Object.keys(responseHeaders).length>0&&(console.log(yellow("Response Headers:")),console.log(formatForDump(redactHeaders(responseHeaders)))),!readResponseBody)console.log(`${yellow("Response Body:")} (streaming \u2014 not dumped)`);else if(response.body===null)console.log(`${yellow("Response Body:")} (no body)`);else try{let text2=await response.clone().text();if(text2.length===0)console.log(`${yellow("Response Body:")} (empty)`);else{console.log(yellow("Response Body:"));try{console.log(formatForDump(JSON.parse(text2)))}catch{console.log(text2.length>DUMP_BODY_MAX_LENGTH?`${text2.slice(0,DUMP_BODY_MAX_LENGTH)}
|
|
767
767
|
... (truncated, ${text2.length-DUMP_BODY_MAX_LENGTH} more characters)`:text2)}}}catch{console.log(`${yellow("Response Body:")} (unable to read)`)}console.log(`${cyan("=".repeat(80))}
|
|
768
|
-
`)}function styleStatus(status){let text2=String(status);return status>=500?magenta(text2):status>=400?red(text2):status>=300?yellow(text2):green(text2)}function isNoisyRequest(httpMethod,pathname){return httpMethod!=="GET"&&httpMethod!=="HEAD"?!1:pathname.endsWith("/favicon.ico")}function formatRequestLogLine(line){let{description,detail}=line;return[...line.prefix===void 0?[]:[bold(line.prefix)],methodStyle(description.method)(description.method),...detail?.subject===void 0?[]:[bold(sanitize(detail.subject))],line.pathname,styleStatus(line.status),...description.client===void 0?[]:[dim(`client=${sanitize(description.client)}`)],dim(`${line.durationMs}ms`),...line.suffix].join(" ")}function requestLogger(options={}){return options.enabled===!1?(_request,next)=>next():async(request,next)=>{let level=resolveLogLevel(options.level),startedAt=Date.now(),httpMethod=request.method,pathname=new URL(request.url).pathname;if(isNoisyRequest(httpMethod,pathname))return next();let requestHeaders={};level==="trace"&&request.headers.forEach((value,key)=>{requestHeaders[key]=value});let requestBody;if(httpMethod!=="GET"&&httpMethod!=="HEAD"){let parsedBody=getRequestBag(request).parsedBody;if(parsedBody!==void 0)requestBody=parsedBody;else try{requestBody=await request.clone().json(),(request.headers.get("content-type")??"").includes("application/json")&&(getRequestBag(request).parsedBody=requestBody)}catch{}}let description=describeRequest(httpMethod,pathname,options.mcpPath,requestBody),logLine=(status,detail2,suffix2=[])=>{console.log(formatRequestLogLine({prefix:options.prefix,description,detail:detail2,pathname,status,durationMs:Date.now()-startedAt,suffix:suffix2}))},response;try{response=await next()}catch(error3){throw logLine(500,void 0,[red(`ERROR ${sanitize(error3 instanceof Error?error3.message:String(error3))}`)]),error3}let detail=description.mcpRequest===void 0?void 0:formatDetail(description.mcpRequest),suffix=[];if(description.mcpRequest!==void 0&&detail!==void 0){let echoPayloads=level!=="info";echoPayloads&&detail.input!==void 0&&suffix.push(inlineJson(detail.input));let outcome=description.streaming?{errorMessage:null}:await extractResponseOutcome(response,request);echoPayloads&&description.mcpRequest.method==="tools/call"&&outcome.errorMessage===null&&outcome.result!==void 0&&suffix.push(dim("->"),inlineJson(compactToolResult(outcome.result))),outcome.errorMessage!==null?suffix.push(red(`ERROR ${sanitize(outcome.errorMessage)}`)):response.status>=400&&suffix.push(red(`ERROR (HTTP ${response.status})`))}return logLine(response.status,detail,suffix),level==="trace"&&await printTraceDump(response,requestHeaders,requestBody,!description.streaming),response}}init_dist();init_fetch_app();import{trackBufferedResponse as trackBufferedResponse2}from"#mcp-use-buffered-response";function createMcpMount(factory,options={}){let{path="/mcp",handler:handlerOptions,authInfo:getAuthInfo}=options,legacyMode=handlerOptions?.legacy??"stateless",handler=createMcpHandler(factory,{legacy:"stateless",...handlerOptions});return{handler,fetch:async request=>{if(!matchesPath(request,path))return new Response("Not Found",{status:404});if(legacyMode==="stateless"){let method=request.method.toUpperCase();if(method==="GET"||method==="DELETE"||method==="HEAD")return new Response(null,{status:204})}let bag=getRequestBag(request),parsedBody=bag.parsedBody;if(parsedBody===void 0)try{parsedBody=await request.clone().json()}catch{}let capabilities=extractClientCapabilitiesFromBody(parsedBody);capabilities!==void 0&&stashClientCapabilities(request,capabilities);let authInfo=getAuthInfo?.(request)??bag.authInfo,response=await handler.fetch(request,{...parsedBody!==void 0&&{parsedBody},...authInfo!==void 0&&{authInfo}});return response.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&response.body!==null?new Response(await response.arrayBuffer(),{status:response.status,statusText:response.statusText,headers:response.headers}):trackBufferedResponse2(request,response):response}}}function object2(value,label){if(value===null||typeof value!="object"||Array.isArray(value))throw new TypeError(`${label} must be an object`);return value}function array2(value,label){if(!Array.isArray(value))throw new TypeError(`${label} must be an array`);return value}function nonBlank(value,label){if(typeof value!="string"||!value.trim())throw new TypeError(`${label} must be a non-blank string`)}function standard(json,validate){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:()=>json,output:()=>json},async validate(value){try{return{value:await validate(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function prepareSettings(options){let readTool=options.readTool??"settings.read",updateTool=options.updateTool??"settings.update";if(nonBlank(readTool,"readTool"),nonBlank(updateTool,"updateTool"),readTool===updateTool)throw new TypeError("Settings read and update tools must have different names");object2(options.fields,"fields");let fields=Object.entries(options.fields).map(([name,field])=>[name,{...field}]);if(!fields.length)throw new TypeError("Settings require at least one field");let properties={};for(let[name,field]of fields){if(nonBlank(field.title,`Setting ${name} title`),field.description!==void 0&&typeof field.description!="string")throw new TypeError(`Setting ${name} description must be a string`);let outputProperty=field.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),property=field.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(property.type))||outputProperty.type!==property.type||["$ref","anyOf","oneOf","allOf"].some(key=>key in property)||property.enum!==void 0&&(property.type!=="string"||!Array.isArray(property.enum)||!property.enum.length||!property.enum.every(item=>typeof item=="string")))throw new TypeError(`Unsupported native setting ${name}: use boolean, string, string enum, number, or integer`);let wireProperty=structuredClone(property);delete wireProperty.default,Object.defineProperty(properties,name,{enumerable:!0,value:{...wireProperty,title:field.title,...field.description!==void 0&&{description:field.description}}})}let schema2={type:"object",properties,required:fields.map(([name])=>name),additionalProperties:!1},layout=options.layout===void 0?void 0:structuredClone(options.layout);if(layout!==void 0)for(let groupValue of array2(layout,"Settings layout")){let group=object2(groupValue,"Settings layout group");if(group.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");nonBlank(group.title,"Settings layout group title");for(let itemValue of array2(group.items,"Settings layout group items")){let item=object2(itemValue,"Settings layout item");if(item.kind==="property"){if(nonBlank(item.property,"Settings layout property"),!Object.hasOwn(properties,item.property))throw new TypeError(`Settings layout references unknown setting: ${item.property}`)}else if(item.kind==="tool"){if(nonBlank(item.tool,"Settings layout action tool"),nonBlank(item.title,"Settings layout action title"),item.description!==void 0&&typeof item.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let validateValues=async(value,partial2=!1)=>{let values=object2(value,partial2?"set":"values");for(let name of Object.keys(values))if(!Object.hasOwn(properties,name))throw new TypeError(`Unknown setting: ${name}`);if(partial2&&!Object.keys(values).length)throw new TypeError("Set at least one setting");let result={};for(let[name,field]of fields){if(!Object.hasOwn(values,name)){if(!partial2)throw new TypeError(`Missing effective setting: ${name}`);continue}let parsed=await field.schema["~standard"].validate(values[name]);if(parsed.issues!==void 0)throw new TypeError(`Invalid setting ${name}: ${parsed.issues.map(issue2=>issue2.message).join(", ")}`);if(parsed.value===void 0||!["string","boolean","number"].includes(typeof parsed.value)||typeof parsed.value=="number"&&!Number.isFinite(parsed.value))throw new TypeError(`Invalid primitive setting: ${name}`);if(!Object.is(parsed.value,values[name]))throw new TypeError(`Setting ${name} schema must not transform values`);Object.defineProperty(result,name,{enumerable:!0,value:parsed.value})}return result},emptySchema=standard({type:"object",additionalProperties:!1},value=>{if(Object.keys(object2(value,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),updateInput=standard({type:"object",properties:{set:{...schema2,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async value=>{let input=object2(value,"arguments");if(Object.keys(input).some(key=>key!=="set"))throw new TypeError("Unknown settings update argument");return{set:await validateValues(input.set,!0)}}),readOutput=standard({type:"object",properties:{schema:{type:"object"},values:schema2,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async value=>{let output=object2(value,"settings result");return{...output,values:await validateValues(output.values)}}),updateOutput=standard({type:"object",properties:{values:schema2},required:["values"]},async value=>({values:await validateValues(object2(value,"settings result").values)}));return{capability:{readTool,updateTool},schema:schema2,layout,readDefinition:{name:readTool,inputSchema:emptySchema,outputSchema:readOutput,annotations:{readOnlyHint:!0}},updateDefinition:{name:updateTool,inputSchema:updateInput,outputSchema:updateOutput}}}init_dist();function createPrefixCompletion(values){let strings=values.map(String);return value=>{let prefix=String(value??"").toLowerCase();return strings.filter(candidate=>candidate.toLowerCase().startsWith(prefix))}}function completable2(schema2,complete){return typeof complete=="function"?completable(schema2,(value,context)=>complete(String(value??""),context)):completable(schema2,createPrefixCompletion(complete))}function normalizeCompletions(completions){let normalized=Object.create(null);for(let[variable,completer]of Object.entries(completions))completer!==void 0&&(normalized[variable]=Array.isArray(completer)?createPrefixCompletion(completer):completer);return normalized}init_dist();var HTTP_METHODS=["get","put","post","delete","options","head","patch","trace"];function registerOpenAPITools(server,options){let operations=collectOperations(options.spec,options),names=createToolNames(operations),baseUrl=operations.length>0?resolveBaseUrl(options):void 0;for(let[index,operation]of operations.entries()){let name=names[index];if(name===void 0||baseUrl===void 0)continue;let inputBindings=createInputBindings(operation);server.tool({name,description:createToolDescription(operation),inputSchema:createToolInputSchema(options.spec,operation,inputBindings)},async params=>callOpenAPIOperation(operation,params,options,inputBindings,baseUrl))}}function collectOperations(spec,options){let collected=[];for(let[path,pathItemOrRef]of Object.entries(spec.paths??{})){let pathItem=resolveRef(spec,pathItemOrRef);if(pathItem===void 0||isReferenceObject(pathItem))continue;let pathParameters=resolveParameters(spec,pathItem.parameters);for(let method of HTTP_METHODS){let operationOrRef=pathItem[method];if(operationOrRef===void 0)continue;let operation=resolveRef(spec,operationOrRef);if(operation===void 0||isReferenceObject(operation))continue;let operationParameters=resolveParameters(spec,operation.parameters),requestBody=operation.requestBody===void 0?void 0:resolveRef(spec,operation.requestBody),item={method,path,operation,parameters:mergeParameters(pathParameters,operationParameters),...requestBody!==void 0&&!isReferenceObject(requestBody)&&{requestBody}};isIncluded(item,options)&&collected.push(item)}}return collected}function resolveParameters(spec,parameters){let resolved=[];for(let parameter of parameters??[]){let value=resolveRef(spec,parameter);value!==void 0&&!isReferenceObject(value)&&resolved.push(value)}return resolved}function mergeParameters(pathParameters,operationParameters){let merged=new Map;for(let parameter of[...pathParameters,...operationParameters])merged.set(`${parameter.in}:${parameter.name}`,parameter);return[...merged.values()]}function isIncluded(operation,options){if(options.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!options.tags.some(tag=>tags.has(tag)))return!1}return!(options.exclude??[]).some(rule=>matchesExcludeRule(operation,rule))}function matchesExcludeRule(operation,rule){if(rule.method&&rule.method.toLowerCase()!==operation.method||rule.operationId&&!matchesPattern2(rule.operationId,operation.operation.operationId??"")||rule.path&&!matchesPattern2(rule.path,operation.path))return!1;if(rule.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!rule.tags.some(tag=>tags.has(tag)))return!1}return!0}function matchesPattern2(pattern,value){return typeof pattern=="string"?pattern===value:(pattern.lastIndex=0,pattern.test(value))}function createToolNames(operations){let seen=new Map;return operations.map(operation=>{let baseName=slugifyToolName(operation.operation.operationId??`${operation.method}_${operation.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),count=seen.get(baseName)??0;if(seen.set(baseName,count+1),count===0)return baseName;let suffix=`_${count+1}`;return`${baseName.slice(0,64-suffix.length)}${suffix}`})}function createToolDescription(operation){return[operation.operation.summary,operation.operation.description,`HTTP: ${operation.method.toUpperCase()} ${operation.path}`].filter(part=>!!part).join(`
|
|
768
|
+
`)}function styleStatus(status){let text2=String(status);return status>=500?magenta(text2):status>=400?red(text2):status>=300?yellow(text2):green(text2)}function isNoisyRequest(httpMethod,pathname){return httpMethod!=="GET"&&httpMethod!=="HEAD"?!1:pathname.endsWith("/favicon.ico")}function formatRequestLogLine(line){let{description,detail}=line;return[...line.prefix===void 0?[]:[bold(line.prefix)],methodStyle(description.method)(description.method),...detail?.subject===void 0?[]:[bold(sanitize(detail.subject))],line.pathname,styleStatus(line.status),...description.client===void 0?[]:[dim(`client=${sanitize(description.client)}`)],dim(`${line.durationMs}ms`),...line.suffix].join(" ")}function requestLogger(options={}){return options.enabled===!1?(_request,next)=>next():async(request,next)=>{let level=resolveLogLevel(options.level),startedAt=Date.now(),httpMethod=request.method,pathname=new URL(request.url).pathname;if(isNoisyRequest(httpMethod,pathname))return next();let requestHeaders={};level==="trace"&&request.headers.forEach((value,key)=>{requestHeaders[key]=value});let requestBody;if(httpMethod!=="GET"&&httpMethod!=="HEAD"){let parsedBody=getRequestBag(request).parsedBody;if(parsedBody!==void 0)requestBody=parsedBody;else try{requestBody=await request.clone().json(),(request.headers.get("content-type")??"").includes("application/json")&&(getRequestBag(request).parsedBody=requestBody)}catch{}}let description=describeRequest(httpMethod,pathname,options.mcpPath,requestBody),logLine=(status,detail2,suffix2=[])=>{console.log(formatRequestLogLine({prefix:options.prefix,description,detail:detail2,pathname,status,durationMs:Date.now()-startedAt,suffix:suffix2}))},response;try{response=await next()}catch(error3){throw logLine(500,void 0,[red(`ERROR ${sanitize(error3 instanceof Error?error3.message:String(error3))}`)]),error3}let streaming=description.streaming||response.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()==="text/event-stream",detail=description.mcpRequest===void 0?void 0:formatDetail(description.mcpRequest),suffix=[];if(description.mcpRequest!==void 0&&detail!==void 0){let echoPayloads=level!=="info";echoPayloads&&detail.input!==void 0&&suffix.push(inlineJson(detail.input));let outcome=streaming?{errorMessage:null}:await extractResponseOutcome(response,request);echoPayloads&&description.mcpRequest.method==="tools/call"&&outcome.errorMessage===null&&outcome.result!==void 0&&suffix.push(dim("->"),inlineJson(compactToolResult(outcome.result))),outcome.errorMessage!==null?suffix.push(red(`ERROR ${sanitize(outcome.errorMessage)}`)):response.status>=400&&suffix.push(red(`ERROR (HTTP ${response.status})`))}return logLine(response.status,detail,suffix),level==="trace"&&await printTraceDump(response,requestHeaders,requestBody,!streaming),response}}init_dist();init_fetch_app();import{trackBufferedResponse as trackBufferedResponse2}from"#mcp-use-buffered-response";function createMcpMount(factory,options={}){let{path="/mcp",handler:handlerOptions,authInfo:getAuthInfo}=options,legacyMode=handlerOptions?.legacy??"stateless",handler=createMcpHandler(factory,{legacy:"stateless",...handlerOptions});return{handler,fetch:async request=>{if(!matchesPath(request,path))return new Response("Not Found",{status:404});if(legacyMode==="stateless"){let method=request.method.toUpperCase();if(method==="GET"||method==="DELETE"||method==="HEAD")return new Response(null,{status:204})}let bag=getRequestBag(request),parsedBody=bag.parsedBody;if(parsedBody===void 0)try{parsedBody=await request.clone().json()}catch{}let capabilities=extractClientCapabilitiesFromBody(parsedBody);capabilities!==void 0&&stashClientCapabilities(request,capabilities);let authInfo=getAuthInfo?.(request)??bag.authInfo,response=await handler.fetch(request,{...parsedBody!==void 0&&{parsedBody},...authInfo!==void 0&&{authInfo}});return response.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&response.body!==null?new Response(await response.arrayBuffer(),{status:response.status,statusText:response.statusText,headers:response.headers}):trackBufferedResponse2(request,response):response}}}function object2(value,label){if(value===null||typeof value!="object"||Array.isArray(value))throw new TypeError(`${label} must be an object`);return value}function array2(value,label){if(!Array.isArray(value))throw new TypeError(`${label} must be an array`);return value}function nonBlank(value,label){if(typeof value!="string"||!value.trim())throw new TypeError(`${label} must be a non-blank string`)}function standard(json,validate){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:()=>json,output:()=>json},async validate(value){try{return{value:await validate(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function prepareSettings(options){let readTool=options.readTool??"settings.read",updateTool=options.updateTool??"settings.update";if(nonBlank(readTool,"readTool"),nonBlank(updateTool,"updateTool"),readTool===updateTool)throw new TypeError("Settings read and update tools must have different names");object2(options.fields,"fields");let fields=Object.entries(options.fields).map(([name,field])=>[name,{...field}]);if(!fields.length)throw new TypeError("Settings require at least one field");let properties={};for(let[name,field]of fields){if(nonBlank(field.title,`Setting ${name} title`),field.description!==void 0&&typeof field.description!="string")throw new TypeError(`Setting ${name} description must be a string`);let outputProperty=field.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),property=field.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(property.type))||outputProperty.type!==property.type||["$ref","anyOf","oneOf","allOf"].some(key=>key in property)||property.enum!==void 0&&(property.type!=="string"||!Array.isArray(property.enum)||!property.enum.length||!property.enum.every(item=>typeof item=="string")))throw new TypeError(`Unsupported native setting ${name}: use boolean, string, string enum, number, or integer`);let wireProperty=structuredClone(property);delete wireProperty.default,Object.defineProperty(properties,name,{enumerable:!0,value:{...wireProperty,title:field.title,...field.description!==void 0&&{description:field.description}}})}let schema2={type:"object",properties,required:fields.map(([name])=>name),additionalProperties:!1},layout=options.layout===void 0?void 0:structuredClone(options.layout);if(layout!==void 0)for(let groupValue of array2(layout,"Settings layout")){let group=object2(groupValue,"Settings layout group");if(group.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");nonBlank(group.title,"Settings layout group title");for(let itemValue of array2(group.items,"Settings layout group items")){let item=object2(itemValue,"Settings layout item");if(item.kind==="property"){if(nonBlank(item.property,"Settings layout property"),!Object.hasOwn(properties,item.property))throw new TypeError(`Settings layout references unknown setting: ${item.property}`)}else if(item.kind==="tool"){if(nonBlank(item.tool,"Settings layout action tool"),nonBlank(item.title,"Settings layout action title"),item.description!==void 0&&typeof item.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let validateValues=async(value,partial2=!1)=>{let values=object2(value,partial2?"set":"values");for(let name of Object.keys(values))if(!Object.hasOwn(properties,name))throw new TypeError(`Unknown setting: ${name}`);if(partial2&&!Object.keys(values).length)throw new TypeError("Set at least one setting");let result={};for(let[name,field]of fields){if(!Object.hasOwn(values,name)){if(!partial2)throw new TypeError(`Missing effective setting: ${name}`);continue}let parsed=await field.schema["~standard"].validate(values[name]);if(parsed.issues!==void 0)throw new TypeError(`Invalid setting ${name}: ${parsed.issues.map(issue2=>issue2.message).join(", ")}`);if(parsed.value===void 0||!["string","boolean","number"].includes(typeof parsed.value)||typeof parsed.value=="number"&&!Number.isFinite(parsed.value))throw new TypeError(`Invalid primitive setting: ${name}`);if(!Object.is(parsed.value,values[name]))throw new TypeError(`Setting ${name} schema must not transform values`);Object.defineProperty(result,name,{enumerable:!0,value:parsed.value})}return result},emptySchema=standard({type:"object",additionalProperties:!1},value=>{if(Object.keys(object2(value,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),updateInput=standard({type:"object",properties:{set:{...schema2,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async value=>{let input=object2(value,"arguments");if(Object.keys(input).some(key=>key!=="set"))throw new TypeError("Unknown settings update argument");return{set:await validateValues(input.set,!0)}}),readOutput=standard({type:"object",properties:{schema:{type:"object"},values:schema2,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async value=>{let output=object2(value,"settings result");return{...output,values:await validateValues(output.values)}}),updateOutput=standard({type:"object",properties:{values:schema2},required:["values"]},async value=>({values:await validateValues(object2(value,"settings result").values)}));return{capability:{readTool,updateTool},schema:schema2,layout,readDefinition:{name:readTool,inputSchema:emptySchema,outputSchema:readOutput,annotations:{readOnlyHint:!0}},updateDefinition:{name:updateTool,inputSchema:updateInput,outputSchema:updateOutput}}}init_dist();function createPrefixCompletion(values){let strings=values.map(String);return value=>{let prefix=String(value??"").toLowerCase();return strings.filter(candidate=>candidate.toLowerCase().startsWith(prefix))}}function completable2(schema2,complete){return typeof complete=="function"?completable(schema2,(value,context)=>complete(String(value??""),context)):completable(schema2,createPrefixCompletion(complete))}function normalizeCompletions(completions){let normalized=Object.create(null);for(let[variable,completer]of Object.entries(completions))completer!==void 0&&(normalized[variable]=Array.isArray(completer)?createPrefixCompletion(completer):completer);return normalized}init_dist();var HTTP_METHODS=["get","put","post","delete","options","head","patch","trace"];function registerOpenAPITools(server,options){let operations=collectOperations(options.spec,options),names=createToolNames(operations),baseUrl=operations.length>0?resolveBaseUrl(options):void 0;for(let[index,operation]of operations.entries()){let name=names[index];if(name===void 0||baseUrl===void 0)continue;let inputBindings=createInputBindings(operation);server.tool({name,description:createToolDescription(operation),inputSchema:createToolInputSchema(options.spec,operation,inputBindings)},async params=>callOpenAPIOperation(operation,params,options,inputBindings,baseUrl))}}function collectOperations(spec,options){let collected=[];for(let[path,pathItemOrRef]of Object.entries(spec.paths??{})){let pathItem=resolveRef(spec,pathItemOrRef);if(pathItem===void 0||isReferenceObject(pathItem))continue;let pathParameters=resolveParameters(spec,pathItem.parameters);for(let method of HTTP_METHODS){let operationOrRef=pathItem[method];if(operationOrRef===void 0)continue;let operation=resolveRef(spec,operationOrRef);if(operation===void 0||isReferenceObject(operation))continue;let operationParameters=resolveParameters(spec,operation.parameters),requestBody=operation.requestBody===void 0?void 0:resolveRef(spec,operation.requestBody),item={method,path,operation,parameters:mergeParameters(pathParameters,operationParameters),...requestBody!==void 0&&!isReferenceObject(requestBody)&&{requestBody}};isIncluded(item,options)&&collected.push(item)}}return collected}function resolveParameters(spec,parameters){let resolved=[];for(let parameter of parameters??[]){let value=resolveRef(spec,parameter);value!==void 0&&!isReferenceObject(value)&&resolved.push(value)}return resolved}function mergeParameters(pathParameters,operationParameters){let merged=new Map;for(let parameter of[...pathParameters,...operationParameters])merged.set(`${parameter.in}:${parameter.name}`,parameter);return[...merged.values()]}function isIncluded(operation,options){if(options.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!options.tags.some(tag=>tags.has(tag)))return!1}return!(options.exclude??[]).some(rule=>matchesExcludeRule(operation,rule))}function matchesExcludeRule(operation,rule){if(rule.method&&rule.method.toLowerCase()!==operation.method||rule.operationId&&!matchesPattern2(rule.operationId,operation.operation.operationId??"")||rule.path&&!matchesPattern2(rule.path,operation.path))return!1;if(rule.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!rule.tags.some(tag=>tags.has(tag)))return!1}return!0}function matchesPattern2(pattern,value){return typeof pattern=="string"?pattern===value:(pattern.lastIndex=0,pattern.test(value))}function createToolNames(operations){let seen=new Map;return operations.map(operation=>{let baseName=slugifyToolName(operation.operation.operationId??`${operation.method}_${operation.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),count=seen.get(baseName)??0;if(seen.set(baseName,count+1),count===0)return baseName;let suffix=`_${count+1}`;return`${baseName.slice(0,64-suffix.length)}${suffix}`})}function createToolDescription(operation){return[operation.operation.summary,operation.operation.description,`HTTP: ${operation.method.toUpperCase()} ${operation.path}`].filter(part=>!!part).join(`
|
|
769
769
|
|
|
770
770
|
`)}function slugifyToolName(value){return value.trim().replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^_/,"").replace(/_$/,"").slice(0,64)||"openapi_tool"}function createToolInputSchema(spec,operation,inputBindings){let properties={},required2=[];for(let{parameter,inputName}of inputBindings.parameters){let parameterSchema=transformSchema(spec,parameter.schema??{});properties[inputName]={...parameterSchema,description:parameter.description??`${parameter.in} parameter`},(parameter.required||parameter.in==="path")&&required2.push(inputName)}let bodySchema=getJsonRequestBodySchema(operation.requestBody);bodySchema!==void 0&&inputBindings.bodyInputName!==void 0&&(properties[inputBindings.bodyInputName]=transformSchema(spec,bodySchema),operation.requestBody?.required&&required2.push(inputBindings.bodyInputName));let definitions=createSchemaDefinitions(spec),schema2={type:"object",properties,additionalProperties:!1,...required2.length>0&&{required:required2},...definitions!==void 0&&{$defs:definitions}};return fromJsonSchema2(schema2)}function createInputBindings(operation){let parameters=operation.parameters.filter(parameter=>parameter.in!=="cookie"),bodyInputName=getJsonRequestBodySchema(operation.requestBody)===void 0?void 0:"body",nameCounts=new Map;for(let parameter of parameters)nameCounts.set(parameter.name,(nameCounts.get(parameter.name)??0)+1);let usedNames=new Set(bodyInputName===void 0?[]:[bodyInputName]);return{parameters:parameters.map(parameter=>{let preferredName=(nameCounts.get(parameter.name)??0)>1||parameter.name===bodyInputName?`${parameter.name}_${parameter.in}`:parameter.name;return{parameter,inputName:claimInputName(preferredName,usedNames)}}),...bodyInputName!==void 0&&{bodyInputName}}}function claimInputName(preferredName,usedNames){let inputName=preferredName,suffix=2;for(;usedNames.has(inputName);)inputName=`${preferredName}_${suffix}`,suffix+=1;return usedNames.add(inputName),inputName}function createSchemaDefinitions(spec){let schemas=readRecord(spec.components?.schemas);if(schemas===void 0)return;let definitions={};for(let[name,schema2]of Object.entries(schemas))definitions[name]=transformSchemaNode(spec,schema2,new Set);return definitions}function transformSchema(spec,schema2){let transformed=transformSchemaNode(spec,schema2,new Set);return readRecord(transformed)??{}}function transformSchemaNode(spec,value,resolvingRefs){if(Array.isArray(value))return value.map(item=>transformSchemaNode(spec,item,resolvingRefs));let object5=readRecord(value);if(object5===void 0)return value;let ref=typeof object5.$ref=="string"?object5.$ref:void 0,siblings={};for(let[key,child]of Object.entries(object5))key!=="$ref"&&(key==="nullable"&&typeof child=="boolean"||(siblings[key]=transformSchemaNode(spec,child,resolvingRefs)));let transformed=siblings;if(ref!==void 0){let schemaRef=rewriteSchemaRef(spec,ref);if(schemaRef!==void 0)transformed={$ref:schemaRef,...siblings};else if(!resolvingRefs.has(ref)){let resolved=resolveRef(spec,{$ref:ref});if(resolved!==void 0){let nextRefs=new Set(resolvingRefs);nextRefs.add(ref),transformed={...readRecord(transformSchemaNode(spec,resolved,nextRefs))??{},...siblings}}}}return object5.nullable===!0?{anyOf:[transformed,{type:"null"}]}:transformed}function rewriteSchemaRef(spec,ref){let prefix="#/components/schemas/";if(ref.startsWith(prefix))return resolveRef(spec,{$ref:ref})===void 0?void 0:`#/$defs/${ref.slice(prefix.length)}`}function getJsonRequestBodySchema(requestBody){let content=requestBody?.content;if(content!==void 0)return content["application/json"]?.schema??content["application/*+json"]?.schema??Object.entries(content).find(([mediaType])=>mediaType.includes("+json"))?.[1].schema}async function callOpenAPIOperation(operation,params,options,inputBindings,baseUrl){let fetchImpl=options.fetch??globalThis.fetch,url2=buildUrl(operation,params,inputBindings.parameters,baseUrl),headers=buildHeaders(inputBindings.parameters,params,options),bodyInputName=inputBindings.bodyInputName,body=bodyInputName===void 0||params[bodyInputName]===void 0?void 0:JSON.stringify(params[bodyInputName]);body!==void 0&&!hasHeader(headers,"content-type")&&(headers["content-type"]="application/json");let response=await fetchImpl(url2,{method:operation.method.toUpperCase(),headers,...body!==void 0&&{body}}),contentType=response.headers.get("content-type")??"";if(!response.ok)return{content:[{type:"text",text:await response.text()}],isError:!0};if(contentType.includes("application/json")||contentType.includes("+json")){let text2=await response.text();try{let data=JSON.parse(text2);return{content:[{type:"text",text:JSON.stringify(data)}],structuredContent:data}}catch{return{content:[{type:"text",text:text2}]}}}return{content:[{type:"text",text:await response.text()}]}}function buildUrl(operation,params,parameterBindings,baseUrl){let interpolatedPath=operation.path.replace(/{([^}]+)}/g,(_match,name)=>{let binding=parameterBindings.find(({parameter})=>parameter.in==="path"&¶meter.name===name);return encodeURIComponent(String(binding===void 0?"":params[binding.inputName]??""))}),url2=new URL(interpolatedPath.replace(/^\/+/,""),ensureTrailingSlash(baseUrl));for(let{parameter,inputName}of parameterBindings){if(parameter.in!=="query")continue;let value=params[inputName];value==null||value===""||appendQueryParam(url2,parameter.name,value)}return url2.toString()}function buildHeaders(parameterBindings,params,options){let headers={...options.headers??{}};for(let{parameter,inputName}of parameterBindings){if(parameter.in!=="header")continue;let value=params[inputName];value==null||value===""||(headers[parameter.name]=String(value))}return options.auth?.type==="bearer"&&options.auth.token&&(headers.authorization=`Bearer ${options.auth.token}`),options.auth?.type==="header"&&options.auth.value&&(headers[options.auth.name]=options.auth.value),headers}function resolveBaseUrl(options){let baseUrl=options.baseUrl??options.spec.servers?.[0]?.url;if(baseUrl===void 0||baseUrl.trim()==="")throw new Error("MCPServer.fromOpenAPI requires options.baseUrl or spec.servers[0].url");return baseUrl}function appendQueryParam(url2,name,value){if(Array.isArray(value)){for(let item of value)item!=null&&item!==""&&url2.searchParams.append(name,String(item));return}url2.searchParams.set(name,String(value))}function ensureTrailingSlash(url2){return url2.endsWith("/")?url2:`${url2}/`}function hasHeader(headers,name){return Object.keys(headers).some(headerName=>headerName.toLowerCase()===name)}function isReferenceObject(value){let object5=readRecord(value);return object5!==void 0&&typeof object5.$ref=="string"}function resolveRef(spec,value){if(!isReferenceObject(value))return value;if(!value.$ref.startsWith("#/"))return;let segments=value.$ref.slice(2).split("/").map(segment=>segment.replace(/~1/g,"/").replace(/~0/g,"~")),current=spec;for(let segment of segments){let object5=readRecord(current);if(object5===void 0||!(segment in object5))return;current=object5[segment]}return current}function readRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:void 0}init_dist();init_dist();init_fetch_app();function isRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function isLocalhost(url2){let hostname=url2.hostname.toLowerCase();return hostname==="localhost"||hostname.endsWith(".localhost")||hostname==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(hostname)}function parseAbsoluteUrl(value,name){let url2;try{url2=new URL(value)}catch{throw new Error(`${name} must be an absolute URL`)}if(url2.origin==="null"||url2.username!==""||url2.password!=="")throw new Error(`${name} must be an absolute URL without credentials`);return url2}function assertSecureHttpUrl(url2,name){if(url2.protocol!=="https:"&&!(url2.protocol==="http:"&&isLocalhost(url2)))throw new Error(`${name} must use HTTPS, or HTTP for localhost`)}init_dist();function invalidToken(message,cause){let error3=new OAuthError(OAuthErrorCode.InvalidToken,message);return cause!==void 0&&(error3.cause=cause),error3}function resolveConfiguredOAuthResource(options){let provider=options.provider,basePath=normalizeBasePath(options.basePath);if(provider.resource!==void 0)return validateOAuthResource(provider.resource,basePath);if(options.mcpUrl!==void 0)return validateOAuthResource(appendBasePath(requireAbsoluteOrigin(options.mcpUrl,"MCP_URL"),basePath),basePath)}function resolveLocalOAuthResource(listenOrigin,basePath){let listenOriginUrl=requireAbsoluteOrigin(listenOrigin,"listen origin");if(!isLocalhost(listenOriginUrl))throw new Error("OAuth listen origin must be localhost or a loopback address");return validateOAuthResource(appendBasePath(listenOriginUrl,normalizeBasePath(basePath)),basePath)}function validateOAuthResource(resource2,basePath){let normalizedBasePath=normalizeBasePath(basePath),url2=parseAbsoluteUrl(resource2,"OAuth resource");if(url2.search!==""||url2.hash!=="")throw new Error("OAuth resource must not include a query string or fragment");if(assertSecureHttpUrl(url2,"OAuth resource"),normalizePathname(url2.pathname)!==normalizedBasePath)throw new Error(`OAuth resource path must exactly match basePath (${normalizedBasePath})`);return url2.pathname=normalizedBasePath,url2}function wrapOAuthTokenVerifier(provider,expectedResource){let canonicalResource=normalizeResourceUrl(expectedResource),tokenVerifier=provider.createTokenVerifier(new URL(canonicalResource.href));if(tokenVerifier===null||typeof tokenVerifier!="object"||typeof tokenVerifier.verifyAccessToken!="function")throw new TypeError("OAuth provider createTokenVerifier must return an OAuthTokenVerifier");return{async verifyAccessToken(token){let authInfo=await tokenVerifier.verifyAccessToken(token);assertVerifiedAuthInfo(authInfo),assertResourceBinding(authInfo,canonicalResource);let mapped;try{mapped=provider.mapAuthInfo(authInfo)}catch(error3){throw invalidToken("Token identity mapping failed",error3)}return assertMappedExtra(mapped),{...authInfo,scopes:[...authInfo.scopes],extra:{...authInfo.extra,...mapped}}}}}function assertResourceBinding(authInfo,expectedResource){if(authInfo.resource===void 0)throw invalidToken("Token verifier did not return a validated protected resource");if(parseTokenResource(authInfo.resource).href!==normalizeResourceUrl(expectedResource).href)throw invalidToken("Token resource does not match the protected resource")}function parseTokenResource(value){if(!(value instanceof URL))throw invalidToken("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");let resource2=value;if(!/^https?:$/.test(resource2.protocol)||resource2.username!==""||resource2.password!==""||resource2.search!==""||resource2.hash!==""||resource2.protocol==="http:"&&!isLocalhost(resource2))throw invalidToken("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");return normalizeResourceUrl(resource2)}function normalizeResourceUrl(resource2){let normalized=new URL(resource2);return normalized.pathname=normalized.pathname==="/"?"/":normalized.pathname.replace(/\/+$/,""),normalized}function getOAuthProviderOptions(provider){return{oauthMetadata:provider.oauthMetadata,...provider.requiredScopes!==void 0&&{requiredScopes:[...provider.requiredScopes]},...provider.scopesSupported!==void 0&&{scopesSupported:[...provider.scopesSupported]},...provider.resourceName!==void 0&&{resourceName:provider.resourceName},...provider.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:provider.serviceDocumentationUrl}}}function assertVerifiedAuthInfo(authInfo){if(authInfo===null||typeof authInfo!="object"||typeof authInfo.token!="string"||authInfo.token.length===0||typeof authInfo.clientId!="string"||!Array.isArray(authInfo.scopes)||!authInfo.scopes.every(scope=>typeof scope=="string")||typeof authInfo.expiresAt!="number"||!Number.isFinite(authInfo.expiresAt)||authInfo.expiresAt<=Date.now()/1e3)throw invalidToken("Token verifier returned invalid authentication information")}function assertMappedExtra(mapped){if(mapped===null||typeof mapped!="object"||!("user"in mapped)||mapped.user===void 0||!isRecord(mapped.payload)||!Array.isArray(mapped.permissions)||!mapped.permissions.every(permission=>typeof permission=="string"))throw invalidToken("Token identity mapping must return user, payload, and string permissions")}function requireAbsoluteOrigin(value,name){let url2=parseAbsoluteUrl(value,name);if(url2.pathname!=="/"||url2.search!==""||url2.hash!==""||url2.username!==""||url2.password!=="")throw new Error(`${name} must be an absolute origin without a path`);return url2}function appendBasePath(origin,basePath){let resource2=new URL(origin.origin);return resource2.pathname=basePath,resource2}function normalizeBasePath(basePath){if(!basePath.startsWith("/")||basePath.includes("?")||basePath.includes("#"))throw new Error("basePath must be an absolute URL pathname");return normalizePathname(basePath)}function normalizePathname(pathname){if(pathname==="/")return"/";let end=pathname.length;for(;end>0&&pathname.charCodeAt(end-1)===47;)end--;return pathname.slice(0,end)}function oauthMetadata(provider,resource2){let options=getOAuthProviderOptions(provider);return async(request,next)=>{let response=oauthMetadataResponse(request,{oauthMetadata:options.oauthMetadata,resourceServerUrl:resource2,...options.scopesSupported!==void 0&&{scopesSupported:[...options.scopesSupported]},...options.resourceName!==void 0&&{resourceName:options.resourceName},...options.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:options.serviceDocumentationUrl}});return response!==void 0?response:next()}}function authInfoFromRequest(request){return getRequestBag(request).authInfo}init_dist();import{createRemoteJWKSet,jwtVerify,errors}from"jose";init_policy();function resolveToolInputSchema(definition){return definition.inputSchema??definition.schema}init_dist();var META_KEY="openai/ui";function record2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function validateEntrypointInput(definition){let entrypoints=definition.view?.entrypoints;if(!entrypoints?.length)return;let schema2=resolveToolInputSchema(definition),validate=schema2?fromJsonSchema2(schema2["~standard"].jsonSchema.input({target:"draft-2020-12"}))["~standard"].validate:void 0;for(let entrypoint of entrypoints){let payloads=entrypoint.type==="file"?entrypoint.extensions.map(extension=>({file:{name:`file${extension}`,resourceUri:"host-resource://opaque-handle"}})):[{}];if(entrypoint.type==="file"&&!validate)throw new TypeError(`Tool "${definition.name}" file entrypoint requires an inputSchema accepting { file: { name, resourceUri } }.`);for(let payload of payloads){let result=validate?.(payload);if(result&&("then"in result||result.issues))throw new TypeError(`Tool "${definition.name}" ${entrypoint.type} entrypoint launch arguments do not satisfy its inputSchema.`)}}}function buildEntrypointMeta(definition){let entrypoints=definition.view?.entrypoints;if(entrypoints===void 0)return definition._meta;let existing=definition._meta?.[META_KEY];return{...definition._meta,[META_KEY]:{...record2(existing)?existing:{},entrypoints:entrypoints.map(entry=>entry.type==="file"?{type:entry.type,extensions:[...entry.extensions]}:{type:entry.type})}}}var EVENT="mcp_use_sdk_event",ENDPOINT="https://eu.i.posthog.com/i/v0/e/",TOKEN="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",CONTENT=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,RESERVED=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),runtimeId;function getRuntimeId(){return runtimeId??=crypto.randomUUID(),runtimeId}var once=new Set,pending=new Set,identities=new Map;function hasControl(value){return[...value].some(character=>{let code=character.charCodeAt(0);return code<32||code===127})}function env(name){return typeof process>"u"?void 0:process.env?.[name]}function safeEnv(name){let value=env(name);return value!==void 0&&value.length>0&&value.length<=128&&!hasControl(value)?value:void 0}function canPersistTelemetryIdentity(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}function disabled(){if(env("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}function isUsageDisabled(){return disabled()}function clean(properties){return Object.fromEntries(Object.entries(properties).filter(([key,value])=>key.length>128||hasControl(key)||key.startsWith("$")||RESERVED.has(key)||CONTENT.test(key)||value===void 0?!1:typeof value=="string"?value.length<=128&&!hasControl(value):typeof value=="boolean"||typeof value=="number"&&Number.isFinite(value)))}async function identity(serverRoot){let projectId=safeEnv("MCP_USE_TELEMETRY_PROJECT_ID");if(projectId!==void 0)return{id:projectId,stability:"project"};if(serverRoot===void 0||!canPersistTelemetryIdentity())return{id:getRuntimeId(),stability:"process"};let existing=identities.get(serverRoot);if(existing!==void 0)return existing;let resolving=(async()=>{try{let fs=await import("fs/promises"),directory=`${serverRoot}/.mcp-use`,file=`${directory}/usage.json`,read=async()=>{try{let value=JSON.parse(await fs.readFile(file,"utf8"));if(typeof value=="object"&&value!==null&&"schemaVersion"in value&&value.schemaVersion===1&&"serverId"in value&&typeof value.serverId=="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(value.serverId))return value.serverId}catch{}},stored=await read();if(stored!==void 0)return{id:stored,stability:"server"};await fs.mkdir(directory,{recursive:!0,mode:448});let created=crypto.randomUUID();try{return await fs.writeFile(file,`${JSON.stringify({schemaVersion:1,serverId:created})}
|
|
771
|
-
`,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}init_dist();function schema(validateValue){return{"~standard":{version:1,vendor:"mcp-use",validate(value){try{return{value:validateValue(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function object3(value){if(typeof value!="object"||value===null||Array.isArray(value))throw new TypeError("params must be an object");return value}var listParams=schema(value=>{let cursor=object3(value).cursor;if(cursor!==void 0&&typeof cursor!="string")throw new TypeError("cursor must be a string");return cursor===void 0?{}:{cursor}}),uriParams=schema(value=>{let params=object3(value);if(typeof params.uri!="string")throw new TypeError("uri must be a string");if(params.cursor!==void 0&&typeof params.cursor!="string")throw new TypeError("cursor must be a string");return{uri:params.uri,...typeof params.cursor=="string"&&{cursor:params.cursor}}}),anyResult=schema(value=>object3(value));function decodePathSegment(value){try{return decodeURIComponent(value)}catch{return value}}function registerSkillsRuntime(server,snapshot){let skills=new Map(snapshot.skills.map(skill=>[skill.uri,skill]));for(let resource2 of snapshot.resources)server.registerResource(resource2.uri,resource2.uri,{title:resource2.name,mimeType:resource2.mimeType},async()=>({contents:[{uri:resource2.uri,mimeType:resource2.mimeType,...resource2.text!==void 0?{text:resource2.text}:{blob:resource2.blob}}]}));server.server.setRequestHandler("skills/list",{params:listParams,result:anyResult},async()=>({skills:snapshot.skills})),server.server.setRequestHandler("skills/get",{params:uriParams,result:anyResult},async({uri})=>{let skill=skills.get(uri);if(skill===void 0)throw new ProtocolError(INVALID_PARAMS,`Unknown skill: ${uri}`);return{skill}}),server.server.setRequestHandler("resources/directory/read",{params:uriParams,result:anyResult},async({uri})=>{let normalized=uri.replace(/\/$/,""),knownDirectories=new Set(snapshot.directories.map(item=>item.uri)),prefix=`${normalized}/`,children=new Map;for(let resource2 of snapshot.resources){if(!resource2.uri.startsWith(prefix))continue;let remainder=resource2.uri.slice(prefix.length),[name]=remainder.split("/");if(name===void 0||name==="")continue;let childUri=`${normalized}/${name}`;children.set(childUri,{uri:childUri,name:decodePathSegment(name),mimeType:remainder.includes("/")?"inode/directory":resource2.mimeType})}for(let directory of snapshot.directories){if(!directory.uri.startsWith(prefix))continue;let remainder=directory.uri.slice(prefix.length);remainder===""||remainder.includes("/")||children.set(directory.uri,{uri:directory.uri,name:directory.name,mimeType:"inode/directory"})}if(!knownDirectories.has(normalized))throw new ProtocolError(INVALID_PARAMS,`Unknown skill directory: ${uri}`);return{resources:[...children.values()].sort((left,right)=>left.uri.localeCompare(right.uri))}})}var SKILLS_EXTENSION_ID="io.modelcontextprotocol/skills",registerSkills=Symbol.for("mcp-use.registerSkills");var registerViews=Symbol("mcp-use/registerViews");init_fetch_app();function resolveAssetUrl(assetPath,origin){if(!assetPath.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(assetPath)}`);return`${origin}${assetPath}`}function viewAssetsBasePath(basePath,viewName){return`${pathUnderBase(basePath,`_mcp-use/views/${viewName}`)}/`}function resolveExternalAssetUrl(assetPath,assetsBase,basePath,viewName){return assetPath.startsWith("http://")||assetPath.startsWith("https://")||assetPath.startsWith("data:")?assetPath:assetPath.startsWith("/")?resolveAssetUrl(assetPath,assetsBase):`${assetsBase}${viewAssetsBasePath(basePath,viewName)}${assetPath.replace(/^\/+/,"")}`}function resolvePublicBase(assetsBase,basePath){return`${assetsBase}${pathUnderBase(basePath,"_mcp-use/public")}/`}function escapeInlineScript(code){return code.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}function escapeInlineStyle(css2){return css2.replaceAll(/<\/style/gi,"<\\/style")}function escapeHtml(value){return value.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}var VIEW_BOOTSTRAP_STYLE=`<style>
|
|
771
|
+
`,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.1-canary.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}init_dist();function schema(validateValue){return{"~standard":{version:1,vendor:"mcp-use",validate(value){try{return{value:validateValue(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function object3(value){if(typeof value!="object"||value===null||Array.isArray(value))throw new TypeError("params must be an object");return value}var listParams=schema(value=>{let cursor=object3(value).cursor;if(cursor!==void 0&&typeof cursor!="string")throw new TypeError("cursor must be a string");return cursor===void 0?{}:{cursor}}),uriParams=schema(value=>{let params=object3(value);if(typeof params.uri!="string")throw new TypeError("uri must be a string");if(params.cursor!==void 0&&typeof params.cursor!="string")throw new TypeError("cursor must be a string");return{uri:params.uri,...typeof params.cursor=="string"&&{cursor:params.cursor}}}),anyResult=schema(value=>object3(value));function decodePathSegment(value){try{return decodeURIComponent(value)}catch{return value}}function registerSkillsRuntime(server,snapshot){let skills=new Map(snapshot.skills.map(skill=>[skill.uri,skill]));for(let resource2 of snapshot.resources)server.registerResource(resource2.uri,resource2.uri,{title:resource2.name,mimeType:resource2.mimeType},async()=>({contents:[{uri:resource2.uri,mimeType:resource2.mimeType,...resource2.text!==void 0?{text:resource2.text}:{blob:resource2.blob}}]}));server.server.setRequestHandler("skills/list",{params:listParams,result:anyResult},async()=>({skills:snapshot.skills})),server.server.setRequestHandler("skills/get",{params:uriParams,result:anyResult},async({uri})=>{let skill=skills.get(uri);if(skill===void 0)throw new ProtocolError(INVALID_PARAMS,`Unknown skill: ${uri}`);return{skill}}),server.server.setRequestHandler("resources/directory/read",{params:uriParams,result:anyResult},async({uri})=>{let normalized=uri.replace(/\/$/,""),knownDirectories=new Set(snapshot.directories.map(item=>item.uri)),prefix=`${normalized}/`,children=new Map;for(let resource2 of snapshot.resources){if(!resource2.uri.startsWith(prefix))continue;let remainder=resource2.uri.slice(prefix.length),[name]=remainder.split("/");if(name===void 0||name==="")continue;let childUri=`${normalized}/${name}`;children.set(childUri,{uri:childUri,name:decodePathSegment(name),mimeType:remainder.includes("/")?"inode/directory":resource2.mimeType})}for(let directory of snapshot.directories){if(!directory.uri.startsWith(prefix))continue;let remainder=directory.uri.slice(prefix.length);remainder===""||remainder.includes("/")||children.set(directory.uri,{uri:directory.uri,name:directory.name,mimeType:"inode/directory"})}if(!knownDirectories.has(normalized))throw new ProtocolError(INVALID_PARAMS,`Unknown skill directory: ${uri}`);return{resources:[...children.values()].sort((left,right)=>left.uri.localeCompare(right.uri))}})}var SKILLS_EXTENSION_ID="io.modelcontextprotocol/skills",registerSkills=Symbol.for("mcp-use.registerSkills");var registerViews=Symbol("mcp-use/registerViews");init_fetch_app();function resolveAssetUrl(assetPath,origin){if(!assetPath.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(assetPath)}`);return`${origin}${assetPath}`}function viewAssetsBasePath(basePath,viewName){return`${pathUnderBase(basePath,`_mcp-use/views/${viewName}`)}/`}function resolveExternalAssetUrl(assetPath,assetsBase,basePath,viewName){return assetPath.startsWith("http://")||assetPath.startsWith("https://")||assetPath.startsWith("data:")?assetPath:assetPath.startsWith("/")?resolveAssetUrl(assetPath,assetsBase):`${assetsBase}${viewAssetsBasePath(basePath,viewName)}${assetPath.replace(/^\/+/,"")}`}function resolvePublicBase(assetsBase,basePath){return`${assetsBase}${pathUnderBase(basePath,"_mcp-use/public")}/`}function escapeInlineScript(code){return code.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}function escapeInlineStyle(css2){return css2.replaceAll(/<\/style/gi,"<\\/style")}function escapeHtml(value){return value.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}var VIEW_BOOTSTRAP_STYLE=`<style>
|
|
772
772
|
html,body,#root{background:transparent}
|
|
773
773
|
html,body{margin:0}
|
|
774
774
|
#root[data-mcp-use-loading]{display:flex;min-height:100vh;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:rgba(127,127,127,.9)}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{b as pt,c as ft}from"./chunk-TCIRBQPM.js";import{a as R,b as Dn,c as Y,d as le,e as X,f as _,g as pe,h as fe,i as me,j as he,k as ye,l as mt,m as ht,o as yt}from"./chunk-YI27EOFM.js";import{a as ut,b as ct,c as O,d as lt}from"./chunk-HAV435PF.js";import{a as o}from"./chunk-EI7MMDWY.js";var Nn=["inline","fullscreen","pip"],Hn=new Set(["inline","fullscreen","pip"]);function ge(e){let t=e?.autoResize??!0,n=e?.displayModes===void 0?Nn:e.displayModes;if(!Array.isArray(n)||n.length===0)throw new Error('viewConfig.displayModes must be a non-empty array that includes "inline"');let r=new Set,s=[];for(let a of n){if(typeof a!="string"||!Hn.has(a))throw new Error(`viewConfig.displayModes contains invalid mode ${JSON.stringify(a)}; expected "inline", "fullscreen", or "pip"`);if(r.has(a))throw new Error(`viewConfig.displayModes contains duplicate mode "${a}"`);r.add(a),s.push(a)}if(!r.has("inline"))throw new Error('viewConfig.displayModes must include "inline"');let i=e?.preferredDisplayMode;if(i!==void 0&&i!=="inline"&&i!=="fullscreen")throw new Error('viewConfig.preferredDisplayMode must be "inline" or "fullscreen"');if(i!==void 0&&!r.has(i))throw new Error("viewConfig.preferredDisplayMode must belong to displayModes");return{...i!==void 0&&{preferredDisplayMode:i},autoResize:t,displayModes:s}}o(ge,"normalizeViewConfig");import{localhostAllowedHostnames as An,localhostAllowedOrigins as ns,McpServer as rs,ResourceTemplate as os,CLIENT_CAPABILITIES_META_KEY as ss,CLIENT_INFO_META_KEY as is,PROTOCOL_VERSION_META_KEY as as,isJSONRPCRequest as _n,isInputRequiredResult as Pn}from"@modelcontextprotocol/server";import{createServer as ds}from"#mcp-use-node-http";import{Hono as kn}from"hono";var gt="public, max-age=31536000, immutable",$n="public, max-age=300";function Te(e){return/^([a-z][a-z\d+.-]*):/i.exec(e)?.[1]?.toLowerCase()}o(Te,"protocolOf");function Fn(e,t){return`${e==="/"?"":e}/_mcp-use/public/${t.split("/").map(r=>encodeURIComponent(r)).join("/")}`}o(Fn,"publicAssetPath");function we(e){return Te(e)===void 0}o(we,"isLocalPublicSource");function Vn(e){return e[0]}o(Vn,"selectFaviconFromIcons");function Bn(e,t){if(e.startsWith("/")||e.includes("\\")||e.includes("?")||e.includes("#")||e.split("/").some(n=>n===""||n===".."))throw new TypeError(`${t} must be an http(s) URL, image data URL, or safe path relative to public/`)}o(Bn,"assertLocalPublicSource");function Tt(e,t){let n=e.indexOf(",");if(n<0)throw new TypeError(`${t} must be a valid image data URL`);let r=e.slice(5,n),s=e.slice(n+1),i=r.split(";"),a=i[0]?.toLowerCase()??"";if(!a.startsWith("image/"))throw new TypeError(`${t} data URL must use an image MIME type`);try{if(i.includes("base64")){let d=atob(s);return{mimeType:a,bytes:Uint8Array.from(d,u=>u.charCodeAt(0))}}return{mimeType:a,bytes:new TextEncoder().encode(decodeURIComponent(s))}}catch{throw new TypeError(`${t} must be a valid image data URL`)}}o(Tt,"parseDataImage");function wt(e,t){if(typeof e!="string"||e.length===0)throw new TypeError(`${t} must be a non-empty string`);let n=Te(e);if(n===void 0)return Bn(e,t),e;if(n==="data")return Tt(e,t),e;if(n!=="http"&&n!=="https")throw new TypeError(`${t} must be an http(s) URL, image data URL, or safe path relative to public/`);try{new URL(e)}catch{throw new TypeError(`${t} must be a valid absolute http(s) URL`)}return e}o(wt,"assertBrandingSource");function Mt(e){let t;if(e.websiteUrl!==void 0){if(typeof e.websiteUrl!="string"||e.websiteUrl.length===0)throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");let d;try{d=new URL(e.websiteUrl)}catch{throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL")}if(d.protocol!=="http:"&&d.protocol!=="https:")throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");t=e.websiteUrl}let n;if(e.icons!==void 0){if(!Array.isArray(e.icons))throw new TypeError("icons must be an array of MCP Icon objects");n=Object.freeze(e.icons.map((d,u)=>{if(typeof d!="object"||d===null)throw new TypeError(`icons[${u}] must be an MCP Icon object`);let c=d,l=wt(c.src,`icons[${u}].src`),f=c.mimeType;if(f!==void 0&&(typeof f!="string"||!f.toLowerCase().startsWith("image/")))throw new TypeError(`icons[${u}].mimeType must be an image MIME type when provided`);let h=c.sizes;if(h!==void 0&&(!Array.isArray(h)||h.some(m=>typeof m!="string"||m.length===0)))throw new TypeError(`icons[${u}].sizes must be an array of non-empty strings when provided`);let y=h===void 0?void 0:h.map(m=>m),p=c.theme;if(p!==void 0&&p!=="light"&&p!=="dark")throw new TypeError(`icons[${u}].theme must be "light" or "dark" when provided`);return Object.freeze({src:l,...f!==void 0&&{mimeType:f},...y!==void 0&&{sizes:Object.freeze(y)},...p!==void 0&&{theme:p}})}))}let r=e.favicon===void 0?void 0:wt(e.favicon,"favicon"),s=r===void 0?Vn(n??[]):void 0,i=r??s?.src,a=s?.mimeType??n?.find(d=>d.src===r)?.mimeType;return Object.freeze({...i!==void 0&&{favicon:i},...a!==void 0&&{faviconMimeType:a},...n!==void 0&&{icons:n},...t!==void 0&&{websiteUrl:t}})}o(Mt,"normalizeServerBranding");function Me(e,t,n){return e.map(r=>({...r,src:t!==void 0&&we(r.src)?`${O(t)}${Fn(n,r.src)}`:r.src,...r.sizes!==void 0&&{sizes:[...r.sizes]}}))}o(Me,"resolveImplementationIcons");function Re(e){return e.favicon!==void 0&&we(e.favicon)||e.icons?.some(t=>we(t.src))===!0}o(Re,"hasLocalBrandingAsset");function Rt(e,t){let n=e.favicon;if(n!==void 0)return async r=>{if(r.method!=="GET"&&r.method!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{Allow:"GET, HEAD"}});if(new URL(r.url).pathname!=="/favicon.ico")return new Response("Not Found",{status:404});let s=Te(n);if(s==="http"||s==="https")return new Response(null,{status:307,headers:{Location:n,"Cache-Control":$n}});if(s==="data"){let c=Tt(n,"favicon");return new Response(r.method==="HEAD"?null:c.bytes.buffer,{status:200,headers:{"Content-Type":e.faviconMimeType??c.mimeType,"Cache-Control":gt,"X-Content-Type-Options":"nosniff"}})}let{join:i}=await import("path"),a=t.dev?i(t.projectRoot,"public"):i(t.projectRoot,".mcp-use/build/views/public"),d=await pt(a,n);if(d===null)return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});let u=await ft(d,{...t.deferCors===!0&&{deferCors:!0},...r.method==="HEAD"&&{head:!0}});return u.headers.set("Cache-Control",gt),u.headers.set("X-Content-Type-Options","nosniff"),e.faviconMimeType!==void 0&&u.headers.set("Content-Type",e.faviconMimeType),u}}o(Rt,"createFaviconHandler");function Wn(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.createTokenVerifier=="function"&&typeof t.mapAuthInfo=="function"&&typeof t.oauthMetadata=="object"&&t.oauthMetadata!==null}o(Wn,"isOAuthProviderLike");function vt(e){if(e.mixedAuth!==void 0&&typeof e.mixedAuth!="boolean")throw new TypeError("mixedAuth must be a boolean");if(e.mixedAuth===!0&&!Wn(e.oauth))throw new TypeError("mixedAuth requires an OAuth provider; set oauth on the server");if(e.basePath!==void 0){if(typeof e.basePath!="string")throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace");let{basePath:t}=e;if(!t.startsWith("/")||t.includes("?")||t.includes("#")||/\s/.test(t)||t.includes("//")||t.length>1&&t.endsWith("/"))throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace")}if(e.port!==void 0&&(typeof e.port!="number"||!Number.isInteger(e.port)||e.port<0||e.port>65535))throw new TypeError("port must be an integer between 0 and 65535");if(e.skills!==void 0&&typeof e.skills!="boolean"){if(typeof e.skills!="object"||e.skills===null||Array.isArray(e.skills))throw new TypeError("skills must be a boolean or configuration object");let t=e.skills.directory;if(t!==void 0&&typeof t!="string")throw new TypeError("skills.directory must be a string when provided")}}o(vt,"assertServerConfig");var zn="127.0.0.1";function xt(e,t,n=process.env){if(e!==void 0)return e;let r=n.HOST?.trim();return r!==void 0&&r!==""?r:t??zn}o(xt,"resolveListenHost");function bt(e,t,n=process.env){if(e!==void 0)return e;let r=Jn(n.PORT);return r!==void 0?r:t??3e3}o(bt,"resolveListenPort");function Jn(e){if(e===void 0||e.trim()==="")return;let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=65535?t:void 0}o(Jn,"parsePort");import{isBufferedResponse as Kn}from"#mcp-use-buffered-response";function St(e,t){return async(n,r,s)=>{typeof s=="function"&&(s=void 0);let i=!1,a=new AbortController;r.on("close",()=>{i||a.abort()}),r.destroyed===!0&&a.abort();let d,u;try{d=await Gn(n,s,{signal:a.signal}),u=await e.fetch(d,{...n.auth!==void 0&&{authInfo:n.auth},...s!==void 0&&{parsedBody:s}})}catch(m){try{t?.onerror?.(m instanceof Error?m:new Error(String(m)))}catch{}u=Xn(Yn(s))}let c={},l=u.headers.getSetCookie?.();for(let[m,g]of u.headers){if(m==="set-cookie"&&l?.length){c[m]=l;continue}c[m]=g}if(r.writeHead(u.status,c),u.body===null){i=!0,r.end();return}if(Kn(u,d)){try{let m=new Uint8Array(await u.arrayBuffer());i=!0,r.end(m)}catch{i=!0,r.end()}return}let f,h=o(()=>{f?.(),f=void 0},"releaseDrainWait"),y=o(()=>new Promise(m=>{f=m}),"waitForDrain");r.on("drain",h);let p=new Promise(m=>{a.signal.addEventListener("abort",()=>m(),{once:!0})});try{for await(let m of u.body){if(a.signal.aborted)break;let g=m instanceof Uint8Array?m:new Uint8Array(m);r.write(g)===!1&&await Promise.race([y(),p])}}catch{}i=!0,r.end()}}o(St,"toNodeHandler");async function Gn(e,t,n){let r=(e.method??"GET").toUpperCase(),i=`http://${Et(e.headers.host)??Et(e.headers[":authority"])??"localhost"}${e.url??"/"}`,a=new Headers;for(let[u,c]of Object.entries(e.headers))if(!(c===void 0||u.startsWith(":")))if(Array.isArray(c))for(let l of c)a.append(u,l);else a.set(u,c);let d;if(r!=="GET"&&r!=="HEAD")if(t===void 0){let u=new TextDecoder,c="";for await(let l of e)c+=typeof l=="string"?l:u.decode(l,{stream:!0});c+=u.decode(),c.length>0&&(d=c)}else{let u=JSON.stringify(t);a.delete("content-encoding"),a.delete("transfer-encoding"),u===void 0?a.delete("content-length"):(d=u,a.set("content-length",String(new TextEncoder().encode(u).byteLength)))}return new Request(i,{method:r,headers:a,...n?.signal!==void 0&&{signal:n.signal},...d!==void 0&&{body:d}})}o(Gn,"toWebRequest");function Et(e){return Array.isArray(e)?e[0]:e}o(Et,"singleHeaderValue");function Yn(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;let{method:t,id:n}=e;return typeof t!="string"?null:typeof n=="string"||typeof n=="number"?n:null}o(Yn,"echoableRequestId");function Xn(e){return Response.json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:e},{status:500})}o(Xn,"internalServerErrorResponse");import{CLIENT_CAPABILITIES_META_KEY as tr,CLIENT_INFO_META_KEY as nr}from"@modelcontextprotocol/server";import{HonoRequest as rr}from"hono/request";import{CLIENT_CAPABILITIES_META_KEY as Qn}from"@modelcontextprotocol/server";var Ct="io.modelcontextprotocol/ui",Z="text/html;profile=mcp-app",Zn="ui://views/";var Q="ui/resourceUri";function k(e){return`${Zn}${e}.html`}o(k,"viewResourceUri");var er=new WeakMap;function Ot(e,t){er.set(e,t)}o(Ot,"stashClientCapabilities");function At(e){if(typeof e!="object"||e===null)return;let t=e.params;if(typeof t!="object"||t===null)return;let n=t._meta;if(typeof n!="object"||n===null)return;let r=n[Qn];if(!(typeof r!="object"||r===null))return r}o(At,"extractClientCapabilitiesFromBody");function ee(e){let t=e?.extensions;if(t===void 0)return!1;let n=t[Ct];if(typeof n!="object"||n===null)return!1;let r=n.mimeTypes;return Array.isArray(r)?r.includes(Z):!1}o(ee,"supportsViews");function or(e){if(e===void 0||e.extra===void 0||e.expiresAt===void 0)throw new Error("OAuth callback did not receive mapped AuthInfo.extra")}o(or,"requireOAuthAuthInfo");function b(e){return typeof e=="string"?e:void 0}o(b,"stringValue");function Pt(e){return typeof e=="string"||typeof e=="number"&&Number.isFinite(e)?e:void 0}o(Pt,"coordinateValue");function sr(e){if(e===void 0)return;let t=b(e["openai/locale"])??b(e["webplus/i18n"]),n=b(e["openai/userAgent"]),r=b(e["openai/subject"]),s=b(e["openai/session"]),i=b(e["openai/organization"]),a=e["openai/userLocation"],d;if(typeof a=="object"&&a!==null&&!Array.isArray(a)){let u=a,c={city:b(u.city),region:b(u.region),country:b(u.country),timezone:b(u.timezone),latitude:Pt(u.latitude),longitude:Pt(u.longitude)},l=Object.entries(c).filter(f=>f[1]!==void 0);l.length>0&&(d=Object.fromEntries(l))}if(!(t===void 0&&n===void 0&&d===void 0&&r===void 0&&s===void 0&&i===void 0))return{...t!==void 0&&{locale:t},...n!==void 0&&{userAgent:n},...d!==void 0&&{location:d},...r!==void 0&&{subject:r},...s!==void 0&&{conversationId:s},...i!==void 0&&{organizationId:i}}}o(sr,"normalizeUserContext");function kt(e){return e.mcpReq.envelope}o(kt,"requestEnvelope");function ve(e){return{...kt(e)?.[nr]??{}}}o(ve,"requestClientInfo");function ir(e){let n={...kt(e)?.[tr]??{}},r=ve(e),s=sr(e.mcpReq._meta);return{can(i){return Object.hasOwn(n,i)},capabilities(){return{...n}},extension(i){let a=n.extensions?.[i];return a===void 0?void 0:{...a}},info(){return{...r}},user(){return s===void 0?void 0:{...s,...s.location!==void 0&&{location:{...s.location}}}},supportsViews(){return ee(n)}}}o(ir,"toClientContext");function $(e){let t=e.http?.req,n=t===void 0?void 0:R(t).honoContext,r=n?.req??(t===void 0?void 0:new rr(t)),s={signal:e.mcpReq.signal,...r!==void 0&&{request:r},...e.mcpReq.inputResponses!==void 0&&{inputResponses:e.mcpReq.inputResponses},client:ir(e),requestState:o(()=>e.mcpReq.requestState(),"requestState"),async sendNotification(i,a){await e.mcpReq.notify({method:i,...a!==void 0&&{params:a}})},async reportProgress(i,a,d){let u=e.mcpReq._meta?.progressToken;return u===void 0?!1:(await e.mcpReq.notify({method:"notifications/progress",params:{progressToken:u,progress:i,...a!==void 0&&{total:a},...d!==void 0&&{message:d}}}),!0)},async sendLog(i,a,d){await e.mcpReq.notify({method:"notifications/message",params:{level:i,data:a,...d!==void 0&&{logger:d}}})}};return n!==void 0?Object.assign(n,s):{...s,...r!==void 0&&{req:r}}}o($,"toRequestContext");function xe(e){let t=e.http?.authInfo;return or(t),Object.assign($(e),{auth:{user:t.extra.user,payload:t.extra.payload,accessToken:t.token,scopes:[...t.scopes],permissions:[...t.extra.permissions],...t.clientId.length>0&&{clientId:t.clientId},expiresAt:t.expiresAt,...t.resource!==void 0&&{resource:t.resource}}})}o(xe,"toAuthenticatedRequestContext");import{isInputRequiredResult as ar}from"@modelcontextprotocol/server";function dr(e){return"contents"in e&&Array.isArray(e.contents)}o(dr,"isReadResourceResult");function ur(e){return"messages"in e&&Array.isArray(e.messages)}o(ur,"isGetPromptResult");function be(e,t){if(dr(e))return e;let n=e._meta&&typeof e._meta=="object"&&typeof e._meta.mimeType=="string"?e._meta.mimeType:void 0,r=[];for(let s of e.content??[]){let i=cr(s,t,n);i!==void 0&&r.push(i)}return r.length===0&&e.structuredContent!==void 0&&r.push({uri:t,mimeType:"application/json",text:JSON.stringify(e.structuredContent)}),r.length===0&&r.push({uri:t,mimeType:"text/plain",text:""}),{contents:r}}o(be,"toResourceResult");function cr(e,t,n){if(e.type==="text")return{uri:t,mimeType:n??"text/plain",text:e.text};if(e.type==="image"||e.type==="audio")return{uri:t,mimeType:e.mimeType,blob:e.data};if(e.type==="resource")return{...e.resource}}o(cr,"contentBlockToResourceContents");function It(e){if(ar(e)||ur(e))return e;let t=(e.content??[]).map(n=>({role:"user",content:n}));return t.length===0&&e.structuredContent!==void 0&&t.push({role:"user",content:{type:"text",text:JSON.stringify(e.structuredContent)}}),t.length===0&&t.push({role:"user",content:{type:"text",text:""}}),{messages:t}}o(It,"toPromptResult");import{inheritBufferedResponse as lr}from"#mcp-use-buffered-response";var pr=["GET","HEAD","POST","OPTIONS"],fr=["Content-Type","Authorization","mcp-protocol-version","mcp-method","mcp-name"];function mr(e,t){return e===void 0?t:typeof e=="function"?e(t):e==="*"?"*":Array.isArray(e)?t!==null&&e.includes(t)?t:null:e}o(mr,"resolveAllowedOrigin");function hr(e,t){if(t.headers.has("Access-Control-Allow-Origin"))return;let n=t.headers.get("Origin"),r=mr(e.origin,n);if(r===null)return;let s={"Access-Control-Allow-Origin":r,"Access-Control-Allow-Methods":e.methods.join(", "),"Access-Control-Allow-Headers":e.allowedHeaders.join(", ")};return e.credentials&&(s["Access-Control-Allow-Credentials"]="true"),r!=="*"&&(s.Vary="Origin"),s}o(hr,"corsHeaders");function yr(e,t){if(e.headers.has("Access-Control-Allow-Origin"))return e;let n=new Headers(e.headers);return new Headers(t).forEach((s,i)=>{n.set(i,s)}),lr(e,new Response(e.body,{status:e.status,statusText:e.statusText,headers:n}))}o(yr,"mergeCorsHeaders");function Ut(e){if(!(e.enabled!==!1))return async(r,s)=>s();let n={...e.origin!==void 0&&{origin:e.origin},methods:e.methods??pr,allowedHeaders:e.allowedHeaders??fr,credentials:e.credentials??!1};return async(r,s)=>{let i=hr(n,r);if(i===void 0)return s();if(r.method==="OPTIONS")return new Response(null,{status:204,headers:i});let a=await s();return yr(a,i)}}o(Ut,"corsFetchMiddleware");function _t(e){return e!==void 0&&e.enabled!==!1}o(_t,"isGlobalCorsEnabled");import{CallToolResultSchema as gr,GetPromptResultSchema as wr,ListPromptsResultSchema as Tr,ListResourcesResultSchema as Mr,ListToolsResultSchema as Rr,ReadResourceResultSchema as vr}from"@modelcontextprotocol/core";import{isInputRequiredResult as xr}from"@modelcontextprotocol/server";var br=["tools/call","tools/list","resources/read","resources/list","prompts/get","prompts/list"];function jt(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("[mcp-use] MCP middleware received an invalid downstream request");return{...e,params:t}}o(jt,"withMcpMiddlewareParams");function Ce(e,t){let n=Ar(e),r=t;if(n!=="*"&&!Er(n))throw new TypeError(`Unsupported MCP middleware pattern "${e}". Use an exact MCP method or "mcp:*".`);return n==="*"?{pattern:n,handler:o(async(s,i)=>{let a=!1,d;if(await r(s,async()=>{d=await i(),a=!0}),!a)throw new Error(`Wildcard MCP middleware "${n}" must call next()`);return d},"handler")}:{pattern:n,handler:o((s,i)=>r(s,i),"handler")}}o(Ce,"createMcpMiddlewareEntry");function Oe(e,t){let{pattern:n,phase:r}=Or(e),s=t;return{pattern:n,phase:r,handler:o((i,a)=>s(i,a),"handler")}}o(Oe,"createMcpEventListenerEntry");function L(e,t){if(e==="*")return!0;if(e.endsWith("/*")){let n=e.slice(0,-1);return t.startsWith(n)}return e===t}o(L,"matchesPattern");function Er(e){return br.some(t=>t===e)}o(Er,"isMcpMiddlewareMethod");function qt(e,t,n){let r=e.filter(s=>L(s.pattern,t));return r.length===0?s=>n():s=>{let i=-1,a=o(d=>d<=i?Promise.reject(new Error("next() called multiple times")):(i=d,d===r.length?n():r[d].handler(s,()=>a(d+1))),"dispatch");return a(0)}}o(qt,"composeMiddleware");function Sr(e){return Object.freeze({method:e.method,params:Object.freeze({...e.params}),...e.request!==void 0&&{request:e.request},...e.req!==void 0&&{req:e.req},...e.session!==void 0&&{session:Object.freeze({...e.session})},...e.auth!==void 0&&{auth:e.auth},state:new Map(e.state)})}o(Sr,"freezeMiddlewareContext");async function Dt(e,t,n,r,s){Lt(t,n,"before",r);let a=await qt(e,n,s)(r);return Cr(n,a),Lt(t,n,"complete",r,a),a}o(Dt,"runMcpOperation");function Cr(e,t){if((e==="tools/call"||e==="resources/read"||e==="prompts/get")&&xr(t))return;let n=(()=>{switch(e){case"tools/call":return Se(e,t,"content"),gr.safeParse(t);case"tools/list":return Ee(e,t),Rr.safeParse({tools:t});case"resources/read":return Se(e,t,"contents"),vr.safeParse(t);case"resources/list":return Ee(e,t),Mr.safeParse({resources:t});case"prompts/get":return Se(e,t,"messages"),wr.safeParse(t);case"prompts/list":return Ee(e,t),Tr.safeParse({prompts:t});default:throw new TypeError(`Unsupported MCP middleware method "${e}"`)}})();if(!n.success)throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: ${n.error.message}`)}o(Cr,"assertValidMiddlewareResult");function Ee(e,t){if(!Array.isArray(t))throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: expected an array`)}o(Ee,"assertArrayResult");function Se(e,t,n){if(typeof t!="object"||t===null||!Array.isArray(t[n]))throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: expected a ${n} array`)}o(Se,"assertArrayProperty");function Lt(e,t,n,r,s){let i=Sr(r);for(let a of e)if(!(a.phase!==n||!L(a.pattern,t)))try{a.handler(i,s)}catch(d){console.error(`[mcp-use] MCP event listener for "${a.pattern}" (${n}) threw:`,d)}}o(Lt,"dispatchMcpEvents");function Or(e){let t=e.startsWith("mcp:")?e.slice(4):e;return t.endsWith(":complete")?{pattern:t.slice(0,-9),phase:"complete"}:{pattern:t,phase:"before"}}o(Or,"parseMcpPattern");function Ar(e){return e.startsWith("mcp:")?e.slice(4):e}o(Ar,"normalizeMcpMiddlewarePattern");import{CLIENT_INFO_META_KEY as Pr,isJSONRPCRequest as Nt}from"@modelcontextprotocol/server";import{isBufferedResponse as kr,trackBufferedResponse as Ir}from"#mcp-use-buffered-response";function Ur(){return typeof process>"u"||process.env?.NO_COLOR!==void 0?!1:process.stdout?.isTTY===!0}o(Ur,"colorsEnabled");function C(e,t){return n=>Ur()?`\x1B[${e}m${n}\x1B[${t}m`:n}o(C,"ansi");var Pe=C(1,22),ke=C(2,22),ne=C(31,39),Vt=C(32,39),S=C(33,39),_r=C(34,39),Bt=C(35,39),F=C(36,39),Lr=C(90,39);function jr(e){let t=typeof process>"u"?void 0:process.env?.MCP_USE_LOG_LEVEL?.toLowerCase();return t==="info"||t==="debug"||t==="trace"?t:e??"info"}o(jr,"resolveLogLevel");function Ie(e){if(!(e===void 0||typeof e.name!="string"))return typeof e.version=="string"&&e.version!==""?`${e.name}/${e.version}`:e.name}o(Ie,"formatClientInfo");var Wt={initialize:o(e=>({subject:Ie(e.clientInfo)}),"initialize"),ping:o(()=>({}),"ping"),"server/discover":o(()=>({}),"server/discover"),"completion/complete":o(e=>({subject:e.ref.type==="ref/prompt"?e.ref.name:e.ref.uri,input:e.argument}),"completion/complete"),"logging/setLevel":o(e=>({subject:e.level}),"logging/setLevel"),"prompts/get":o(e=>({subject:e.name,input:e.arguments}),"prompts/get"),"prompts/list":o(()=>({}),"prompts/list"),"resources/list":o(()=>({}),"resources/list"),"resources/templates/list":o(()=>({}),"resources/templates/list"),"resources/read":o(e=>({subject:e.uri}),"resources/read"),"resources/subscribe":o(e=>({subject:e.uri}),"resources/subscribe"),"resources/unsubscribe":o(e=>({subject:e.uri}),"resources/unsubscribe"),"subscriptions/listen":o(()=>({}),"subscriptions/listen"),"tools/call":o(e=>({subject:e.name,input:e.arguments}),"tools/call"),"tools/list":o(()=>({}),"tools/list"),"sampling/createMessage":o(()=>({}),"sampling/createMessage"),"elicitation/create":o(()=>({}),"elicitation/create"),"roots/list":o(()=>({}),"roots/list")};function qr(e){return Object.prototype.hasOwnProperty.call(Wt,e)}o(qr,"isKnownMethod");function Dr(e){if(!qr(e.method))return{};try{let t=Wt[e.method],n=t(e.params);return typeof n.subject=="string"||n.subject===void 0?n:{}}catch{return{}}}o(Dr,"formatDetail");var Ht=80;function $t(e){let t;try{t=JSON.stringify(e)??String(e)}catch{t=String(e)}return t.length>Ht?`${t.slice(0,Ht)}...`:t}o($t,"inlineJson");function Nr(e){let t=e.params?._meta;if(t===void 0)return;let n=t[Pr];if(!(typeof n!="object"||n===null||typeof n.name!="string"))return Ie(n)}o(Nr,"formatClientIdentity");function Hr(e){let t=Nr(e);if(t!==void 0)return t;if(e.method==="initialize")try{return Ie(e.params.clientInfo)}catch{return}}o(Hr,"formatMcpClient");function j(e){return e.replace(/[\u0000-\u001F\u007F-\u009F]+/g," ")}o(j,"sanitize");function $r(e){return e.startsWith("tools/")?F:e.startsWith("resources/")?Vt:e.startsWith("prompts/")?Bt:e==="initialize"||e==="ping"?Lr:_r}o($r,"methodStyle");function Fr(e,t,n,r){if(t!==n)return{method:e,client:void 0,mcpRequest:void 0,streaming:!1};let s=Array.isArray(r)?r.filter(Nt):Nt(r)?[r]:[],i=s[0];return i===void 0?{method:e,client:void 0,mcpRequest:void 0,streaming:!1}:{method:s.length===1?j(i.method):`batch(${s.map(d=>j(d.method)).join(",")})`,client:Hr(i)??"unknown",mcpRequest:i,streaming:i.method==="subscriptions/listen"}}o(Fr,"describeRequest");var Vr=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key"]);function Ft(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Vr.has(t.toLowerCase())?"[REDACTED]":n]))}o(Ft,"redactHeaders");async function Br(e,t){if(!e.body)return{errorMessage:null};let n;try{let d=kr(e,t),u=e.clone();d&&Ir(t,e),n=await u.text()}catch{return{errorMessage:null}}if(!n)return{errorMessage:null};let r=(e.headers.get("content-type")??"").includes("text/event-stream"),s=[],i=o(d=>{try{s.push(JSON.parse(d))}catch{}},"tryParse");if(r){for(let d of n.split(/\r?\n/))if(d.startsWith("data:")){let u=d.slice(5).trim();u&&i(u)}}else i(n);let a;for(let d of s){if(d===null||typeof d!="object")continue;let u=d;if(typeof u.error?.message=="string")return{errorMessage:u.error.message};if(u.result?.isError===!0){let l=(Array.isArray(u.result.content)?u.result.content:[]).find(f=>f?.type==="text"&&typeof f.text=="string");return{errorMessage:l?String(l.text):"tool error"}}"result"in u&&(a=u.result)}return{errorMessage:null,result:a}}o(Br,"extractResponseOutcome");function Wr(e){if(e===null||typeof e!="object")return e;let{structuredContent:t,content:n}=e;if(t!==void 0)return t;if(Array.isArray(n)){let[r]=n;if(n.length===1&&r?.type==="text")return r.text}return n}o(Wr,"compactToolResult");function te(e){function t(n){return typeof n=="string"&&n.length>100?`${n.slice(0,100)}...`:Array.isArray(n)?n.map(t):n!==null&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>[r,t(s)])):n}o(t,"truncate");try{return JSON.stringify(t(e),null,2)}catch{return String(e)}}o(te,"formatForDump");var Ae=1e4;async function zr(e,t,n,r){console.log(`
|
|
1
|
+
import{b as pt,c as ft}from"./chunk-TCIRBQPM.js";import{a as R,b as Dn,c as Y,d as le,e as X,f as _,g as pe,h as fe,i as me,j as he,k as ye,l as mt,m as ht,o as yt}from"./chunk-YI27EOFM.js";import{a as ut,b as ct,c as O,d as lt}from"./chunk-HAV435PF.js";import{a as o}from"./chunk-EI7MMDWY.js";var Nn=["inline","fullscreen","pip"],Hn=new Set(["inline","fullscreen","pip"]);function ge(e){let t=e?.autoResize??!0,n=e?.displayModes===void 0?Nn:e.displayModes;if(!Array.isArray(n)||n.length===0)throw new Error('viewConfig.displayModes must be a non-empty array that includes "inline"');let r=new Set,s=[];for(let a of n){if(typeof a!="string"||!Hn.has(a))throw new Error(`viewConfig.displayModes contains invalid mode ${JSON.stringify(a)}; expected "inline", "fullscreen", or "pip"`);if(r.has(a))throw new Error(`viewConfig.displayModes contains duplicate mode "${a}"`);r.add(a),s.push(a)}if(!r.has("inline"))throw new Error('viewConfig.displayModes must include "inline"');let i=e?.preferredDisplayMode;if(i!==void 0&&i!=="inline"&&i!=="fullscreen")throw new Error('viewConfig.preferredDisplayMode must be "inline" or "fullscreen"');if(i!==void 0&&!r.has(i))throw new Error("viewConfig.preferredDisplayMode must belong to displayModes");return{...i!==void 0&&{preferredDisplayMode:i},autoResize:t,displayModes:s}}o(ge,"normalizeViewConfig");import{localhostAllowedHostnames as An,localhostAllowedOrigins as ns,McpServer as rs,ResourceTemplate as os,CLIENT_CAPABILITIES_META_KEY as ss,CLIENT_INFO_META_KEY as is,PROTOCOL_VERSION_META_KEY as as,isJSONRPCRequest as _n,isInputRequiredResult as Pn}from"@modelcontextprotocol/server";import{createServer as ds}from"#mcp-use-node-http";import{Hono as kn}from"hono";var gt="public, max-age=31536000, immutable",$n="public, max-age=300";function Te(e){return/^([a-z][a-z\d+.-]*):/i.exec(e)?.[1]?.toLowerCase()}o(Te,"protocolOf");function Fn(e,t){return`${e==="/"?"":e}/_mcp-use/public/${t.split("/").map(r=>encodeURIComponent(r)).join("/")}`}o(Fn,"publicAssetPath");function we(e){return Te(e)===void 0}o(we,"isLocalPublicSource");function Vn(e){return e[0]}o(Vn,"selectFaviconFromIcons");function Bn(e,t){if(e.startsWith("/")||e.includes("\\")||e.includes("?")||e.includes("#")||e.split("/").some(n=>n===""||n===".."))throw new TypeError(`${t} must be an http(s) URL, image data URL, or safe path relative to public/`)}o(Bn,"assertLocalPublicSource");function Tt(e,t){let n=e.indexOf(",");if(n<0)throw new TypeError(`${t} must be a valid image data URL`);let r=e.slice(5,n),s=e.slice(n+1),i=r.split(";"),a=i[0]?.toLowerCase()??"";if(!a.startsWith("image/"))throw new TypeError(`${t} data URL must use an image MIME type`);try{if(i.includes("base64")){let d=atob(s);return{mimeType:a,bytes:Uint8Array.from(d,u=>u.charCodeAt(0))}}return{mimeType:a,bytes:new TextEncoder().encode(decodeURIComponent(s))}}catch{throw new TypeError(`${t} must be a valid image data URL`)}}o(Tt,"parseDataImage");function wt(e,t){if(typeof e!="string"||e.length===0)throw new TypeError(`${t} must be a non-empty string`);let n=Te(e);if(n===void 0)return Bn(e,t),e;if(n==="data")return Tt(e,t),e;if(n!=="http"&&n!=="https")throw new TypeError(`${t} must be an http(s) URL, image data URL, or safe path relative to public/`);try{new URL(e)}catch{throw new TypeError(`${t} must be a valid absolute http(s) URL`)}return e}o(wt,"assertBrandingSource");function Mt(e){let t;if(e.websiteUrl!==void 0){if(typeof e.websiteUrl!="string"||e.websiteUrl.length===0)throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");let d;try{d=new URL(e.websiteUrl)}catch{throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL")}if(d.protocol!=="http:"&&d.protocol!=="https:")throw new TypeError("websiteUrl must be a non-empty absolute http(s) URL");t=e.websiteUrl}let n;if(e.icons!==void 0){if(!Array.isArray(e.icons))throw new TypeError("icons must be an array of MCP Icon objects");n=Object.freeze(e.icons.map((d,u)=>{if(typeof d!="object"||d===null)throw new TypeError(`icons[${u}] must be an MCP Icon object`);let c=d,l=wt(c.src,`icons[${u}].src`),p=c.mimeType;if(p!==void 0&&(typeof p!="string"||!p.toLowerCase().startsWith("image/")))throw new TypeError(`icons[${u}].mimeType must be an image MIME type when provided`);let y=c.sizes;if(y!==void 0&&(!Array.isArray(y)||y.some(f=>typeof f!="string"||f.length===0)))throw new TypeError(`icons[${u}].sizes must be an array of non-empty strings when provided`);let h=y===void 0?void 0:y.map(f=>f),m=c.theme;if(m!==void 0&&m!=="light"&&m!=="dark")throw new TypeError(`icons[${u}].theme must be "light" or "dark" when provided`);return Object.freeze({src:l,...p!==void 0&&{mimeType:p},...h!==void 0&&{sizes:Object.freeze(h)},...m!==void 0&&{theme:m}})}))}let r=e.favicon===void 0?void 0:wt(e.favicon,"favicon"),s=r===void 0?Vn(n??[]):void 0,i=r??s?.src,a=s?.mimeType??n?.find(d=>d.src===r)?.mimeType;return Object.freeze({...i!==void 0&&{favicon:i},...a!==void 0&&{faviconMimeType:a},...n!==void 0&&{icons:n},...t!==void 0&&{websiteUrl:t}})}o(Mt,"normalizeServerBranding");function Me(e,t,n){return e.map(r=>({...r,src:t!==void 0&&we(r.src)?`${O(t)}${Fn(n,r.src)}`:r.src,...r.sizes!==void 0&&{sizes:[...r.sizes]}}))}o(Me,"resolveImplementationIcons");function Re(e){return e.favicon!==void 0&&we(e.favicon)||e.icons?.some(t=>we(t.src))===!0}o(Re,"hasLocalBrandingAsset");function Rt(e,t){let n=e.favicon;if(n!==void 0)return async r=>{if(r.method!=="GET"&&r.method!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{Allow:"GET, HEAD"}});if(new URL(r.url).pathname!=="/favicon.ico")return new Response("Not Found",{status:404});let s=Te(n);if(s==="http"||s==="https")return new Response(null,{status:307,headers:{Location:n,"Cache-Control":$n}});if(s==="data"){let c=Tt(n,"favicon");return new Response(r.method==="HEAD"?null:c.bytes.buffer,{status:200,headers:{"Content-Type":e.faviconMimeType??c.mimeType,"Cache-Control":gt,"X-Content-Type-Options":"nosniff"}})}let{join:i}=await import("path"),a=t.dev?i(t.projectRoot,"public"):i(t.projectRoot,".mcp-use/build/views/public"),d=await pt(a,n);if(d===null)return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});let u=await ft(d,{...t.deferCors===!0&&{deferCors:!0},...r.method==="HEAD"&&{head:!0}});return u.headers.set("Cache-Control",gt),u.headers.set("X-Content-Type-Options","nosniff"),e.faviconMimeType!==void 0&&u.headers.set("Content-Type",e.faviconMimeType),u}}o(Rt,"createFaviconHandler");function Wn(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.createTokenVerifier=="function"&&typeof t.mapAuthInfo=="function"&&typeof t.oauthMetadata=="object"&&t.oauthMetadata!==null}o(Wn,"isOAuthProviderLike");function vt(e){if(e.mixedAuth!==void 0&&typeof e.mixedAuth!="boolean")throw new TypeError("mixedAuth must be a boolean");if(e.mixedAuth===!0&&!Wn(e.oauth))throw new TypeError("mixedAuth requires an OAuth provider; set oauth on the server");if(e.basePath!==void 0){if(typeof e.basePath!="string")throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace");let{basePath:t}=e;if(!t.startsWith("/")||t.includes("?")||t.includes("#")||/\s/.test(t)||t.includes("//")||t.length>1&&t.endsWith("/"))throw new TypeError("basePath must be an absolute URL pathname without empty segments, trailing slash, query, fragment, or whitespace")}if(e.port!==void 0&&(typeof e.port!="number"||!Number.isInteger(e.port)||e.port<0||e.port>65535))throw new TypeError("port must be an integer between 0 and 65535");if(e.skills!==void 0&&typeof e.skills!="boolean"){if(typeof e.skills!="object"||e.skills===null||Array.isArray(e.skills))throw new TypeError("skills must be a boolean or configuration object");let t=e.skills.directory;if(t!==void 0&&typeof t!="string")throw new TypeError("skills.directory must be a string when provided")}}o(vt,"assertServerConfig");var zn="127.0.0.1";function xt(e,t,n=process.env){if(e!==void 0)return e;let r=n.HOST?.trim();return r!==void 0&&r!==""?r:t??zn}o(xt,"resolveListenHost");function bt(e,t,n=process.env){if(e!==void 0)return e;let r=Jn(n.PORT);return r!==void 0?r:t??3e3}o(bt,"resolveListenPort");function Jn(e){if(e===void 0||e.trim()==="")return;let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=65535?t:void 0}o(Jn,"parsePort");import{isBufferedResponse as Kn}from"#mcp-use-buffered-response";function St(e,t){return async(n,r,s)=>{typeof s=="function"&&(s=void 0);let i=!1,a=new AbortController;r.on("close",()=>{i||a.abort()}),r.destroyed===!0&&a.abort();let d,u;try{d=await Gn(n,s,{signal:a.signal}),u=await e.fetch(d,{...n.auth!==void 0&&{authInfo:n.auth},...s!==void 0&&{parsedBody:s}})}catch(f){try{t?.onerror?.(f instanceof Error?f:new Error(String(f)))}catch{}u=Xn(Yn(s))}let c={},l=u.headers.getSetCookie?.();for(let[f,g]of u.headers){if(f==="set-cookie"&&l?.length){c[f]=l;continue}c[f]=g}if(r.writeHead(u.status,c),u.body===null){i=!0,r.end();return}if(Kn(u,d)){try{let f=new Uint8Array(await u.arrayBuffer());i=!0,r.end(f)}catch{i=!0,r.end()}return}let p,y=o(()=>{p?.(),p=void 0},"releaseDrainWait"),h=o(()=>new Promise(f=>{p=f}),"waitForDrain");r.on("drain",y);let m=new Promise(f=>{a.signal.addEventListener("abort",()=>f(),{once:!0})});try{for await(let f of u.body){if(a.signal.aborted)break;let g=f instanceof Uint8Array?f:new Uint8Array(f);r.write(g)===!1&&await Promise.race([h(),m])}}catch{}i=!0,r.end()}}o(St,"toNodeHandler");async function Gn(e,t,n){let r=(e.method??"GET").toUpperCase(),i=`http://${Et(e.headers.host)??Et(e.headers[":authority"])??"localhost"}${e.url??"/"}`,a=new Headers;for(let[u,c]of Object.entries(e.headers))if(!(c===void 0||u.startsWith(":")))if(Array.isArray(c))for(let l of c)a.append(u,l);else a.set(u,c);let d;if(r!=="GET"&&r!=="HEAD")if(t===void 0){let u=new TextDecoder,c="";for await(let l of e)c+=typeof l=="string"?l:u.decode(l,{stream:!0});c+=u.decode(),c.length>0&&(d=c)}else{let u=JSON.stringify(t);a.delete("content-encoding"),a.delete("transfer-encoding"),u===void 0?a.delete("content-length"):(d=u,a.set("content-length",String(new TextEncoder().encode(u).byteLength)))}return new Request(i,{method:r,headers:a,...n?.signal!==void 0&&{signal:n.signal},...d!==void 0&&{body:d}})}o(Gn,"toWebRequest");function Et(e){return Array.isArray(e)?e[0]:e}o(Et,"singleHeaderValue");function Yn(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;let{method:t,id:n}=e;return typeof t!="string"?null:typeof n=="string"||typeof n=="number"?n:null}o(Yn,"echoableRequestId");function Xn(e){return Response.json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:e},{status:500})}o(Xn,"internalServerErrorResponse");import{CLIENT_CAPABILITIES_META_KEY as tr,CLIENT_INFO_META_KEY as nr}from"@modelcontextprotocol/server";import{HonoRequest as rr}from"hono/request";import{CLIENT_CAPABILITIES_META_KEY as Qn}from"@modelcontextprotocol/server";var Ct="io.modelcontextprotocol/ui",Z="text/html;profile=mcp-app",Zn="ui://views/";var Q="ui/resourceUri";function k(e){return`${Zn}${e}.html`}o(k,"viewResourceUri");var er=new WeakMap;function Ot(e,t){er.set(e,t)}o(Ot,"stashClientCapabilities");function At(e){if(typeof e!="object"||e===null)return;let t=e.params;if(typeof t!="object"||t===null)return;let n=t._meta;if(typeof n!="object"||n===null)return;let r=n[Qn];if(!(typeof r!="object"||r===null))return r}o(At,"extractClientCapabilitiesFromBody");function ee(e){let t=e?.extensions;if(t===void 0)return!1;let n=t[Ct];if(typeof n!="object"||n===null)return!1;let r=n.mimeTypes;return Array.isArray(r)?r.includes(Z):!1}o(ee,"supportsViews");function or(e){if(e===void 0||e.extra===void 0||e.expiresAt===void 0)throw new Error("OAuth callback did not receive mapped AuthInfo.extra")}o(or,"requireOAuthAuthInfo");function b(e){return typeof e=="string"?e:void 0}o(b,"stringValue");function Pt(e){return typeof e=="string"||typeof e=="number"&&Number.isFinite(e)?e:void 0}o(Pt,"coordinateValue");function sr(e){if(e===void 0)return;let t=b(e["openai/locale"])??b(e["webplus/i18n"]),n=b(e["openai/userAgent"]),r=b(e["openai/subject"]),s=b(e["openai/session"]),i=b(e["openai/organization"]),a=e["openai/userLocation"],d;if(typeof a=="object"&&a!==null&&!Array.isArray(a)){let u=a,c={city:b(u.city),region:b(u.region),country:b(u.country),timezone:b(u.timezone),latitude:Pt(u.latitude),longitude:Pt(u.longitude)},l=Object.entries(c).filter(p=>p[1]!==void 0);l.length>0&&(d=Object.fromEntries(l))}if(!(t===void 0&&n===void 0&&d===void 0&&r===void 0&&s===void 0&&i===void 0))return{...t!==void 0&&{locale:t},...n!==void 0&&{userAgent:n},...d!==void 0&&{location:d},...r!==void 0&&{subject:r},...s!==void 0&&{conversationId:s},...i!==void 0&&{organizationId:i}}}o(sr,"normalizeUserContext");function kt(e){return e.mcpReq.envelope}o(kt,"requestEnvelope");function ve(e){return{...kt(e)?.[nr]??{}}}o(ve,"requestClientInfo");function ir(e){let n={...kt(e)?.[tr]??{}},r=ve(e),s=sr(e.mcpReq._meta);return{can(i){return Object.hasOwn(n,i)},capabilities(){return{...n}},extension(i){let a=n.extensions?.[i];return a===void 0?void 0:{...a}},info(){return{...r}},user(){return s===void 0?void 0:{...s,...s.location!==void 0&&{location:{...s.location}}}},supportsViews(){return ee(n)}}}o(ir,"toClientContext");function $(e){let t=e.http?.req,n=t===void 0?void 0:R(t).honoContext,r=n?.req??(t===void 0?void 0:new rr(t)),s={signal:e.mcpReq.signal,...r!==void 0&&{request:r},...e.mcpReq.inputResponses!==void 0&&{inputResponses:e.mcpReq.inputResponses},client:ir(e),requestState:o(()=>e.mcpReq.requestState(),"requestState"),async sendNotification(i,a){await e.mcpReq.notify({method:i,...a!==void 0&&{params:a}})},async reportProgress(i,a,d){let u=e.mcpReq._meta?.progressToken;return u===void 0?!1:(await e.mcpReq.notify({method:"notifications/progress",params:{progressToken:u,progress:i,...a!==void 0&&{total:a},...d!==void 0&&{message:d}}}),!0)},async sendLog(i,a,d){await e.mcpReq.notify({method:"notifications/message",params:{level:i,data:a,...d!==void 0&&{logger:d}}})}};return n!==void 0?Object.assign(n,s):{...s,...r!==void 0&&{req:r}}}o($,"toRequestContext");function xe(e){let t=e.http?.authInfo;return or(t),Object.assign($(e),{auth:{user:t.extra.user,payload:t.extra.payload,accessToken:t.token,scopes:[...t.scopes],permissions:[...t.extra.permissions],...t.clientId.length>0&&{clientId:t.clientId},expiresAt:t.expiresAt,...t.resource!==void 0&&{resource:t.resource}}})}o(xe,"toAuthenticatedRequestContext");import{isInputRequiredResult as ar}from"@modelcontextprotocol/server";function dr(e){return"contents"in e&&Array.isArray(e.contents)}o(dr,"isReadResourceResult");function ur(e){return"messages"in e&&Array.isArray(e.messages)}o(ur,"isGetPromptResult");function be(e,t){if(dr(e))return e;let n=e._meta&&typeof e._meta=="object"&&typeof e._meta.mimeType=="string"?e._meta.mimeType:void 0,r=[];for(let s of e.content??[]){let i=cr(s,t,n);i!==void 0&&r.push(i)}return r.length===0&&e.structuredContent!==void 0&&r.push({uri:t,mimeType:"application/json",text:JSON.stringify(e.structuredContent)}),r.length===0&&r.push({uri:t,mimeType:"text/plain",text:""}),{contents:r}}o(be,"toResourceResult");function cr(e,t,n){if(e.type==="text")return{uri:t,mimeType:n??"text/plain",text:e.text};if(e.type==="image"||e.type==="audio")return{uri:t,mimeType:e.mimeType,blob:e.data};if(e.type==="resource")return{...e.resource}}o(cr,"contentBlockToResourceContents");function It(e){if(ar(e)||ur(e))return e;let t=(e.content??[]).map(n=>({role:"user",content:n}));return t.length===0&&e.structuredContent!==void 0&&t.push({role:"user",content:{type:"text",text:JSON.stringify(e.structuredContent)}}),t.length===0&&t.push({role:"user",content:{type:"text",text:""}}),{messages:t}}o(It,"toPromptResult");import{inheritBufferedResponse as lr}from"#mcp-use-buffered-response";var pr=["GET","HEAD","POST","OPTIONS"],fr=["Content-Type","Authorization","mcp-protocol-version","mcp-method","mcp-name"];function mr(e,t){return e===void 0?t:typeof e=="function"?e(t):e==="*"?"*":Array.isArray(e)?t!==null&&e.includes(t)?t:null:e}o(mr,"resolveAllowedOrigin");function hr(e,t){if(t.headers.has("Access-Control-Allow-Origin"))return;let n=t.headers.get("Origin"),r=mr(e.origin,n);if(r===null)return;let s={"Access-Control-Allow-Origin":r,"Access-Control-Allow-Methods":e.methods.join(", "),"Access-Control-Allow-Headers":e.allowedHeaders.join(", ")};return e.credentials&&(s["Access-Control-Allow-Credentials"]="true"),r!=="*"&&(s.Vary="Origin"),s}o(hr,"corsHeaders");function yr(e,t){if(e.headers.has("Access-Control-Allow-Origin"))return e;let n=new Headers(e.headers);return new Headers(t).forEach((s,i)=>{n.set(i,s)}),lr(e,new Response(e.body,{status:e.status,statusText:e.statusText,headers:n}))}o(yr,"mergeCorsHeaders");function Ut(e){if(!(e.enabled!==!1))return async(r,s)=>s();let n={...e.origin!==void 0&&{origin:e.origin},methods:e.methods??pr,allowedHeaders:e.allowedHeaders??fr,credentials:e.credentials??!1};return async(r,s)=>{let i=hr(n,r);if(i===void 0)return s();if(r.method==="OPTIONS")return new Response(null,{status:204,headers:i});let a=await s();return yr(a,i)}}o(Ut,"corsFetchMiddleware");function _t(e){return e!==void 0&&e.enabled!==!1}o(_t,"isGlobalCorsEnabled");import{CallToolResultSchema as gr,GetPromptResultSchema as wr,ListPromptsResultSchema as Tr,ListResourcesResultSchema as Mr,ListToolsResultSchema as Rr,ReadResourceResultSchema as vr}from"@modelcontextprotocol/core";import{isInputRequiredResult as xr}from"@modelcontextprotocol/server";var br=["tools/call","tools/list","resources/read","resources/list","prompts/get","prompts/list"];function jt(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("[mcp-use] MCP middleware received an invalid downstream request");return{...e,params:t}}o(jt,"withMcpMiddlewareParams");function Ce(e,t){let n=Ar(e),r=t;if(n!=="*"&&!Er(n))throw new TypeError(`Unsupported MCP middleware pattern "${e}". Use an exact MCP method or "mcp:*".`);return n==="*"?{pattern:n,handler:o(async(s,i)=>{let a=!1,d;if(await r(s,async()=>{d=await i(),a=!0}),!a)throw new Error(`Wildcard MCP middleware "${n}" must call next()`);return d},"handler")}:{pattern:n,handler:o((s,i)=>r(s,i),"handler")}}o(Ce,"createMcpMiddlewareEntry");function Oe(e,t){let{pattern:n,phase:r}=Or(e),s=t;return{pattern:n,phase:r,handler:o((i,a)=>s(i,a),"handler")}}o(Oe,"createMcpEventListenerEntry");function L(e,t){if(e==="*")return!0;if(e.endsWith("/*")){let n=e.slice(0,-1);return t.startsWith(n)}return e===t}o(L,"matchesPattern");function Er(e){return br.some(t=>t===e)}o(Er,"isMcpMiddlewareMethod");function qt(e,t,n){let r=e.filter(s=>L(s.pattern,t));return r.length===0?s=>n():s=>{let i=-1,a=o(d=>d<=i?Promise.reject(new Error("next() called multiple times")):(i=d,d===r.length?n():r[d].handler(s,()=>a(d+1))),"dispatch");return a(0)}}o(qt,"composeMiddleware");function Sr(e){return Object.freeze({method:e.method,params:Object.freeze({...e.params}),...e.request!==void 0&&{request:e.request},...e.req!==void 0&&{req:e.req},...e.session!==void 0&&{session:Object.freeze({...e.session})},...e.auth!==void 0&&{auth:e.auth},state:new Map(e.state)})}o(Sr,"freezeMiddlewareContext");async function Dt(e,t,n,r,s){Lt(t,n,"before",r);let a=await qt(e,n,s)(r);return Cr(n,a),Lt(t,n,"complete",r,a),a}o(Dt,"runMcpOperation");function Cr(e,t){if((e==="tools/call"||e==="resources/read"||e==="prompts/get")&&xr(t))return;let n=(()=>{switch(e){case"tools/call":return Se(e,t,"content"),gr.safeParse(t);case"tools/list":return Ee(e,t),Rr.safeParse({tools:t});case"resources/read":return Se(e,t,"contents"),vr.safeParse(t);case"resources/list":return Ee(e,t),Mr.safeParse({resources:t});case"prompts/get":return Se(e,t,"messages"),wr.safeParse(t);case"prompts/list":return Ee(e,t),Tr.safeParse({prompts:t});default:throw new TypeError(`Unsupported MCP middleware method "${e}"`)}})();if(!n.success)throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: ${n.error.message}`)}o(Cr,"assertValidMiddlewareResult");function Ee(e,t){if(!Array.isArray(t))throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: expected an array`)}o(Ee,"assertArrayResult");function Se(e,t,n){if(typeof t!="object"||t===null||!Array.isArray(t[n]))throw new TypeError(`[mcp-use] ${e} middleware returned an invalid result: expected a ${n} array`)}o(Se,"assertArrayProperty");function Lt(e,t,n,r,s){let i=Sr(r);for(let a of e)if(!(a.phase!==n||!L(a.pattern,t)))try{a.handler(i,s)}catch(d){console.error(`[mcp-use] MCP event listener for "${a.pattern}" (${n}) threw:`,d)}}o(Lt,"dispatchMcpEvents");function Or(e){let t=e.startsWith("mcp:")?e.slice(4):e;return t.endsWith(":complete")?{pattern:t.slice(0,-9),phase:"complete"}:{pattern:t,phase:"before"}}o(Or,"parseMcpPattern");function Ar(e){return e.startsWith("mcp:")?e.slice(4):e}o(Ar,"normalizeMcpMiddlewarePattern");import{CLIENT_INFO_META_KEY as Pr,isJSONRPCRequest as Nt}from"@modelcontextprotocol/server";import{isBufferedResponse as kr,trackBufferedResponse as Ir}from"#mcp-use-buffered-response";function Ur(){return typeof process>"u"||process.env?.NO_COLOR!==void 0?!1:process.stdout?.isTTY===!0}o(Ur,"colorsEnabled");function C(e,t){return n=>Ur()?`\x1B[${e}m${n}\x1B[${t}m`:n}o(C,"ansi");var Pe=C(1,22),ke=C(2,22),ne=C(31,39),Vt=C(32,39),S=C(33,39),_r=C(34,39),Bt=C(35,39),F=C(36,39),Lr=C(90,39);function jr(e){let t=typeof process>"u"?void 0:process.env?.MCP_USE_LOG_LEVEL?.toLowerCase();return t==="info"||t==="debug"||t==="trace"?t:e??"info"}o(jr,"resolveLogLevel");function Ie(e){if(!(e===void 0||typeof e.name!="string"))return typeof e.version=="string"&&e.version!==""?`${e.name}/${e.version}`:e.name}o(Ie,"formatClientInfo");var Wt={initialize:o(e=>({subject:Ie(e.clientInfo)}),"initialize"),ping:o(()=>({}),"ping"),"server/discover":o(()=>({}),"server/discover"),"completion/complete":o(e=>({subject:e.ref.type==="ref/prompt"?e.ref.name:e.ref.uri,input:e.argument}),"completion/complete"),"logging/setLevel":o(e=>({subject:e.level}),"logging/setLevel"),"prompts/get":o(e=>({subject:e.name,input:e.arguments}),"prompts/get"),"prompts/list":o(()=>({}),"prompts/list"),"resources/list":o(()=>({}),"resources/list"),"resources/templates/list":o(()=>({}),"resources/templates/list"),"resources/read":o(e=>({subject:e.uri}),"resources/read"),"resources/subscribe":o(e=>({subject:e.uri}),"resources/subscribe"),"resources/unsubscribe":o(e=>({subject:e.uri}),"resources/unsubscribe"),"subscriptions/listen":o(()=>({}),"subscriptions/listen"),"tools/call":o(e=>({subject:e.name,input:e.arguments}),"tools/call"),"tools/list":o(()=>({}),"tools/list"),"sampling/createMessage":o(()=>({}),"sampling/createMessage"),"elicitation/create":o(()=>({}),"elicitation/create"),"roots/list":o(()=>({}),"roots/list")};function qr(e){return Object.prototype.hasOwnProperty.call(Wt,e)}o(qr,"isKnownMethod");function Dr(e){if(!qr(e.method))return{};try{let t=Wt[e.method],n=t(e.params);return typeof n.subject=="string"||n.subject===void 0?n:{}}catch{return{}}}o(Dr,"formatDetail");var Ht=80;function $t(e){let t;try{t=JSON.stringify(e)??String(e)}catch{t=String(e)}return t.length>Ht?`${t.slice(0,Ht)}...`:t}o($t,"inlineJson");function Nr(e){let t=e.params?._meta;if(t===void 0)return;let n=t[Pr];if(!(typeof n!="object"||n===null||typeof n.name!="string"))return Ie(n)}o(Nr,"formatClientIdentity");function Hr(e){let t=Nr(e);if(t!==void 0)return t;if(e.method==="initialize")try{return Ie(e.params.clientInfo)}catch{return}}o(Hr,"formatMcpClient");function j(e){return e.replace(/[\u0000-\u001F\u007F-\u009F]+/g," ")}o(j,"sanitize");function $r(e){return e.startsWith("tools/")?F:e.startsWith("resources/")?Vt:e.startsWith("prompts/")?Bt:e==="initialize"||e==="ping"?Lr:_r}o($r,"methodStyle");function Fr(e,t,n,r){if(t!==n)return{method:e,client:void 0,mcpRequest:void 0,streaming:!1};let s=Array.isArray(r)?r.filter(Nt):Nt(r)?[r]:[],i=s[0];return i===void 0?{method:e,client:void 0,mcpRequest:void 0,streaming:!1}:{method:s.length===1?j(i.method):`batch(${s.map(d=>j(d.method)).join(",")})`,client:Hr(i)??"unknown",mcpRequest:i,streaming:i.method==="subscriptions/listen"}}o(Fr,"describeRequest");var Vr=new Set(["authorization","proxy-authorization","cookie","set-cookie","x-api-key"]);function Ft(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Vr.has(t.toLowerCase())?"[REDACTED]":n]))}o(Ft,"redactHeaders");async function Br(e,t){if(!e.body)return{errorMessage:null};let n;try{let d=kr(e,t),u=e.clone();d&&Ir(t,e),n=await u.text()}catch{return{errorMessage:null}}if(!n)return{errorMessage:null};let r=(e.headers.get("content-type")??"").includes("text/event-stream"),s=[],i=o(d=>{try{s.push(JSON.parse(d))}catch{}},"tryParse");if(r){for(let d of n.split(/\r?\n/))if(d.startsWith("data:")){let u=d.slice(5).trim();u&&i(u)}}else i(n);let a;for(let d of s){if(d===null||typeof d!="object")continue;let u=d;if(typeof u.error?.message=="string")return{errorMessage:u.error.message};if(u.result?.isError===!0){let l=(Array.isArray(u.result.content)?u.result.content:[]).find(p=>p?.type==="text"&&typeof p.text=="string");return{errorMessage:l?String(l.text):"tool error"}}"result"in u&&(a=u.result)}return{errorMessage:null,result:a}}o(Br,"extractResponseOutcome");function Wr(e){if(e===null||typeof e!="object")return e;let{structuredContent:t,content:n}=e;if(t!==void 0)return t;if(Array.isArray(n)){let[r]=n;if(n.length===1&&r?.type==="text")return r.text}return n}o(Wr,"compactToolResult");function te(e){function t(n){return typeof n=="string"&&n.length>100?`${n.slice(0,100)}...`:Array.isArray(n)?n.map(t):n!==null&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>[r,t(s)])):n}o(t,"truncate");try{return JSON.stringify(t(e),null,2)}catch{return String(e)}}o(te,"formatForDump");var Ae=1e4;async function zr(e,t,n,r){console.log(`
|
|
2
2
|
${F("=".repeat(80))}`),console.log(Pe(F("[TRACE] Request Details"))),console.log(F("-".repeat(80))),Object.keys(t).length>0&&(console.log(S("Request Headers:")),console.log(te(Ft(t)))),n!==void 0&&(console.log(S("Request Body:")),console.log(typeof n=="string"?n:te(n)));let s={};if(e.headers.forEach((i,a)=>{s[a]=i}),Object.keys(s).length>0&&(console.log(S("Response Headers:")),console.log(te(Ft(s)))),!r)console.log(`${S("Response Body:")} (streaming \u2014 not dumped)`);else if(e.body===null)console.log(`${S("Response Body:")} (no body)`);else try{let i=await e.clone().text();if(i.length===0)console.log(`${S("Response Body:")} (empty)`);else{console.log(S("Response Body:"));try{console.log(te(JSON.parse(i)))}catch{console.log(i.length>Ae?`${i.slice(0,Ae)}
|
|
3
3
|
... (truncated, ${i.length-Ae} more characters)`:i)}}}catch{console.log(`${S("Response Body:")} (unable to read)`)}console.log(`${F("=".repeat(80))}
|
|
4
|
-
`)}o(zr,"printTraceDump");function Jr(e){let t=String(e);return e>=500?Bt(t):e>=400?ne(t):e>=300?S(t):Vt(t)}o(Jr,"styleStatus");function Kr(e,t){return e!=="GET"&&e!=="HEAD"?!1:t.endsWith("/favicon.ico")}o(Kr,"isNoisyRequest");function Gr(e){let{description:t,detail:n}=e;return[...e.prefix===void 0?[]:[Pe(e.prefix)],$r(t.method)(t.method),...n?.subject===void 0?[]:[Pe(j(n.subject))],e.pathname,Jr(e.status),...t.client===void 0?[]:[ke(`client=${j(t.client)}`)],ke(`${e.durationMs}ms`),...e.suffix].join(" ")}o(Gr,"formatRequestLogLine");function Ue(e={}){return e.enabled===!1?(t,n)=>n():async(t,n)=>{let r=jr(e.level),s=Date.now(),i=t.method,a=new URL(t.url).pathname;if(Kr(i,a))return n();let d={};r==="trace"&&t.headers.forEach((p,m)=>{d[m]=p});let u;if(i!=="GET"&&i!=="HEAD"){let p=R(t).parsedBody;if(p!==void 0)u=p;else try{u=await t.clone().json(),(t.headers.get("content-type")??"").includes("application/json")&&(R(t).parsedBody=u)}catch{}}let c=Fr(i,a,e.mcpPath,u),l=o((p,m,g=[])=>{console.log(Gr({prefix:e.prefix,description:c,detail:m,pathname:a,status:p,durationMs:Date.now()-s,suffix:g}))},"logLine"),f;try{f=await n()}catch(p){throw l(500,void 0,[ne(`ERROR ${j(p instanceof Error?p.message:String(p))}`)]),p}let h=c.mcpRequest===void 0?void 0:Dr(c.mcpRequest),y=[];if(c.mcpRequest!==void 0&&h!==void 0){let p=r!=="info";p&&h.input!==void 0&&y.push($t(h.input));let m=c.streaming?{errorMessage:null}:await Br(f,t);p&&c.mcpRequest.method==="tools/call"&&m.errorMessage===null&&m.result!==void 0&&y.push(ke("->"),$t(Wr(m.result))),m.errorMessage!==null?y.push(ne(`ERROR ${j(m.errorMessage)}`)):f.status>=400&&y.push(ne(`ERROR (HTTP ${f.status})`))}return l(f.status,h,y),r==="trace"&&await zr(f,d,u,!c.streaming),f}}o(Ue,"requestLogger");import{createMcpHandler as Yr}from"@modelcontextprotocol/server";import{trackBufferedResponse as Xr}from"#mcp-use-buffered-response";function _e(e,t={}){let{path:n="/mcp",handler:r,authInfo:s}=t,i=r?.legacy??"stateless",a=Yr(e,{legacy:"stateless",...r});return{handler:a,fetch:o(async u=>{if(!le(u,n))return new Response("Not Found",{status:404});if(i==="stateless"){let m=u.method.toUpperCase();if(m==="GET"||m==="DELETE"||m==="HEAD")return new Response(null,{status:204})}let c=R(u),l=c.parsedBody;if(l===void 0)try{l=await u.clone().json()}catch{}let f=At(l);f!==void 0&&Ot(u,f);let h=s?.(u)??c.authInfo,y=await a.fetch(u,{...l!==void 0&&{parsedBody:l},...h!==void 0&&{authInfo:h}});return y.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&y.body!==null?new Response(await y.arrayBuffer(),{status:y.status,statusText:y.statusText,headers:y.headers}):Xr(u,y):y},"fetch")}}o(_e,"createMcpMount");function A(e,t){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`${t} must be an object`);return e}o(A,"object");function zt(e,t){if(!Array.isArray(e))throw new TypeError(`${t} must be an array`);return e}o(zt,"array");function I(e,t){if(typeof e!="string"||!e.trim())throw new TypeError(`${t} must be a non-blank string`)}o(I,"nonBlank");function re(e,t){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:o(()=>e,"input"),output:o(()=>e,"output")},async validate(n){try{return{value:await t(n)}}catch(r){return{issues:[{message:r instanceof Error?r.message:String(r)}]}}}}}}o(re,"standard");function Jt(e){let t=e.readTool??"settings.read",n=e.updateTool??"settings.update";if(I(t,"readTool"),I(n,"updateTool"),t===n)throw new TypeError("Settings read and update tools must have different names");A(e.fields,"fields");let r=Object.entries(e.fields).map(([y,p])=>[y,{...p}]);if(!r.length)throw new TypeError("Settings require at least one field");let s={};for(let[y,p]of r){if(I(p.title,`Setting ${y} title`),p.description!==void 0&&typeof p.description!="string")throw new TypeError(`Setting ${y} description must be a string`);let m=p.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),g=p.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(g.type))||m.type!==g.type||["$ref","anyOf","oneOf","allOf"].some(v=>v in g)||g.enum!==void 0&&(g.type!=="string"||!Array.isArray(g.enum)||!g.enum.length||!g.enum.every(v=>typeof v=="string")))throw new TypeError(`Unsupported native setting ${y}: use boolean, string, string enum, number, or integer`);let T=structuredClone(g);delete T.default,Object.defineProperty(s,y,{enumerable:!0,value:{...T,title:p.title,...p.description!==void 0&&{description:p.description}}})}let i={type:"object",properties:s,required:r.map(([y])=>y),additionalProperties:!1},a=e.layout===void 0?void 0:structuredClone(e.layout);if(a!==void 0)for(let y of zt(a,"Settings layout")){let p=A(y,"Settings layout group");if(p.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");I(p.title,"Settings layout group title");for(let m of zt(p.items,"Settings layout group items")){let g=A(m,"Settings layout item");if(g.kind==="property"){if(I(g.property,"Settings layout property"),!Object.hasOwn(s,g.property))throw new TypeError(`Settings layout references unknown setting: ${g.property}`)}else if(g.kind==="tool"){if(I(g.tool,"Settings layout action tool"),I(g.title,"Settings layout action title"),g.description!==void 0&&typeof g.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let d=o(async(y,p=!1)=>{let m=A(y,p?"set":"values");for(let T of Object.keys(m))if(!Object.hasOwn(s,T))throw new TypeError(`Unknown setting: ${T}`);if(p&&!Object.keys(m).length)throw new TypeError("Set at least one setting");let g={};for(let[T,v]of r){if(!Object.hasOwn(m,T)){if(!p)throw new TypeError(`Missing effective setting: ${T}`);continue}let M=await v.schema["~standard"].validate(m[T]);if(M.issues!==void 0)throw new TypeError(`Invalid setting ${T}: ${M.issues.map(w=>w.message).join(", ")}`);if(M.value===void 0||!["string","boolean","number"].includes(typeof M.value)||typeof M.value=="number"&&!Number.isFinite(M.value))throw new TypeError(`Invalid primitive setting: ${T}`);if(!Object.is(M.value,m[T]))throw new TypeError(`Setting ${T} schema must not transform values`);Object.defineProperty(g,T,{enumerable:!0,value:M.value})}return g},"validateValues"),u=re({type:"object",additionalProperties:!1},y=>{if(Object.keys(A(y,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),c=re({type:"object",properties:{set:{...i,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async y=>{let p=A(y,"arguments");if(Object.keys(p).some(m=>m!=="set"))throw new TypeError("Unknown settings update argument");return{set:await d(p.set,!0)}}),f=re({type:"object",properties:{schema:{type:"object"},values:i,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async y=>{let p=A(y,"settings result");return{...p,values:await d(p.values)}}),h=re({type:"object",properties:{values:i},required:["values"]},async y=>({values:await d(A(y,"settings result").values)}));return{capability:{readTool:t,updateTool:n},schema:i,layout:a,readDefinition:{name:t,inputSchema:u,outputSchema:f,annotations:{readOnlyHint:!0}},updateDefinition:{name:n,inputSchema:c,outputSchema:h}}}o(Jt,"prepareSettings");import{completable as Kt}from"@modelcontextprotocol/server";function Le(e){let t=e.map(String);return n=>{let r=String(n??"").toLowerCase();return t.filter(s=>s.toLowerCase().startsWith(r))}}o(Le,"createPrefixCompletion");function Zr(e,t){return typeof t=="function"?Kt(e,(n,r)=>t(String(n??""),r)):Kt(e,Le(t))}o(Zr,"completable");function Gt(e){let t=Object.create(null);for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Array.isArray(r)?Le(r):r);return t}o(Gt,"normalizeCompletions");import{fromJsonSchema as Qr}from"@modelcontextprotocol/server";var eo=["get","put","post","delete","options","head","patch","trace"];function Qt(e,t){let n=to(t.spec,t),r=so(n),s=n.length>0?go(t):void 0;for(let[i,a]of n.entries()){let d=r[i];if(d===void 0||s===void 0)continue;let u=co(a);e.tool({name:d,description:io(a),inputSchema:uo(t.spec,a,u)},async c=>mo(a,c,t,u,s))}}o(Qt,"registerOpenAPITools");function to(e,t){let n=[];for(let[r,s]of Object.entries(e.paths??{})){let i=q(e,s);if(i===void 0||B(i))continue;let a=Yt(e,i.parameters);for(let d of eo){let u=i[d];if(u===void 0)continue;let c=q(e,u);if(c===void 0||B(c))continue;let l=Yt(e,c.parameters),f=c.requestBody===void 0?void 0:q(e,c.requestBody),h={method:d,path:r,operation:c,parameters:no(a,l),...f!==void 0&&!B(f)&&{requestBody:f}};ro(h,t)&&n.push(h)}}return n}o(to,"collectOperations");function Yt(e,t){let n=[];for(let r of t??[]){let s=q(e,r);s!==void 0&&!B(s)&&n.push(s)}return n}o(Yt,"resolveParameters");function no(e,t){let n=new Map;for(let r of[...e,...t])n.set(`${r.in}:${r.name}`,r);return[...n.values()]}o(no,"mergeParameters");function ro(e,t){if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!(t.exclude??[]).some(n=>oo(e,n))}o(ro,"isIncluded");function oo(e,t){if(t.method&&t.method.toLowerCase()!==e.method||t.operationId&&!Xt(t.operationId,e.operation.operationId??"")||t.path&&!Xt(t.path,e.path))return!1;if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!0}o(oo,"matchesExcludeRule");function Xt(e,t){return typeof e=="string"?e===t:(e.lastIndex=0,e.test(t))}o(Xt,"matchesPattern");function so(e){let t=new Map;return e.map(n=>{let r=ao(n.operation.operationId??`${n.method}_${n.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),s=t.get(r)??0;if(t.set(r,s+1),s===0)return r;let i=`_${s+1}`;return`${r.slice(0,64-i.length)}${i}`})}o(so,"createToolNames");function io(e){return[e.operation.summary,e.operation.description,`HTTP: ${e.method.toUpperCase()} ${e.path}`].filter(t=>!!t).join(`
|
|
4
|
+
`)}o(zr,"printTraceDump");function Jr(e){let t=String(e);return e>=500?Bt(t):e>=400?ne(t):e>=300?S(t):Vt(t)}o(Jr,"styleStatus");function Kr(e,t){return e!=="GET"&&e!=="HEAD"?!1:t.endsWith("/favicon.ico")}o(Kr,"isNoisyRequest");function Gr(e){let{description:t,detail:n}=e;return[...e.prefix===void 0?[]:[Pe(e.prefix)],$r(t.method)(t.method),...n?.subject===void 0?[]:[Pe(j(n.subject))],e.pathname,Jr(e.status),...t.client===void 0?[]:[ke(`client=${j(t.client)}`)],ke(`${e.durationMs}ms`),...e.suffix].join(" ")}o(Gr,"formatRequestLogLine");function Ue(e={}){return e.enabled===!1?(t,n)=>n():async(t,n)=>{let r=jr(e.level),s=Date.now(),i=t.method,a=new URL(t.url).pathname;if(Kr(i,a))return n();let d={};r==="trace"&&t.headers.forEach((f,g)=>{d[g]=f});let u;if(i!=="GET"&&i!=="HEAD"){let f=R(t).parsedBody;if(f!==void 0)u=f;else try{u=await t.clone().json(),(t.headers.get("content-type")??"").includes("application/json")&&(R(t).parsedBody=u)}catch{}}let c=Fr(i,a,e.mcpPath,u),l=o((f,g,T=[])=>{console.log(Gr({prefix:e.prefix,description:c,detail:g,pathname:a,status:f,durationMs:Date.now()-s,suffix:T}))},"logLine"),p;try{p=await n()}catch(f){throw l(500,void 0,[ne(`ERROR ${j(f instanceof Error?f.message:String(f))}`)]),f}let y=c.streaming||p.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()==="text/event-stream",h=c.mcpRequest===void 0?void 0:Dr(c.mcpRequest),m=[];if(c.mcpRequest!==void 0&&h!==void 0){let f=r!=="info";f&&h.input!==void 0&&m.push($t(h.input));let g=y?{errorMessage:null}:await Br(p,t);f&&c.mcpRequest.method==="tools/call"&&g.errorMessage===null&&g.result!==void 0&&m.push(ke("->"),$t(Wr(g.result))),g.errorMessage!==null?m.push(ne(`ERROR ${j(g.errorMessage)}`)):p.status>=400&&m.push(ne(`ERROR (HTTP ${p.status})`))}return l(p.status,h,m),r==="trace"&&await zr(p,d,u,!y),p}}o(Ue,"requestLogger");import{createMcpHandler as Yr}from"@modelcontextprotocol/server";import{trackBufferedResponse as Xr}from"#mcp-use-buffered-response";function _e(e,t={}){let{path:n="/mcp",handler:r,authInfo:s}=t,i=r?.legacy??"stateless",a=Yr(e,{legacy:"stateless",...r});return{handler:a,fetch:o(async u=>{if(!le(u,n))return new Response("Not Found",{status:404});if(i==="stateless"){let f=u.method.toUpperCase();if(f==="GET"||f==="DELETE"||f==="HEAD")return new Response(null,{status:204})}let c=R(u),l=c.parsedBody;if(l===void 0)try{l=await u.clone().json()}catch{}let p=At(l);p!==void 0&&Ot(u,p);let y=s?.(u)??c.authInfo,h=await a.fetch(u,{...l!==void 0&&{parsedBody:l},...y!==void 0&&{authInfo:y}});return h.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&h.body!==null?new Response(await h.arrayBuffer(),{status:h.status,statusText:h.statusText,headers:h.headers}):Xr(u,h):h},"fetch")}}o(_e,"createMcpMount");function A(e,t){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`${t} must be an object`);return e}o(A,"object");function zt(e,t){if(!Array.isArray(e))throw new TypeError(`${t} must be an array`);return e}o(zt,"array");function I(e,t){if(typeof e!="string"||!e.trim())throw new TypeError(`${t} must be a non-blank string`)}o(I,"nonBlank");function re(e,t){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:o(()=>e,"input"),output:o(()=>e,"output")},async validate(n){try{return{value:await t(n)}}catch(r){return{issues:[{message:r instanceof Error?r.message:String(r)}]}}}}}}o(re,"standard");function Jt(e){let t=e.readTool??"settings.read",n=e.updateTool??"settings.update";if(I(t,"readTool"),I(n,"updateTool"),t===n)throw new TypeError("Settings read and update tools must have different names");A(e.fields,"fields");let r=Object.entries(e.fields).map(([h,m])=>[h,{...m}]);if(!r.length)throw new TypeError("Settings require at least one field");let s={};for(let[h,m]of r){if(I(m.title,`Setting ${h} title`),m.description!==void 0&&typeof m.description!="string")throw new TypeError(`Setting ${h} description must be a string`);let f=m.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),g=m.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(g.type))||f.type!==g.type||["$ref","anyOf","oneOf","allOf"].some(v=>v in g)||g.enum!==void 0&&(g.type!=="string"||!Array.isArray(g.enum)||!g.enum.length||!g.enum.every(v=>typeof v=="string")))throw new TypeError(`Unsupported native setting ${h}: use boolean, string, string enum, number, or integer`);let T=structuredClone(g);delete T.default,Object.defineProperty(s,h,{enumerable:!0,value:{...T,title:m.title,...m.description!==void 0&&{description:m.description}}})}let i={type:"object",properties:s,required:r.map(([h])=>h),additionalProperties:!1},a=e.layout===void 0?void 0:structuredClone(e.layout);if(a!==void 0)for(let h of zt(a,"Settings layout")){let m=A(h,"Settings layout group");if(m.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");I(m.title,"Settings layout group title");for(let f of zt(m.items,"Settings layout group items")){let g=A(f,"Settings layout item");if(g.kind==="property"){if(I(g.property,"Settings layout property"),!Object.hasOwn(s,g.property))throw new TypeError(`Settings layout references unknown setting: ${g.property}`)}else if(g.kind==="tool"){if(I(g.tool,"Settings layout action tool"),I(g.title,"Settings layout action title"),g.description!==void 0&&typeof g.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let d=o(async(h,m=!1)=>{let f=A(h,m?"set":"values");for(let T of Object.keys(f))if(!Object.hasOwn(s,T))throw new TypeError(`Unknown setting: ${T}`);if(m&&!Object.keys(f).length)throw new TypeError("Set at least one setting");let g={};for(let[T,v]of r){if(!Object.hasOwn(f,T)){if(!m)throw new TypeError(`Missing effective setting: ${T}`);continue}let M=await v.schema["~standard"].validate(f[T]);if(M.issues!==void 0)throw new TypeError(`Invalid setting ${T}: ${M.issues.map(w=>w.message).join(", ")}`);if(M.value===void 0||!["string","boolean","number"].includes(typeof M.value)||typeof M.value=="number"&&!Number.isFinite(M.value))throw new TypeError(`Invalid primitive setting: ${T}`);if(!Object.is(M.value,f[T]))throw new TypeError(`Setting ${T} schema must not transform values`);Object.defineProperty(g,T,{enumerable:!0,value:M.value})}return g},"validateValues"),u=re({type:"object",additionalProperties:!1},h=>{if(Object.keys(A(h,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),c=re({type:"object",properties:{set:{...i,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async h=>{let m=A(h,"arguments");if(Object.keys(m).some(f=>f!=="set"))throw new TypeError("Unknown settings update argument");return{set:await d(m.set,!0)}}),p=re({type:"object",properties:{schema:{type:"object"},values:i,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async h=>{let m=A(h,"settings result");return{...m,values:await d(m.values)}}),y=re({type:"object",properties:{values:i},required:["values"]},async h=>({values:await d(A(h,"settings result").values)}));return{capability:{readTool:t,updateTool:n},schema:i,layout:a,readDefinition:{name:t,inputSchema:u,outputSchema:p,annotations:{readOnlyHint:!0}},updateDefinition:{name:n,inputSchema:c,outputSchema:y}}}o(Jt,"prepareSettings");import{completable as Kt}from"@modelcontextprotocol/server";function Le(e){let t=e.map(String);return n=>{let r=String(n??"").toLowerCase();return t.filter(s=>s.toLowerCase().startsWith(r))}}o(Le,"createPrefixCompletion");function Zr(e,t){return typeof t=="function"?Kt(e,(n,r)=>t(String(n??""),r)):Kt(e,Le(t))}o(Zr,"completable");function Gt(e){let t=Object.create(null);for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Array.isArray(r)?Le(r):r);return t}o(Gt,"normalizeCompletions");import{fromJsonSchema as Qr}from"@modelcontextprotocol/server";var eo=["get","put","post","delete","options","head","patch","trace"];function Qt(e,t){let n=to(t.spec,t),r=so(n),s=n.length>0?go(t):void 0;for(let[i,a]of n.entries()){let d=r[i];if(d===void 0||s===void 0)continue;let u=co(a);e.tool({name:d,description:io(a),inputSchema:uo(t.spec,a,u)},async c=>mo(a,c,t,u,s))}}o(Qt,"registerOpenAPITools");function to(e,t){let n=[];for(let[r,s]of Object.entries(e.paths??{})){let i=q(e,s);if(i===void 0||B(i))continue;let a=Yt(e,i.parameters);for(let d of eo){let u=i[d];if(u===void 0)continue;let c=q(e,u);if(c===void 0||B(c))continue;let l=Yt(e,c.parameters),p=c.requestBody===void 0?void 0:q(e,c.requestBody),y={method:d,path:r,operation:c,parameters:no(a,l),...p!==void 0&&!B(p)&&{requestBody:p}};ro(y,t)&&n.push(y)}}return n}o(to,"collectOperations");function Yt(e,t){let n=[];for(let r of t??[]){let s=q(e,r);s!==void 0&&!B(s)&&n.push(s)}return n}o(Yt,"resolveParameters");function no(e,t){let n=new Map;for(let r of[...e,...t])n.set(`${r.in}:${r.name}`,r);return[...n.values()]}o(no,"mergeParameters");function ro(e,t){if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!(t.exclude??[]).some(n=>oo(e,n))}o(ro,"isIncluded");function oo(e,t){if(t.method&&t.method.toLowerCase()!==e.method||t.operationId&&!Xt(t.operationId,e.operation.operationId??"")||t.path&&!Xt(t.path,e.path))return!1;if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!0}o(oo,"matchesExcludeRule");function Xt(e,t){return typeof e=="string"?e===t:(e.lastIndex=0,e.test(t))}o(Xt,"matchesPattern");function so(e){let t=new Map;return e.map(n=>{let r=ao(n.operation.operationId??`${n.method}_${n.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),s=t.get(r)??0;if(t.set(r,s+1),s===0)return r;let i=`_${s+1}`;return`${r.slice(0,64-i.length)}${i}`})}o(so,"createToolNames");function io(e){return[e.operation.summary,e.operation.description,`HTTP: ${e.method.toUpperCase()} ${e.path}`].filter(t=>!!t).join(`
|
|
5
5
|
|
|
6
|
-
`)}o(io,"createToolDescription");function ao(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^_/,"").replace(/_$/,"").slice(0,64)||"openapi_tool"}o(ao,"slugifyToolName");function uo(e,t,n){let r={},s=[];for(let{parameter:u,inputName:c}of n.parameters){let l=Zt(e,u.schema??{});r[c]={...l,description:u.description??`${u.in} parameter`},(u.required||u.in==="path")&&s.push(c)}let i=en(t.requestBody);i!==void 0&&n.bodyInputName!==void 0&&(r[n.bodyInputName]=Zt(e,i),t.requestBody?.required&&s.push(n.bodyInputName));let a=po(e),d={type:"object",properties:r,additionalProperties:!1,...s.length>0&&{required:s},...a!==void 0&&{$defs:a}};return Qr(d)}o(uo,"createToolInputSchema");function co(e){let t=e.parameters.filter(a=>a.in!=="cookie"),n=en(e.requestBody)===void 0?void 0:"body",r=new Map;for(let a of t)r.set(a.name,(r.get(a.name)??0)+1);let s=new Set(n===void 0?[]:[n]);return{parameters:t.map(a=>{let u=(r.get(a.name)??0)>1||a.name===n?`${a.name}_${a.in}`:a.name;return{parameter:a,inputName:lo(u,s)}}),...n!==void 0&&{bodyInputName:n}}}o(co,"createInputBindings");function lo(e,t){let n=e,r=2;for(;t.has(n);)n=`${e}_${r}`,r+=1;return t.add(n),n}o(lo,"claimInputName");function po(e){let t=D(e.components?.schemas);if(t===void 0)return;let n={};for(let[r,s]of Object.entries(t))n[r]=V(e,s,new Set);return n}o(po,"createSchemaDefinitions");function Zt(e,t){let n=V(e,t,new Set);return D(n)??{}}o(Zt,"transformSchema");function V(e,t,n){if(Array.isArray(t))return t.map(d=>V(e,d,n));let r=D(t);if(r===void 0)return t;let s=typeof r.$ref=="string"?r.$ref:void 0,i={};for(let[d,u]of Object.entries(r))d!=="$ref"&&(d==="nullable"&&typeof u=="boolean"||(i[d]=V(e,u,n)));let a=i;if(s!==void 0){let d=fo(e,s);if(d!==void 0)a={$ref:d,...i};else if(!n.has(s)){let u=q(e,{$ref:s});if(u!==void 0){let c=new Set(n);c.add(s),a={...D(V(e,u,c))??{},...i}}}}return r.nullable===!0?{anyOf:[a,{type:"null"}]}:a}o(V,"transformSchemaNode");function fo(e,t){let n="#/components/schemas/";if(t.startsWith(n))return q(e,{$ref:t})===void 0?void 0:`#/$defs/${t.slice(n.length)}`}o(fo,"rewriteSchemaRef");function en(e){let t=e?.content;if(t!==void 0)return t["application/json"]?.schema??t["application/*+json"]?.schema??Object.entries(t).find(([n])=>n.includes("+json"))?.[1].schema}o(en,"getJsonRequestBodySchema");async function mo(e,t,n,r,s){let i=n.fetch??globalThis.fetch,a=ho(e,t,r.parameters,s),d=yo(r.parameters,t,n),u=r.bodyInputName,c=u===void 0||t[u]===void 0?void 0:JSON.stringify(t[u]);c!==void 0&&!Mo(d,"content-type")&&(d["content-type"]="application/json");let l=await i(a,{method:e.method.toUpperCase(),headers:d,...c!==void 0&&{body:c}}),f=l.headers.get("content-type")??"";if(!l.ok)return{content:[{type:"text",text:await l.text()}],isError:!0};if(f.includes("application/json")||f.includes("+json")){let h=await l.text();try{let y=JSON.parse(h);return{content:[{type:"text",text:JSON.stringify(y)}],structuredContent:y}}catch{return{content:[{type:"text",text:h}]}}}return{content:[{type:"text",text:await l.text()}]}}o(mo,"callOpenAPIOperation");function ho(e,t,n,r){let s=e.path.replace(/{([^}]+)}/g,(a,d)=>{let u=n.find(({parameter:c})=>c.in==="path"&&c.name===d);return encodeURIComponent(String(u===void 0?"":t[u.inputName]??""))}),i=new URL(s.replace(/^\/+/,""),To(r));for(let{parameter:a,inputName:d}of n){if(a.in!=="query")continue;let u=t[d];u==null||u===""||wo(i,a.name,u)}return i.toString()}o(ho,"buildUrl");function yo(e,t,n){let r={...n.headers??{}};for(let{parameter:s,inputName:i}of e){if(s.in!=="header")continue;let a=t[i];a==null||a===""||(r[s.name]=String(a))}return n.auth?.type==="bearer"&&n.auth.token&&(r.authorization=`Bearer ${n.auth.token}`),n.auth?.type==="header"&&n.auth.value&&(r[n.auth.name]=n.auth.value),r}o(yo,"buildHeaders");function go(e){let t=e.baseUrl??e.spec.servers?.[0]?.url;if(t===void 0||t.trim()==="")throw new Error("MCPServer.fromOpenAPI requires options.baseUrl or spec.servers[0].url");return t}o(go,"resolveBaseUrl");function wo(e,t,n){if(Array.isArray(n)){for(let r of n)r!=null&&r!==""&&e.searchParams.append(t,String(r));return}e.searchParams.set(t,String(n))}o(wo,"appendQueryParam");function To(e){return e.endsWith("/")?e:`${e}/`}o(To,"ensureTrailingSlash");function Mo(e,t){return Object.keys(e).some(n=>n.toLowerCase()===t)}o(Mo,"hasHeader");function B(e){let t=D(e);return t!==void 0&&typeof t.$ref=="string"}o(B,"isReferenceObject");function q(e,t){if(!B(t))return t;if(!t.$ref.startsWith("#/"))return;let n=t.$ref.slice(2).split("/").map(s=>s.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let s of n){let i=D(r);if(i===void 0||!(s in i))return;r=i[s]}return r}o(q,"resolveRef");function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}o(D,"readRecord");import{OAuthError as ua,OAuthErrorCode as ca,bearerAuthChallengeResponse as la,getOAuthProtectedResourceMetadataUrl as dn,oauthMetadataResponse as pa,requireBearerAuth as fa,verifyBearerToken as ma}from"@modelcontextprotocol/server";import{getOAuthProtectedResourceMetadataUrl as Di,oauthMetadataResponse as Co,requireBearerAuth as Ni}from"@modelcontextprotocol/server";function je(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(je,"isRecord");function N(e){let t=e.hostname.toLowerCase();return t==="localhost"||t.endsWith(".localhost")||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}o(N,"isLocalhost");function W(e,t){let n;try{n=new URL(e)}catch{throw new Error(`${t} must be an absolute URL`)}if(n.origin==="null"||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute URL without credentials`);return n}o(W,"parseAbsoluteUrl");function oe(e,t){if(e.protocol!=="https:"&&!(e.protocol==="http:"&&N(e)))throw new Error(`${t} must use HTTPS, or HTTP for localhost`)}o(oe,"assertSecureHttpUrl");import{OAuthError as Ro,OAuthErrorCode as vo}from"@modelcontextprotocol/server";function E(e,t){let n=new Ro(vo.InvalidToken,e);return t!==void 0&&(n.cause=t),n}o(E,"invalidToken");function tn(e){let t=e.provider,n=He(e.basePath);if(t.resource!==void 0)return qe(t.resource,n);if(e.mcpUrl!==void 0)return qe(on(rn(e.mcpUrl,"MCP_URL"),n),n)}o(tn,"resolveConfiguredOAuthResource");function nn(e,t){let n=rn(e,"listen origin");if(!N(n))throw new Error("OAuth listen origin must be localhost or a loopback address");return qe(on(n,He(t)),t)}o(nn,"resolveLocalOAuthResource");function qe(e,t){let n=He(t),r=W(e,"OAuth resource");if(r.search!==""||r.hash!=="")throw new Error("OAuth resource must not include a query string or fragment");if(oe(r,"OAuth resource"),sn(r.pathname)!==n)throw new Error(`OAuth resource path must exactly match basePath (${n})`);return r.pathname=n,r}o(qe,"validateOAuthResource");function De(e,t){let n=Ne(t),r=e.createTokenVerifier(new URL(n.href));if(r===null||typeof r!="object"||typeof r.verifyAccessToken!="function")throw new TypeError("OAuth provider createTokenVerifier must return an OAuthTokenVerifier");return{async verifyAccessToken(s){let i=await r.verifyAccessToken(s);Eo(i),xo(i,n);let a;try{a=e.mapAuthInfo(i)}catch(d){throw E("Token identity mapping failed",d)}return So(a),{...i,scopes:[...i.scopes],extra:{...i.extra,...a}}}}}o(De,"wrapOAuthTokenVerifier");function xo(e,t){if(e.resource===void 0)throw E("Token verifier did not return a validated protected resource");if(bo(e.resource).href!==Ne(t).href)throw E("Token resource does not match the protected resource")}o(xo,"assertResourceBinding");function bo(e){if(!(e instanceof URL))throw E("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");let t=e;if(!/^https?:$/.test(t.protocol)||t.username!==""||t.password!==""||t.search!==""||t.hash!==""||t.protocol==="http:"&&!N(t))throw E("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");return Ne(t)}o(bo,"parseTokenResource");function Ne(e){let t=new URL(e);return t.pathname=t.pathname==="/"?"/":t.pathname.replace(/\/+$/,""),t}o(Ne,"normalizeResourceUrl");function se(e){return{oauthMetadata:e.oauthMetadata,...e.requiredScopes!==void 0&&{requiredScopes:[...e.requiredScopes]},...e.scopesSupported!==void 0&&{scopesSupported:[...e.scopesSupported]},...e.resourceName!==void 0&&{resourceName:e.resourceName},...e.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:e.serviceDocumentationUrl}}}o(se,"getOAuthProviderOptions");function Eo(e){if(e===null||typeof e!="object"||typeof e.token!="string"||e.token.length===0||typeof e.clientId!="string"||!Array.isArray(e.scopes)||!e.scopes.every(t=>typeof t=="string")||typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()/1e3)throw E("Token verifier returned invalid authentication information")}o(Eo,"assertVerifiedAuthInfo");function So(e){if(e===null||typeof e!="object"||!("user"in e)||e.user===void 0||!je(e.payload)||!Array.isArray(e.permissions)||!e.permissions.every(t=>typeof t=="string"))throw E("Token identity mapping must return user, payload, and string permissions")}o(So,"assertMappedExtra");function rn(e,t){let n=W(e,t);if(n.pathname!=="/"||n.search!==""||n.hash!==""||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute origin without a path`);return n}o(rn,"requireAbsoluteOrigin");function on(e,t){let n=new URL(e.origin);return n.pathname=t,n}o(on,"appendBasePath");function He(e){if(!e.startsWith("/")||e.includes("?")||e.includes("#"))throw new Error("basePath must be an absolute URL pathname");return sn(e)}o(He,"normalizeBasePath");function sn(e){if(e==="/")return"/";let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t--;return e.slice(0,t)}o(sn,"normalizePathname");function $e(e,t){let n=se(e);return async(r,s)=>{let i=Co(r,{oauthMetadata:n.oauthMetadata,resourceServerUrl:t,...n.scopesSupported!==void 0&&{scopesSupported:[...n.scopesSupported]},...n.resourceName!==void 0&&{resourceName:n.resourceName},...n.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:n.serviceDocumentationUrl}});return i!==void 0?i:s()}}o($e,"oauthMetadata");function an(e){return R(e).authInfo}o(an,"authInfoFromRequest");import{OAuthError as Wi}from"@modelcontextprotocol/server";import{createRemoteJWKSet as Ji,jwtVerify as Ki,errors as Gi}from"jose";function ie(e){return e.inputSchema??e.schema}o(ie,"resolveToolInputSchema");import{fromJsonSchema as Oo}from"@modelcontextprotocol/server";var un="openai/ui";function Ao(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(Ao,"record");function cn(e){let t=e.view?.entrypoints;if(!t?.length)return;let n=ie(e),r=n?Oo(n["~standard"].jsonSchema.input({target:"draft-2020-12"}))["~standard"].validate:void 0;for(let s of t){let i=s.type==="file"?s.extensions.map(a=>({file:{name:`file${a}`,resourceUri:"host-resource://opaque-handle"}})):[{}];if(s.type==="file"&&!r)throw new TypeError(`Tool "${e.name}" file entrypoint requires an inputSchema accepting { file: { name, resourceUri } }.`);for(let a of i){let d=r?.(a);if(d&&("then"in d||d.issues))throw new TypeError(`Tool "${e.name}" ${s.type} entrypoint launch arguments do not satisfy its inputSchema.`)}}}o(cn,"validateEntrypointInput");function ln(e){let t=e.view?.entrypoints;if(t===void 0)return e._meta;let n=e._meta?.[un];return{...e._meta,[un]:{...Ao(n)?n:{},entrypoints:t.map(r=>r.type==="file"?{type:r.type,extensions:[...r.extensions]}:{type:r.type})}}}o(ln,"buildEntrypointMeta");var Po="mcp_use_sdk_event",ko="https://eu.i.posthog.com/i/v0/e/",Io="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",Uo=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,_o=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),pn;function Ve(){return pn??=crypto.randomUUID(),pn}o(Ve,"getRuntimeId");var fn=new Set,Fe=new Set,mn=new Map;function Be(e){return[...e].some(t=>{let n=t.charCodeAt(0);return n<32||n===127})}o(Be,"hasControl");function We(e){return typeof process>"u"?void 0:process.env?.[e]}o(We,"env");function hn(e){let t=We(e);return t!==void 0&&t.length>0&&t.length<=128&&!Be(t)?t:void 0}o(hn,"safeEnv");function Lo(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}o(Lo,"canPersistTelemetryIdentity");function yn(){if(We("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}o(yn,"disabled");function gn(){return yn()}o(gn,"isUsageDisabled");function jo(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t.length>128||Be(t)||t.startsWith("$")||_o.has(t)||Uo.test(t)||n===void 0?!1:typeof n=="string"?n.length<=128&&!Be(n):typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n)))}o(jo,"clean");async function qo(e){let t=hn("MCP_USE_TELEMETRY_PROJECT_ID");if(t!==void 0)return{id:t,stability:"project"};if(e===void 0||!Lo())return{id:Ve(),stability:"process"};let n=mn.get(e);if(n!==void 0)return n;let r=(async()=>{try{let s=await import("fs/promises"),i=`${e}/.mcp-use`,a=`${i}/usage.json`,d=o(async()=>{try{let l=JSON.parse(await s.readFile(a,"utf8"));if(typeof l=="object"&&l!==null&&"schemaVersion"in l&&l.schemaVersion===1&&"serverId"in l&&typeof l.serverId=="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(l.serverId))return l.serverId}catch{}},"read"),u=await d();if(u!==void 0)return{id:u,stability:"server"};await s.mkdir(i,{recursive:!0,mode:448});let c=crypto.randomUUID();try{return await s.writeFile(a,`${JSON.stringify({schemaVersion:1,serverId:c})}
|
|
7
|
-
`,{flag:"wx",mode:384}),{id:c,stability:"server"}}catch{let l=await d();if(l!==void 0)return{id:l,stability:"server"}}}catch{}return{id:Ve(),stability:"process"}})();return mn.set(e,r),r}o(qo,"identity");function Do(e,t,n,r,s){let i=hn("MCP_USE_TELEMETRY_VALIDATION_ID");if(yn()||We("NODE_ENV")==="test"&&i===void 0||Fe.size>=16)return;if(r.onceKey!==void 0){if(fn.has(r.onceKey))return;fn.add(r.onceKey)}let a=Math.max(0,Math.min(1,r.sampleRate??1));if(i===void 0&&Math.random()>=a)return;let d=(async()=>{try{let u=await s(),c=JSON.stringify({api_key:Io,event:Po,properties:{...jo(n),feature:e,action:t,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.0",server_id:u.id,runtime_id:Ve(),identity_stability:u.stability,distinct_id:u.id,sample_rate:i===void 0?a:1,$process_person_profile:!1,$geoip_disable:!0,...i!==void 0&&{is_validation:!0,validation_run_id:i}}});await fetch(ko,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body:c})}catch{return}})();Fe.add(d),d.then(()=>Fe.delete(d))}o(Do,"capture");function ae(e,t,n={},r={}){Do(e,t,n,r,()=>qo(r.serverRoot))}o(ae,"recordUsage");import{INVALID_PARAMS as wn,ProtocolError as Tn}from"@modelcontextprotocol/server";function Je(e){return{"~standard":{version:1,vendor:"mcp-use",validate(t){try{return{value:e(t)}}catch(n){return{issues:[{message:n instanceof Error?n.message:String(n)}]}}}}}}o(Je,"schema");function Ke(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("params must be an object");return e}o(Ke,"object");var No=Je(e=>{let n=Ke(e).cursor;if(n!==void 0&&typeof n!="string")throw new TypeError("cursor must be a string");return n===void 0?{}:{cursor:n}}),Mn=Je(e=>{let t=Ke(e);if(typeof t.uri!="string")throw new TypeError("uri must be a string");if(t.cursor!==void 0&&typeof t.cursor!="string")throw new TypeError("cursor must be a string");return{uri:t.uri,...typeof t.cursor=="string"&&{cursor:t.cursor}}}),ze=Je(e=>Ke(e));function Ho(e){try{return decodeURIComponent(e)}catch{return e}}o(Ho,"decodePathSegment");function Rn(e,t){let n=new Map(t.skills.map(r=>[r.uri,r]));for(let r of t.resources)e.registerResource(r.uri,r.uri,{title:r.name,mimeType:r.mimeType},async()=>({contents:[{uri:r.uri,mimeType:r.mimeType,...r.text!==void 0?{text:r.text}:{blob:r.blob}}]}));e.server.setRequestHandler("skills/list",{params:No,result:ze},async()=>({skills:t.skills})),e.server.setRequestHandler("skills/get",{params:Mn,result:ze},async({uri:r})=>{let s=n.get(r);if(s===void 0)throw new Tn(wn,`Unknown skill: ${r}`);return{skill:s}}),e.server.setRequestHandler("resources/directory/read",{params:Mn,result:ze},async({uri:r})=>{let s=r.replace(/\/$/,""),i=new Set(t.directories.map(u=>u.uri)),a=`${s}/`,d=new Map;for(let u of t.resources){if(!u.uri.startsWith(a))continue;let c=u.uri.slice(a.length),[l]=c.split("/");if(l===void 0||l==="")continue;let
|
|
6
|
+
`)}o(io,"createToolDescription");function ao(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^_/,"").replace(/_$/,"").slice(0,64)||"openapi_tool"}o(ao,"slugifyToolName");function uo(e,t,n){let r={},s=[];for(let{parameter:u,inputName:c}of n.parameters){let l=Zt(e,u.schema??{});r[c]={...l,description:u.description??`${u.in} parameter`},(u.required||u.in==="path")&&s.push(c)}let i=en(t.requestBody);i!==void 0&&n.bodyInputName!==void 0&&(r[n.bodyInputName]=Zt(e,i),t.requestBody?.required&&s.push(n.bodyInputName));let a=po(e),d={type:"object",properties:r,additionalProperties:!1,...s.length>0&&{required:s},...a!==void 0&&{$defs:a}};return Qr(d)}o(uo,"createToolInputSchema");function co(e){let t=e.parameters.filter(a=>a.in!=="cookie"),n=en(e.requestBody)===void 0?void 0:"body",r=new Map;for(let a of t)r.set(a.name,(r.get(a.name)??0)+1);let s=new Set(n===void 0?[]:[n]);return{parameters:t.map(a=>{let u=(r.get(a.name)??0)>1||a.name===n?`${a.name}_${a.in}`:a.name;return{parameter:a,inputName:lo(u,s)}}),...n!==void 0&&{bodyInputName:n}}}o(co,"createInputBindings");function lo(e,t){let n=e,r=2;for(;t.has(n);)n=`${e}_${r}`,r+=1;return t.add(n),n}o(lo,"claimInputName");function po(e){let t=D(e.components?.schemas);if(t===void 0)return;let n={};for(let[r,s]of Object.entries(t))n[r]=V(e,s,new Set);return n}o(po,"createSchemaDefinitions");function Zt(e,t){let n=V(e,t,new Set);return D(n)??{}}o(Zt,"transformSchema");function V(e,t,n){if(Array.isArray(t))return t.map(d=>V(e,d,n));let r=D(t);if(r===void 0)return t;let s=typeof r.$ref=="string"?r.$ref:void 0,i={};for(let[d,u]of Object.entries(r))d!=="$ref"&&(d==="nullable"&&typeof u=="boolean"||(i[d]=V(e,u,n)));let a=i;if(s!==void 0){let d=fo(e,s);if(d!==void 0)a={$ref:d,...i};else if(!n.has(s)){let u=q(e,{$ref:s});if(u!==void 0){let c=new Set(n);c.add(s),a={...D(V(e,u,c))??{},...i}}}}return r.nullable===!0?{anyOf:[a,{type:"null"}]}:a}o(V,"transformSchemaNode");function fo(e,t){let n="#/components/schemas/";if(t.startsWith(n))return q(e,{$ref:t})===void 0?void 0:`#/$defs/${t.slice(n.length)}`}o(fo,"rewriteSchemaRef");function en(e){let t=e?.content;if(t!==void 0)return t["application/json"]?.schema??t["application/*+json"]?.schema??Object.entries(t).find(([n])=>n.includes("+json"))?.[1].schema}o(en,"getJsonRequestBodySchema");async function mo(e,t,n,r,s){let i=n.fetch??globalThis.fetch,a=ho(e,t,r.parameters,s),d=yo(r.parameters,t,n),u=r.bodyInputName,c=u===void 0||t[u]===void 0?void 0:JSON.stringify(t[u]);c!==void 0&&!Mo(d,"content-type")&&(d["content-type"]="application/json");let l=await i(a,{method:e.method.toUpperCase(),headers:d,...c!==void 0&&{body:c}}),p=l.headers.get("content-type")??"";if(!l.ok)return{content:[{type:"text",text:await l.text()}],isError:!0};if(p.includes("application/json")||p.includes("+json")){let y=await l.text();try{let h=JSON.parse(y);return{content:[{type:"text",text:JSON.stringify(h)}],structuredContent:h}}catch{return{content:[{type:"text",text:y}]}}}return{content:[{type:"text",text:await l.text()}]}}o(mo,"callOpenAPIOperation");function ho(e,t,n,r){let s=e.path.replace(/{([^}]+)}/g,(a,d)=>{let u=n.find(({parameter:c})=>c.in==="path"&&c.name===d);return encodeURIComponent(String(u===void 0?"":t[u.inputName]??""))}),i=new URL(s.replace(/^\/+/,""),To(r));for(let{parameter:a,inputName:d}of n){if(a.in!=="query")continue;let u=t[d];u==null||u===""||wo(i,a.name,u)}return i.toString()}o(ho,"buildUrl");function yo(e,t,n){let r={...n.headers??{}};for(let{parameter:s,inputName:i}of e){if(s.in!=="header")continue;let a=t[i];a==null||a===""||(r[s.name]=String(a))}return n.auth?.type==="bearer"&&n.auth.token&&(r.authorization=`Bearer ${n.auth.token}`),n.auth?.type==="header"&&n.auth.value&&(r[n.auth.name]=n.auth.value),r}o(yo,"buildHeaders");function go(e){let t=e.baseUrl??e.spec.servers?.[0]?.url;if(t===void 0||t.trim()==="")throw new Error("MCPServer.fromOpenAPI requires options.baseUrl or spec.servers[0].url");return t}o(go,"resolveBaseUrl");function wo(e,t,n){if(Array.isArray(n)){for(let r of n)r!=null&&r!==""&&e.searchParams.append(t,String(r));return}e.searchParams.set(t,String(n))}o(wo,"appendQueryParam");function To(e){return e.endsWith("/")?e:`${e}/`}o(To,"ensureTrailingSlash");function Mo(e,t){return Object.keys(e).some(n=>n.toLowerCase()===t)}o(Mo,"hasHeader");function B(e){let t=D(e);return t!==void 0&&typeof t.$ref=="string"}o(B,"isReferenceObject");function q(e,t){if(!B(t))return t;if(!t.$ref.startsWith("#/"))return;let n=t.$ref.slice(2).split("/").map(s=>s.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let s of n){let i=D(r);if(i===void 0||!(s in i))return;r=i[s]}return r}o(q,"resolveRef");function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}o(D,"readRecord");import{OAuthError as ua,OAuthErrorCode as ca,bearerAuthChallengeResponse as la,getOAuthProtectedResourceMetadataUrl as dn,oauthMetadataResponse as pa,requireBearerAuth as fa,verifyBearerToken as ma}from"@modelcontextprotocol/server";import{getOAuthProtectedResourceMetadataUrl as Di,oauthMetadataResponse as Co,requireBearerAuth as Ni}from"@modelcontextprotocol/server";function je(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(je,"isRecord");function N(e){let t=e.hostname.toLowerCase();return t==="localhost"||t.endsWith(".localhost")||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}o(N,"isLocalhost");function W(e,t){let n;try{n=new URL(e)}catch{throw new Error(`${t} must be an absolute URL`)}if(n.origin==="null"||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute URL without credentials`);return n}o(W,"parseAbsoluteUrl");function oe(e,t){if(e.protocol!=="https:"&&!(e.protocol==="http:"&&N(e)))throw new Error(`${t} must use HTTPS, or HTTP for localhost`)}o(oe,"assertSecureHttpUrl");import{OAuthError as Ro,OAuthErrorCode as vo}from"@modelcontextprotocol/server";function E(e,t){let n=new Ro(vo.InvalidToken,e);return t!==void 0&&(n.cause=t),n}o(E,"invalidToken");function tn(e){let t=e.provider,n=He(e.basePath);if(t.resource!==void 0)return qe(t.resource,n);if(e.mcpUrl!==void 0)return qe(on(rn(e.mcpUrl,"MCP_URL"),n),n)}o(tn,"resolveConfiguredOAuthResource");function nn(e,t){let n=rn(e,"listen origin");if(!N(n))throw new Error("OAuth listen origin must be localhost or a loopback address");return qe(on(n,He(t)),t)}o(nn,"resolveLocalOAuthResource");function qe(e,t){let n=He(t),r=W(e,"OAuth resource");if(r.search!==""||r.hash!=="")throw new Error("OAuth resource must not include a query string or fragment");if(oe(r,"OAuth resource"),sn(r.pathname)!==n)throw new Error(`OAuth resource path must exactly match basePath (${n})`);return r.pathname=n,r}o(qe,"validateOAuthResource");function De(e,t){let n=Ne(t),r=e.createTokenVerifier(new URL(n.href));if(r===null||typeof r!="object"||typeof r.verifyAccessToken!="function")throw new TypeError("OAuth provider createTokenVerifier must return an OAuthTokenVerifier");return{async verifyAccessToken(s){let i=await r.verifyAccessToken(s);Eo(i),xo(i,n);let a;try{a=e.mapAuthInfo(i)}catch(d){throw E("Token identity mapping failed",d)}return So(a),{...i,scopes:[...i.scopes],extra:{...i.extra,...a}}}}}o(De,"wrapOAuthTokenVerifier");function xo(e,t){if(e.resource===void 0)throw E("Token verifier did not return a validated protected resource");if(bo(e.resource).href!==Ne(t).href)throw E("Token resource does not match the protected resource")}o(xo,"assertResourceBinding");function bo(e){if(!(e instanceof URL))throw E("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");let t=e;if(!/^https?:$/.test(t.protocol)||t.username!==""||t.password!==""||t.search!==""||t.hash!==""||t.protocol==="http:"&&!N(t))throw E("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");return Ne(t)}o(bo,"parseTokenResource");function Ne(e){let t=new URL(e);return t.pathname=t.pathname==="/"?"/":t.pathname.replace(/\/+$/,""),t}o(Ne,"normalizeResourceUrl");function se(e){return{oauthMetadata:e.oauthMetadata,...e.requiredScopes!==void 0&&{requiredScopes:[...e.requiredScopes]},...e.scopesSupported!==void 0&&{scopesSupported:[...e.scopesSupported]},...e.resourceName!==void 0&&{resourceName:e.resourceName},...e.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:e.serviceDocumentationUrl}}}o(se,"getOAuthProviderOptions");function Eo(e){if(e===null||typeof e!="object"||typeof e.token!="string"||e.token.length===0||typeof e.clientId!="string"||!Array.isArray(e.scopes)||!e.scopes.every(t=>typeof t=="string")||typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()/1e3)throw E("Token verifier returned invalid authentication information")}o(Eo,"assertVerifiedAuthInfo");function So(e){if(e===null||typeof e!="object"||!("user"in e)||e.user===void 0||!je(e.payload)||!Array.isArray(e.permissions)||!e.permissions.every(t=>typeof t=="string"))throw E("Token identity mapping must return user, payload, and string permissions")}o(So,"assertMappedExtra");function rn(e,t){let n=W(e,t);if(n.pathname!=="/"||n.search!==""||n.hash!==""||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute origin without a path`);return n}o(rn,"requireAbsoluteOrigin");function on(e,t){let n=new URL(e.origin);return n.pathname=t,n}o(on,"appendBasePath");function He(e){if(!e.startsWith("/")||e.includes("?")||e.includes("#"))throw new Error("basePath must be an absolute URL pathname");return sn(e)}o(He,"normalizeBasePath");function sn(e){if(e==="/")return"/";let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t--;return e.slice(0,t)}o(sn,"normalizePathname");function $e(e,t){let n=se(e);return async(r,s)=>{let i=Co(r,{oauthMetadata:n.oauthMetadata,resourceServerUrl:t,...n.scopesSupported!==void 0&&{scopesSupported:[...n.scopesSupported]},...n.resourceName!==void 0&&{resourceName:n.resourceName},...n.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:n.serviceDocumentationUrl}});return i!==void 0?i:s()}}o($e,"oauthMetadata");function an(e){return R(e).authInfo}o(an,"authInfoFromRequest");import{OAuthError as Wi}from"@modelcontextprotocol/server";import{createRemoteJWKSet as Ji,jwtVerify as Ki,errors as Gi}from"jose";function ie(e){return e.inputSchema??e.schema}o(ie,"resolveToolInputSchema");import{fromJsonSchema as Oo}from"@modelcontextprotocol/server";var un="openai/ui";function Ao(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(Ao,"record");function cn(e){let t=e.view?.entrypoints;if(!t?.length)return;let n=ie(e),r=n?Oo(n["~standard"].jsonSchema.input({target:"draft-2020-12"}))["~standard"].validate:void 0;for(let s of t){let i=s.type==="file"?s.extensions.map(a=>({file:{name:`file${a}`,resourceUri:"host-resource://opaque-handle"}})):[{}];if(s.type==="file"&&!r)throw new TypeError(`Tool "${e.name}" file entrypoint requires an inputSchema accepting { file: { name, resourceUri } }.`);for(let a of i){let d=r?.(a);if(d&&("then"in d||d.issues))throw new TypeError(`Tool "${e.name}" ${s.type} entrypoint launch arguments do not satisfy its inputSchema.`)}}}o(cn,"validateEntrypointInput");function ln(e){let t=e.view?.entrypoints;if(t===void 0)return e._meta;let n=e._meta?.[un];return{...e._meta,[un]:{...Ao(n)?n:{},entrypoints:t.map(r=>r.type==="file"?{type:r.type,extensions:[...r.extensions]}:{type:r.type})}}}o(ln,"buildEntrypointMeta");var Po="mcp_use_sdk_event",ko="https://eu.i.posthog.com/i/v0/e/",Io="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",Uo=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,_o=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),pn;function Ve(){return pn??=crypto.randomUUID(),pn}o(Ve,"getRuntimeId");var fn=new Set,Fe=new Set,mn=new Map;function Be(e){return[...e].some(t=>{let n=t.charCodeAt(0);return n<32||n===127})}o(Be,"hasControl");function We(e){return typeof process>"u"?void 0:process.env?.[e]}o(We,"env");function hn(e){let t=We(e);return t!==void 0&&t.length>0&&t.length<=128&&!Be(t)?t:void 0}o(hn,"safeEnv");function Lo(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}o(Lo,"canPersistTelemetryIdentity");function yn(){if(We("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}o(yn,"disabled");function gn(){return yn()}o(gn,"isUsageDisabled");function jo(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t.length>128||Be(t)||t.startsWith("$")||_o.has(t)||Uo.test(t)||n===void 0?!1:typeof n=="string"?n.length<=128&&!Be(n):typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n)))}o(jo,"clean");async function qo(e){let t=hn("MCP_USE_TELEMETRY_PROJECT_ID");if(t!==void 0)return{id:t,stability:"project"};if(e===void 0||!Lo())return{id:Ve(),stability:"process"};let n=mn.get(e);if(n!==void 0)return n;let r=(async()=>{try{let s=await import("fs/promises"),i=`${e}/.mcp-use`,a=`${i}/usage.json`,d=o(async()=>{try{let l=JSON.parse(await s.readFile(a,"utf8"));if(typeof l=="object"&&l!==null&&"schemaVersion"in l&&l.schemaVersion===1&&"serverId"in l&&typeof l.serverId=="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(l.serverId))return l.serverId}catch{}},"read"),u=await d();if(u!==void 0)return{id:u,stability:"server"};await s.mkdir(i,{recursive:!0,mode:448});let c=crypto.randomUUID();try{return await s.writeFile(a,`${JSON.stringify({schemaVersion:1,serverId:c})}
|
|
7
|
+
`,{flag:"wx",mode:384}),{id:c,stability:"server"}}catch{let l=await d();if(l!==void 0)return{id:l,stability:"server"}}}catch{}return{id:Ve(),stability:"process"}})();return mn.set(e,r),r}o(qo,"identity");function Do(e,t,n,r,s){let i=hn("MCP_USE_TELEMETRY_VALIDATION_ID");if(yn()||We("NODE_ENV")==="test"&&i===void 0||Fe.size>=16)return;if(r.onceKey!==void 0){if(fn.has(r.onceKey))return;fn.add(r.onceKey)}let a=Math.max(0,Math.min(1,r.sampleRate??1));if(i===void 0&&Math.random()>=a)return;let d=(async()=>{try{let u=await s(),c=JSON.stringify({api_key:Io,event:Po,properties:{...jo(n),feature:e,action:t,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.1-canary.0",server_id:u.id,runtime_id:Ve(),identity_stability:u.stability,distinct_id:u.id,sample_rate:i===void 0?a:1,$process_person_profile:!1,$geoip_disable:!0,...i!==void 0&&{is_validation:!0,validation_run_id:i}}});await fetch(ko,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body:c})}catch{return}})();Fe.add(d),d.then(()=>Fe.delete(d))}o(Do,"capture");function ae(e,t,n={},r={}){Do(e,t,n,r,()=>qo(r.serverRoot))}o(ae,"recordUsage");import{INVALID_PARAMS as wn,ProtocolError as Tn}from"@modelcontextprotocol/server";function Je(e){return{"~standard":{version:1,vendor:"mcp-use",validate(t){try{return{value:e(t)}}catch(n){return{issues:[{message:n instanceof Error?n.message:String(n)}]}}}}}}o(Je,"schema");function Ke(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("params must be an object");return e}o(Ke,"object");var No=Je(e=>{let n=Ke(e).cursor;if(n!==void 0&&typeof n!="string")throw new TypeError("cursor must be a string");return n===void 0?{}:{cursor:n}}),Mn=Je(e=>{let t=Ke(e);if(typeof t.uri!="string")throw new TypeError("uri must be a string");if(t.cursor!==void 0&&typeof t.cursor!="string")throw new TypeError("cursor must be a string");return{uri:t.uri,...typeof t.cursor=="string"&&{cursor:t.cursor}}}),ze=Je(e=>Ke(e));function Ho(e){try{return decodeURIComponent(e)}catch{return e}}o(Ho,"decodePathSegment");function Rn(e,t){let n=new Map(t.skills.map(r=>[r.uri,r]));for(let r of t.resources)e.registerResource(r.uri,r.uri,{title:r.name,mimeType:r.mimeType},async()=>({contents:[{uri:r.uri,mimeType:r.mimeType,...r.text!==void 0?{text:r.text}:{blob:r.blob}}]}));e.server.setRequestHandler("skills/list",{params:No,result:ze},async()=>({skills:t.skills})),e.server.setRequestHandler("skills/get",{params:Mn,result:ze},async({uri:r})=>{let s=n.get(r);if(s===void 0)throw new Tn(wn,`Unknown skill: ${r}`);return{skill:s}}),e.server.setRequestHandler("resources/directory/read",{params:Mn,result:ze},async({uri:r})=>{let s=r.replace(/\/$/,""),i=new Set(t.directories.map(u=>u.uri)),a=`${s}/`,d=new Map;for(let u of t.resources){if(!u.uri.startsWith(a))continue;let c=u.uri.slice(a.length),[l]=c.split("/");if(l===void 0||l==="")continue;let p=`${s}/${l}`;d.set(p,{uri:p,name:Ho(l),mimeType:c.includes("/")?"inode/directory":u.mimeType})}for(let u of t.directories){if(!u.uri.startsWith(a))continue;let c=u.uri.slice(a.length);c===""||c.includes("/")||d.set(u.uri,{uri:u.uri,name:u.name,mimeType:"inode/directory"})}if(!i.has(s))throw new Tn(wn,`Unknown skill directory: ${r}`);return{resources:[...d.values()].sort((u,c)=>u.uri.localeCompare(c.uri))}})}o(Rn,"registerSkillsRuntime");var Ge="io.modelcontextprotocol/skills",z=Symbol.for("mcp-use.registerSkills");var J=Symbol("mcp-use/registerViews");function $o(e,t){if(!e.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(e)}`);return`${t}${e}`}o($o,"resolveAssetUrl");function Fo(e,t){return`${_(e,`_mcp-use/views/${t}`)}/`}o(Fo,"viewAssetsBasePath");function Ye(e,t,n,r){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:")?e:e.startsWith("/")?$o(e,t):`${t}${Fo(n,r)}${e.replace(/^\/+/,"")}`}o(Ye,"resolveExternalAssetUrl");function Vo(e,t){return`${e}${_(t,"_mcp-use/public")}/`}o(Vo,"resolvePublicBase");function vn(e){return e.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}o(vn,"escapeInlineScript");function Bo(e){return e.replaceAll(/<\/style/gi,"<\\/style")}o(Bo,"escapeInlineStyle");function Xe(e){return e.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}o(Xe,"escapeHtml");var xn=`<style>
|
|
8
8
|
html,body,#root{background:transparent}
|
|
9
9
|
html,body{margin:0}
|
|
10
10
|
#root[data-mcp-use-loading]{display:flex;min-height:100vh;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:rgba(127,127,127,.9)}
|
|
@@ -12,7 +12,7 @@ html,body{margin:0}
|
|
|
12
12
|
#root[data-mcp-use-loading]::after{color:rgba(127,127,127,.9);content:"Compiling...";font:500 13px/1.2 ui-sans-serif,system-ui,sans-serif}
|
|
13
13
|
@keyframes mcp-use-view-spin{to{transform:rotate(360deg)}}
|
|
14
14
|
@media (prefers-reduced-motion:reduce){#root[data-mcp-use-loading]::before{animation-duration:1.4s}}
|
|
15
|
-
</style>`;function Ze(e,t,n,r){let s={publicBase:Vo(t,n)},i=`<script>globalThis.__mcpUseViewConfig=${JSON.stringify(s)};</script>`;if(e.kind==="inline"){let l=e.css.length>0?`<style>${Bo(e.css)}</style>`:"",
|
|
15
|
+
</style>`;function Ze(e,t,n,r){let s={publicBase:Vo(t,n)},i=`<script>globalThis.__mcpUseViewConfig=${JSON.stringify(s)};</script>`;if(e.kind==="inline"){let l=e.css.length>0?`<style>${Bo(e.css)}</style>`:"",p=`<script type="module">${vn(e.js)}</script>`;return`<!doctype html>
|
|
16
16
|
<html>
|
|
17
17
|
<head>
|
|
18
18
|
<meta charset="utf-8">
|
|
@@ -22,7 +22,7 @@ ${l}
|
|
|
22
22
|
</head>
|
|
23
23
|
<body>
|
|
24
24
|
<div id="root" data-mcp-use-loading></div>
|
|
25
|
-
${
|
|
25
|
+
${p}
|
|
26
26
|
</body>
|
|
27
27
|
</html>`}if(r===void 0)throw new Error("viewName is required when synthesizing an external view document.");let a=e.css.map(l=>`<link rel="stylesheet" href="${Xe(Ye(l,t,n,r))}">`).join(`
|
|
28
28
|
`),d=(e.scripts??[]).map(l=>`<script type="module" src="${Xe(Ye(l,t,n,r))}"></script>`).join(`
|
|
@@ -40,4 +40,4 @@ ${a}
|
|
|
40
40
|
${d}
|
|
41
41
|
<script type="module" src="${Xe(c)}"></script>
|
|
42
42
|
</body>
|
|
43
|
-
</html>`}o(Ze,"synthesizeViewDocument");var Wo=".mcp-use/build/views/public",zo="public",Jo=".mcp-use/build/views",bn=new WeakMap;function En(e,t,n,r){let s;try{s=decodeURIComponent(t)}catch{return new Response("Not Found",{status:404})}if(s.includes("\\")||s.split("/").includes(".."))return new Response("Not Found",{status:404});let i=Object.hasOwn(e,s)?e[s]:void 0;if(i===void 0)return new Response("Not Found",{status:404});let a=null;return n.method!=="HEAD"&&(a=bn.get(i)??null,a===null&&(a=Uint8Array.from(atob(i.body),d=>d.charCodeAt(0)),bn.set(i,a))),new Response(a,{headers:{"Content-Type":i.contentType,"Cache-Control":"public, max-age=0, must-revalidate",...r!==!0&&{"Access-Control-Allow-Origin":"*"}}})}o(En,"serveEmbeddedAsset");function Qe(e,t,n){if(t.size===0)return;let r=_(e,"_mcp-use/views"),s=n?.projectRoot??process.cwd();return async i=>{if(i.method!=="GET"&&i.method!=="HEAD")return new Response("Method Not Allowed",{status:405});if(!X(i,r))return new Response("Not Found",{status:404});let d=Y(i).slice(r.length+1),u=d.indexOf("/");if(u<=0||u===d.length-1)return new Response("Not Found",{status:404});let c=d.slice(0,u),l=d.slice(u+1),f=t.get(c);if(f===void 0||f.kind!=="external")return new Response("Not Found",{status:404});if(n?.assets!==void 0)return En(n.assets,d,i,n.deferCors);let[{join:h},{resolvePublicFilePath:y,servePublicFile:p}]=await Promise.all([import("path"),import("./public-route-AVKCGJDQ.js")]),m=h(s,Jo,c),g=await y(m,l);return g===null?new Response("Not Found",{status:404}):await p(g,{...n?.deferCors===!0&&{deferCors:!0},...i.method==="HEAD"&&{head:!0}})}}o(Qe,"createViewAssetsHandler");function et(e,t,n){if(t.size===0&&n?.enabled!==!0)return;let r=_(e,"_mcp-use/public"),s=n?.dev===!0?zo:Wo,i=n?.projectRoot??process.cwd();return async a=>{if(a.method!=="GET"&&a.method!=="HEAD")return new Response("Method Not Allowed",{status:405});if(!X(a,r))return new Response("Not Found",{status:404});let u=Y(a).slice(r.length+1),c;try{c=decodeURIComponent(u)}catch{return new Response("Not Found",{status:404})}if(c.length===0)return new Response("Not Found",{status:404});if(n?.assets!==void 0)return En(n.assets,`public/${u}`,a,n.deferCors);let[{join:l},{resolvePublicFilePath:f,servePublicFile:h}]=await Promise.all([import("path"),import("./public-route-AVKCGJDQ.js")]),y=l(i,s),p=await f(y,c);return p===null?new Response("Not Found",{status:404}):await h(p,{...n?.deferCors===!0&&{deferCors:!0},...a.method==="HEAD"&&{head:!0}})}}o(et,"createViewPublicHandler");var Ko={connectDomains:"CSP_CONNECT_DOMAINS",resourceDomains:"CSP_RESOURCE_DOMAINS",frameDomains:"CSP_FRAME_DOMAINS",baseUriDomains:"CSP_BASE_URI_DOMAINS"};function Go(e){return e===void 0||e.trim()===""?[]:e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}o(Go,"parseDomainList");function Sn(e){if(typeof process>"u")return;let t=process.env[e];if(!(t===void 0||t.trim()===""))return Go(t)}o(Sn,"readEnvDomains");function Yo(){return Sn("CSP_URLS")??[]}o(Yo,"readCspUrlsShortcut");function de(e){let t=Sn(Ko[e]);return t!==void 0?t:Yo()}o(de,"readEnvDomainsForCategory");function K(...e){let t=new Set,n=[];for(let r of e)for(let s of r)t.has(s)||(t.add(s),n.push(s));return n}o(K,"mergeDomainLists");function Xo(e){return e.startsWith("https://")?`wss://${e.slice(8)}`:e.startsWith("http://")?`ws://${e.slice(7)}`:e}o(Xo,"toWebSocketOrigin");function Cn(e,t){let n=e?.csp,r=[];t.serverOrigin!==""&&(r.push(t.serverOrigin),t.hmrWs===!0&&r.push(Xo(t.serverOrigin)));let s=[],i=t.explicitAssetsBase?t.assetsOrigin:t.serverOrigin;i!==""&&s.push(i);let a=K(n?.connectDomains??[],de("connectDomains"),r),d=K(n?.resourceDomains??[],de("resourceDomains"),s),u=K(n?.frameDomains??[],de("frameDomains")),c=K(n?.baseUriDomains??[],de("baseUriDomains")),l=K(n?.scriptDirectives??[],t.hmrWs===!0?["'unsafe-eval'"]:[]);return{...n,connectDomains:a,resourceDomains:d,frameDomains:u,baseUriDomains:c,...l.length>0?{scriptDirectives:l}:{}}}o(Cn,"buildMergedResourceCsp");function tt(e,t,n){if(e===void 0&&t===void 0&&n===void 0)return;let r={...n},s=n?.["ui"],i=typeof s=="object"&&s!==null&&!Array.isArray(s),a=i?{...s}:{};if(e!==void 0){let d=k(e);a.resourceUri=d,r[Q]=d}else delete a.resourceUri,delete r[Q];return t!==void 0?a.visibility=[t]:delete a.visibility,(e!==void 0||t!==void 0||i)&&(r["ui"]=a),r}o(tt,"buildToolUiMeta");function nt(e){let t=k(e);return{ui:{resourceUri:t},[Q]:t}}o(nt,"buildToolResultUiMeta");function Zo(e){let t=e?.request,n=e?.serverOrigin??(t!==void 0?ut(t):""),r=e?.assetsBase??(t!==void 0?O(t):n);return{serverOrigin:n,assetsOrigin:ct(r),explicitAssetsBase:lt(),...e?.hmrWs===!0?{hmrWs:!0}:{}}}o(Zo,"resolveCspOptions");function ue(e,t){let r={csp:Cn(e,Zo(t))};return e?.permissions!==void 0&&(r.permissions=e.permissions),e?.domain!==void 0&&(r.domain=e.domain),e?.prefersBorder!==void 0&&(r.prefersBorder=e.prefersBorder),{ui:r,...e?.displayModes!==void 0&&{"openai/ui":{availableDisplayModes:e.displayModes.filter(s=>s==="inline"||s==="fullscreen"),...e.preferredDisplayMode!==void 0&&{preferredDisplayMode:e.preferredDisplayMode}}}}}o(ue,"buildResourceUiMeta");function rt(e,t,n,r){return{mimeType:Z,...n?.description!==void 0&&{description:n.description},_meta:ue(n,r)}}o(rt,"viewResourceConfig");var On=".claudemcpcontent.com",Qo=32;function es(e){let t=e?.name;return typeof t=="string"&&t.toLowerCase().includes("claude")}o(es,"isClaudeClient");async function ts(e){if(e.endsWith(On))return e;let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return`${Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("").slice(0,Qo)}${On}`}o(ts,"computeClaudeResourceDomain");async function ot(e,t,n){let r=typeof t?.name=="string"||typeof n!="string"||n.trim().length===0?t:{...t,name:n.trim()};if(!es(r))return e;let s=e["ui"];if(typeof s!="object"||s===null||Array.isArray(s))return e;let i=s.domain;return typeof i!="string"||i.length===0?e:{...e,ui:{...s,domain:await ts(i)}}}o(ot,"applyClaudeResourceDomain");function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}o(H,"record");function st(e,t){if(typeof e!="string")return t;let n=e.trim();return n.length>0&&n.length<=64&&![...n].some(r=>{let s=r.charCodeAt(0);return s<32||s===127})?n:t}o(st,"productId");function In(e){if(!_n(e))return;let t=H(e.params);if(e.method==="initialize"){let i=H(t?.clientInfo),a=H(t?.capabilities)??{};return Un(i,a,t?.protocolVersion,"legacy")}let n=H(t?._meta),r=H(n?.[is]),s=H(n?.[ss]);if(!(r===void 0||s===void 0))return Un(r,s,n?.[as],"modern")}o(In,"clientUsageFromBody");function Un(e,t,n,r){let s=t;return{client_name:st(e?.name,"other"),client_version:st(e?.version,"unknown"),protocol_era:r,protocol_version:st(n,"unknown"),connection_mode:r==="modern"?"stateless_request":"legacy_session",sampling_capability:Object.hasOwn(t,"sampling"),elicitation_capability:Object.hasOwn(t,"elicitation"),roots_capability:Object.hasOwn(t,"roots"),extensions_capability:Object.hasOwn(t,"extensions"),views_capability:ee(s),capability_count:Object.keys(t).length}}o(Un,"clientUsage");function us(e,t){e.use("*",async(n,r)=>{let s=await t(n.req.raw,async()=>(await r(),n.res));return n.res=s,s})}o(us,"registerFetchMiddleware");var it=class e{static{o(this,"MCPServer")}#e;#N;#o;#t=new Map;#s=new Map;#E=new Map;#a=new Map;#d=new Map;#r;#g;#k=!1;#H;#l=new Map;#w=!1;#T;#p=!1;#u=process.cwd();#I;#$;#f;#S;#M;#C;#O=!1;#F=!1;#U;#V=!1;#_;#B=!1;#R=[];#m=[];#W;#v=new Set;#h=new Set;#A=new Set;#P=new Set;#z=0;#L=0;#J=0;#K=0;#G=0;#Y=0;#X=[];#j=new Set;#Z=!1;app;get;post;put;patch;delete;all;fetch;static fromOpenAPI(t){let n=new e({name:t.name??t.spec.info.title,version:t.version??t.spec.info.version??"1.0.0"});Qt(n,t);for(let r of n.#t.keys())n.#v.add(r);return n}constructor(t){if(vt(t),this.#e=t,this.#o=Mt(t),this.app=new kn,this.app.use("*",async(n,r)=>{R(n.req.raw).honoContext=n,await r()}),this.get=this.app.get.bind(this.app),this.post=this.app.post.bind(this.app),this.put=this.app.put.bind(this.app),this.patch=this.app.patch.bind(this.app),this.delete=this.app.delete.bind(this.app),this.all=this.app.all.bind(this.app),this.fetch=async(n,r,s)=>(await this.#y(),this.#c("handler"),this.#$.fetch(n,r,s)),t.oauth!==void 0){let n=typeof process>"u"?void 0:process.env.MCP_URL,r=tn({provider:t.oauth,basePath:this.#i(),...n!==void 0&&{mcpUrl:n}});this.#C=r,this.#O=r!==void 0,this.#F=r===void 0}}get basePath(){return this.#i()}get host(){return this.#e.host}get port(){return this.#e.port}get branding(){return this.#o}getHandler(){return this.fetch}tool(t,n){if(this.#n("tool",t.name),this.#r!==void 0&&[this.#r.capability.readTool,this.#r.capability.updateTool].includes(t.name))throw new Error(`Tool "${t.name}" is reserved for settings`);let r=this.#ne(t);return cn(t),this.#ce(t),this.#v.delete(t.name),this.#h.delete(t.name),this.#t.set(t.name,{definition:t,callback:n,schemes:r}),Object.freeze({name:t.name})}settings(t){if(this.#n("settings",t.readTool??"settings.read"),this.#r!==void 0)throw new Error("Settings are already registered on this server");let n=Jt(t);for(let i of[n.capability.readTool,n.capability.updateTool])if(this.#t.has(i))throw new Error(`Settings tool "${i}" is already registered`);let r=t.read,s=t.update;this.tool(n.readDefinition,async(i,a)=>({content:[],structuredContent:{schema:n.schema,...n.layout!==void 0&&{layout:n.layout},values:await r(a)}})),this.tool(n.updateDefinition,async({set:i},a)=>({content:[],structuredContent:{values:await s(i,a)}})),this.#r=n}[J](t,n){if(this.#w)throw new Error("Cannot prime views: the views registry is already primed on this server instance.");this.#n("views","manifest");for(let[r,s]of Object.entries(t))try{ge(s.viewConfig)}catch(i){throw new Error(`View "${r}" has an invalid viewConfig: ${i instanceof Error?i.message:String(i)}`,{cause:i})}this.#p=n?.dev===!0,this.#T=n?.assets,n?.projectRoot!==void 0&&(this.#u=n.projectRoot);for(let[r,s]of Object.entries(t))this.#d.set(r,s);this.#w=!0}__primeViews(t,n){this[J](t,n)}[z](t){this.#n("skills","snapshot"),this.#g=t,this.#k=!0}__primeSkills(t){this[z](t)}__skillsConfig(){return this.#e.skills}async#oe(t,n){let{discoverConfiguredSkills:r}=await import("#mcp-use-skills-loader"),s=r(this.#e.skills,t,n);return this[z](s),s}resource(t,n){this.#n("resource",t.name);let r=this.#s.get(t.name);return r!==void 0&&this.#A.delete(r.definition.uri),this.#s.set(t.name,{definition:t,callback:n}),this}resourceTemplate(t,n){this.#n("resourceTemplate",t.name);let r=t.complete===void 0?void 0:Gt(t.complete);return this.#E.set(t.name,{definition:t,...r!==void 0&&{complete:r},callback:n}),this}prompt(t,n){return this.#n("prompt",t.name),this.#P.delete(t.name),this.#a.set(t.name,{definition:t,callback:n}),this}async proxy(t){this.#q("proxy()");let n=(async()=>{let{isProxyConnection:r,mountProxyConnection:s,mountProxyServers:i}=await import("./mcp-proxy-YSI2UFBY.js");if(r(t)){this.#L+=1,await s(this.#ee(),t);return}this.#L+=Object.keys(t).length,await i(this.#ee(),t)})();this.#j.add(n);try{await n}finally{this.#j.delete(n)}}use(t,...n){if(typeof t=="string"&&t.startsWith("mcp:")){this.#n("middleware",t);let s=n[0];return this.#R.push(Ce(t,s)),this}return this.app.use.call(this.app,t,...n),this.#z+=typeof t=="function"?1:n.length,this}on(t,n){return this.#n("event listener",t),this.#m.push(Oe(t,n)),this}__setEventBus(t){this.#n("event bus","shared"),this.#S=t}__setRequestLogPrefix(t){this.#n("request log prefix","development"),this.#N=t}__mount(){if(!this.#k)throw new Error("Cannot mount before skills discovery. CLI tooling must call __primeSkills first.");this.#c("handler")}async notifyToolsChanged(){await this.#y(),await this.#c("handler").handler.notify.toolsChanged()}async notifyPromptsChanged(){await this.#y(),await this.#c("handler").handler.notify.promptsChanged()}async notifyResourcesChanged(){await this.#y(),await this.#c("handler").handler.notify.resourcesChanged()}async notifyResourceUpdated(t){await this.#y(),await this.#c("handler").handler.notify.resourceUpdated(t)}async listen(t=void 0,n={}){this.#q("listen()"),await this.#y();let r=xt(n.host,this.#e.host),s=bt(t,this.#e.port);return this.#ie(r),new Promise((i,a)=>{let d,u,c=new Promise((p,m)=>{d=p,u=m});c.catch(()=>{});let l=!1,f=o(p=>{l||(l=!0,a(p)),u?.(p),new Promise(m=>y.close(()=>m())).catch(()=>{}).finally(()=>{this.#M===y&&(this.#M=void 0)})},"rejectAndClose"),h=St({fetch:o(async p=>(await c)(p),"fetch")}),y=ds((p,m)=>{h(p,m)});y.once("error",f),y.listen(s,r,()=>{try{let p=y.address(),m=typeof p=="object"&&p!==null?p.port:s,{fetch:g}=this.#c("listen",m,r);d?.(g),l||(l=!0,i({port:m,url:`http://localhost:${m}${this.#i()}`}))}catch(p){f(p)}}),this.#M=y})}async close(){this.#Z=!0,await Promise.allSettled([...this.#j]);let t=[],n=this.#X.splice(0),r=await Promise.allSettled(n.map(i=>i.close()));for(let i of r)i.status==="rejected"&&t.push(i.reason);try{await this.#f?.close()}catch(i){t.push(i)}let s=this.#M;if(s!==void 0)try{await new Promise((i,a)=>{s.close(d=>d?a(d):i())}),this.#M=void 0}catch(i){t.push(i)}if(t.length>0)throw new AggregateError(t,"Failed to close MCP server cleanly")}#q(t){if(this.#Z)throw t!==void 0?new Error(`Cannot call ${t} after the server has closed.`):new Error("Cannot use the server after it has closed.")}#i(){return this.#e.basePath??"/mcp"}#se(t,n,r){if(this.#e.oauth===void 0)return;if(this.#O)return this.#C;let s=r??this.#e.host??"127.0.0.1",i=t==="listen"&&n!==void 0&&["127.0.0.1","localhost","::1"].includes(s);if(this.#F&&i)return this.#C=nn(`http://localhost:${n}`,this.#i()),this.#O=!0,this.#C;throw new Error("OAuth requires an explicit resource or MCP_URL when using server.fetch or listening on a non-local host")}#ie(t){if(this.#e.oauth!==void 0&&!["127.0.0.1","localhost","::1"].includes(t)&&!this.#O)throw new Error("OAuth listen() on a public or wildcard host requires an explicit provider resource or valid MCP_URL.")}#n(t,n){if(this.#f!==void 0)throw new Error(`Cannot register ${t} "${n}" after the server has started: registrations are replayed per request from the registry, so register everything before listen()/server.fetch.`)}#ae(){ae("server","configured",{tools_total:this.#t.size,tools_local:this.#t.size-this.#v.size-this.#h.size,tools_openapi:this.#v.size,tools_proxied:this.#h.size,resources:this.#s.size,resource_templates:this.#E.size,prompts:this.#a.size,views:this.#d.size,proxy_servers_configured:this.#L,proxy_servers_connected:this.#J,proxy_tools_discovered:this.#K,proxy_resources_discovered:this.#G,proxy_prompts_discovered:this.#Y,proxy_tools_mounted:this.#h.size,proxy_resources_mounted:this.#A.size,proxy_prompts_mounted:this.#P.size,http_middleware:this.#z,mcp_middleware:this.#R.length,observers_before:this.#m.filter(({phase:t})=>t==="before").length,observers_complete:this.#m.filter(({phase:t})=>t==="complete").length,oauth_configured:this.#e.oauth!==void 0,cors_configured:this.#e.cors!==void 0,request_state_configured:this.#e.requestState!==void 0,legacy_policy:this.#e.legacy??"stateless"},{onceKey:`${this.#Q()}:server`,serverRoot:this.#u})}#de(t){let n=In(t);n!==void 0&&ae("client","observed",{...n},{onceKey:`${this.#Q()}:client:${JSON.stringify(n)}`,serverRoot:this.#u})}#Q(){return this.#W??=crypto.randomUUID(),this.#W}#ue(t,n){let r=this.#e.oauth?.setup;if(r===void 0||this.#V)return;if(this.#_!==void 0)throw this.#_.error;let s=!0,i=o(d=>{if(!s)throw new Error(`[mcp-use] OAuthProviderHost.${d}() called after the provider's setup hook returned; call it from setup().`)},"assertActive"),a={resourceUrl:t,basePath:n,mixedAuth:this.#e.mixedAuth===!0,use:o((d,u)=>{i("use"),this.use(d,u)},"use"),tool:o((d,u)=>{if(i("tool"),this.#t.has(d.name))throw new Error(`[mcp-use] Tool "${d.name}" is reserved by the OAuth provider; rename the application tool.`);return this.tool(d,u)},"tool"),resource:o((d,u)=>{if(i("resource"),this.#s.has(d.name))throw new Error(`[mcp-use] Resource "${d.name}" is reserved by the OAuth provider; rename the application resource.`);this.resource(d,u)},"resource"),resourceTemplate:o((d,u)=>{if(i("resourceTemplate"),this.#E.has(d.name))throw new Error(`[mcp-use] Resource template "${d.name}" is reserved by the OAuth provider; rename the application resource template.`);this.resourceTemplate(d,u)},"resourceTemplate"),prompt:o((d,u)=>{if(i("prompt"),this.#a.has(d.name))throw new Error(`[mcp-use] Prompt "${d.name}" is reserved by the OAuth provider; rename the application prompt.`);this.prompt(d,u)},"prompt"),listTools:o(()=>(i("listTools"),[...this.#t.values()].map(({definition:d})=>d)),"listTools"),instructions:o(d=>{i("instructions"),this.#U=d(this.#U??this.#e.instructions)},"instructions")};try{let d=r(a);if(typeof d?.then=="function")throw Promise.resolve(d).catch(()=>{}),new TypeError("[mcp-use] The OAuth provider's setup hook must be synchronous but returned a promise. Do async work before creating the provider.")}catch(d){throw this.#_={error:d},d}finally{s=!1}this.#V=!0}#ee(){return{isStarted:o(()=>this.#f!==void 0,"isStarted"),hasTool:o(t=>this.#t.has(t),"hasTool"),hasResource:o(t=>this.#s.has(t),"hasResource"),hasPrompt:o(t=>this.#a.has(t),"hasPrompt"),registerTool:o((t,n)=>{this.#n("tool",t.name),this.#h.add(t.name),this.#t.set(t.name,{definition:t,callback:n,schemes:this.#ne(t)})},"registerTool"),registerResource:o((t,n)=>{this.#n("resource",t.name),this.#A.add(t.uri),this.#s.set(t.name,{definition:t,callback:n})},"registerResource"),registerPrompt:o((t,n)=>{this.#n("prompt",t.name),this.#P.add(t.name),this.#a.set(t.name,{definition:t,callback:n})},"registerPrompt"),trackOwner:o(t=>{this.#X.push(t)},"trackOwner"),trackNamespace:o(({tools:t,resources:n,prompts:r})=>{this.#J+=1,this.#K+=t,this.#G+=n,this.#Y+=r},"trackNamespace")}}async#y(){this.#k||(this.#H??=this.#oe(typeof process>"u"?".":process.cwd(),"skills").then(()=>{}),await this.#H)}#te(t,n){let{allowedHosts:r,allowedOrigins:s}=this.#e,i=n??this.#e.host??"127.0.0.1",a=["127.0.0.1","localhost","::1"].includes(i),d=r!==void 0?[...new Set([...An(),...r])]:t==="listen"&&a?An():void 0,u=s!==void 0?[...new Set([...ns(),...s])]:void 0;return{hosts:d,origins:u}}#c(t,n,r){if(this.#q(),this.#I===void 0||this.#f===void 0){let{hosts:s,origins:i}=this.#te(t,r),a=this.#i(),d=a==="/"?"":a,u=new kn,c=[Ue({...this.#e.logging,mcpPath:a,prefix:this.#N}),fe()],l=this.#e.cors;l!==void 0&&c.unshift(Ut(l));let f=_t(l);s!==void 0&&c.unshift(me(s)),i!==void 0&&c.push(he(i)),s===void 0&&t==="listen"&&console.warn(`[mcp-use] listen() is serving on ${r} without Host validation. Behind a platform edge that only routes your own domains this is expected; if this process is reachable directly, set allowedHosts to restrict it.`);let h=this.#se(t,n,r);if(h!==void 0){let w=this.#e.oauth;c.push($e(w,h))}for(let w of c)us(u,w);h!==void 0&&this.#ue(h,a);for(let w of this.#r?.layout??[])for(let x of w.items)if(x.kind==="tool"&&!this.#t.has(x.tool))throw new Error(`Settings action tool "${x.tool}" is not registered on this server`);this.#le();let{handler:y,fetch:p}=_e(w=>this.#pe(w),{path:a,...(this.#e.legacy!==void 0||this.#S!==void 0)&&{handler:{...this.#e.legacy!==void 0&&{legacy:this.#e.legacy},...this.#S!==void 0&&{bus:this.#S}}},...h!==void 0&&{authInfo:o(w=>an(w),"authInfo")}});if(h!==void 0){let w=this.#e.oauth,x=se(w),G=this.#e.mixedAuth===!0,jn={verifier:De(w,h),resourceMetadataUrl:dn(h),baselineScopes:x.requiredScopes??[],mixedAuth:G,toolSchemes:o(P=>this.#t.get(P)?.schemes,"toolSchemes"),openResourceUris:[...this.#l.keys()].map(k)},at;u.use("*",async(P,ce)=>{if(new URL(P.req.url).pathname!==a){await ce();return}if((this.#e.publicLandingPage===!0||G)&&pe(P.req.raw)){await ce();return}at??=import("./gate-GHSM72MD.js").then(({createOAuthGate:qn})=>qn(jn));let dt=await(await at)(P.req.raw,async()=>(await ce(),P.res));return P.res=dt,dt})}let m=o(w=>{let x=R(w).parsedBody;return _n(x)&&(this.#ae(),this.#de(x)),p(w)},"mcpRouteHandler"),g=o(async w=>pe(w)?o(async()=>{let{createLandingPageResponse:G}=await import("./landing-handler-3ZBRKAI2.js");return G(w,a,this.#e,this.#o,this.#t.values(),this.#a.values(),this.#s.values())},"respond")():m(w),"endpointHandler"),T=this.#w?this.#p:process.env.NODE_ENV!=="production",v=Rt(this.#o,{dev:T,projectRoot:this.#u,deferCors:f});v!==void 0&&this.app.all("/favicon.ico",w=>v(w.req.raw));let M=et(a,this.#d,{dev:this.#w?this.#p:T,projectRoot:this.#u,enabled:Re(this.#o)||[...this.#t.values()].some(w=>w.definition.icons!==void 0&&Re({icons:w.definition.icons})),deferCors:f,...this.#T!==void 0&&{assets:this.#T}});if(M!==void 0&&this.app.on(["GET","HEAD"],`${d}/_mcp-use/public/*`,w=>M(w.req.raw)),!this.#p){let w=Qe(a,this.#d,{projectRoot:this.#u,deferCors:f,...this.#T!==void 0&&{assets:this.#T}});w!==void 0&&this.app.on(["GET","HEAD"],`${d}/_mcp-use/views/*`,x=>w(x.req.raw))}this.app.all(a,w=>g(w.req.raw)),u.route("/",this.app),this.#$=u,this.#I=async w=>u.fetch(w),this.#f=y,this.#B=s!==void 0}else if(t==="listen"&&!this.#B&&this.#te("listen",r).hosts!==void 0)throw new Error("Cannot listen() on a localhost bind after server.fetch mounted the app without Host validation (server.fetch expects a platform edge in front). Call listen() first, or set allowedHosts.");return{fetch:this.#I,handler:this.#f}}#ce(t){let n=t.view;if(n===void 0)return;if(t.outputSchema===void 0)throw new Error(`Tool "${t.name}" declares view "${n.name}" but has no outputSchema. View-bound tools require an outputSchema \u2014 the view reads structuredContent typed from it. Use outputSchema: z.object({}) for a view that takes no structured output.`);let r=this.#l.get(n.name);if(r!==void 0)throw new Error(`View "${n.name}" is already bound to tool "${r.toolName}"; tool "${t.name}" cannot bind the same view. Each view may be bound to one tool.`);this.#l.set(n.name,{toolName:t.name,config:n})}#le(){if(this.#l.size>0&&!this.#w){let t=[...this.#t.values()].find(r=>r.definition.view!==void 0),n=t?.definition.view?.name??"unknown";throw new Error(`Tool "${t?.definition.name??"unknown"}" is bound to view "${n}" but no views were primed. Run \`mcp-use build\` and deploy the built entry, or in dev let the CLI prime views automatically.`)}for(let t of this.#t.values()){let n=t.definition.view?.name;if(n!==void 0&&!this.#d.has(n))throw new Error(`Tool "${t.definition.name}" is bound to view "${n}" which is not in the primed views registry. Run \`mcp-use build\` and deploy the built entry, or in dev let the CLI prime views automatically.`)}for(let t of this.#d.keys())this.#l.has(t)||console.warn(`[mcp-use] View "${t}" is registered but no tool binds it.`)}#pe(t){let{name:n,version:r,title:s,description:i}=this.#e,a=this.#U??this.#e.instructions,d=t.authInfo,u=new rs({name:n,version:r,...s!==void 0&&{title:s},...i!==void 0&&{description:i},...this.#o.websiteUrl!==void 0&&{websiteUrl:this.#o.websiteUrl},...this.#o.icons!==void 0&&{icons:Me(this.#o.icons,t.requestInfo,this.#i())}},{capabilities:{logging:{},tools:{listChanged:!0},prompts:{listChanged:!0},resources:{listChanged:!0,subscribe:!0},...(this.#g!==void 0||this.#r!==void 0)&&{extensions:{...this.#g!==void 0&&{[Ge]:{directoryRead:!0}},...this.#r!==void 0&&{"openai/settings":this.#r.capability}}},...this.#r!==void 0&&{experimental:{"openai/settings":this.#r.capability}}},...a!==void 0&&{instructions:a},...d!==void 0&&{authInfo:d},...this.#e.requestState!==void 0&&{requestState:this.#e.requestState}}),c=t.requestInfo,l=c!==void 0?{request:c,hmrWs:this.#p}:{hmrWs:this.#p},f=this.#i();for(let h of this.#t.values())this.#he(u,h,c);for(let h of this.#s.values())this.#ge(u,h);for(let h of this.#E.values())this.#we(u,h);for(let h of this.#a.values())this.#Me(u,h);for(let[h,y]of this.#d.entries())this.#ye(u,h,y,l,f);return this.#g!==void 0&&Rn(u,this.#g),this.#me(u),u}#x(t,n,r){let s=$(r);return Object.assign(s,{method:t,params:n,...r.sessionId!==void 0&&{session:{sessionId:r.sessionId}},...r.http?.authInfo!==void 0&&{auth:r.http.authInfo},state:new Map})}#b(t,n,r){let s=t==="tools/call"&&this.#R.length===0&&this.#m.length===0?r:()=>Dt(this.#R,this.#m,t,n,r);if(gn())return s();let i=performance.now(),a=this.#R.filter(f=>L(f.pattern,t)).length,d=o(f=>this.#m.filter(h=>h.phase===f&&L(h.pattern,t)).length,"matchedObservers"),u=n.request?.raw,c=u===void 0?void 0:In(R(u).parsedBody),l=o((f,h)=>{ae("operation","completed",{method:t,outcome:f,duration_ms:Math.max(0,Math.round(performance.now()-i)),primitive_origin:this.#fe(t,n.params),matched_middleware:a,observers_before:d("before"),observers_complete:h?d("complete"):0,...c?.protocol_era==="modern"?c:{client_name:"unknown",protocol_era:"legacy"}},{sampleRate:f==="success"?.1:1,serverRoot:this.#u})},"capture");return s().then(f=>{let h=Pn(f)?"input_required":t==="tools/call"&&typeof f=="object"&&f!==null&&"isError"in f&&f.isError===!0?"error":"success";return l(h,!0),f},f=>{throw l("error",!1),f})}#fe(t,n){if(t==="tools/call"){let r=String(n.name);return this.#h.has(r)?"proxied":this.#v.has(r)?"openapi":"local"}return t==="resources/read"?this.#A.has(String(n.uri))?"proxied":"local":t==="prompts/get"?this.#P.has(String(n.name))?"proxied":"local":"mixed"}#me(t){let n=t.server._requestHandlers;if(n===void 0)return;let r=o((s,i,a)=>{let d=n.get(s);if(d===void 0||d.__mcpListWrapped)return;let u=o(async(c,l)=>{let f=l,h=c.params??{},y=this.#x(s,h,f),p,m=o(async()=>{let v=jt(c,y.params),M=await d(v,l);if(typeof M!="object"||M===null)throw new TypeError(`[mcp-use] ${s} handler returned a non-object result`);p=M;let w=p[i];if(!Array.isArray(w))throw new TypeError(`[mcp-use] ${s} handler result is missing a ${i} array`);return w},"innerFn"),g=await this.#b(s,y,m);if(!Array.isArray(g))throw new TypeError(`[mcp-use] ${s} middleware must return a ${i} array`);let T=a?.(g)??g;return{...p,[i]:T}},"wrapped");u.__mcpListWrapped=!0,n.set(s,u)},"wrapListMethod");r("tools/list","tools",s=>s.map(i=>{let a=this.#t.get(i.name),d=a!==void 0&&this.#re(a)?a.schemes:void 0;return d===void 0?i:{...i,securitySchemes:d}})),r("resources/list","resources"),r("prompts/list","prompts")}#he(t,n,r){let{definition:s,callback:i,schemes:a}=n,d=s.view,u=tt(d?.name,s.visibility,ln(s)),c=this.#re(n)?{...u,[ye]:a}:u,l={...s.title!==void 0&&{title:s.title},...s.icons!==void 0&&{icons:Me(s.icons,r,this.#i())},...s.description!==void 0&&{description:s.description},...s.annotations!==void 0&&{annotations:s.annotations},...s.outputSchema!==void 0&&{outputSchema:s.outputSchema},...c!==void 0&&{_meta:c}},f=d!==void 0?nt(d.name):void 0,h=ie(s),y=o(async(p,m)=>{let g=this.#x("tools/call",{name:s.name,arguments:p,...m.mcpReq._meta!==void 0&&{_meta:m.mcpReq._meta}},m),T=o(async()=>{let v=g.params.arguments??{},M=await i(v,this.#Re(m,a));return Pn(M)||f===void 0||M.isError===!0?M:{...M,_meta:{...M._meta,...f}}},"innerFn");return await this.#b("tools/call",g,T)},"invokeTool");h!==void 0?t.registerTool(s.name,{...l,inputSchema:h},async(p,m)=>y(p,m)):t.registerTool(s.name,l,async p=>y({},p))}#ye(t,n,r,s,i){let a=k(n),d=ge(r.viewConfig),u={...this.#Te(this.#l.get(n)?.config),displayModes:d.displayModes,...d.preferredDisplayMode!==void 0&&{preferredDisplayMode:d.preferredDisplayMode}},c=rt(n,r,u,s);t.registerResource(n,a,c,async(l,f)=>{let h=f.http?.req,y=h!==void 0?{request:h,...s.hmrWs===!0?{hmrWs:!0}:{}}:s.hmrWs===!0?{hmrWs:!0}:{},p=h!==void 0?O(h):s.request!==void 0?O(s.request):"",m=Ze(r,p,i,n),g=await ot(ue(u,y),ve(f),(h??s.request)?.headers.get("user-agent"));return{contents:[{uri:l.href,mimeType:c.mimeType,text:m,_meta:g}]}})}#ge(t,{definition:n,callback:r}){t.registerResource(n.name,n.uri,{...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description},...n.mimeType!==void 0&&{mimeType:n.mimeType},...n.annotations!==void 0&&{annotations:n.annotations},...n._meta!==void 0&&{_meta:{...n._meta}}},async(s,i)=>{let a=this.#x("resources/read",{uri:s.href,...i.mcpReq._meta!==void 0&&{_meta:i.mcpReq._meta}},i),d=o(async()=>be(await r(s,this.#D(i)),s.href),"innerFn");return await this.#b("resources/read",a,d)})}#we(t,{definition:n,callback:r,complete:s}){let i=new os(n.uriTemplate,{list:void 0,...s!==void 0&&{complete:s}});t.registerResource(n.name,i,{...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description},...n.mimeType!==void 0&&{mimeType:n.mimeType},...n.annotations!==void 0&&{annotations:n.annotations},...n._meta!==void 0&&{_meta:{...n._meta}}},async(a,d,u)=>{let c=this.#x("resources/read",{uri:a.href,...u.mcpReq._meta!==void 0&&{_meta:u.mcpReq._meta}},u),l=o(async()=>be(await r(a,d,this.#D(u)),a.href),"innerFn");return await this.#b("resources/read",c,l)})}#Te(t){if(t!==void 0)return{...t.description!==void 0&&{description:t.description},...t.csp!==void 0&&{csp:t.csp},...t.permissions!==void 0&&{permissions:t.permissions},...t.domain!==void 0&&{domain:t.domain},...t.prefersBorder!==void 0&&{prefersBorder:t.prefersBorder}}}#Me(t,{definition:n,callback:r}){let s={...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description}},i=o(async(a,d)=>{let u=this.#x("prompts/get",{name:n.name,arguments:a,...d.mcpReq._meta!==void 0&&{_meta:d.mcpReq._meta}},d),c=o(async()=>{let l=u.params.arguments??{};return It(await r(l,this.#D(d)))},"innerFn");return await this.#b("prompts/get",u,c)},"invokePrompt");if(n.schema!==void 0)t.registerPrompt(n.name,{...s,argsSchema:n.schema},async(a,d)=>i(a,d));else{let a=o(async d=>i({},d),"handler");t.registerPrompt(n.name,s,a)}}#D(t){return this.#e.oauth===void 0?$(t):xe(t)}#Re(t,n){return this.#e.oauth===void 0||!ht(n)&&t.http?.authInfo===void 0?$(t):xe(t)}#ve(){return{hasOAuth:this.#e.oauth!==void 0,mixedAuth:this.#e.mixedAuth===!0,baselineScopes:this.#e.oauth?.requiredScopes??[]}}#ne(t){let n=this.#ve(),r=mt(t.name,t.securitySchemes,n),s=yt(t.name,t,n);return s!==void 0&&console.warn(s),r}#re(t){let{definition:n}=t;return n.securitySchemes!==void 0?!0:this.#e.mixedAuth===!0&&n._meta?.[ye]===void 0}};import{acceptedContent as $d,createRequestStateCodec as Fd,inputRequired as Vd,inputResponse as Bd,isInputRequiredResult as Wd}from"@modelcontextprotocol/server";function cs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/plain"}}}o(cs,"text");function ls(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/markdown"}}}o(ls,"markdown");function ps(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/html"}}}o(ps,"html");function fs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/xml"}}}o(fs,"xml");function ms(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/css"}}}o(ms,"css");function hs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/javascript"}}}o(hs,"javascript");function ys(e,t="image/png"){return{content:[{type:"image",data:e,mimeType:t}],_meta:{mimeType:t,isImage:!0}}}o(ys,"image");function gs(e,t="audio/wav"){return{content:[{type:"audio",data:e,mimeType:t}],_meta:{mimeType:t,isAudio:!0}}}o(gs,"audio");function ws(e,t){return{content:[{type:"text",text:e}],_meta:{mimeType:t,isBinary:!0}}}o(ws,"binary");function Ts(e,t,n){if(typeof t=="object"&&t!==null&&"content"in t){let s=t,i,a;if(s._meta&&typeof s._meta=="object"){let u=s._meta;typeof u.mimeType=="string"&&(a=u.mimeType)}let d=s.content?.[0];return d?.type==="text"&&"text"in d&&(i=d.text),{content:[{type:"resource",resource:{uri:e,...a!==void 0&&{mimeType:a},text:i??""}}]}}let r=t;return{content:[{type:"resource",resource:{uri:e,...r!==void 0&&r!==""&&{mimeType:r},text:n??""}}]}}o(Ts,"resource");function Ms(e){return{isError:!0,content:[{type:"text",text:e}]}}o(Ms,"error");function Rs(e){return Array.isArray(e)?Ln(e):{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e,_meta:{mimeType:"application/json"}}}o(Rs,"object");function Ln(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e}}o(Ln,"array");function vs(e){let t=e.props??e.data??{},{output:n,message:r,metadata:s}=e,a={content:r?[{type:"text",text:r}]:Array.isArray(n?.content)&&n.content.length>0?n.content:[{type:"text",text:""}]};return s!==void 0&&Object.keys(s).length>0&&(a._meta=s),n?.structuredContent!==void 0?a.structuredContent=n.structuredContent:Object.keys(t).length>0&&(a.structuredContent=t),a}o(vs,"widget");function xs(...e){let t=e.filter(i=>i.structuredContent!==void 0),n=t.length>0?t.map(i=>i.structuredContent).reduce((i,a)=>({...i,...typeof a=="object"&&a!==null?a:{}}),{}):void 0,r=e.filter(i=>i._meta!==void 0),s=r.length>0?r.map(i=>i._meta).reduce((i,a)=>({...i,...a!==void 0?a:{}}),{}):void 0;return{content:e.flatMap(i=>i.content),...n!==void 0&&Object.keys(n).length>0&&{structuredContent:n},...s!==void 0&&Object.keys(s).length>0&&{_meta:s}}}o(xs,"mix");export{it as MCPServer,Ge as SKILLS_EXTENSION_ID,$d as acceptedContent,Ln as array,gs as audio,ws as binary,Zr as completable,Dn as composeFetch,qt as composeMiddleware,Oe as createMcpEventListenerEntry,Ce as createMcpMiddlewareEntry,_e as createMcpMount,Fd as createRequestStateCodec,ms as css,Ms as error,R as getRequestBag,me as hostValidationMiddleware,ps as html,ys as image,Vd as inputRequired,Bd as inputResponse,Wd as isInputRequiredResult,hs as javascript,fe as jsonBodyMiddleware,ls as markdown,le as matchesPath,X as matchesPathPrefix,L as matchesPattern,xs as mix,Rs as object,he as originValidationMiddleware,Y as pathnameOf,z as registerSkills,J as registerViews,Ue as requestLogger,Ts as resource,cs as text,vs as widget,fs as xml};
|
|
43
|
+
</html>`}o(Ze,"synthesizeViewDocument");var Wo=".mcp-use/build/views/public",zo="public",Jo=".mcp-use/build/views",bn=new WeakMap;function En(e,t,n,r){let s;try{s=decodeURIComponent(t)}catch{return new Response("Not Found",{status:404})}if(s.includes("\\")||s.split("/").includes(".."))return new Response("Not Found",{status:404});let i=Object.hasOwn(e,s)?e[s]:void 0;if(i===void 0)return new Response("Not Found",{status:404});let a=null;return n.method!=="HEAD"&&(a=bn.get(i)??null,a===null&&(a=Uint8Array.from(atob(i.body),d=>d.charCodeAt(0)),bn.set(i,a))),new Response(a,{headers:{"Content-Type":i.contentType,"Cache-Control":"public, max-age=0, must-revalidate",...r!==!0&&{"Access-Control-Allow-Origin":"*"}}})}o(En,"serveEmbeddedAsset");function Qe(e,t,n){if(t.size===0)return;let r=_(e,"_mcp-use/views"),s=n?.projectRoot??process.cwd();return async i=>{if(i.method!=="GET"&&i.method!=="HEAD")return new Response("Method Not Allowed",{status:405});if(!X(i,r))return new Response("Not Found",{status:404});let d=Y(i).slice(r.length+1),u=d.indexOf("/");if(u<=0||u===d.length-1)return new Response("Not Found",{status:404});let c=d.slice(0,u),l=d.slice(u+1),p=t.get(c);if(p===void 0||p.kind!=="external")return new Response("Not Found",{status:404});if(n?.assets!==void 0)return En(n.assets,d,i,n.deferCors);let[{join:y},{resolvePublicFilePath:h,servePublicFile:m}]=await Promise.all([import("path"),import("./public-route-AVKCGJDQ.js")]),f=y(s,Jo,c),g=await h(f,l);return g===null?new Response("Not Found",{status:404}):await m(g,{...n?.deferCors===!0&&{deferCors:!0},...i.method==="HEAD"&&{head:!0}})}}o(Qe,"createViewAssetsHandler");function et(e,t,n){if(t.size===0&&n?.enabled!==!0)return;let r=_(e,"_mcp-use/public"),s=n?.dev===!0?zo:Wo,i=n?.projectRoot??process.cwd();return async a=>{if(a.method!=="GET"&&a.method!=="HEAD")return new Response("Method Not Allowed",{status:405});if(!X(a,r))return new Response("Not Found",{status:404});let u=Y(a).slice(r.length+1),c;try{c=decodeURIComponent(u)}catch{return new Response("Not Found",{status:404})}if(c.length===0)return new Response("Not Found",{status:404});if(n?.assets!==void 0)return En(n.assets,`public/${u}`,a,n.deferCors);let[{join:l},{resolvePublicFilePath:p,servePublicFile:y}]=await Promise.all([import("path"),import("./public-route-AVKCGJDQ.js")]),h=l(i,s),m=await p(h,c);return m===null?new Response("Not Found",{status:404}):await y(m,{...n?.deferCors===!0&&{deferCors:!0},...a.method==="HEAD"&&{head:!0}})}}o(et,"createViewPublicHandler");var Ko={connectDomains:"CSP_CONNECT_DOMAINS",resourceDomains:"CSP_RESOURCE_DOMAINS",frameDomains:"CSP_FRAME_DOMAINS",baseUriDomains:"CSP_BASE_URI_DOMAINS"};function Go(e){return e===void 0||e.trim()===""?[]:e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}o(Go,"parseDomainList");function Sn(e){if(typeof process>"u")return;let t=process.env[e];if(!(t===void 0||t.trim()===""))return Go(t)}o(Sn,"readEnvDomains");function Yo(){return Sn("CSP_URLS")??[]}o(Yo,"readCspUrlsShortcut");function de(e){let t=Sn(Ko[e]);return t!==void 0?t:Yo()}o(de,"readEnvDomainsForCategory");function K(...e){let t=new Set,n=[];for(let r of e)for(let s of r)t.has(s)||(t.add(s),n.push(s));return n}o(K,"mergeDomainLists");function Xo(e){return e.startsWith("https://")?`wss://${e.slice(8)}`:e.startsWith("http://")?`ws://${e.slice(7)}`:e}o(Xo,"toWebSocketOrigin");function Cn(e,t){let n=e?.csp,r=[];t.serverOrigin!==""&&(r.push(t.serverOrigin),t.hmrWs===!0&&r.push(Xo(t.serverOrigin)));let s=[],i=t.explicitAssetsBase?t.assetsOrigin:t.serverOrigin;i!==""&&s.push(i);let a=K(n?.connectDomains??[],de("connectDomains"),r),d=K(n?.resourceDomains??[],de("resourceDomains"),s),u=K(n?.frameDomains??[],de("frameDomains")),c=K(n?.baseUriDomains??[],de("baseUriDomains")),l=K(n?.scriptDirectives??[],t.hmrWs===!0?["'unsafe-eval'"]:[]);return{...n,connectDomains:a,resourceDomains:d,frameDomains:u,baseUriDomains:c,...l.length>0?{scriptDirectives:l}:{}}}o(Cn,"buildMergedResourceCsp");function tt(e,t,n){if(e===void 0&&t===void 0&&n===void 0)return;let r={...n},s=n?.["ui"],i=typeof s=="object"&&s!==null&&!Array.isArray(s),a=i?{...s}:{};if(e!==void 0){let d=k(e);a.resourceUri=d,r[Q]=d}else delete a.resourceUri,delete r[Q];return t!==void 0?a.visibility=[t]:delete a.visibility,(e!==void 0||t!==void 0||i)&&(r["ui"]=a),r}o(tt,"buildToolUiMeta");function nt(e){let t=k(e);return{ui:{resourceUri:t},[Q]:t}}o(nt,"buildToolResultUiMeta");function Zo(e){let t=e?.request,n=e?.serverOrigin??(t!==void 0?ut(t):""),r=e?.assetsBase??(t!==void 0?O(t):n);return{serverOrigin:n,assetsOrigin:ct(r),explicitAssetsBase:lt(),...e?.hmrWs===!0?{hmrWs:!0}:{}}}o(Zo,"resolveCspOptions");function ue(e,t){let r={csp:Cn(e,Zo(t))};return e?.permissions!==void 0&&(r.permissions=e.permissions),e?.domain!==void 0&&(r.domain=e.domain),e?.prefersBorder!==void 0&&(r.prefersBorder=e.prefersBorder),{ui:r,...e?.displayModes!==void 0&&{"openai/ui":{availableDisplayModes:e.displayModes.filter(s=>s==="inline"||s==="fullscreen"),...e.preferredDisplayMode!==void 0&&{preferredDisplayMode:e.preferredDisplayMode}}}}}o(ue,"buildResourceUiMeta");function rt(e,t,n,r){return{mimeType:Z,...n?.description!==void 0&&{description:n.description},_meta:ue(n,r)}}o(rt,"viewResourceConfig");var On=".claudemcpcontent.com",Qo=32;function es(e){let t=e?.name;return typeof t=="string"&&t.toLowerCase().includes("claude")}o(es,"isClaudeClient");async function ts(e){if(e.endsWith(On))return e;let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return`${Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("").slice(0,Qo)}${On}`}o(ts,"computeClaudeResourceDomain");async function ot(e,t,n){let r=typeof t?.name=="string"||typeof n!="string"||n.trim().length===0?t:{...t,name:n.trim()};if(!es(r))return e;let s=e["ui"];if(typeof s!="object"||s===null||Array.isArray(s))return e;let i=s.domain;return typeof i!="string"||i.length===0?e:{...e,ui:{...s,domain:await ts(i)}}}o(ot,"applyClaudeResourceDomain");function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}o(H,"record");function st(e,t){if(typeof e!="string")return t;let n=e.trim();return n.length>0&&n.length<=64&&![...n].some(r=>{let s=r.charCodeAt(0);return s<32||s===127})?n:t}o(st,"productId");function In(e){if(!_n(e))return;let t=H(e.params);if(e.method==="initialize"){let i=H(t?.clientInfo),a=H(t?.capabilities)??{};return Un(i,a,t?.protocolVersion,"legacy")}let n=H(t?._meta),r=H(n?.[is]),s=H(n?.[ss]);if(!(r===void 0||s===void 0))return Un(r,s,n?.[as],"modern")}o(In,"clientUsageFromBody");function Un(e,t,n,r){let s=t;return{client_name:st(e?.name,"other"),client_version:st(e?.version,"unknown"),protocol_era:r,protocol_version:st(n,"unknown"),connection_mode:r==="modern"?"stateless_request":"legacy_session",sampling_capability:Object.hasOwn(t,"sampling"),elicitation_capability:Object.hasOwn(t,"elicitation"),roots_capability:Object.hasOwn(t,"roots"),extensions_capability:Object.hasOwn(t,"extensions"),views_capability:ee(s),capability_count:Object.keys(t).length}}o(Un,"clientUsage");function us(e,t){e.use("*",async(n,r)=>{let s=await t(n.req.raw,async()=>(await r(),n.res));return n.res=s,s})}o(us,"registerFetchMiddleware");var it=class e{static{o(this,"MCPServer")}#e;#N;#o;#t=new Map;#s=new Map;#E=new Map;#a=new Map;#d=new Map;#r;#g;#k=!1;#H;#l=new Map;#w=!1;#T;#p=!1;#u=process.cwd();#I;#$;#f;#S;#M;#C;#O=!1;#F=!1;#U;#V=!1;#_;#B=!1;#R=[];#m=[];#W;#v=new Set;#h=new Set;#A=new Set;#P=new Set;#z=0;#L=0;#J=0;#K=0;#G=0;#Y=0;#X=[];#j=new Set;#Z=!1;app;get;post;put;patch;delete;all;fetch;static fromOpenAPI(t){let n=new e({name:t.name??t.spec.info.title,version:t.version??t.spec.info.version??"1.0.0"});Qt(n,t);for(let r of n.#t.keys())n.#v.add(r);return n}constructor(t){if(vt(t),this.#e=t,this.#o=Mt(t),this.app=new kn,this.app.use("*",async(n,r)=>{R(n.req.raw).honoContext=n,await r()}),this.get=this.app.get.bind(this.app),this.post=this.app.post.bind(this.app),this.put=this.app.put.bind(this.app),this.patch=this.app.patch.bind(this.app),this.delete=this.app.delete.bind(this.app),this.all=this.app.all.bind(this.app),this.fetch=async(n,r,s)=>(await this.#y(),this.#c("handler"),this.#$.fetch(n,r,s)),t.oauth!==void 0){let n=typeof process>"u"?void 0:process.env.MCP_URL,r=tn({provider:t.oauth,basePath:this.#i(),...n!==void 0&&{mcpUrl:n}});this.#C=r,this.#O=r!==void 0,this.#F=r===void 0}}get basePath(){return this.#i()}get host(){return this.#e.host}get port(){return this.#e.port}get branding(){return this.#o}getHandler(){return this.fetch}tool(t,n){if(this.#n("tool",t.name),this.#r!==void 0&&[this.#r.capability.readTool,this.#r.capability.updateTool].includes(t.name))throw new Error(`Tool "${t.name}" is reserved for settings`);let r=this.#ne(t);return cn(t),this.#ce(t),this.#v.delete(t.name),this.#h.delete(t.name),this.#t.set(t.name,{definition:t,callback:n,schemes:r}),Object.freeze({name:t.name})}settings(t){if(this.#n("settings",t.readTool??"settings.read"),this.#r!==void 0)throw new Error("Settings are already registered on this server");let n=Jt(t);for(let i of[n.capability.readTool,n.capability.updateTool])if(this.#t.has(i))throw new Error(`Settings tool "${i}" is already registered`);let r=t.read,s=t.update;this.tool(n.readDefinition,async(i,a)=>({content:[],structuredContent:{schema:n.schema,...n.layout!==void 0&&{layout:n.layout},values:await r(a)}})),this.tool(n.updateDefinition,async({set:i},a)=>({content:[],structuredContent:{values:await s(i,a)}})),this.#r=n}[J](t,n){if(this.#w)throw new Error("Cannot prime views: the views registry is already primed on this server instance.");this.#n("views","manifest");for(let[r,s]of Object.entries(t))try{ge(s.viewConfig)}catch(i){throw new Error(`View "${r}" has an invalid viewConfig: ${i instanceof Error?i.message:String(i)}`,{cause:i})}this.#p=n?.dev===!0,this.#T=n?.assets,n?.projectRoot!==void 0&&(this.#u=n.projectRoot);for(let[r,s]of Object.entries(t))this.#d.set(r,s);this.#w=!0}__primeViews(t,n){this[J](t,n)}[z](t){this.#n("skills","snapshot"),this.#g=t,this.#k=!0}__primeSkills(t){this[z](t)}__skillsConfig(){return this.#e.skills}async#oe(t,n){let{discoverConfiguredSkills:r}=await import("#mcp-use-skills-loader"),s=r(this.#e.skills,t,n);return this[z](s),s}resource(t,n){this.#n("resource",t.name);let r=this.#s.get(t.name);return r!==void 0&&this.#A.delete(r.definition.uri),this.#s.set(t.name,{definition:t,callback:n}),this}resourceTemplate(t,n){this.#n("resourceTemplate",t.name);let r=t.complete===void 0?void 0:Gt(t.complete);return this.#E.set(t.name,{definition:t,...r!==void 0&&{complete:r},callback:n}),this}prompt(t,n){return this.#n("prompt",t.name),this.#P.delete(t.name),this.#a.set(t.name,{definition:t,callback:n}),this}async proxy(t){this.#q("proxy()");let n=(async()=>{let{isProxyConnection:r,mountProxyConnection:s,mountProxyServers:i}=await import("./mcp-proxy-YSI2UFBY.js");if(r(t)){this.#L+=1,await s(this.#ee(),t);return}this.#L+=Object.keys(t).length,await i(this.#ee(),t)})();this.#j.add(n);try{await n}finally{this.#j.delete(n)}}use(t,...n){if(typeof t=="string"&&t.startsWith("mcp:")){this.#n("middleware",t);let s=n[0];return this.#R.push(Ce(t,s)),this}return this.app.use.call(this.app,t,...n),this.#z+=typeof t=="function"?1:n.length,this}on(t,n){return this.#n("event listener",t),this.#m.push(Oe(t,n)),this}__setEventBus(t){this.#n("event bus","shared"),this.#S=t}__setRequestLogPrefix(t){this.#n("request log prefix","development"),this.#N=t}__mount(){if(!this.#k)throw new Error("Cannot mount before skills discovery. CLI tooling must call __primeSkills first.");this.#c("handler")}async notifyToolsChanged(){await this.#y(),await this.#c("handler").handler.notify.toolsChanged()}async notifyPromptsChanged(){await this.#y(),await this.#c("handler").handler.notify.promptsChanged()}async notifyResourcesChanged(){await this.#y(),await this.#c("handler").handler.notify.resourcesChanged()}async notifyResourceUpdated(t){await this.#y(),await this.#c("handler").handler.notify.resourceUpdated(t)}async listen(t=void 0,n={}){this.#q("listen()"),await this.#y();let r=xt(n.host,this.#e.host),s=bt(t,this.#e.port);return this.#ie(r),new Promise((i,a)=>{let d,u,c=new Promise((m,f)=>{d=m,u=f});c.catch(()=>{});let l=!1,p=o(m=>{l||(l=!0,a(m)),u?.(m),new Promise(f=>h.close(()=>f())).catch(()=>{}).finally(()=>{this.#M===h&&(this.#M=void 0)})},"rejectAndClose"),y=St({fetch:o(async m=>(await c)(m),"fetch")}),h=ds((m,f)=>{y(m,f)});h.once("error",p),h.listen(s,r,()=>{try{let m=h.address(),f=typeof m=="object"&&m!==null?m.port:s,{fetch:g}=this.#c("listen",f,r);d?.(g),l||(l=!0,i({port:f,url:`http://localhost:${f}${this.#i()}`}))}catch(m){p(m)}}),this.#M=h})}async close(){this.#Z=!0,await Promise.allSettled([...this.#j]);let t=[],n=this.#X.splice(0),r=await Promise.allSettled(n.map(i=>i.close()));for(let i of r)i.status==="rejected"&&t.push(i.reason);try{await this.#f?.close()}catch(i){t.push(i)}let s=this.#M;if(s!==void 0)try{await new Promise((i,a)=>{s.close(d=>d?a(d):i())}),this.#M=void 0}catch(i){t.push(i)}if(t.length>0)throw new AggregateError(t,"Failed to close MCP server cleanly")}#q(t){if(this.#Z)throw t!==void 0?new Error(`Cannot call ${t} after the server has closed.`):new Error("Cannot use the server after it has closed.")}#i(){return this.#e.basePath??"/mcp"}#se(t,n,r){if(this.#e.oauth===void 0)return;if(this.#O)return this.#C;let s=r??this.#e.host??"127.0.0.1",i=t==="listen"&&n!==void 0&&["127.0.0.1","localhost","::1"].includes(s);if(this.#F&&i)return this.#C=nn(`http://localhost:${n}`,this.#i()),this.#O=!0,this.#C;throw new Error("OAuth requires an explicit resource or MCP_URL when using server.fetch or listening on a non-local host")}#ie(t){if(this.#e.oauth!==void 0&&!["127.0.0.1","localhost","::1"].includes(t)&&!this.#O)throw new Error("OAuth listen() on a public or wildcard host requires an explicit provider resource or valid MCP_URL.")}#n(t,n){if(this.#f!==void 0)throw new Error(`Cannot register ${t} "${n}" after the server has started: registrations are replayed per request from the registry, so register everything before listen()/server.fetch.`)}#ae(){ae("server","configured",{tools_total:this.#t.size,tools_local:this.#t.size-this.#v.size-this.#h.size,tools_openapi:this.#v.size,tools_proxied:this.#h.size,resources:this.#s.size,resource_templates:this.#E.size,prompts:this.#a.size,views:this.#d.size,proxy_servers_configured:this.#L,proxy_servers_connected:this.#J,proxy_tools_discovered:this.#K,proxy_resources_discovered:this.#G,proxy_prompts_discovered:this.#Y,proxy_tools_mounted:this.#h.size,proxy_resources_mounted:this.#A.size,proxy_prompts_mounted:this.#P.size,http_middleware:this.#z,mcp_middleware:this.#R.length,observers_before:this.#m.filter(({phase:t})=>t==="before").length,observers_complete:this.#m.filter(({phase:t})=>t==="complete").length,oauth_configured:this.#e.oauth!==void 0,cors_configured:this.#e.cors!==void 0,request_state_configured:this.#e.requestState!==void 0,legacy_policy:this.#e.legacy??"stateless"},{onceKey:`${this.#Q()}:server`,serverRoot:this.#u})}#de(t){let n=In(t);n!==void 0&&ae("client","observed",{...n},{onceKey:`${this.#Q()}:client:${JSON.stringify(n)}`,serverRoot:this.#u})}#Q(){return this.#W??=crypto.randomUUID(),this.#W}#ue(t,n){let r=this.#e.oauth?.setup;if(r===void 0||this.#V)return;if(this.#_!==void 0)throw this.#_.error;let s=!0,i=o(d=>{if(!s)throw new Error(`[mcp-use] OAuthProviderHost.${d}() called after the provider's setup hook returned; call it from setup().`)},"assertActive"),a={resourceUrl:t,basePath:n,mixedAuth:this.#e.mixedAuth===!0,use:o((d,u)=>{i("use"),this.use(d,u)},"use"),tool:o((d,u)=>{if(i("tool"),this.#t.has(d.name))throw new Error(`[mcp-use] Tool "${d.name}" is reserved by the OAuth provider; rename the application tool.`);return this.tool(d,u)},"tool"),resource:o((d,u)=>{if(i("resource"),this.#s.has(d.name))throw new Error(`[mcp-use] Resource "${d.name}" is reserved by the OAuth provider; rename the application resource.`);this.resource(d,u)},"resource"),resourceTemplate:o((d,u)=>{if(i("resourceTemplate"),this.#E.has(d.name))throw new Error(`[mcp-use] Resource template "${d.name}" is reserved by the OAuth provider; rename the application resource template.`);this.resourceTemplate(d,u)},"resourceTemplate"),prompt:o((d,u)=>{if(i("prompt"),this.#a.has(d.name))throw new Error(`[mcp-use] Prompt "${d.name}" is reserved by the OAuth provider; rename the application prompt.`);this.prompt(d,u)},"prompt"),listTools:o(()=>(i("listTools"),[...this.#t.values()].map(({definition:d})=>d)),"listTools"),instructions:o(d=>{i("instructions"),this.#U=d(this.#U??this.#e.instructions)},"instructions")};try{let d=r(a);if(typeof d?.then=="function")throw Promise.resolve(d).catch(()=>{}),new TypeError("[mcp-use] The OAuth provider's setup hook must be synchronous but returned a promise. Do async work before creating the provider.")}catch(d){throw this.#_={error:d},d}finally{s=!1}this.#V=!0}#ee(){return{isStarted:o(()=>this.#f!==void 0,"isStarted"),hasTool:o(t=>this.#t.has(t),"hasTool"),hasResource:o(t=>this.#s.has(t),"hasResource"),hasPrompt:o(t=>this.#a.has(t),"hasPrompt"),registerTool:o((t,n)=>{this.#n("tool",t.name),this.#h.add(t.name),this.#t.set(t.name,{definition:t,callback:n,schemes:this.#ne(t)})},"registerTool"),registerResource:o((t,n)=>{this.#n("resource",t.name),this.#A.add(t.uri),this.#s.set(t.name,{definition:t,callback:n})},"registerResource"),registerPrompt:o((t,n)=>{this.#n("prompt",t.name),this.#P.add(t.name),this.#a.set(t.name,{definition:t,callback:n})},"registerPrompt"),trackOwner:o(t=>{this.#X.push(t)},"trackOwner"),trackNamespace:o(({tools:t,resources:n,prompts:r})=>{this.#J+=1,this.#K+=t,this.#G+=n,this.#Y+=r},"trackNamespace")}}async#y(){this.#k||(this.#H??=this.#oe(typeof process>"u"?".":process.cwd(),"skills").then(()=>{}),await this.#H)}#te(t,n){let{allowedHosts:r,allowedOrigins:s}=this.#e,i=n??this.#e.host??"127.0.0.1",a=["127.0.0.1","localhost","::1"].includes(i),d=r!==void 0?[...new Set([...An(),...r])]:t==="listen"&&a?An():void 0,u=s!==void 0?[...new Set([...ns(),...s])]:void 0;return{hosts:d,origins:u}}#c(t,n,r){if(this.#q(),this.#I===void 0||this.#f===void 0){let{hosts:s,origins:i}=this.#te(t,r),a=this.#i(),d=a==="/"?"":a,u=new kn,c=[Ue({...this.#e.logging,mcpPath:a,prefix:this.#N}),fe()],l=this.#e.cors;l!==void 0&&c.unshift(Ut(l));let p=_t(l);s!==void 0&&c.unshift(me(s)),i!==void 0&&c.push(he(i)),s===void 0&&t==="listen"&&console.warn(`[mcp-use] listen() is serving on ${r} without Host validation. Behind a platform edge that only routes your own domains this is expected; if this process is reachable directly, set allowedHosts to restrict it.`);let y=this.#se(t,n,r);if(y!==void 0){let w=this.#e.oauth;c.push($e(w,y))}for(let w of c)us(u,w);y!==void 0&&this.#ue(y,a);for(let w of this.#r?.layout??[])for(let x of w.items)if(x.kind==="tool"&&!this.#t.has(x.tool))throw new Error(`Settings action tool "${x.tool}" is not registered on this server`);this.#le();let{handler:h,fetch:m}=_e(w=>this.#pe(w),{path:a,...(this.#e.legacy!==void 0||this.#S!==void 0)&&{handler:{...this.#e.legacy!==void 0&&{legacy:this.#e.legacy},...this.#S!==void 0&&{bus:this.#S}}},...y!==void 0&&{authInfo:o(w=>an(w),"authInfo")}});if(y!==void 0){let w=this.#e.oauth,x=se(w),G=this.#e.mixedAuth===!0,jn={verifier:De(w,y),resourceMetadataUrl:dn(y),baselineScopes:x.requiredScopes??[],mixedAuth:G,toolSchemes:o(P=>this.#t.get(P)?.schemes,"toolSchemes"),openResourceUris:[...this.#l.keys()].map(k)},at;u.use("*",async(P,ce)=>{if(new URL(P.req.url).pathname!==a){await ce();return}if((this.#e.publicLandingPage===!0||G)&&pe(P.req.raw)){await ce();return}at??=import("./gate-GHSM72MD.js").then(({createOAuthGate:qn})=>qn(jn));let dt=await(await at)(P.req.raw,async()=>(await ce(),P.res));return P.res=dt,dt})}let f=o(w=>{let x=R(w).parsedBody;return _n(x)&&(this.#ae(),this.#de(x)),m(w)},"mcpRouteHandler"),g=o(async w=>pe(w)?o(async()=>{let{createLandingPageResponse:G}=await import("./landing-handler-3ZBRKAI2.js");return G(w,a,this.#e,this.#o,this.#t.values(),this.#a.values(),this.#s.values())},"respond")():f(w),"endpointHandler"),T=this.#w?this.#p:process.env.NODE_ENV!=="production",v=Rt(this.#o,{dev:T,projectRoot:this.#u,deferCors:p});v!==void 0&&this.app.all("/favicon.ico",w=>v(w.req.raw));let M=et(a,this.#d,{dev:this.#w?this.#p:T,projectRoot:this.#u,enabled:Re(this.#o)||[...this.#t.values()].some(w=>w.definition.icons!==void 0&&Re({icons:w.definition.icons})),deferCors:p,...this.#T!==void 0&&{assets:this.#T}});if(M!==void 0&&this.app.on(["GET","HEAD"],`${d}/_mcp-use/public/*`,w=>M(w.req.raw)),!this.#p){let w=Qe(a,this.#d,{projectRoot:this.#u,deferCors:p,...this.#T!==void 0&&{assets:this.#T}});w!==void 0&&this.app.on(["GET","HEAD"],`${d}/_mcp-use/views/*`,x=>w(x.req.raw))}this.app.all(a,w=>g(w.req.raw)),u.route("/",this.app),this.#$=u,this.#I=async w=>u.fetch(w),this.#f=h,this.#B=s!==void 0}else if(t==="listen"&&!this.#B&&this.#te("listen",r).hosts!==void 0)throw new Error("Cannot listen() on a localhost bind after server.fetch mounted the app without Host validation (server.fetch expects a platform edge in front). Call listen() first, or set allowedHosts.");return{fetch:this.#I,handler:this.#f}}#ce(t){let n=t.view;if(n===void 0)return;if(t.outputSchema===void 0)throw new Error(`Tool "${t.name}" declares view "${n.name}" but has no outputSchema. View-bound tools require an outputSchema \u2014 the view reads structuredContent typed from it. Use outputSchema: z.object({}) for a view that takes no structured output.`);let r=this.#l.get(n.name);if(r!==void 0)throw new Error(`View "${n.name}" is already bound to tool "${r.toolName}"; tool "${t.name}" cannot bind the same view. Each view may be bound to one tool.`);this.#l.set(n.name,{toolName:t.name,config:n})}#le(){if(this.#l.size>0&&!this.#w){let t=[...this.#t.values()].find(r=>r.definition.view!==void 0),n=t?.definition.view?.name??"unknown";throw new Error(`Tool "${t?.definition.name??"unknown"}" is bound to view "${n}" but no views were primed. Run \`mcp-use build\` and deploy the built entry, or in dev let the CLI prime views automatically.`)}for(let t of this.#t.values()){let n=t.definition.view?.name;if(n!==void 0&&!this.#d.has(n))throw new Error(`Tool "${t.definition.name}" is bound to view "${n}" which is not in the primed views registry. Run \`mcp-use build\` and deploy the built entry, or in dev let the CLI prime views automatically.`)}for(let t of this.#d.keys())this.#l.has(t)||console.warn(`[mcp-use] View "${t}" is registered but no tool binds it.`)}#pe(t){let{name:n,version:r,title:s,description:i}=this.#e,a=this.#U??this.#e.instructions,d=t.authInfo,u=new rs({name:n,version:r,...s!==void 0&&{title:s},...i!==void 0&&{description:i},...this.#o.websiteUrl!==void 0&&{websiteUrl:this.#o.websiteUrl},...this.#o.icons!==void 0&&{icons:Me(this.#o.icons,t.requestInfo,this.#i())}},{capabilities:{logging:{},tools:{listChanged:!0},prompts:{listChanged:!0},resources:{listChanged:!0,subscribe:!0},...(this.#g!==void 0||this.#r!==void 0)&&{extensions:{...this.#g!==void 0&&{[Ge]:{directoryRead:!0}},...this.#r!==void 0&&{"openai/settings":this.#r.capability}}},...this.#r!==void 0&&{experimental:{"openai/settings":this.#r.capability}}},...a!==void 0&&{instructions:a},...d!==void 0&&{authInfo:d},...this.#e.requestState!==void 0&&{requestState:this.#e.requestState}}),c=t.requestInfo,l=c!==void 0?{request:c,hmrWs:this.#p}:{hmrWs:this.#p},p=this.#i();for(let y of this.#t.values())this.#he(u,y,c);for(let y of this.#s.values())this.#ge(u,y);for(let y of this.#E.values())this.#we(u,y);for(let y of this.#a.values())this.#Me(u,y);for(let[y,h]of this.#d.entries())this.#ye(u,y,h,l,p);return this.#g!==void 0&&Rn(u,this.#g),this.#me(u),u}#x(t,n,r){let s=$(r);return Object.assign(s,{method:t,params:n,...r.sessionId!==void 0&&{session:{sessionId:r.sessionId}},...r.http?.authInfo!==void 0&&{auth:r.http.authInfo},state:new Map})}#b(t,n,r){let s=t==="tools/call"&&this.#R.length===0&&this.#m.length===0?r:()=>Dt(this.#R,this.#m,t,n,r);if(gn())return s();let i=performance.now(),a=this.#R.filter(p=>L(p.pattern,t)).length,d=o(p=>this.#m.filter(y=>y.phase===p&&L(y.pattern,t)).length,"matchedObservers"),u=n.request?.raw,c=u===void 0?void 0:In(R(u).parsedBody),l=o((p,y)=>{ae("operation","completed",{method:t,outcome:p,duration_ms:Math.max(0,Math.round(performance.now()-i)),primitive_origin:this.#fe(t,n.params),matched_middleware:a,observers_before:d("before"),observers_complete:y?d("complete"):0,...c?.protocol_era==="modern"?c:{client_name:"unknown",protocol_era:"legacy"}},{sampleRate:p==="success"?.1:1,serverRoot:this.#u})},"capture");return s().then(p=>{let y=Pn(p)?"input_required":t==="tools/call"&&typeof p=="object"&&p!==null&&"isError"in p&&p.isError===!0?"error":"success";return l(y,!0),p},p=>{throw l("error",!1),p})}#fe(t,n){if(t==="tools/call"){let r=String(n.name);return this.#h.has(r)?"proxied":this.#v.has(r)?"openapi":"local"}return t==="resources/read"?this.#A.has(String(n.uri))?"proxied":"local":t==="prompts/get"?this.#P.has(String(n.name))?"proxied":"local":"mixed"}#me(t){let n=t.server._requestHandlers;if(n===void 0)return;let r=o((s,i,a)=>{let d=n.get(s);if(d===void 0||d.__mcpListWrapped)return;let u=o(async(c,l)=>{let p=l,y=c.params??{},h=this.#x(s,y,p),m,f=o(async()=>{let v=jt(c,h.params),M=await d(v,l);if(typeof M!="object"||M===null)throw new TypeError(`[mcp-use] ${s} handler returned a non-object result`);m=M;let w=m[i];if(!Array.isArray(w))throw new TypeError(`[mcp-use] ${s} handler result is missing a ${i} array`);return w},"innerFn"),g=await this.#b(s,h,f);if(!Array.isArray(g))throw new TypeError(`[mcp-use] ${s} middleware must return a ${i} array`);let T=a?.(g)??g;return{...m,[i]:T}},"wrapped");u.__mcpListWrapped=!0,n.set(s,u)},"wrapListMethod");r("tools/list","tools",s=>s.map(i=>{let a=this.#t.get(i.name),d=a!==void 0&&this.#re(a)?a.schemes:void 0;return d===void 0?i:{...i,securitySchemes:d}})),r("resources/list","resources"),r("prompts/list","prompts")}#he(t,n,r){let{definition:s,callback:i,schemes:a}=n,d=s.view,u=tt(d?.name,s.visibility,ln(s)),c=this.#re(n)?{...u,[ye]:a}:u,l={...s.title!==void 0&&{title:s.title},...s.icons!==void 0&&{icons:Me(s.icons,r,this.#i())},...s.description!==void 0&&{description:s.description},...s.annotations!==void 0&&{annotations:s.annotations},...s.outputSchema!==void 0&&{outputSchema:s.outputSchema},...c!==void 0&&{_meta:c}},p=d!==void 0?nt(d.name):void 0,y=ie(s),h=o(async(m,f)=>{let g=this.#x("tools/call",{name:s.name,arguments:m,...f.mcpReq._meta!==void 0&&{_meta:f.mcpReq._meta}},f),T=o(async()=>{let v=g.params.arguments??{},M=await i(v,this.#Re(f,a));return Pn(M)||p===void 0||M.isError===!0?M:{...M,_meta:{...M._meta,...p}}},"innerFn");return await this.#b("tools/call",g,T)},"invokeTool");y!==void 0?t.registerTool(s.name,{...l,inputSchema:y},async(m,f)=>h(m,f)):t.registerTool(s.name,l,async m=>h({},m))}#ye(t,n,r,s,i){let a=k(n),d=ge(r.viewConfig),u={...this.#Te(this.#l.get(n)?.config),displayModes:d.displayModes,...d.preferredDisplayMode!==void 0&&{preferredDisplayMode:d.preferredDisplayMode}},c=rt(n,r,u,s);t.registerResource(n,a,c,async(l,p)=>{let y=p.http?.req,h=y!==void 0?{request:y,...s.hmrWs===!0?{hmrWs:!0}:{}}:s.hmrWs===!0?{hmrWs:!0}:{},m=y!==void 0?O(y):s.request!==void 0?O(s.request):"",f=Ze(r,m,i,n),g=await ot(ue(u,h),ve(p),(y??s.request)?.headers.get("user-agent"));return{contents:[{uri:l.href,mimeType:c.mimeType,text:f,_meta:g}]}})}#ge(t,{definition:n,callback:r}){t.registerResource(n.name,n.uri,{...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description},...n.mimeType!==void 0&&{mimeType:n.mimeType},...n.annotations!==void 0&&{annotations:n.annotations},...n._meta!==void 0&&{_meta:{...n._meta}}},async(s,i)=>{let a=this.#x("resources/read",{uri:s.href,...i.mcpReq._meta!==void 0&&{_meta:i.mcpReq._meta}},i),d=o(async()=>be(await r(s,this.#D(i)),s.href),"innerFn");return await this.#b("resources/read",a,d)})}#we(t,{definition:n,callback:r,complete:s}){let i=new os(n.uriTemplate,{list:void 0,...s!==void 0&&{complete:s}});t.registerResource(n.name,i,{...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description},...n.mimeType!==void 0&&{mimeType:n.mimeType},...n.annotations!==void 0&&{annotations:n.annotations},...n._meta!==void 0&&{_meta:{...n._meta}}},async(a,d,u)=>{let c=this.#x("resources/read",{uri:a.href,...u.mcpReq._meta!==void 0&&{_meta:u.mcpReq._meta}},u),l=o(async()=>be(await r(a,d,this.#D(u)),a.href),"innerFn");return await this.#b("resources/read",c,l)})}#Te(t){if(t!==void 0)return{...t.description!==void 0&&{description:t.description},...t.csp!==void 0&&{csp:t.csp},...t.permissions!==void 0&&{permissions:t.permissions},...t.domain!==void 0&&{domain:t.domain},...t.prefersBorder!==void 0&&{prefersBorder:t.prefersBorder}}}#Me(t,{definition:n,callback:r}){let s={...n.title!==void 0&&{title:n.title},...n.description!==void 0&&{description:n.description}},i=o(async(a,d)=>{let u=this.#x("prompts/get",{name:n.name,arguments:a,...d.mcpReq._meta!==void 0&&{_meta:d.mcpReq._meta}},d),c=o(async()=>{let l=u.params.arguments??{};return It(await r(l,this.#D(d)))},"innerFn");return await this.#b("prompts/get",u,c)},"invokePrompt");if(n.schema!==void 0)t.registerPrompt(n.name,{...s,argsSchema:n.schema},async(a,d)=>i(a,d));else{let a=o(async d=>i({},d),"handler");t.registerPrompt(n.name,s,a)}}#D(t){return this.#e.oauth===void 0?$(t):xe(t)}#Re(t,n){return this.#e.oauth===void 0||!ht(n)&&t.http?.authInfo===void 0?$(t):xe(t)}#ve(){return{hasOAuth:this.#e.oauth!==void 0,mixedAuth:this.#e.mixedAuth===!0,baselineScopes:this.#e.oauth?.requiredScopes??[]}}#ne(t){let n=this.#ve(),r=mt(t.name,t.securitySchemes,n),s=yt(t.name,t,n);return s!==void 0&&console.warn(s),r}#re(t){let{definition:n}=t;return n.securitySchemes!==void 0?!0:this.#e.mixedAuth===!0&&n._meta?.[ye]===void 0}};import{acceptedContent as $d,createRequestStateCodec as Fd,inputRequired as Vd,inputResponse as Bd,isInputRequiredResult as Wd}from"@modelcontextprotocol/server";function cs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/plain"}}}o(cs,"text");function ls(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/markdown"}}}o(ls,"markdown");function ps(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/html"}}}o(ps,"html");function fs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/xml"}}}o(fs,"xml");function ms(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/css"}}}o(ms,"css");function hs(e){return{content:[{type:"text",text:e}],_meta:{mimeType:"text/javascript"}}}o(hs,"javascript");function ys(e,t="image/png"){return{content:[{type:"image",data:e,mimeType:t}],_meta:{mimeType:t,isImage:!0}}}o(ys,"image");function gs(e,t="audio/wav"){return{content:[{type:"audio",data:e,mimeType:t}],_meta:{mimeType:t,isAudio:!0}}}o(gs,"audio");function ws(e,t){return{content:[{type:"text",text:e}],_meta:{mimeType:t,isBinary:!0}}}o(ws,"binary");function Ts(e,t,n){if(typeof t=="object"&&t!==null&&"content"in t){let s=t,i,a;if(s._meta&&typeof s._meta=="object"){let u=s._meta;typeof u.mimeType=="string"&&(a=u.mimeType)}let d=s.content?.[0];return d?.type==="text"&&"text"in d&&(i=d.text),{content:[{type:"resource",resource:{uri:e,...a!==void 0&&{mimeType:a},text:i??""}}]}}let r=t;return{content:[{type:"resource",resource:{uri:e,...r!==void 0&&r!==""&&{mimeType:r},text:n??""}}]}}o(Ts,"resource");function Ms(e){return{isError:!0,content:[{type:"text",text:e}]}}o(Ms,"error");function Rs(e){return Array.isArray(e)?Ln(e):{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e,_meta:{mimeType:"application/json"}}}o(Rs,"object");function Ln(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e}}o(Ln,"array");function vs(e){let t=e.props??e.data??{},{output:n,message:r,metadata:s}=e,a={content:r?[{type:"text",text:r}]:Array.isArray(n?.content)&&n.content.length>0?n.content:[{type:"text",text:""}]};return s!==void 0&&Object.keys(s).length>0&&(a._meta=s),n?.structuredContent!==void 0?a.structuredContent=n.structuredContent:Object.keys(t).length>0&&(a.structuredContent=t),a}o(vs,"widget");function xs(...e){let t=e.filter(i=>i.structuredContent!==void 0),n=t.length>0?t.map(i=>i.structuredContent).reduce((i,a)=>({...i,...typeof a=="object"&&a!==null?a:{}}),{}):void 0,r=e.filter(i=>i._meta!==void 0),s=r.length>0?r.map(i=>i._meta).reduce((i,a)=>({...i,...a!==void 0?a:{}}),{}):void 0;return{content:e.flatMap(i=>i.content),...n!==void 0&&Object.keys(n).length>0&&{structuredContent:n},...s!==void 0&&Object.keys(s).length>0&&{_meta:s}}}o(xs,"mix");export{it as MCPServer,Ge as SKILLS_EXTENSION_ID,$d as acceptedContent,Ln as array,gs as audio,ws as binary,Zr as completable,Dn as composeFetch,qt as composeMiddleware,Oe as createMcpEventListenerEntry,Ce as createMcpMiddlewareEntry,_e as createMcpMount,Fd as createRequestStateCodec,ms as css,Ms as error,R as getRequestBag,me as hostValidationMiddleware,ps as html,ys as image,Vd as inputRequired,Bd as inputResponse,Wd as isInputRequiredResult,hs as javascript,fe as jsonBodyMiddleware,ls as markdown,le as matchesPath,X as matchesPathPrefix,L as matchesPattern,xs as mix,Rs as object,he as originValidationMiddleware,Y as pathnameOf,z as registerSkills,J as registerViews,Ue as requestLogger,Ts as resource,cs as text,vs as widget,fs as xml};
|
package/dist/internal/usage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var EVENT="mcp_use_sdk_event",ENDPOINT="https://eu.i.posthog.com/i/v0/e/",TOKEN="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",CONTENT=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,RESERVED=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),runtimeId;function getRuntimeId(){return runtimeId??=crypto.randomUUID(),runtimeId}var once=new Set,pending=new Set,identities=new Map;function hasControl(value){return[...value].some(character=>{let code=character.charCodeAt(0);return code<32||code===127})}function env(name){return typeof process>"u"?void 0:process.env?.[name]}function safeEnv(name){let value=env(name);return value!==void 0&&value.length>0&&value.length<=128&&!hasControl(value)?value:void 0}function canPersistTelemetryIdentity(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}function disabled(){if(env("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}function isUsageDisabled(){return disabled()}function clean(properties){return Object.fromEntries(Object.entries(properties).filter(([key,value])=>key.length>128||hasControl(key)||key.startsWith("$")||RESERVED.has(key)||CONTENT.test(key)||value===void 0?!1:typeof value=="string"?value.length<=128&&!hasControl(value):typeof value=="boolean"||typeof value=="number"&&Number.isFinite(value)))}async function identity(serverRoot){let projectId=safeEnv("MCP_USE_TELEMETRY_PROJECT_ID");if(projectId!==void 0)return{id:projectId,stability:"project"};if(serverRoot===void 0||!canPersistTelemetryIdentity())return{id:getRuntimeId(),stability:"process"};let existing=identities.get(serverRoot);if(existing!==void 0)return existing;let resolving=(async()=>{try{let fs=await import("fs/promises"),directory=`${serverRoot}/.mcp-use`,file=`${directory}/usage.json`,read=async()=>{try{let value=JSON.parse(await fs.readFile(file,"utf8"));if(typeof value=="object"&&value!==null&&"schemaVersion"in value&&value.schemaVersion===1&&"serverId"in value&&typeof value.serverId=="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(value.serverId))return value.serverId}catch{}},stored=await read();if(stored!==void 0)return{id:stored,stability:"server"};await fs.mkdir(directory,{recursive:!0,mode:448});let created=crypto.randomUUID();try{return await fs.writeFile(file,`${JSON.stringify({schemaVersion:1,serverId:created})}
|
|
2
|
-
`,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}async function flushUsage(){await Promise.all([...pending])}export{flushUsage,isUsageDisabled,recordUsage};
|
|
2
|
+
`,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.8.1-canary.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}async function flushUsage(){await Promise.all([...pending])}export{flushUsage,isUsageDisabled,recordUsage};
|
package/dist/logging.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export interface LoggingOptions {
|
|
|
12
12
|
/**
|
|
13
13
|
* Verbosity: `info` (compact lines without payloads, default), `debug`
|
|
14
14
|
* (adds compact truncated input/output on the detail line), or `trace`
|
|
15
|
-
* (debug plus full request/response header and body dumps
|
|
16
|
-
* `MCP_USE_LOG_LEVEL` environment variable overrides this when set.
|
|
15
|
+
* (debug plus full request/response header and body dumps, excluding SSE
|
|
16
|
+
* response bodies). The `MCP_USE_LOG_LEVEL` environment variable overrides this when set.
|
|
17
17
|
*/
|
|
18
18
|
level?: LogLevel;
|
|
19
19
|
}
|
|
@@ -30,6 +30,8 @@ export interface RequestLoggerOptions extends LoggingOptions {
|
|
|
30
30
|
/**
|
|
31
31
|
* Fetch middleware logging every request in the compact single-line format (see
|
|
32
32
|
* the module docs). `MCPServer` registers it automatically unless
|
|
33
|
-
* `config.logging.enabled` is `false`.
|
|
33
|
+
* `config.logging.enabled` is `false`. SSE responses are logged when the
|
|
34
|
+
* response becomes available without reading their bodies or waiting for
|
|
35
|
+
* stream completion.
|
|
34
36
|
*/
|
|
35
37
|
export declare function requestLogger(options?: RequestLoggerOptions): FetchMiddleware;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-use",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.8.0",
|
|
4
|
+
"version": "2.8.1-canary.0",
|
|
5
5
|
"description": "MCP framework and CLI built on the official v2 SDK",
|
|
6
6
|
"author": "mcp-use, Inc.",
|
|
7
7
|
"license": "MIT",
|
|
@@ -132,8 +132,8 @@
|
|
|
132
132
|
"@modelcontextprotocol/server": "2.3.1",
|
|
133
133
|
"hono": "^4.13.7",
|
|
134
134
|
"jose": "^6.1.3",
|
|
135
|
-
"@mcp-use/cli": "4.3.0",
|
|
136
|
-
"@mcp-use/inspector": "20.3.
|
|
135
|
+
"@mcp-use/cli": "4.3.1-canary.0",
|
|
136
|
+
"@mcp-use/inspector": "20.3.17-canary.0"
|
|
137
137
|
},
|
|
138
138
|
"peerDependencies": {
|
|
139
139
|
"@mcp-use/client": "^2.0.1 || ^2.1.0 || ^2.1.1 || ^2.1.2 || ^2.1.3 || ^2.1.4 || ^2.1.5 || ^2.2.0 || ^2.2.1 || ^2.2.2 || ^2.2.3 || ^2.2.4 || ^2.2.5 || ^2.3.0 || ^2.3.1 || ^2.3.2 || ^2.3.3 || ^2.3.4 || ^2.3.5 || ^2.4.0 || ^2.4.1",
|