@frontmcp/skills 1.0.0-beta.9 → 1.0.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.
Files changed (284) hide show
  1. package/README.md +2 -2
  2. package/catalog/TEMPLATE.md +69 -0
  3. package/catalog/frontmcp-config/SKILL.md +38 -22
  4. package/catalog/frontmcp-config/examples/configure-auth/multi-app-auth.md +87 -0
  5. package/catalog/frontmcp-config/examples/configure-auth/public-mode-setup.md +63 -0
  6. package/catalog/frontmcp-config/examples/configure-auth/remote-oauth-with-vault.md +76 -0
  7. package/catalog/frontmcp-config/examples/configure-auth-modes/local-self-signed-tokens.md +77 -0
  8. package/catalog/frontmcp-config/examples/configure-auth-modes/remote-enterprise-oauth.md +73 -0
  9. package/catalog/frontmcp-config/examples/configure-auth-modes/transparent-jwt-validation.md +64 -0
  10. package/catalog/frontmcp-config/examples/configure-elicitation/basic-confirmation-gate.md +83 -0
  11. package/catalog/frontmcp-config/examples/configure-elicitation/distributed-elicitation-redis.md +87 -0
  12. package/catalog/frontmcp-config/examples/configure-http/cors-restricted-origins.md +52 -0
  13. package/catalog/frontmcp-config/examples/configure-http/entry-path-reverse-proxy.md +72 -0
  14. package/catalog/frontmcp-config/examples/configure-http/unix-socket-local.md +64 -0
  15. package/catalog/frontmcp-config/examples/configure-session/multi-server-key-prefix.md +68 -0
  16. package/catalog/frontmcp-config/examples/configure-session/redis-session-store.md +52 -0
  17. package/catalog/frontmcp-config/examples/configure-session/vercel-kv-session.md +52 -0
  18. package/catalog/frontmcp-config/examples/configure-throttle/distributed-redis-throttle.md +94 -0
  19. package/catalog/frontmcp-config/examples/configure-throttle/per-tool-rate-limit.md +92 -0
  20. package/catalog/frontmcp-config/examples/configure-throttle/server-level-rate-limit.md +83 -0
  21. package/catalog/frontmcp-config/examples/configure-throttle-guard-config/full-guard-config.md +99 -0
  22. package/catalog/frontmcp-config/examples/configure-throttle-guard-config/minimal-guard-config.md +55 -0
  23. package/catalog/frontmcp-config/examples/configure-transport/custom-protocol-flags.md +74 -0
  24. package/catalog/frontmcp-config/examples/configure-transport/distributed-sessions-redis.md +86 -0
  25. package/catalog/frontmcp-config/examples/configure-transport/stateless-serverless.md +69 -0
  26. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/legacy-preset-nodejs.md +65 -0
  27. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/stateless-api-serverless.md +69 -0
  28. package/catalog/frontmcp-config/references/configure-auth-modes.md +15 -0
  29. package/catalog/frontmcp-config/references/configure-auth.md +15 -0
  30. package/catalog/frontmcp-config/references/configure-elicitation.md +14 -0
  31. package/catalog/frontmcp-config/references/configure-http.md +15 -0
  32. package/catalog/frontmcp-config/references/configure-session.md +15 -0
  33. package/catalog/frontmcp-config/references/configure-throttle-guard-config.md +14 -0
  34. package/catalog/frontmcp-config/references/configure-throttle.md +15 -0
  35. package/catalog/frontmcp-config/references/configure-transport-protocol-presets.md +14 -0
  36. package/catalog/frontmcp-config/references/configure-transport.md +15 -0
  37. package/catalog/frontmcp-config/references/setup-redis.md +10 -0
  38. package/catalog/frontmcp-config/references/setup-sqlite.md +10 -0
  39. package/catalog/frontmcp-deployment/SKILL.md +40 -12
  40. package/catalog/frontmcp-deployment/examples/build-for-browser/browser-build-with-custom-entry.md +43 -0
  41. package/catalog/frontmcp-deployment/examples/build-for-browser/browser-crypto-and-storage.md +85 -0
  42. package/catalog/frontmcp-deployment/examples/build-for-browser/react-provider-setup.md +61 -0
  43. package/catalog/frontmcp-deployment/examples/build-for-cli/cli-binary-build.md +66 -0
  44. package/catalog/frontmcp-deployment/examples/build-for-cli/unix-socket-daemon.md +76 -0
  45. package/catalog/frontmcp-deployment/examples/build-for-sdk/connect-openai.md +78 -0
  46. package/catalog/frontmcp-deployment/examples/build-for-sdk/create-flat-config.md +85 -0
  47. package/catalog/frontmcp-deployment/examples/build-for-sdk/multi-platform-connect.md +104 -0
  48. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/basic-worker-deploy.md +82 -0
  49. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-custom-domain.md +97 -0
  50. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-with-kv-storage.md +92 -0
  51. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/cdk-deployment.md +92 -0
  52. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/lambda-handler-with-cors.md +113 -0
  53. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/sam-template-basic.md +100 -0
  54. package/catalog/frontmcp-deployment/examples/deploy-to-node/docker-compose-with-redis.md +101 -0
  55. package/catalog/frontmcp-deployment/examples/deploy-to-node/pm2-with-nginx.md +79 -0
  56. package/catalog/frontmcp-deployment/examples/deploy-to-node/resource-limits.md +92 -0
  57. package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/basic-multistage-dockerfile.md +63 -0
  58. package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/secure-nonroot-dockerfile.md +89 -0
  59. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-mcp-endpoint-test.md +69 -0
  60. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-kv.md +82 -0
  61. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-skills-cache.md +90 -0
  62. package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/minimal-vercel-config.md +49 -0
  63. package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/vercel-config-with-security-headers.md +92 -0
  64. package/catalog/frontmcp-deployment/references/build-for-browser.md +15 -0
  65. package/catalog/frontmcp-deployment/references/build-for-cli.md +65 -3
  66. package/catalog/frontmcp-deployment/references/build-for-sdk.md +15 -0
  67. package/catalog/frontmcp-deployment/references/deploy-to-cloudflare.md +15 -0
  68. package/catalog/frontmcp-deployment/references/deploy-to-lambda.md +18 -3
  69. package/catalog/frontmcp-deployment/references/deploy-to-node-dockerfile.md +16 -2
  70. package/catalog/frontmcp-deployment/references/deploy-to-node.md +19 -4
  71. package/catalog/frontmcp-deployment/references/deploy-to-vercel-config.md +14 -0
  72. package/catalog/frontmcp-deployment/references/deploy-to-vercel.md +15 -0
  73. package/catalog/frontmcp-development/SKILL.md +25 -17
  74. package/catalog/frontmcp-development/examples/create-adapter/basic-api-adapter.md +92 -0
  75. package/catalog/frontmcp-development/examples/create-adapter/namespaced-adapter.md +124 -0
  76. package/catalog/frontmcp-development/examples/create-agent/basic-agent-with-tools.md +121 -0
  77. package/catalog/frontmcp-development/examples/create-agent/custom-multi-pass-agent.md +95 -0
  78. package/catalog/frontmcp-development/examples/create-agent/nested-agents-with-swarm.md +111 -0
  79. package/catalog/frontmcp-development/examples/create-agent-llm-config/anthropic-config.md +81 -0
  80. package/catalog/frontmcp-development/examples/create-agent-llm-config/openai-config.md +80 -0
  81. package/catalog/frontmcp-development/examples/create-job/basic-report-job.md +87 -0
  82. package/catalog/frontmcp-development/examples/create-job/job-with-permissions.md +117 -0
  83. package/catalog/frontmcp-development/examples/create-job/job-with-retry.md +88 -0
  84. package/catalog/frontmcp-development/examples/create-plugin/basic-plugin-with-provider.md +69 -0
  85. package/catalog/frontmcp-development/examples/create-plugin/configurable-dynamic-plugin.md +178 -0
  86. package/catalog/frontmcp-development/examples/create-plugin/plugin-with-context-extension.md +107 -0
  87. package/catalog/frontmcp-development/examples/create-plugin-hooks/basic-logging-plugin.md +69 -0
  88. package/catalog/frontmcp-development/examples/create-plugin-hooks/caching-with-around.md +80 -0
  89. package/catalog/frontmcp-development/examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md +100 -0
  90. package/catalog/frontmcp-development/examples/create-prompt/basic-prompt.md +72 -0
  91. package/catalog/frontmcp-development/examples/create-prompt/dynamic-rag-prompt.md +92 -0
  92. package/catalog/frontmcp-development/examples/create-prompt/multi-turn-debug-session.md +86 -0
  93. package/catalog/frontmcp-development/examples/create-provider/basic-database-provider.md +113 -0
  94. package/catalog/frontmcp-development/examples/create-provider/config-and-api-providers.md +107 -0
  95. package/catalog/frontmcp-development/examples/create-resource/basic-static-resource.md +72 -0
  96. package/catalog/frontmcp-development/examples/create-resource/binary-and-multi-content.md +111 -0
  97. package/catalog/frontmcp-development/examples/create-resource/parameterized-template.md +84 -0
  98. package/catalog/frontmcp-development/examples/create-skill/basic-inline-skill.md +96 -0
  99. package/catalog/frontmcp-development/examples/create-skill/directory-based-skill.md +115 -0
  100. package/catalog/frontmcp-development/examples/create-skill/parameterized-skill.md +96 -0
  101. package/catalog/frontmcp-development/examples/create-skill-with-tools/basic-tool-orchestration.md +76 -0
  102. package/catalog/frontmcp-development/examples/create-skill-with-tools/directory-skill-with-tools.md +149 -0
  103. package/catalog/frontmcp-development/examples/create-skill-with-tools/incident-response-skill.md +92 -0
  104. package/catalog/frontmcp-development/examples/create-tool/basic-class-tool.md +62 -0
  105. package/catalog/frontmcp-development/examples/create-tool/tool-with-di-and-errors.md +84 -0
  106. package/catalog/frontmcp-development/examples/create-tool/tool-with-rate-limiting-and-progress.md +93 -0
  107. package/catalog/frontmcp-development/examples/create-tool-annotations/destructive-delete-tool.md +94 -0
  108. package/catalog/frontmcp-development/examples/create-tool-annotations/readonly-query-tool.md +60 -0
  109. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/primitive-and-media-outputs.md +104 -0
  110. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-raw-shape-output.md +63 -0
  111. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-schema-advanced-output.md +103 -0
  112. package/catalog/frontmcp-development/examples/create-workflow/basic-deploy-pipeline.md +91 -0
  113. package/catalog/frontmcp-development/examples/create-workflow/parallel-validation-pipeline.md +90 -0
  114. package/catalog/frontmcp-development/examples/create-workflow/webhook-triggered-workflow.md +136 -0
  115. package/catalog/frontmcp-development/examples/decorators-guide/agent-skill-job-workflow.md +145 -0
  116. package/catalog/frontmcp-development/examples/decorators-guide/basic-server-with-app-and-tools.md +124 -0
  117. package/catalog/frontmcp-development/examples/decorators-guide/multi-app-with-plugins-and-providers.md +149 -0
  118. package/catalog/frontmcp-development/examples/official-adapters/authenticated-adapter-with-polling.md +84 -0
  119. package/catalog/frontmcp-development/examples/official-adapters/basic-openapi-adapter.md +54 -0
  120. package/catalog/frontmcp-development/examples/official-adapters/multi-api-hub-with-inline-spec.md +130 -0
  121. package/catalog/frontmcp-development/examples/official-plugins/cache-and-feature-flags.md +117 -0
  122. package/catalog/frontmcp-development/examples/official-plugins/production-multi-plugin-setup.md +147 -0
  123. package/catalog/frontmcp-development/examples/official-plugins/remember-plugin-session-memory.md +104 -0
  124. package/catalog/frontmcp-development/references/create-adapter.md +14 -0
  125. package/catalog/frontmcp-development/references/create-agent-llm-config.md +14 -0
  126. package/catalog/frontmcp-development/references/create-agent.md +15 -0
  127. package/catalog/frontmcp-development/references/create-job.md +15 -0
  128. package/catalog/frontmcp-development/references/create-plugin-hooks.md +51 -0
  129. package/catalog/frontmcp-development/references/create-plugin.md +186 -11
  130. package/catalog/frontmcp-development/references/create-prompt.md +17 -0
  131. package/catalog/frontmcp-development/references/create-provider.md +14 -0
  132. package/catalog/frontmcp-development/references/create-resource.md +127 -0
  133. package/catalog/frontmcp-development/references/create-skill-with-tools.md +126 -7
  134. package/catalog/frontmcp-development/references/create-skill.md +57 -12
  135. package/catalog/frontmcp-development/references/create-tool-annotations.md +14 -0
  136. package/catalog/frontmcp-development/references/create-tool-output-schema-types.md +15 -0
  137. package/catalog/frontmcp-development/references/create-tool.md +205 -1
  138. package/catalog/frontmcp-development/references/create-workflow.md +15 -0
  139. package/catalog/frontmcp-development/references/decorators-guide.md +155 -78
  140. package/catalog/frontmcp-development/references/official-adapters.md +31 -16
  141. package/catalog/frontmcp-development/references/official-plugins.md +62 -28
  142. package/catalog/frontmcp-extensibility/SKILL.md +103 -0
  143. package/catalog/frontmcp-extensibility/examples/vectoriadb/product-catalog-search.md +175 -0
  144. package/catalog/frontmcp-extensibility/examples/vectoriadb/semantic-search-with-persistence.md +138 -0
  145. package/catalog/frontmcp-extensibility/examples/vectoriadb/tfidf-keyword-search.md +103 -0
  146. package/catalog/frontmcp-extensibility/references/vectoriadb.md +299 -0
  147. package/catalog/frontmcp-guides/SKILL.md +7 -4
  148. package/catalog/frontmcp-guides/examples/example-knowledge-base/agent-and-plugin.md +160 -0
  149. package/catalog/frontmcp-guides/examples/example-knowledge-base/multi-app-composition.md +92 -0
  150. package/catalog/frontmcp-guides/examples/example-knowledge-base/vector-search-and-resources.md +135 -0
  151. package/catalog/frontmcp-guides/examples/example-task-manager/auth-and-crud-tools.md +135 -0
  152. package/catalog/frontmcp-guides/examples/example-task-manager/authenticated-e2e-tests.md +148 -0
  153. package/catalog/frontmcp-guides/examples/example-task-manager/redis-provider-with-di.md +129 -0
  154. package/catalog/frontmcp-guides/examples/example-weather-api/server-and-app-setup.md +75 -0
  155. package/catalog/frontmcp-guides/examples/example-weather-api/unit-and-e2e-tests.md +142 -0
  156. package/catalog/frontmcp-guides/examples/example-weather-api/weather-tool-with-schemas.md +74 -0
  157. package/catalog/frontmcp-guides/references/example-knowledge-base.md +15 -0
  158. package/catalog/frontmcp-guides/references/example-task-manager.md +30 -21
  159. package/catalog/frontmcp-guides/references/example-weather-api.md +18 -6
  160. package/catalog/frontmcp-observability/SKILL.md +144 -0
  161. package/catalog/frontmcp-observability/examples/structured-logging/stdout-logging.md +71 -0
  162. package/catalog/frontmcp-observability/examples/structured-logging/winston-integration.md +70 -0
  163. package/catalog/frontmcp-observability/examples/telemetry-api/agent-nested-tracing.md +86 -0
  164. package/catalog/frontmcp-observability/examples/telemetry-api/plugin-telemetry.md +93 -0
  165. package/catalog/frontmcp-observability/examples/telemetry-api/tool-custom-spans.md +72 -0
  166. package/catalog/frontmcp-observability/examples/testing-observability/test-custom-spans.md +90 -0
  167. package/catalog/frontmcp-observability/examples/testing-observability/test-log-correlation.md +104 -0
  168. package/catalog/frontmcp-observability/examples/tracing-setup/basic-tracing.md +82 -0
  169. package/catalog/frontmcp-observability/examples/tracing-setup/production-tracing.md +73 -0
  170. package/catalog/frontmcp-observability/examples/vendor-integrations/coralogix-setup.md +74 -0
  171. package/catalog/frontmcp-observability/references/structured-logging.md +114 -0
  172. package/catalog/frontmcp-observability/references/telemetry-api.md +155 -0
  173. package/catalog/frontmcp-observability/references/testing-observability.md +169 -0
  174. package/catalog/frontmcp-observability/references/tracing-setup.md +146 -0
  175. package/catalog/frontmcp-observability/references/vendor-integrations.md +164 -0
  176. package/catalog/frontmcp-production-readiness/SKILL.md +99 -0
  177. package/catalog/frontmcp-production-readiness/examples/common-checklist/caching-and-performance.md +102 -0
  178. package/catalog/frontmcp-production-readiness/examples/common-checklist/observability-setup.md +104 -0
  179. package/catalog/frontmcp-production-readiness/examples/common-checklist/security-hardening.md +95 -0
  180. package/catalog/frontmcp-production-readiness/examples/health-readiness-endpoints/basic-health-setup.md +81 -0
  181. package/catalog/frontmcp-production-readiness/examples/health-readiness-endpoints/custom-probes.md +136 -0
  182. package/catalog/frontmcp-production-readiness/examples/production-browser/browser-bundle-config.md +93 -0
  183. package/catalog/frontmcp-production-readiness/examples/production-browser/cross-platform-crypto.md +116 -0
  184. package/catalog/frontmcp-production-readiness/examples/production-browser/security-and-performance.md +128 -0
  185. package/catalog/frontmcp-production-readiness/examples/production-cli-binary/binary-build-config.md +109 -0
  186. package/catalog/frontmcp-production-readiness/examples/production-cli-binary/stdio-transport-error-handling.md +132 -0
  187. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/daemon-socket-config.md +82 -0
  188. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/graceful-shutdown-cleanup.md +107 -0
  189. package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/security-and-permissions.md +119 -0
  190. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/durable-objects-state.md +124 -0
  191. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/workers-runtime-constraints.md +103 -0
  192. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/wrangler-config.md +89 -0
  193. package/catalog/frontmcp-production-readiness/examples/production-lambda/cold-start-connection-reuse.md +122 -0
  194. package/catalog/frontmcp-production-readiness/examples/production-lambda/sam-template.md +107 -0
  195. package/catalog/frontmcp-production-readiness/examples/production-lambda/scaling-and-monitoring.md +138 -0
  196. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/basic-sdk-lifecycle.md +85 -0
  197. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/multi-instance-cleanup.md +110 -0
  198. package/catalog/frontmcp-production-readiness/examples/production-node-sdk/package-json-config.md +107 -0
  199. package/catalog/frontmcp-production-readiness/examples/production-node-server/docker-multi-stage.md +103 -0
  200. package/catalog/frontmcp-production-readiness/examples/production-node-server/graceful-shutdown.md +87 -0
  201. package/catalog/frontmcp-production-readiness/examples/production-node-server/redis-session-scaling.md +97 -0
  202. package/catalog/frontmcp-production-readiness/examples/production-vercel/cold-start-optimization.md +104 -0
  203. package/catalog/frontmcp-production-readiness/examples/production-vercel/stateless-serverless-design.md +91 -0
  204. package/catalog/frontmcp-production-readiness/examples/production-vercel/vercel-edge-config.md +78 -0
  205. package/catalog/frontmcp-production-readiness/references/common-checklist.md +175 -0
  206. package/catalog/frontmcp-production-readiness/references/health-readiness-endpoints.md +198 -0
  207. package/catalog/frontmcp-production-readiness/references/production-browser.md +56 -0
  208. package/catalog/frontmcp-production-readiness/references/production-cli-binary.md +71 -0
  209. package/catalog/frontmcp-production-readiness/references/production-cli-daemon.md +71 -0
  210. package/catalog/frontmcp-production-readiness/references/production-cloudflare.md +62 -0
  211. package/catalog/frontmcp-production-readiness/references/production-lambda.md +63 -0
  212. package/catalog/frontmcp-production-readiness/references/production-node-sdk.md +76 -0
  213. package/catalog/frontmcp-production-readiness/references/production-node-server.md +71 -0
  214. package/catalog/frontmcp-production-readiness/references/production-vercel.md +62 -0
  215. package/catalog/frontmcp-setup/SKILL.md +19 -14
  216. package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/bundle-presets-scaffolding.md +61 -0
  217. package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/install-and-search-skills.md +83 -0
  218. package/catalog/frontmcp-setup/examples/multi-app-composition/local-apps-with-shared-tools.md +87 -0
  219. package/catalog/frontmcp-setup/examples/multi-app-composition/per-app-auth-and-isolation.md +88 -0
  220. package/catalog/frontmcp-setup/examples/multi-app-composition/remote-and-esm-apps.md +81 -0
  221. package/catalog/frontmcp-setup/examples/nx-workflow/build-test-affected.md +77 -0
  222. package/catalog/frontmcp-setup/examples/nx-workflow/multi-server-deployment.md +93 -0
  223. package/catalog/frontmcp-setup/examples/nx-workflow/scaffold-and-generate.md +62 -0
  224. package/catalog/frontmcp-setup/examples/project-structure-nx/nx-generator-scaffolding.md +73 -0
  225. package/catalog/frontmcp-setup/examples/project-structure-nx/nx-workspace-with-apps.md +85 -0
  226. package/catalog/frontmcp-setup/examples/project-structure-nx/shared-library-usage.md +89 -0
  227. package/catalog/frontmcp-setup/examples/project-structure-standalone/dev-workflow-commands.md +64 -0
  228. package/catalog/frontmcp-setup/examples/project-structure-standalone/feature-folder-organization.md +111 -0
  229. package/catalog/frontmcp-setup/examples/project-structure-standalone/minimal-standalone-layout.md +73 -0
  230. package/catalog/frontmcp-setup/examples/readme-guide/node-server-readme.md +89 -0
  231. package/catalog/frontmcp-setup/examples/readme-guide/vercel-deployment-readme.md +90 -0
  232. package/catalog/frontmcp-setup/examples/setup-project/basic-node-server.md +99 -0
  233. package/catalog/frontmcp-setup/examples/setup-project/cli-scaffold-with-flags.md +77 -0
  234. package/catalog/frontmcp-setup/examples/setup-project/vercel-serverless-server.md +89 -0
  235. package/catalog/frontmcp-setup/examples/setup-redis/docker-redis-local-dev.md +88 -0
  236. package/catalog/frontmcp-setup/examples/setup-redis/hybrid-vercel-kv-with-pubsub.md +78 -0
  237. package/catalog/frontmcp-setup/examples/setup-redis/vercel-kv-serverless.md +78 -0
  238. package/catalog/frontmcp-setup/examples/setup-sqlite/basic-sqlite-setup.md +75 -0
  239. package/catalog/frontmcp-setup/examples/setup-sqlite/encrypted-sqlite-storage.md +55 -0
  240. package/catalog/frontmcp-setup/examples/setup-sqlite/unix-socket-daemon.md +70 -0
  241. package/catalog/frontmcp-setup/references/frontmcp-skills-usage.md +33 -9
  242. package/catalog/frontmcp-setup/references/multi-app-composition.md +15 -0
  243. package/catalog/frontmcp-setup/references/nx-workflow.md +15 -0
  244. package/catalog/frontmcp-setup/references/project-structure-nx.md +15 -0
  245. package/catalog/frontmcp-setup/references/project-structure-standalone.md +15 -0
  246. package/catalog/frontmcp-setup/references/readme-guide.md +235 -0
  247. package/catalog/frontmcp-setup/references/setup-project.md +16 -1
  248. package/catalog/frontmcp-setup/references/setup-redis.md +15 -0
  249. package/catalog/frontmcp-setup/references/setup-sqlite.md +15 -0
  250. package/catalog/frontmcp-testing/SKILL.md +41 -27
  251. package/catalog/frontmcp-testing/examples/setup-testing/fixture-based-e2e-test.md +70 -0
  252. package/catalog/frontmcp-testing/examples/setup-testing/jest-config-with-coverage.md +59 -0
  253. package/catalog/frontmcp-testing/examples/setup-testing/unit-test-tool-resource-prompt.md +115 -0
  254. package/catalog/frontmcp-testing/examples/test-auth/oauth-flow-test.md +78 -0
  255. package/catalog/frontmcp-testing/examples/test-auth/role-based-access-test.md +88 -0
  256. package/catalog/frontmcp-testing/examples/test-auth/token-factory-test.md +71 -0
  257. package/catalog/frontmcp-testing/examples/test-browser-build/browser-bundle-validation.md +58 -0
  258. package/catalog/frontmcp-testing/examples/test-browser-build/playwright-browser-test.md +69 -0
  259. package/catalog/frontmcp-testing/examples/test-cli-binary/binary-startup-test.md +77 -0
  260. package/catalog/frontmcp-testing/examples/test-cli-binary/js-bundle-import-test.md +56 -0
  261. package/catalog/frontmcp-testing/examples/test-direct-client/basic-create-test.md +74 -0
  262. package/catalog/frontmcp-testing/examples/test-direct-client/openai-claude-format-test.md +79 -0
  263. package/catalog/frontmcp-testing/examples/test-e2e-handler/basic-e2e-test.md +67 -0
  264. package/catalog/frontmcp-testing/examples/test-e2e-handler/manual-client-with-transport.md +72 -0
  265. package/catalog/frontmcp-testing/examples/test-e2e-handler/tool-call-and-error-e2e.md +73 -0
  266. package/catalog/frontmcp-testing/examples/test-tool-unit/basic-tool-test.md +69 -0
  267. package/catalog/frontmcp-testing/examples/test-tool-unit/schema-validation-test.md +82 -0
  268. package/catalog/frontmcp-testing/examples/test-tool-unit/tool-error-handling-test.md +92 -0
  269. package/catalog/frontmcp-testing/references/setup-testing.md +17 -0
  270. package/catalog/frontmcp-testing/references/test-auth.md +15 -0
  271. package/catalog/frontmcp-testing/references/test-browser-build.md +14 -0
  272. package/catalog/frontmcp-testing/references/test-cli-binary.md +14 -0
  273. package/catalog/frontmcp-testing/references/test-direct-client.md +14 -0
  274. package/catalog/frontmcp-testing/references/test-e2e-handler.md +15 -0
  275. package/catalog/frontmcp-testing/references/test-tool-unit.md +15 -0
  276. package/catalog/skills-manifest.json +2849 -32
  277. package/package.json +2 -2
  278. package/src/index.d.ts +1 -1
  279. package/src/index.js.map +1 -1
  280. package/src/loader.js +0 -1
  281. package/src/loader.js.map +1 -1
  282. package/src/manifest.d.ts +36 -1
  283. package/src/manifest.js +6 -1
  284. package/src/manifest.js.map +1 -1
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: per-tool-rate-limit
3
+ reference: configure-throttle
4
+ level: intermediate
5
+ description: 'Override server defaults with per-tool rate limits and concurrency caps.'
6
+ tags: [config, session, throttle, per, tool, rate]
7
+ features:
8
+ - 'Setting per-tool `rateLimit`, `concurrency`, and `timeout` on the `@Tool` decorator'
9
+ - "Using `partitionBy: 'session'` for per-user fairness on expensive tools"
10
+ - 'Setting `queueTimeoutMs` to briefly queue excess requests instead of rejecting immediately'
11
+ - 'Tools without overrides (`QuickLookupTool`) inherit server defaults'
12
+ ---
13
+
14
+ # Per-Tool Rate Limiting
15
+
16
+ Override server defaults with per-tool rate limits and concurrency caps.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/server.ts
22
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
23
+ import { z } from 'zod';
24
+
25
+ @Tool({
26
+ name: 'expensive_query',
27
+ description: 'Run an expensive database query',
28
+ inputSchema: { query: z.string() },
29
+ outputSchema: { rows: z.array(z.record(z.unknown())), rowCount: z.number() },
30
+ rateLimit: {
31
+ maxRequests: 10,
32
+ windowMs: 60000,
33
+ partitionBy: 'session', // per-session rate limit
34
+ },
35
+ concurrency: {
36
+ maxConcurrent: 3,
37
+ queueTimeoutMs: 5000, // wait up to 5s for a slot
38
+ partitionBy: 'session',
39
+ },
40
+ timeout: {
41
+ executeMs: 60000, // 60 second timeout for this tool
42
+ },
43
+ })
44
+ class ExpensiveQueryTool extends ToolContext {
45
+ async execute(input: { query: string }) {
46
+ return { rows: [{ id: 1 }], rowCount: 1 };
47
+ }
48
+ }
49
+
50
+ @Tool({
51
+ name: 'quick_lookup',
52
+ description: 'Fast key-value lookup',
53
+ inputSchema: { key: z.string() },
54
+ outputSchema: { value: z.string().nullable() },
55
+ // No overrides -- uses server defaults
56
+ })
57
+ class QuickLookupTool extends ToolContext {
58
+ async execute(input: { key: string }) {
59
+ return { value: 'cached-value' };
60
+ }
61
+ }
62
+
63
+ @App({
64
+ name: 'data-api',
65
+ tools: [ExpensiveQueryTool, QuickLookupTool],
66
+ })
67
+ class DataApp {}
68
+
69
+ @FrontMcp({
70
+ info: { name: 'data-server', version: '1.0.0' },
71
+ apps: [DataApp],
72
+ throttle: {
73
+ enabled: true,
74
+ defaultRateLimit: { maxRequests: 100, windowMs: 60000 },
75
+ defaultConcurrency: { maxConcurrent: 10 },
76
+ defaultTimeout: { executeMs: 30000 },
77
+ },
78
+ })
79
+ class Server {}
80
+ ```
81
+
82
+ ## What This Demonstrates
83
+
84
+ - Setting per-tool `rateLimit`, `concurrency`, and `timeout` on the `@Tool` decorator
85
+ - Using `partitionBy: 'session'` for per-user fairness on expensive tools
86
+ - Setting `queueTimeoutMs` to briefly queue excess requests instead of rejecting immediately
87
+ - Tools without overrides (`QuickLookupTool`) inherit server defaults
88
+
89
+ ## Related
90
+
91
+ - See `configure-throttle` for the full throttle configuration reference
92
+ - See `configure-throttle-guard-config` for the complete GuardConfig interface
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: server-level-rate-limit
3
+ reference: configure-throttle
4
+ level: basic
5
+ description: 'Configure global rate limits and IP filtering at the server level.'
6
+ tags: [config, throttle, level, rate, limit]
7
+ features:
8
+ - 'Enabling throttle with `throttle: { enabled: true }`'
9
+ - 'Setting `global` rate limit shared across all clients'
10
+ - 'Configuring `globalConcurrency` to cap simultaneous executions'
11
+ - 'Setting `defaultTimeout` to prevent runaway tool executions'
12
+ - 'Using `ipFilter` with deny-by-default posture and an explicit allow list'
13
+ ---
14
+
15
+ # Server-Level Rate Limiting
16
+
17
+ Configure global rate limits and IP filtering at the server level.
18
+
19
+ ## Code
20
+
21
+ ```typescript
22
+ // src/server.ts
23
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
24
+ import { z } from 'zod';
25
+
26
+ @Tool({
27
+ name: 'search',
28
+ description: 'Search records',
29
+ inputSchema: { query: z.string() },
30
+ outputSchema: { results: z.array(z.string()) },
31
+ })
32
+ class SearchTool extends ToolContext {
33
+ async execute(input: { query: string }) {
34
+ return { results: [`Result for: ${input.query}`] };
35
+ }
36
+ }
37
+
38
+ @App({
39
+ name: 'api',
40
+ tools: [SearchTool],
41
+ })
42
+ class ApiApp {}
43
+
44
+ @FrontMcp({
45
+ info: { name: 'throttled-server', version: '1.0.0' },
46
+ apps: [ApiApp],
47
+ throttle: {
48
+ enabled: true,
49
+ global: {
50
+ maxRequests: 1000,
51
+ windowMs: 60000, // 1 minute window
52
+ partitionBy: 'global',
53
+ },
54
+ globalConcurrency: {
55
+ maxConcurrent: 50,
56
+ partitionBy: 'global',
57
+ },
58
+ defaultTimeout: {
59
+ executeMs: 30000, // 30 second timeout
60
+ },
61
+ ipFilter: {
62
+ allowList: ['10.0.0.0/8'],
63
+ defaultAction: 'deny',
64
+ trustProxy: true,
65
+ trustedProxyDepth: 1,
66
+ },
67
+ },
68
+ })
69
+ class Server {}
70
+ ```
71
+
72
+ ## What This Demonstrates
73
+
74
+ - Enabling throttle with `throttle: { enabled: true }`
75
+ - Setting `global` rate limit shared across all clients
76
+ - Configuring `globalConcurrency` to cap simultaneous executions
77
+ - Setting `defaultTimeout` to prevent runaway tool executions
78
+ - Using `ipFilter` with deny-by-default posture and an explicit allow list
79
+
80
+ ## Related
81
+
82
+ - See `configure-throttle` for the full throttle configuration reference
83
+ - See `configure-throttle-guard-config` for the complete GuardConfig interface
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: full-guard-config
3
+ reference: configure-throttle-guard-config
4
+ level: advanced
5
+ description: 'Complete GuardConfig using every available field for maximum protection.'
6
+ tags: [config, redis, session, throttle, guard, full]
7
+ features:
8
+ - 'Every field in the `GuardConfig` interface used together'
9
+ - 'Priority order: IP filter -> global rate limit -> global concurrency -> per-tool limits'
10
+ - 'Redis `storage` for shared counters across instances'
11
+ - '`keyPrefix` to namespace guard keys in shared Redis'
12
+ - "Mixed `partitionBy` strategies: `'ip'` for global, `'session'` for per-tool"
13
+ - '`queueTimeoutMs` to briefly queue excess requests instead of rejecting'
14
+ ---
15
+
16
+ # Full GuardConfig with All Options
17
+
18
+ Complete GuardConfig using every available field for maximum protection.
19
+
20
+ ## Code
21
+
22
+ ```typescript
23
+ // src/server.ts
24
+ import { FrontMcp, App } from '@frontmcp/sdk';
25
+
26
+ @App({ name: 'secure-app' })
27
+ class SecureApp {}
28
+
29
+ @FrontMcp({
30
+ info: { name: 'fully-guarded-server', version: '1.0.0' },
31
+ apps: [SecureApp],
32
+ throttle: {
33
+ enabled: true,
34
+
35
+ // Distributed storage for multi-instance deployments
36
+ storage: {
37
+ type: 'redis',
38
+ redis: {
39
+ config: {
40
+ host: process.env['REDIS_HOST'] ?? 'redis.internal',
41
+ port: 6379,
42
+ },
43
+ },
44
+ },
45
+ keyPrefix: 'myapp:guard:',
46
+
47
+ // Server-wide limits
48
+ global: {
49
+ maxRequests: 1000,
50
+ windowMs: 60000,
51
+ partitionBy: 'ip', // per-client IP rate limit
52
+ },
53
+ globalConcurrency: {
54
+ maxConcurrent: 50,
55
+ queueTimeoutMs: 2000,
56
+ partitionBy: 'global',
57
+ },
58
+
59
+ // Default per-tool limits
60
+ defaultRateLimit: {
61
+ maxRequests: 100,
62
+ windowMs: 60000,
63
+ partitionBy: 'session',
64
+ },
65
+ defaultConcurrency: {
66
+ maxConcurrent: 10,
67
+ queueTimeoutMs: 5000,
68
+ partitionBy: 'session',
69
+ },
70
+ defaultTimeout: {
71
+ executeMs: 30000,
72
+ },
73
+
74
+ // IP-based access control
75
+ ipFilter: {
76
+ allowList: ['10.0.0.0/8', '172.16.0.0/12'],
77
+ denyList: ['192.168.1.100'],
78
+ defaultAction: 'deny',
79
+ trustProxy: true,
80
+ trustedProxyDepth: 2,
81
+ },
82
+ },
83
+ })
84
+ class Server {}
85
+ ```
86
+
87
+ ## What This Demonstrates
88
+
89
+ - Every field in the `GuardConfig` interface used together
90
+ - Priority order: IP filter -> global rate limit -> global concurrency -> per-tool limits
91
+ - Redis `storage` for shared counters across instances
92
+ - `keyPrefix` to namespace guard keys in shared Redis
93
+ - Mixed `partitionBy` strategies: `'ip'` for global, `'session'` for per-tool
94
+ - `queueTimeoutMs` to briefly queue excess requests instead of rejecting
95
+
96
+ ## Related
97
+
98
+ - See `configure-throttle-guard-config` for the complete interface reference
99
+ - See `configure-throttle` for practical throttle configuration patterns
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: minimal-guard-config
3
+ reference: configure-throttle-guard-config
4
+ level: basic
5
+ description: 'Enable throttle with just a global rate limit and default timeout.'
6
+ tags: [config, throttle, guard, minimal]
7
+ features:
8
+ - 'The minimum fields needed to enable the guard: `enabled`, `global`, and `defaultTimeout`'
9
+ - "`partitionBy: 'global'` shares one counter across all clients"
10
+ - '`windowMs` defaults to 60000 (1 minute) if omitted'
11
+ - 'Other fields (`globalConcurrency`, `ipFilter`, `storage`) are optional'
12
+ ---
13
+
14
+ # Minimal GuardConfig
15
+
16
+ Enable throttle with just a global rate limit and default timeout.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/server.ts
22
+ import { FrontMcp, App } from '@frontmcp/sdk';
23
+
24
+ @App({ name: 'my-app' })
25
+ class MyApp {}
26
+
27
+ @FrontMcp({
28
+ info: { name: 'guarded-server', version: '1.0.0' },
29
+ apps: [MyApp],
30
+ throttle: {
31
+ enabled: true,
32
+ global: {
33
+ maxRequests: 1000,
34
+ windowMs: 60000,
35
+ partitionBy: 'global',
36
+ },
37
+ defaultTimeout: {
38
+ executeMs: 30000,
39
+ },
40
+ },
41
+ })
42
+ class Server {}
43
+ ```
44
+
45
+ ## What This Demonstrates
46
+
47
+ - The minimum fields needed to enable the guard: `enabled`, `global`, and `defaultTimeout`
48
+ - `partitionBy: 'global'` shares one counter across all clients
49
+ - `windowMs` defaults to 60000 (1 minute) if omitted
50
+ - Other fields (`globalConcurrency`, `ipFilter`, `storage`) are optional
51
+
52
+ ## Related
53
+
54
+ - See `configure-throttle-guard-config` for the complete GuardConfig interface
55
+ - See `configure-throttle` for practical throttle configuration patterns
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: custom-protocol-flags
3
+ reference: configure-transport
4
+ level: advanced
5
+ description: 'Override individual protocol flags instead of using a preset for fine-grained control.'
6
+ tags: [config, redis, session, transport, custom, protocol]
7
+ features:
8
+ - 'Passing an object to `protocol` instead of a preset string for fine-grained control'
9
+ - 'Enabling SSE, streamable HTTP, and JSON-only modes simultaneously'
10
+ - 'Setting `strictSession: true` to require `mcp-session-id` header on streamable HTTP'
11
+ - "Using `distributedMode: 'auto'` to auto-detect based on whether Redis is configured"
12
+ - 'Disabling `legacy` SSE while keeping modern SSE support'
13
+ ---
14
+
15
+ # Custom Protocol Flags
16
+
17
+ Override individual protocol flags instead of using a preset for fine-grained control.
18
+
19
+ ## Code
20
+
21
+ ```typescript
22
+ // src/server.ts
23
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
24
+ import { z } from 'zod';
25
+
26
+ @Tool({
27
+ name: 'stream_logs',
28
+ description: 'Stream application logs',
29
+ inputSchema: { service: z.string(), lines: z.number().optional() },
30
+ outputSchema: { logs: z.array(z.string()) },
31
+ })
32
+ class StreamLogsTool extends ToolContext {
33
+ async execute(input: { service: string; lines?: number }) {
34
+ return { logs: ['[INFO] Service started', '[INFO] Healthy'] };
35
+ }
36
+ }
37
+
38
+ @App({
39
+ name: 'devtools',
40
+ tools: [StreamLogsTool],
41
+ })
42
+ class DevtoolsApp {}
43
+
44
+ @FrontMcp({
45
+ info: { name: 'custom-protocol-server', version: '1.0.0' },
46
+ apps: [DevtoolsApp],
47
+ transport: {
48
+ sessionMode: 'stateful',
49
+ protocol: {
50
+ sse: true, // SSE endpoint enabled
51
+ streamable: true, // Streamable HTTP POST enabled
52
+ json: true, // JSON-only responses also available
53
+ stateless: false, // Sessions required
54
+ legacy: false, // No legacy SSE
55
+ strictSession: true, // Require mcp-session-id header
56
+ },
57
+ distributedMode: 'auto', // auto-detect based on Redis config
58
+ },
59
+ })
60
+ class Server {}
61
+ ```
62
+
63
+ ## What This Demonstrates
64
+
65
+ - Passing an object to `protocol` instead of a preset string for fine-grained control
66
+ - Enabling SSE, streamable HTTP, and JSON-only modes simultaneously
67
+ - Setting `strictSession: true` to require `mcp-session-id` header on streamable HTTP
68
+ - Using `distributedMode: 'auto'` to auto-detect based on whether Redis is configured
69
+ - Disabling `legacy` SSE while keeping modern SSE support
70
+
71
+ ## Related
72
+
73
+ - See `configure-transport` for the full transport configuration reference
74
+ - See `configure-transport-protocol-presets` for the built-in preset definitions
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: distributed-sessions-redis
3
+ reference: configure-transport
4
+ level: intermediate
5
+ description: 'Configure transport with Redis persistence for multi-instance load-balanced deployments.'
6
+ tags: [config, redis, session, transport, distributed, sessions]
7
+ features:
8
+ - 'Using `distributedMode: true` for load-balanced multi-instance deployments'
9
+ - 'Redis `persistence` so sessions survive restarts and are shared across instances'
10
+ - 'Setting `defaultTtlMs` to prevent sessions from accumulating indefinitely'
11
+ - 'Redis-backed `eventStore` for SSE resumability across instances'
12
+ - "Using the `'modern'` preset (drops legacy SSE but keeps streamable HTTP)"
13
+ ---
14
+
15
+ # Distributed Sessions with Redis
16
+
17
+ Configure transport with Redis persistence for multi-instance load-balanced deployments.
18
+
19
+ ## Code
20
+
21
+ ```typescript
22
+ // src/server.ts
23
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
24
+ import { z } from 'zod';
25
+
26
+ @Tool({
27
+ name: 'get_report',
28
+ description: 'Generate a report',
29
+ inputSchema: { reportId: z.string() },
30
+ outputSchema: { data: z.string(), generatedAt: z.string() },
31
+ })
32
+ class GetReportTool extends ToolContext {
33
+ async execute(input: { reportId: string }) {
34
+ return { data: 'report-data', generatedAt: new Date().toISOString() };
35
+ }
36
+ }
37
+
38
+ @App({
39
+ name: 'reports',
40
+ tools: [GetReportTool],
41
+ })
42
+ class ReportsApp {}
43
+
44
+ @FrontMcp({
45
+ info: { name: 'distributed-server', version: '1.0.0' },
46
+ apps: [ReportsApp],
47
+ transport: {
48
+ sessionMode: 'stateful',
49
+ protocol: 'modern',
50
+ distributedMode: true,
51
+ persistence: {
52
+ redis: {
53
+ provider: 'redis',
54
+ host: process.env['REDIS_HOST'] ?? 'redis.internal',
55
+ port: 6379,
56
+ },
57
+ defaultTtlMs: 3_600_000, // 1 hour session TTL
58
+ },
59
+ eventStore: {
60
+ enabled: true,
61
+ provider: 'redis',
62
+ maxEvents: 10000,
63
+ ttlMs: 300_000, // 5 minute event TTL
64
+ redis: {
65
+ provider: 'redis',
66
+ host: process.env['REDIS_HOST'] ?? 'redis.internal',
67
+ },
68
+ },
69
+ },
70
+ })
71
+ class Server {}
72
+ ```
73
+
74
+ ## What This Demonstrates
75
+
76
+ - Using `distributedMode: true` for load-balanced multi-instance deployments
77
+ - Redis `persistence` so sessions survive restarts and are shared across instances
78
+ - Setting `defaultTtlMs` to prevent sessions from accumulating indefinitely
79
+ - Redis-backed `eventStore` for SSE resumability across instances
80
+ - Using the `'modern'` preset (drops legacy SSE but keeps streamable HTTP)
81
+
82
+ ## Related
83
+
84
+ - See `configure-transport` for the full transport configuration reference
85
+ - See `configure-session` for session storage options
86
+ - See `setup-redis` for Redis provisioning
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: stateless-serverless
3
+ reference: configure-transport
4
+ level: basic
5
+ description: 'Configure stateless transport for Vercel, Lambda, or Cloudflare deployments.'
6
+ tags: [config, vercel, lambda, cloudflare, session, transport]
7
+ features:
8
+ - "Using `sessionMode: 'stateless'` to disable session management"
9
+ - "Using the `'stateless-api'` preset: no SSE, no streaming, pure request/response"
10
+ - 'Each request is standalone with no server-side state between invocations'
11
+ - 'Required for serverless targets (Vercel, Lambda, Cloudflare Workers)'
12
+ ---
13
+
14
+ # Stateless Transport for Serverless
15
+
16
+ Configure stateless transport for Vercel, Lambda, or Cloudflare deployments.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/server.ts
22
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
23
+ import { z } from 'zod';
24
+
25
+ @Tool({
26
+ name: 'convert_currency',
27
+ description: 'Convert between currencies',
28
+ inputSchema: {
29
+ amount: z.number(),
30
+ from: z.string(),
31
+ to: z.string(),
32
+ },
33
+ outputSchema: { result: z.number(), rate: z.number() },
34
+ })
35
+ class ConvertCurrencyTool extends ToolContext {
36
+ async execute(input: { amount: number; from: string; to: string }) {
37
+ const rate = 1.1;
38
+ return { result: input.amount * rate, rate };
39
+ }
40
+ }
41
+
42
+ @App({
43
+ name: 'currency-api',
44
+ tools: [ConvertCurrencyTool],
45
+ })
46
+ class CurrencyApp {}
47
+
48
+ @FrontMcp({
49
+ info: { name: 'serverless-server', version: '1.0.0' },
50
+ apps: [CurrencyApp],
51
+ transport: {
52
+ sessionMode: 'stateless',
53
+ protocol: 'stateless-api',
54
+ },
55
+ })
56
+ class Server {}
57
+ ```
58
+
59
+ ## What This Demonstrates
60
+
61
+ - Using `sessionMode: 'stateless'` to disable session management
62
+ - Using the `'stateless-api'` preset: no SSE, no streaming, pure request/response
63
+ - Each request is standalone with no server-side state between invocations
64
+ - Required for serverless targets (Vercel, Lambda, Cloudflare Workers)
65
+
66
+ ## Related
67
+
68
+ - See `configure-transport` for the full transport configuration reference
69
+ - See `configure-transport-protocol-presets` for all preset options
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: legacy-preset-nodejs
3
+ reference: configure-transport-protocol-presets
4
+ level: basic
5
+ description: 'Use the default legacy preset for maximum compatibility with all MCP clients.'
6
+ tags: [config, anthropic, session, transport, node, protocol]
7
+ features:
8
+ - "The `'legacy'` preset is the default and can be omitted"
9
+ - 'Enables SSE, Streamable HTTP, and Legacy SSE for maximum client compatibility'
10
+ - '`strictSession: true` requires `mcp-session-id` header for streamable HTTP'
11
+ - 'Best for single-instance Node.js deployments (Claude Desktop, etc.)'
12
+ ---
13
+
14
+ # Legacy Preset for Node.js
15
+
16
+ Use the default legacy preset for maximum compatibility with all MCP clients.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/server.ts
22
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
23
+ import { z } from 'zod';
24
+
25
+ @Tool({
26
+ name: 'hello',
27
+ description: 'Say hello',
28
+ inputSchema: { name: z.string() },
29
+ outputSchema: { greeting: z.string() },
30
+ })
31
+ class HelloTool extends ToolContext {
32
+ async execute(input: { name: string }) {
33
+ return { greeting: `Hello, ${input.name}!` };
34
+ }
35
+ }
36
+
37
+ @App({
38
+ name: 'my-app',
39
+ tools: [HelloTool],
40
+ })
41
+ class MyApp {}
42
+
43
+ @FrontMcp({
44
+ info: { name: 'legacy-server', version: '1.0.0' },
45
+ apps: [MyApp],
46
+ transport: {
47
+ protocol: 'legacy', // default -- can be omitted
48
+ },
49
+ })
50
+ class Server {}
51
+ // Enables: SSE + Streamable HTTP + Legacy SSE
52
+ // Flags: { sse: true, streamable: true, json: false, stateless: false, legacy: true, strictSession: true }
53
+ ```
54
+
55
+ ## What This Demonstrates
56
+
57
+ - The `'legacy'` preset is the default and can be omitted
58
+ - Enables SSE, Streamable HTTP, and Legacy SSE for maximum client compatibility
59
+ - `strictSession: true` requires `mcp-session-id` header for streamable HTTP
60
+ - Best for single-instance Node.js deployments (Claude Desktop, etc.)
61
+
62
+ ## Related
63
+
64
+ - See `configure-transport-protocol-presets` for all preset definitions
65
+ - See `configure-transport` for full transport configuration
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: stateless-api-serverless
3
+ reference: configure-transport-protocol-presets
4
+ level: intermediate
5
+ description: 'Use the stateless-api preset for Vercel, Lambda, or Cloudflare Workers.'
6
+ tags: [config, vercel, lambda, cloudflare, session, transport]
7
+ features:
8
+ - "The `'stateless-api'` preset disables SSE, streaming, and sessions entirely"
9
+ - 'Each request is standalone with no server-side state'
10
+ - "Pair with `sessionMode: 'stateless'` for serverless execution"
11
+ - 'Required for Vercel, Lambda, Cloudflare Workers where persistent connections are not allowed'
12
+ ---
13
+
14
+ # Stateless API Preset for Serverless
15
+
16
+ Use the stateless-api preset for Vercel, Lambda, or Cloudflare Workers.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/server.ts
22
+ import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
23
+ import { z } from 'zod';
24
+
25
+ @Tool({
26
+ name: 'translate',
27
+ description: 'Translate text between languages',
28
+ inputSchema: {
29
+ text: z.string(),
30
+ targetLang: z.string(),
31
+ },
32
+ outputSchema: { translated: z.string() },
33
+ })
34
+ class TranslateTool extends ToolContext {
35
+ async execute(input: { text: string; targetLang: string }) {
36
+ return { translated: `[${input.targetLang}] ${input.text}` };
37
+ }
38
+ }
39
+
40
+ @App({
41
+ name: 'translate-api',
42
+ tools: [TranslateTool],
43
+ })
44
+ class TranslateApp {}
45
+
46
+ @FrontMcp({
47
+ info: { name: 'serverless-translate', version: '1.0.0' },
48
+ apps: [TranslateApp],
49
+ transport: {
50
+ sessionMode: 'stateless',
51
+ protocol: 'stateless-api',
52
+ },
53
+ })
54
+ class Server {}
55
+ // Enables: Stateless HTTP only
56
+ // Flags: { sse: false, streamable: false, json: false, stateless: true, legacy: false, strictSession: false }
57
+ ```
58
+
59
+ ## What This Demonstrates
60
+
61
+ - The `'stateless-api'` preset disables SSE, streaming, and sessions entirely
62
+ - Each request is standalone with no server-side state
63
+ - Pair with `sessionMode: 'stateless'` for serverless execution
64
+ - Required for Vercel, Lambda, Cloudflare Workers where persistent connections are not allowed
65
+
66
+ ## Related
67
+
68
+ - See `configure-transport-protocol-presets` for all preset definitions
69
+ - See `configure-transport` for full transport configuration