muppet
Version:
Toolkit for building MCPs on Honojs
2 lines (1 loc) • 1.42 kB
JavaScript
var v=Object.defineProperty;var c=(e,t)=>v(e,"name",{value:t,configurable:!0});import{g,a as S,c as q}from"./muppet-BdeHS-Ba.js";import{Hono as $}from"hono";import{proxy as j}from"hono/proxy";import"@hono/standard-validator";import"@modelcontextprotocol/sdk/types.js";function P(e){const t={name:e.info.title,version:e.info.version},i={};if(e.paths){for(const[n,f]of Object.entries(e.paths))if(f)for(const[m,o]of Object.entries(f)){const a={};if(typeof o=="object"&&"parameters"in o&&o.parameters){for(const r of o.parameters)if(!("$ref"in r)){if("schema"in r){if(!r.schema)continue;let d=r.schema;if("$ref"in r.schema){const u=r.schema.$ref.split("/").slice(1).join("."),l=y(e,u);l&&(d=l)}a[r.in]={type:"object",properties:{...a[r.in]?.properties??{},[r.name]:d},required:[...a[r.in]?.required||[],r.required?r.name:void 0].filter(Boolean),additionalProperties:!1}}}}const h=(typeof o=="object"&&"operationId"in o?o.operationId:void 0)??g(m,n);i[h]={name:h,description:typeof o=="object"&&"description"in o?o.description:void 0,path:n,method:m,inputSchema:S(a)??{},schema:a}}}const s=e.servers?.[0]?.url||"http://localhost:3000",p=new $().all("/:path",async n=>j(`${s}/${n.req.param("path")}`,n.req));return q({config:t,specs:{tools:i},app:p})}c(P,"fromOpenAPI");const y=c((e,t,i)=>{const s=Array.isArray(t)?t:t.split("."),p=s.shift();return e&&p?y(e[p],s,i):e===void 0?i:e},"getPropByPath");export{P as fromOpenAPI};