@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,83 @@
1
+ ---
2
+ name: basic-confirmation-gate
3
+ reference: configure-elicitation
4
+ level: basic
5
+ description: 'Request user confirmation before executing a destructive action.'
6
+ tags: [config, elicitation, confirmation, gate]
7
+ features:
8
+ - 'Enabling elicitation with `elicitation: { enabled: true }` in the `@FrontMcp` decorator'
9
+ - 'Using `this.elicit()` to pause tool execution and request user confirmation'
10
+ - 'Handling the case where the client does not support elicitation (`!confirmation`)'
11
+ - 'Using a boolean `requestedSchema` for simple yes/no confirmations'
12
+ ---
13
+
14
+ # Basic Confirmation Gate
15
+
16
+ Request user confirmation before executing a destructive action.
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: 'delete_records',
27
+ description: 'Delete records from the database',
28
+ inputSchema: {
29
+ table: z.string(),
30
+ filter: z.string(),
31
+ },
32
+ outputSchema: { deleted: z.number() },
33
+ })
34
+ class DeleteRecordsTool extends ToolContext {
35
+ async execute(input: { table: string; filter: string }) {
36
+ const count = 42; // simulate counting matching records
37
+
38
+ const confirmation = await this.elicit({
39
+ message: `This will delete ${count} records from ${input.table}. Are you sure?`,
40
+ requestedSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ confirmed: { type: 'boolean', description: 'Confirm deletion' },
44
+ },
45
+ required: ['confirmed'],
46
+ },
47
+ });
48
+
49
+ if (!confirmation || !confirmation.confirmed) {
50
+ return { deleted: 0 };
51
+ }
52
+
53
+ return { deleted: count };
54
+ }
55
+ }
56
+
57
+ @App({
58
+ name: 'db-tools',
59
+ tools: [DeleteRecordsTool],
60
+ })
61
+ class DbApp {}
62
+
63
+ @FrontMcp({
64
+ info: { name: 'elicit-server', version: '1.0.0' },
65
+ apps: [DbApp],
66
+ elicitation: {
67
+ enabled: true,
68
+ },
69
+ })
70
+ class Server {}
71
+ ```
72
+
73
+ ## What This Demonstrates
74
+
75
+ - Enabling elicitation with `elicitation: { enabled: true }` in the `@FrontMcp` decorator
76
+ - Using `this.elicit()` to pause tool execution and request user confirmation
77
+ - Handling the case where the client does not support elicitation (`!confirmation`)
78
+ - Using a boolean `requestedSchema` for simple yes/no confirmations
79
+
80
+ ## Related
81
+
82
+ - See `configure-elicitation` for the full elicitation configuration reference
83
+ - See `setup-redis` for distributed elicitation state
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: distributed-elicitation-redis
3
+ reference: configure-elicitation
4
+ level: intermediate
5
+ description: 'Configure elicitation with Redis storage for multi-instance production deployments.'
6
+ tags: [config, redis, elicitation, distributed]
7
+ features:
8
+ - 'Configuring Redis-backed elicitation state for multi-instance deployments'
9
+ - 'Using a `requestedSchema` with both required and optional fields'
10
+ - 'Elicitation state is shared across server instances so the response can arrive at any replica'
11
+ - 'Loading Redis connection details from environment variables'
12
+ ---
13
+
14
+ # Distributed Elicitation with Redis
15
+
16
+ Configure elicitation with Redis storage for multi-instance production 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: 'deploy_service',
27
+ description: 'Deploy a service to production',
28
+ inputSchema: {
29
+ service: z.string(),
30
+ version: z.string(),
31
+ },
32
+ outputSchema: { deploymentId: z.string(), status: z.string() },
33
+ })
34
+ class DeployServiceTool extends ToolContext {
35
+ async execute(input: { service: string; version: string }) {
36
+ const confirmation = await this.elicit({
37
+ message: `Deploy ${input.service}@${input.version} to production?`,
38
+ requestedSchema: {
39
+ type: 'object',
40
+ properties: {
41
+ confirmed: { type: 'boolean', description: 'Confirm deployment' },
42
+ reason: { type: 'string', description: 'Deployment reason (optional)' },
43
+ },
44
+ required: ['confirmed'],
45
+ },
46
+ });
47
+
48
+ if (!confirmation || !confirmation.confirmed) {
49
+ return { deploymentId: '', status: 'cancelled' };
50
+ }
51
+
52
+ return { deploymentId: 'deploy-abc123', status: 'started' };
53
+ }
54
+ }
55
+
56
+ @App({
57
+ name: 'deploy-tools',
58
+ tools: [DeployServiceTool],
59
+ })
60
+ class DeployApp {}
61
+
62
+ @FrontMcp({
63
+ info: { name: 'deploy-server', version: '1.0.0' },
64
+ apps: [DeployApp],
65
+ elicitation: {
66
+ enabled: true,
67
+ redis: {
68
+ provider: 'redis',
69
+ host: process.env['REDIS_HOST'] ?? 'localhost',
70
+ port: Number(process.env['REDIS_PORT'] ?? 6379),
71
+ },
72
+ },
73
+ })
74
+ class Server {}
75
+ ```
76
+
77
+ ## What This Demonstrates
78
+
79
+ - Configuring Redis-backed elicitation state for multi-instance deployments
80
+ - Using a `requestedSchema` with both required and optional fields
81
+ - Elicitation state is shared across server instances so the response can arrive at any replica
82
+ - Loading Redis connection details from environment variables
83
+
84
+ ## Related
85
+
86
+ - See `configure-elicitation` for the full elicitation configuration reference
87
+ - See `configure-session` for session storage with Redis
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: cors-restricted-origins
3
+ reference: configure-http
4
+ level: basic
5
+ description: 'Configure CORS to allow only specific frontend origins with credentials.'
6
+ tags: [config, browser, http, cors, restricted, origins]
7
+ features:
8
+ - 'Restricting CORS to explicit origins instead of the permissive default'
9
+ - 'Enabling `credentials: true` with specific origins (required -- browsers reject `*` with credentials)'
10
+ - 'Setting `maxAge` to reduce preflight request overhead'
11
+ - 'Reading port from an environment variable with a fallback'
12
+ ---
13
+
14
+ # CORS with Restricted Origins
15
+
16
+ Configure CORS to allow only specific frontend origins with credentials.
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: 'cors-server', version: '1.0.0' },
29
+ apps: [MyApp],
30
+ http: {
31
+ port: Number(process.env['PORT']) || 3001,
32
+ cors: {
33
+ origin: ['https://myapp.com', 'https://staging.myapp.com'],
34
+ credentials: true,
35
+ maxAge: 86400, // cache preflight for 24 hours
36
+ },
37
+ },
38
+ })
39
+ class Server {}
40
+ ```
41
+
42
+ ## What This Demonstrates
43
+
44
+ - Restricting CORS to explicit origins instead of the permissive default
45
+ - Enabling `credentials: true` with specific origins (required -- browsers reject `*` with credentials)
46
+ - Setting `maxAge` to reduce preflight request overhead
47
+ - Reading port from an environment variable with a fallback
48
+
49
+ ## Related
50
+
51
+ - See `configure-http` for the full HTTP configuration reference
52
+ - See `configure-throttle` for rate limiting and IP filtering
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: entry-path-reverse-proxy
3
+ reference: configure-http
4
+ level: intermediate
5
+ description: 'Mount the MCP server under a URL prefix for reverse proxy or multi-service setups.'
6
+ tags: [config, nx, http, entry, path, reverse]
7
+ features:
8
+ - 'Using `entryPath` to mount the server under a URL prefix (no trailing slash)'
9
+ - 'All MCP endpoints are prefixed: `/api/mcp/sse`, `/api/mcp/`, etc.'
10
+ - 'Using a dynamic CORS origin function to allow wildcard subdomains'
11
+ - 'Suitable for running behind nginx, Caddy, or other reverse proxies'
12
+ ---
13
+
14
+ # Entry Path Prefix Behind a Reverse Proxy
15
+
16
+ Mount the MCP server under a URL prefix for reverse proxy or multi-service setups.
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: 'health_check',
27
+ description: 'Check service health',
28
+ inputSchema: {},
29
+ outputSchema: { status: z.string() },
30
+ })
31
+ class HealthCheckTool extends ToolContext {
32
+ async execute() {
33
+ return { status: 'ok' };
34
+ }
35
+ }
36
+
37
+ @App({
38
+ name: 'api',
39
+ tools: [HealthCheckTool],
40
+ })
41
+ class ApiApp {}
42
+
43
+ @FrontMcp({
44
+ info: { name: 'proxy-server', version: '1.0.0' },
45
+ apps: [ApiApp],
46
+ http: {
47
+ port: 3001,
48
+ entryPath: '/api/mcp', // no trailing slash
49
+ cors: {
50
+ origin: (origin: string) => {
51
+ // allow any *.myapp.com subdomain
52
+ return origin.endsWith('.myapp.com');
53
+ },
54
+ credentials: true,
55
+ },
56
+ },
57
+ })
58
+ class Server {}
59
+ // Endpoints become: /api/mcp/sse, /api/mcp/, etc.
60
+ ```
61
+
62
+ ## What This Demonstrates
63
+
64
+ - Using `entryPath` to mount the server under a URL prefix (no trailing slash)
65
+ - All MCP endpoints are prefixed: `/api/mcp/sse`, `/api/mcp/`, etc.
66
+ - Using a dynamic CORS origin function to allow wildcard subdomains
67
+ - Suitable for running behind nginx, Caddy, or other reverse proxies
68
+
69
+ ## Related
70
+
71
+ - See `configure-http` for the full HTTP configuration reference
72
+ - See `configure-transport` for protocol options behind a proxy
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: unix-socket-local
3
+ reference: configure-http
4
+ level: intermediate
5
+ description: 'Bind the server to a unix socket instead of a TCP port for local-only communication.'
6
+ tags: [config, unix-socket, cli, local, http, unix]
7
+ features:
8
+ - 'Using `socketPath` to bind to a unix socket instead of a TCP port'
9
+ - 'When `socketPath` is set, the `port` field is ignored'
10
+ - 'Disabling CORS with `cors: false` since unix sockets are local-only'
11
+ - 'Suitable for CLI tools, daemons, and process manager integrations'
12
+ ---
13
+
14
+ # Unix Socket for Local Access
15
+
16
+ Bind the server to a unix socket instead of a TCP port for local-only communication.
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: 'system_status',
27
+ description: 'Get system status',
28
+ inputSchema: {},
29
+ outputSchema: { uptime: z.number(), healthy: z.boolean() },
30
+ })
31
+ class SystemStatusTool extends ToolContext {
32
+ async execute() {
33
+ return { uptime: process.uptime(), healthy: true };
34
+ }
35
+ }
36
+
37
+ @App({
38
+ name: 'daemon',
39
+ tools: [SystemStatusTool],
40
+ })
41
+ class DaemonApp {}
42
+
43
+ @FrontMcp({
44
+ info: { name: 'daemon-server', version: '1.0.0' },
45
+ apps: [DaemonApp],
46
+ http: {
47
+ socketPath: '/tmp/my-mcp-server.sock',
48
+ cors: false, // no CORS needed for local socket
49
+ },
50
+ })
51
+ class Server {}
52
+ ```
53
+
54
+ ## What This Demonstrates
55
+
56
+ - Using `socketPath` to bind to a unix socket instead of a TCP port
57
+ - When `socketPath` is set, the `port` field is ignored
58
+ - Disabling CORS with `cors: false` since unix sockets are local-only
59
+ - Suitable for CLI tools, daemons, and process manager integrations
60
+
61
+ ## Related
62
+
63
+ - See `configure-http` for the full HTTP configuration reference
64
+ - See `configure-transport` for transport protocol options
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: multi-server-key-prefix
3
+ reference: configure-session
4
+ level: intermediate
5
+ description: 'Use unique key prefixes when multiple FrontMCP servers share one Redis instance.'
6
+ tags: [config, redis, session, multi, key, prefix]
7
+ features:
8
+ - 'Using unique `keyPrefix` values per server to avoid session key collisions'
9
+ - 'Both servers share the same Redis instance but have isolated session namespaces'
10
+ - 'Tuning `defaultTtlMs` per server based on workload pattern'
11
+ - '`billing-mcp:session:` vs `analytics-mcp:session:` prevents cross-contamination'
12
+ ---
13
+
14
+ # Multi-Server Key Prefix Isolation
15
+
16
+ Use unique key prefixes when multiple FrontMCP servers share one Redis instance.
17
+
18
+ ## Code
19
+
20
+ ```typescript
21
+ // src/billing-server.ts
22
+ import { FrontMcp, App } from '@frontmcp/sdk';
23
+
24
+ @App({ name: 'billing-app' })
25
+ class BillingApp {}
26
+
27
+ @FrontMcp({
28
+ info: { name: 'billing-server', version: '1.0.0' },
29
+ apps: [BillingApp],
30
+ redis: {
31
+ provider: 'redis',
32
+ host: 'shared-redis.internal',
33
+ port: 6379,
34
+ keyPrefix: 'billing-mcp:session:',
35
+ defaultTtlMs: 86_400_000, // 24 hours for long-running agent workflows
36
+ },
37
+ })
38
+ class BillingServer {}
39
+
40
+ // src/analytics-server.ts
41
+ @App({ name: 'analytics-app' })
42
+ class AnalyticsApp {}
43
+
44
+ @FrontMcp({
45
+ info: { name: 'analytics-server', version: '1.0.0' },
46
+ apps: [AnalyticsApp],
47
+ redis: {
48
+ provider: 'redis',
49
+ host: 'shared-redis.internal',
50
+ port: 6379,
51
+ keyPrefix: 'analytics-mcp:session:',
52
+ defaultTtlMs: 600_000, // 10 minutes for short CI/CD operations
53
+ },
54
+ })
55
+ class AnalyticsServer {}
56
+ ```
57
+
58
+ ## What This Demonstrates
59
+
60
+ - Using unique `keyPrefix` values per server to avoid session key collisions
61
+ - Both servers share the same Redis instance but have isolated session namespaces
62
+ - Tuning `defaultTtlMs` per server based on workload pattern
63
+ - `billing-mcp:session:` vs `analytics-mcp:session:` prevents cross-contamination
64
+
65
+ ## Related
66
+
67
+ - See `configure-session` for the full session configuration reference
68
+ - See `setup-redis` for Redis provisioning details
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: redis-session-store
3
+ reference: configure-session
4
+ level: basic
5
+ description: 'Configure Redis-backed session storage for production deployments.'
6
+ tags: [config, redis, session, store]
7
+ features:
8
+ - 'Configuring Redis as the session storage provider for production persistence'
9
+ - 'Using `keyPrefix` to namespace session keys and prevent collisions with other servers'
10
+ - 'Setting `defaultTtlMs` to control session lifetime (1 hour for interactive use)'
11
+ - 'Loading Redis connection details from environment variables'
12
+ ---
13
+
14
+ # Redis Session Store
15
+
16
+ Configure Redis-backed session storage for production deployments.
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: 'prod-server', version: '1.0.0' },
29
+ apps: [MyApp],
30
+ redis: {
31
+ provider: 'redis',
32
+ host: process.env['REDIS_HOST'] ?? 'localhost',
33
+ port: Number(process.env['REDIS_PORT'] ?? 6379),
34
+ password: process.env['REDIS_PASSWORD'],
35
+ keyPrefix: 'myapp-mcp:session:',
36
+ defaultTtlMs: 3_600_000, // 1 hour for interactive sessions
37
+ },
38
+ })
39
+ class Server {}
40
+ ```
41
+
42
+ ## What This Demonstrates
43
+
44
+ - Configuring Redis as the session storage provider for production persistence
45
+ - Using `keyPrefix` to namespace session keys and prevent collisions with other servers
46
+ - Setting `defaultTtlMs` to control session lifetime (1 hour for interactive use)
47
+ - Loading Redis connection details from environment variables
48
+
49
+ ## Related
50
+
51
+ - See `configure-session` for all session storage options
52
+ - See `setup-redis` for Redis provisioning details
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: vercel-kv-session
3
+ reference: configure-session
4
+ level: intermediate
5
+ description: 'Configure Vercel KV for session storage in serverless Vercel deployments.'
6
+ tags: [config, vercel-kv, vercel, session, transport, serverless]
7
+ features:
8
+ - "Using `provider: 'vercel-kv'` for Vercel platform deployments"
9
+ - 'Vercel automatically injects `KV_REST_API_URL` and `KV_REST_API_TOKEN` environment variables'
10
+ - 'Combining with `stateless-api` transport preset for serverless execution'
11
+ - 'No explicit host/port needed -- Vercel KV uses REST API under the hood'
12
+ ---
13
+
14
+ # Vercel KV Session Store
15
+
16
+ Configure Vercel KV for session storage in serverless Vercel deployments.
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: 'vercel-server', version: '1.0.0' },
29
+ apps: [MyApp],
30
+ redis: {
31
+ provider: 'vercel-kv',
32
+ // KV_REST_API_URL and KV_REST_API_TOKEN are auto-injected by Vercel
33
+ },
34
+ transport: {
35
+ protocol: 'stateless-api',
36
+ sessionMode: 'stateless',
37
+ },
38
+ })
39
+ class Server {}
40
+ ```
41
+
42
+ ## What This Demonstrates
43
+
44
+ - Using `provider: 'vercel-kv'` for Vercel platform deployments
45
+ - Vercel automatically injects `KV_REST_API_URL` and `KV_REST_API_TOKEN` environment variables
46
+ - Combining with `stateless-api` transport preset for serverless execution
47
+ - No explicit host/port needed -- Vercel KV uses REST API under the hood
48
+
49
+ ## Related
50
+
51
+ - See `configure-session` for all session storage options
52
+ - See `configure-transport` for transport protocol configuration
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: distributed-redis-throttle
3
+ reference: configure-throttle
4
+ level: advanced
5
+ description: 'Configure Redis-backed rate limiting for multi-instance deployments behind a load balancer.'
6
+ tags: [config, redis, session, throttle, distributed]
7
+ features:
8
+ - "Configuring `storage: { type: 'redis' }` so rate limit counters are shared across instances"
9
+ - 'Using `keyPrefix` to namespace guard keys in a shared Redis instance'
10
+ - "Combining `partitionBy: 'ip'` for global limits with `partitionBy: 'session'` per tool"
11
+ - 'In-memory counters are per-process and would allow N times the intended rate with N instances'
12
+ ---
13
+
14
+ # Distributed Rate Limiting with Redis
15
+
16
+ Configure Redis-backed rate limiting for multi-instance deployments behind a load balancer.
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: 'process_payment',
27
+ description: 'Process a payment transaction',
28
+ inputSchema: {
29
+ amount: z.number(),
30
+ currency: z.string(),
31
+ },
32
+ outputSchema: { transactionId: z.string(), status: z.string() },
33
+ rateLimit: {
34
+ maxRequests: 5,
35
+ windowMs: 60000,
36
+ partitionBy: 'session',
37
+ },
38
+ concurrency: {
39
+ maxConcurrent: 1,
40
+ partitionBy: 'session',
41
+ },
42
+ })
43
+ class ProcessPaymentTool extends ToolContext {
44
+ async execute(input: { amount: number; currency: string }) {
45
+ return { transactionId: 'txn-abc123', status: 'completed' };
46
+ }
47
+ }
48
+
49
+ @App({
50
+ name: 'payments',
51
+ tools: [ProcessPaymentTool],
52
+ })
53
+ class PaymentsApp {}
54
+
55
+ @FrontMcp({
56
+ info: { name: 'payment-server', version: '1.0.0' },
57
+ apps: [PaymentsApp],
58
+ throttle: {
59
+ enabled: true,
60
+ storage: {
61
+ type: 'redis',
62
+ redis: {
63
+ config: {
64
+ host: process.env['REDIS_HOST'] ?? 'redis.internal',
65
+ port: Number(process.env['REDIS_PORT'] ?? 6379),
66
+ },
67
+ },
68
+ },
69
+ keyPrefix: 'payments:guard:',
70
+ global: {
71
+ maxRequests: 500,
72
+ windowMs: 60000,
73
+ partitionBy: 'ip',
74
+ },
75
+ globalConcurrency: {
76
+ maxConcurrent: 20,
77
+ partitionBy: 'global',
78
+ },
79
+ },
80
+ })
81
+ class Server {}
82
+ ```
83
+
84
+ ## What This Demonstrates
85
+
86
+ - Configuring `storage: { type: 'redis' }` so rate limit counters are shared across instances
87
+ - Using `keyPrefix` to namespace guard keys in a shared Redis instance
88
+ - Combining `partitionBy: 'ip'` for global limits with `partitionBy: 'session'` per tool
89
+ - In-memory counters are per-process and would allow N times the intended rate with N instances
90
+
91
+ ## Related
92
+
93
+ - See `configure-throttle` for the full throttle configuration reference
94
+ - See `setup-redis` for Redis provisioning details