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