muppet
Version:
Toolkit for building MCPs on Honojs
2 lines (1 loc) • 1.76 kB
JavaScript
var l=Object.defineProperty;var n=(e,i)=>l(e,"name",{value:i,configurable:!0});var r=require("./muppet-CwyixR9m.cjs"),m=require("@hono/standard-validator"),g=require("@standard-community/standard-json"),y=require("@modelcontextprotocol/sdk/types.js");require("hono");function d(e){return i=>Object.assign(n(async(s,a)=>{await a()},"middleware"),{[r.uniqueSymbol]:{toJson:i??{},type:e}})}n(d,"describeRoute");const b=d(r.McpPrimitives.PROMPTS),S=d(r.McpPrimitives.TOOLS);function f(e){return Object.assign(e,{[r.uniqueSymbol]:{type:r.McpPrimitives.RESOURCES}})}n(f,"registerResources");function q(e,i,t){const s=m.sValidator(e,i,t);return Object.assign(s,{[r.uniqueSymbol]:{validationTarget:e,toJson:n(async()=>({schema:await g.toJsonSchema(i)}),"toJson")}})}n(q,"mValidator");function v(e){const{mcp:i,transport:t,logger:s}=e;let a=0;return t.onmessage=async o=>{const c=await u({mcp:await i,message:o,logger:s});"method"in o&&o.method==="initialize"&&(a=-1),c&&(a++,await t.send({...c,id:a}).then(()=>s?.info("Sent response")).catch(p=>s?.error(p,"Failed to send cancellation")))},t.start()}n(v,"bridge");async function u(e){const{mcp:i,message:t,logger:s}=e;s?.info({message:t,string:JSON.stringify(t)},"Received message");const a=y.RequestSchema.parse(t),o=await i.request(a.method,{method:"POST",body:JSON.stringify(t),headers:{"content-type":"application/json"}});if(o.status===204)return null;const c=await o.json();return c.jsonrpc="2.0",s?.info({payload:c},"Response payload"),c}n(u,"handleMessage"),exports.McpPrimitives=r.McpPrimitives,exports.muppet=r.muppet,exports.uniqueSymbol=r.uniqueSymbol,exports.bridge=v,exports.describePrompt=b,exports.describeTool=S,exports.handleMessage=u,exports.mValidator=q,exports.registerResources=f;
;