UNPKG

xmcp

Version:

The TypeScript MCP framework

1 lines • 6.19 kB
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("zod/v3"));else if("function"==typeof define&&define.amd)define(["zod/v3"],t);else{var o="object"==typeof exports?t(require("zod/v3")):t(e["zod/v3"]);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,e=>(()=>{"use strict";var t={4953(t){t.exports=e}},o={};function r(e){var n=o[e];if(void 0!==n)return n.exports;var s=o[e]={exports:{}};return t[e](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{getResolvedHttpConfig:()=>A,configSchema:()=>q,getResolvedStdioConfig:()=>R,getResolvedTypescriptConfig:()=>_,getResolvedCorsConfig:()=>E,getResolvedPathsConfig:()=>P,getResolvedExperimentalConfig:()=>M,getResolvedTemplateConfig:()=>k});var e=r(4953),t=r.n(e);let o=["x-mcp-client-name","x-mcp-client-version","x-mcp-client-title","x-mcp-client-website-url","x-mcp-client-description"],s={origin:"*",methods:["GET","POST"],allowedHeaders:["Content-Type","Authorization","mcp-session-id","mcp-protocol-version","mcp-method","mcp-name",...o],exposedHeaders:["Content-Type","Authorization","mcp-session-id"],credentials:!1,maxAge:86400},i=e.z.object({origin:e.z.union([e.z.string(),e.z.array(e.z.string()),e.z.boolean()]).default(s.origin),methods:e.z.union([e.z.string(),e.z.array(e.z.string())]).default([...s.methods]),allowedHeaders:e.z.union([e.z.string(),e.z.array(e.z.string())]).default([...s.allowedHeaders]),exposedHeaders:e.z.union([e.z.string(),e.z.array(e.z.string())]).default([...s.exposedHeaders]),credentials:e.z.boolean().default(s.credentials),maxAge:e.z.number().default(s.maxAge)}),l=i.parse({}),a=i.partial().transform(e=>{let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t)),r={...l,...t};if(Array.isArray(r.allowedHeaders)){let e=new Set(r.allowedHeaders);for(let t of(e.add("mcp-session-id"),e.add("mcp-protocol-version"),e.add("mcp-method"),e.add("mcp-name"),o))e.add(t);r.allowedHeaders=Array.from(e)}if(Array.isArray(r.exposedHeaders)){let e=new Set(r.exposedHeaders);e.add("mcp-session-id"),r.exposedHeaders=Array.from(e)}return r}),p=e.z.object({port:e.z.number().default(3001),host:e.z.string().default("127.0.0.1"),bodySizeLimit:e.z.number().default(0xa00000),debug:e.z.boolean().default(!1),endpoint:e.z.string().default("/mcp"),maxSubscriptions:e.z.number().int().min(0).optional(),cors:a}),u=p.partial().transform(e=>{let t=p.parse({cors:{}}),o=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t));return{...t,...o}}),d=e.z.union([e.z.boolean(),u]);d.transform(e=>"boolean"==typeof e?e?{}:null:e).pipe(e.z.union([e.z.literal(null),u]));let c=e.z.object({debug:e.z.boolean().default(!1),silent:e.z.boolean().default(!1)}),f=c.partial().transform(e=>{let t=c.parse({}),o=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t));return{...t,...o}}),m=e.z.union([e.z.boolean(),f]).optional(),z=e.z.enum(["express","nextjs","nestjs","fastify","tanstack","hono","sveltekit","nuxt","react-router","astro"]),b=e.z.object({adapter:z.optional(),inferToolSchemas:e.z.boolean().optional()}),g=e.z.object({tools:e.z.union([e.z.boolean(),e.z.string()]).default(!0),prompts:e.z.union([e.z.boolean(),e.z.string()]).default(!0),resources:e.z.union([e.z.boolean(),e.z.string()]).default(!0)}),y=g.partial().transform(e=>{let t=g.parse({}),o=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t));return{...t,...o}}),j="src/tools",v="src/prompts",x="src/resources",h=t().function().args(t().any()).returns(t().any()).optional(),O=e.z.object({name:e.z.string().default("xmcp server"),description:e.z.string().default("This MCP server was bootstrapped with xmcp."),icons:e.z.array(e.z.object({src:e.z.string(),mimeType:e.z.string().optional(),sizes:e.z.array(e.z.string()).optional(),theme:e.z.enum(["light","dark"]).optional()})).optional(),instructions:e.z.string().optional(),homePage:e.z.string().optional()}),H=O.partial().transform(e=>{let t=O.parse({}),o=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t));return{...t,...o}}),S=e.z.object({skipTypeCheck:e.z.boolean().default(!1)}),w=S.partial().transform(e=>{let t=S.parse({}),o=Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t));return{...t,...o}}),C=e.z.object({names:e.z.array(e.z.string().min(1)).optional(),tags:e.z.array(e.z.string().min(1)).optional()}).strict(),T=e.z.object({include:C.optional(),exclude:C.optional()}).strict();function A(e){if("boolean"==typeof e){if(!e)return null;let t=d.parse({});return"object"!=typeof t||null===t?null:t}if("object"==typeof e&&null!==e){let t=d.parse(e);return"object"!=typeof t||null===t?null:t}return null}function E(e){return a.parse(e?.cors??{})}function P(e){let t=e?.paths;if(!t)return{tools:j,prompts:v,resources:x};let o={tools:j,prompts:v,resources:x};return"boolean"==typeof t.tools?o.tools=t.tools?j:null:"string"==typeof t.tools&&(o.tools=t.tools),"boolean"==typeof t.prompts?o.prompts=t.prompts?v:null:"string"==typeof t.prompts&&(o.prompts=t.prompts),"boolean"==typeof t.resources?o.resources=t.resources?x:null:"string"==typeof t.resources&&(o.resources=t.resources),o}function R(e){let t=e?.stdio;if("boolean"==typeof t){if(!t)return null;let e=m.parse({});return"object"!=typeof e||null===e?null:e}if(t){let e=m.parse(t);return"object"!=typeof e||null===e?null:e}let o=m.parse({});return"object"!=typeof o||null===o?null:o}function k(e){let t=e?.template;return H.parse(t??{})}function M(e){let t=e?.experimental;return{adapter:t?.adapter}}function _(e){let t=e?.typescript;return w.parse(t??{})}let q=e.z.object({stdio:m.optional(),http:d.optional(),experimental:b.optional(),paths:y.optional(),bundler:h.optional(),template:H.optional(),typescript:w.optional(),observability:e.z.object({enabled:e.z.boolean()}).optional(),components:T.optional()})})(),n})());