@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.
- package/README.md +2 -2
- package/catalog/TEMPLATE.md +69 -0
- package/catalog/frontmcp-config/SKILL.md +38 -22
- package/catalog/frontmcp-config/examples/configure-auth/multi-app-auth.md +87 -0
- package/catalog/frontmcp-config/examples/configure-auth/public-mode-setup.md +63 -0
- package/catalog/frontmcp-config/examples/configure-auth/remote-oauth-with-vault.md +76 -0
- package/catalog/frontmcp-config/examples/configure-auth-modes/local-self-signed-tokens.md +77 -0
- package/catalog/frontmcp-config/examples/configure-auth-modes/remote-enterprise-oauth.md +73 -0
- package/catalog/frontmcp-config/examples/configure-auth-modes/transparent-jwt-validation.md +64 -0
- package/catalog/frontmcp-config/examples/configure-elicitation/basic-confirmation-gate.md +83 -0
- package/catalog/frontmcp-config/examples/configure-elicitation/distributed-elicitation-redis.md +87 -0
- package/catalog/frontmcp-config/examples/configure-http/cors-restricted-origins.md +52 -0
- package/catalog/frontmcp-config/examples/configure-http/entry-path-reverse-proxy.md +72 -0
- package/catalog/frontmcp-config/examples/configure-http/unix-socket-local.md +64 -0
- package/catalog/frontmcp-config/examples/configure-session/multi-server-key-prefix.md +68 -0
- package/catalog/frontmcp-config/examples/configure-session/redis-session-store.md +52 -0
- package/catalog/frontmcp-config/examples/configure-session/vercel-kv-session.md +52 -0
- package/catalog/frontmcp-config/examples/configure-throttle/distributed-redis-throttle.md +94 -0
- package/catalog/frontmcp-config/examples/configure-throttle/per-tool-rate-limit.md +92 -0
- package/catalog/frontmcp-config/examples/configure-throttle/server-level-rate-limit.md +83 -0
- package/catalog/frontmcp-config/examples/configure-throttle-guard-config/full-guard-config.md +99 -0
- package/catalog/frontmcp-config/examples/configure-throttle-guard-config/minimal-guard-config.md +55 -0
- package/catalog/frontmcp-config/examples/configure-transport/custom-protocol-flags.md +74 -0
- package/catalog/frontmcp-config/examples/configure-transport/distributed-sessions-redis.md +86 -0
- package/catalog/frontmcp-config/examples/configure-transport/stateless-serverless.md +69 -0
- package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/legacy-preset-nodejs.md +65 -0
- package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/stateless-api-serverless.md +69 -0
- package/catalog/frontmcp-config/references/configure-auth-modes.md +15 -0
- package/catalog/frontmcp-config/references/configure-auth.md +15 -0
- package/catalog/frontmcp-config/references/configure-elicitation.md +14 -0
- package/catalog/frontmcp-config/references/configure-http.md +15 -0
- package/catalog/frontmcp-config/references/configure-session.md +15 -0
- package/catalog/frontmcp-config/references/configure-throttle-guard-config.md +14 -0
- package/catalog/frontmcp-config/references/configure-throttle.md +15 -0
- package/catalog/frontmcp-config/references/configure-transport-protocol-presets.md +14 -0
- package/catalog/frontmcp-config/references/configure-transport.md +15 -0
- package/catalog/frontmcp-config/references/setup-redis.md +10 -0
- package/catalog/frontmcp-config/references/setup-sqlite.md +10 -0
- package/catalog/frontmcp-deployment/SKILL.md +40 -12
- package/catalog/frontmcp-deployment/examples/build-for-browser/browser-build-with-custom-entry.md +43 -0
- package/catalog/frontmcp-deployment/examples/build-for-browser/browser-crypto-and-storage.md +85 -0
- package/catalog/frontmcp-deployment/examples/build-for-browser/react-provider-setup.md +61 -0
- package/catalog/frontmcp-deployment/examples/build-for-cli/cli-binary-build.md +66 -0
- package/catalog/frontmcp-deployment/examples/build-for-cli/unix-socket-daemon.md +76 -0
- package/catalog/frontmcp-deployment/examples/build-for-sdk/connect-openai.md +78 -0
- package/catalog/frontmcp-deployment/examples/build-for-sdk/create-flat-config.md +85 -0
- package/catalog/frontmcp-deployment/examples/build-for-sdk/multi-platform-connect.md +104 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/basic-worker-deploy.md +82 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-custom-domain.md +97 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-with-kv-storage.md +92 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-lambda/cdk-deployment.md +92 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-lambda/lambda-handler-with-cors.md +113 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-lambda/sam-template-basic.md +100 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-node/docker-compose-with-redis.md +101 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-node/pm2-with-nginx.md +79 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-node/resource-limits.md +92 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/basic-multistage-dockerfile.md +63 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/secure-nonroot-dockerfile.md +89 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-mcp-endpoint-test.md +69 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-kv.md +82 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-skills-cache.md +90 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/minimal-vercel-config.md +49 -0
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel-config/vercel-config-with-security-headers.md +92 -0
- package/catalog/frontmcp-deployment/references/build-for-browser.md +15 -0
- package/catalog/frontmcp-deployment/references/build-for-cli.md +65 -3
- package/catalog/frontmcp-deployment/references/build-for-sdk.md +15 -0
- package/catalog/frontmcp-deployment/references/deploy-to-cloudflare.md +15 -0
- package/catalog/frontmcp-deployment/references/deploy-to-lambda.md +18 -3
- package/catalog/frontmcp-deployment/references/deploy-to-node-dockerfile.md +16 -2
- package/catalog/frontmcp-deployment/references/deploy-to-node.md +19 -4
- package/catalog/frontmcp-deployment/references/deploy-to-vercel-config.md +14 -0
- package/catalog/frontmcp-deployment/references/deploy-to-vercel.md +15 -0
- package/catalog/frontmcp-development/SKILL.md +25 -17
- package/catalog/frontmcp-development/examples/create-adapter/basic-api-adapter.md +92 -0
- package/catalog/frontmcp-development/examples/create-adapter/namespaced-adapter.md +124 -0
- package/catalog/frontmcp-development/examples/create-agent/basic-agent-with-tools.md +121 -0
- package/catalog/frontmcp-development/examples/create-agent/custom-multi-pass-agent.md +95 -0
- package/catalog/frontmcp-development/examples/create-agent/nested-agents-with-swarm.md +111 -0
- package/catalog/frontmcp-development/examples/create-agent-llm-config/anthropic-config.md +81 -0
- package/catalog/frontmcp-development/examples/create-agent-llm-config/openai-config.md +80 -0
- package/catalog/frontmcp-development/examples/create-job/basic-report-job.md +87 -0
- package/catalog/frontmcp-development/examples/create-job/job-with-permissions.md +117 -0
- package/catalog/frontmcp-development/examples/create-job/job-with-retry.md +88 -0
- package/catalog/frontmcp-development/examples/create-plugin/basic-plugin-with-provider.md +69 -0
- package/catalog/frontmcp-development/examples/create-plugin/configurable-dynamic-plugin.md +178 -0
- package/catalog/frontmcp-development/examples/create-plugin/plugin-with-context-extension.md +107 -0
- package/catalog/frontmcp-development/examples/create-plugin-hooks/basic-logging-plugin.md +69 -0
- package/catalog/frontmcp-development/examples/create-plugin-hooks/caching-with-around.md +80 -0
- package/catalog/frontmcp-development/examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md +100 -0
- package/catalog/frontmcp-development/examples/create-prompt/basic-prompt.md +72 -0
- package/catalog/frontmcp-development/examples/create-prompt/dynamic-rag-prompt.md +92 -0
- package/catalog/frontmcp-development/examples/create-prompt/multi-turn-debug-session.md +86 -0
- package/catalog/frontmcp-development/examples/create-provider/basic-database-provider.md +113 -0
- package/catalog/frontmcp-development/examples/create-provider/config-and-api-providers.md +107 -0
- package/catalog/frontmcp-development/examples/create-resource/basic-static-resource.md +72 -0
- package/catalog/frontmcp-development/examples/create-resource/binary-and-multi-content.md +111 -0
- package/catalog/frontmcp-development/examples/create-resource/parameterized-template.md +84 -0
- package/catalog/frontmcp-development/examples/create-skill/basic-inline-skill.md +96 -0
- package/catalog/frontmcp-development/examples/create-skill/directory-based-skill.md +115 -0
- package/catalog/frontmcp-development/examples/create-skill/parameterized-skill.md +96 -0
- package/catalog/frontmcp-development/examples/create-skill-with-tools/basic-tool-orchestration.md +76 -0
- package/catalog/frontmcp-development/examples/create-skill-with-tools/directory-skill-with-tools.md +149 -0
- package/catalog/frontmcp-development/examples/create-skill-with-tools/incident-response-skill.md +92 -0
- package/catalog/frontmcp-development/examples/create-tool/basic-class-tool.md +62 -0
- package/catalog/frontmcp-development/examples/create-tool/tool-with-di-and-errors.md +84 -0
- package/catalog/frontmcp-development/examples/create-tool/tool-with-rate-limiting-and-progress.md +93 -0
- package/catalog/frontmcp-development/examples/create-tool-annotations/destructive-delete-tool.md +94 -0
- package/catalog/frontmcp-development/examples/create-tool-annotations/readonly-query-tool.md +60 -0
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/primitive-and-media-outputs.md +104 -0
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-raw-shape-output.md +63 -0
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-schema-advanced-output.md +103 -0
- package/catalog/frontmcp-development/examples/create-workflow/basic-deploy-pipeline.md +91 -0
- package/catalog/frontmcp-development/examples/create-workflow/parallel-validation-pipeline.md +90 -0
- package/catalog/frontmcp-development/examples/create-workflow/webhook-triggered-workflow.md +136 -0
- package/catalog/frontmcp-development/examples/decorators-guide/agent-skill-job-workflow.md +145 -0
- package/catalog/frontmcp-development/examples/decorators-guide/basic-server-with-app-and-tools.md +124 -0
- package/catalog/frontmcp-development/examples/decorators-guide/multi-app-with-plugins-and-providers.md +149 -0
- package/catalog/frontmcp-development/examples/official-adapters/authenticated-adapter-with-polling.md +84 -0
- package/catalog/frontmcp-development/examples/official-adapters/basic-openapi-adapter.md +54 -0
- package/catalog/frontmcp-development/examples/official-adapters/multi-api-hub-with-inline-spec.md +130 -0
- package/catalog/frontmcp-development/examples/official-plugins/cache-and-feature-flags.md +117 -0
- package/catalog/frontmcp-development/examples/official-plugins/production-multi-plugin-setup.md +147 -0
- package/catalog/frontmcp-development/examples/official-plugins/remember-plugin-session-memory.md +104 -0
- package/catalog/frontmcp-development/references/create-adapter.md +14 -0
- package/catalog/frontmcp-development/references/create-agent-llm-config.md +14 -0
- package/catalog/frontmcp-development/references/create-agent.md +15 -0
- package/catalog/frontmcp-development/references/create-job.md +15 -0
- package/catalog/frontmcp-development/references/create-plugin-hooks.md +51 -0
- package/catalog/frontmcp-development/references/create-plugin.md +186 -11
- package/catalog/frontmcp-development/references/create-prompt.md +17 -0
- package/catalog/frontmcp-development/references/create-provider.md +14 -0
- package/catalog/frontmcp-development/references/create-resource.md +127 -0
- package/catalog/frontmcp-development/references/create-skill-with-tools.md +126 -7
- package/catalog/frontmcp-development/references/create-skill.md +57 -12
- package/catalog/frontmcp-development/references/create-tool-annotations.md +14 -0
- package/catalog/frontmcp-development/references/create-tool-output-schema-types.md +15 -0
- package/catalog/frontmcp-development/references/create-tool.md +205 -1
- package/catalog/frontmcp-development/references/create-workflow.md +15 -0
- package/catalog/frontmcp-development/references/decorators-guide.md +155 -78
- package/catalog/frontmcp-development/references/official-adapters.md +31 -16
- package/catalog/frontmcp-development/references/official-plugins.md +62 -28
- package/catalog/frontmcp-extensibility/SKILL.md +103 -0
- package/catalog/frontmcp-extensibility/examples/vectoriadb/product-catalog-search.md +175 -0
- package/catalog/frontmcp-extensibility/examples/vectoriadb/semantic-search-with-persistence.md +138 -0
- package/catalog/frontmcp-extensibility/examples/vectoriadb/tfidf-keyword-search.md +103 -0
- package/catalog/frontmcp-extensibility/references/vectoriadb.md +299 -0
- package/catalog/frontmcp-guides/SKILL.md +7 -4
- package/catalog/frontmcp-guides/examples/example-knowledge-base/agent-and-plugin.md +160 -0
- package/catalog/frontmcp-guides/examples/example-knowledge-base/multi-app-composition.md +92 -0
- package/catalog/frontmcp-guides/examples/example-knowledge-base/vector-search-and-resources.md +135 -0
- package/catalog/frontmcp-guides/examples/example-task-manager/auth-and-crud-tools.md +135 -0
- package/catalog/frontmcp-guides/examples/example-task-manager/authenticated-e2e-tests.md +148 -0
- package/catalog/frontmcp-guides/examples/example-task-manager/redis-provider-with-di.md +129 -0
- package/catalog/frontmcp-guides/examples/example-weather-api/server-and-app-setup.md +75 -0
- package/catalog/frontmcp-guides/examples/example-weather-api/unit-and-e2e-tests.md +142 -0
- package/catalog/frontmcp-guides/examples/example-weather-api/weather-tool-with-schemas.md +74 -0
- package/catalog/frontmcp-guides/references/example-knowledge-base.md +15 -0
- package/catalog/frontmcp-guides/references/example-task-manager.md +30 -21
- package/catalog/frontmcp-guides/references/example-weather-api.md +18 -6
- package/catalog/frontmcp-observability/SKILL.md +144 -0
- package/catalog/frontmcp-observability/examples/structured-logging/stdout-logging.md +71 -0
- package/catalog/frontmcp-observability/examples/structured-logging/winston-integration.md +70 -0
- package/catalog/frontmcp-observability/examples/telemetry-api/agent-nested-tracing.md +86 -0
- package/catalog/frontmcp-observability/examples/telemetry-api/plugin-telemetry.md +93 -0
- package/catalog/frontmcp-observability/examples/telemetry-api/tool-custom-spans.md +72 -0
- package/catalog/frontmcp-observability/examples/testing-observability/test-custom-spans.md +90 -0
- package/catalog/frontmcp-observability/examples/testing-observability/test-log-correlation.md +104 -0
- package/catalog/frontmcp-observability/examples/tracing-setup/basic-tracing.md +82 -0
- package/catalog/frontmcp-observability/examples/tracing-setup/production-tracing.md +73 -0
- package/catalog/frontmcp-observability/examples/vendor-integrations/coralogix-setup.md +74 -0
- package/catalog/frontmcp-observability/references/structured-logging.md +114 -0
- package/catalog/frontmcp-observability/references/telemetry-api.md +155 -0
- package/catalog/frontmcp-observability/references/testing-observability.md +169 -0
- package/catalog/frontmcp-observability/references/tracing-setup.md +146 -0
- package/catalog/frontmcp-observability/references/vendor-integrations.md +164 -0
- package/catalog/frontmcp-production-readiness/SKILL.md +99 -0
- package/catalog/frontmcp-production-readiness/examples/common-checklist/caching-and-performance.md +102 -0
- package/catalog/frontmcp-production-readiness/examples/common-checklist/observability-setup.md +104 -0
- package/catalog/frontmcp-production-readiness/examples/common-checklist/security-hardening.md +95 -0
- package/catalog/frontmcp-production-readiness/examples/health-readiness-endpoints/basic-health-setup.md +81 -0
- package/catalog/frontmcp-production-readiness/examples/health-readiness-endpoints/custom-probes.md +136 -0
- package/catalog/frontmcp-production-readiness/examples/production-browser/browser-bundle-config.md +93 -0
- package/catalog/frontmcp-production-readiness/examples/production-browser/cross-platform-crypto.md +116 -0
- package/catalog/frontmcp-production-readiness/examples/production-browser/security-and-performance.md +128 -0
- package/catalog/frontmcp-production-readiness/examples/production-cli-binary/binary-build-config.md +109 -0
- package/catalog/frontmcp-production-readiness/examples/production-cli-binary/stdio-transport-error-handling.md +132 -0
- package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/daemon-socket-config.md +82 -0
- package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/graceful-shutdown-cleanup.md +107 -0
- package/catalog/frontmcp-production-readiness/examples/production-cli-daemon/security-and-permissions.md +119 -0
- package/catalog/frontmcp-production-readiness/examples/production-cloudflare/durable-objects-state.md +124 -0
- package/catalog/frontmcp-production-readiness/examples/production-cloudflare/workers-runtime-constraints.md +103 -0
- package/catalog/frontmcp-production-readiness/examples/production-cloudflare/wrangler-config.md +89 -0
- package/catalog/frontmcp-production-readiness/examples/production-lambda/cold-start-connection-reuse.md +122 -0
- package/catalog/frontmcp-production-readiness/examples/production-lambda/sam-template.md +107 -0
- package/catalog/frontmcp-production-readiness/examples/production-lambda/scaling-and-monitoring.md +138 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-sdk/basic-sdk-lifecycle.md +85 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-sdk/multi-instance-cleanup.md +110 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-sdk/package-json-config.md +107 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-server/docker-multi-stage.md +103 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-server/graceful-shutdown.md +87 -0
- package/catalog/frontmcp-production-readiness/examples/production-node-server/redis-session-scaling.md +97 -0
- package/catalog/frontmcp-production-readiness/examples/production-vercel/cold-start-optimization.md +104 -0
- package/catalog/frontmcp-production-readiness/examples/production-vercel/stateless-serverless-design.md +91 -0
- package/catalog/frontmcp-production-readiness/examples/production-vercel/vercel-edge-config.md +78 -0
- package/catalog/frontmcp-production-readiness/references/common-checklist.md +175 -0
- package/catalog/frontmcp-production-readiness/references/health-readiness-endpoints.md +198 -0
- package/catalog/frontmcp-production-readiness/references/production-browser.md +56 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-binary.md +71 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-daemon.md +71 -0
- package/catalog/frontmcp-production-readiness/references/production-cloudflare.md +62 -0
- package/catalog/frontmcp-production-readiness/references/production-lambda.md +63 -0
- package/catalog/frontmcp-production-readiness/references/production-node-sdk.md +76 -0
- package/catalog/frontmcp-production-readiness/references/production-node-server.md +71 -0
- package/catalog/frontmcp-production-readiness/references/production-vercel.md +62 -0
- package/catalog/frontmcp-setup/SKILL.md +19 -14
- package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/bundle-presets-scaffolding.md +61 -0
- package/catalog/frontmcp-setup/examples/frontmcp-skills-usage/install-and-search-skills.md +83 -0
- package/catalog/frontmcp-setup/examples/multi-app-composition/local-apps-with-shared-tools.md +87 -0
- package/catalog/frontmcp-setup/examples/multi-app-composition/per-app-auth-and-isolation.md +88 -0
- package/catalog/frontmcp-setup/examples/multi-app-composition/remote-and-esm-apps.md +81 -0
- package/catalog/frontmcp-setup/examples/nx-workflow/build-test-affected.md +77 -0
- package/catalog/frontmcp-setup/examples/nx-workflow/multi-server-deployment.md +93 -0
- package/catalog/frontmcp-setup/examples/nx-workflow/scaffold-and-generate.md +62 -0
- package/catalog/frontmcp-setup/examples/project-structure-nx/nx-generator-scaffolding.md +73 -0
- package/catalog/frontmcp-setup/examples/project-structure-nx/nx-workspace-with-apps.md +85 -0
- package/catalog/frontmcp-setup/examples/project-structure-nx/shared-library-usage.md +89 -0
- package/catalog/frontmcp-setup/examples/project-structure-standalone/dev-workflow-commands.md +64 -0
- package/catalog/frontmcp-setup/examples/project-structure-standalone/feature-folder-organization.md +111 -0
- package/catalog/frontmcp-setup/examples/project-structure-standalone/minimal-standalone-layout.md +73 -0
- package/catalog/frontmcp-setup/examples/readme-guide/node-server-readme.md +89 -0
- package/catalog/frontmcp-setup/examples/readme-guide/vercel-deployment-readme.md +90 -0
- package/catalog/frontmcp-setup/examples/setup-project/basic-node-server.md +99 -0
- package/catalog/frontmcp-setup/examples/setup-project/cli-scaffold-with-flags.md +77 -0
- package/catalog/frontmcp-setup/examples/setup-project/vercel-serverless-server.md +89 -0
- package/catalog/frontmcp-setup/examples/setup-redis/docker-redis-local-dev.md +88 -0
- package/catalog/frontmcp-setup/examples/setup-redis/hybrid-vercel-kv-with-pubsub.md +78 -0
- package/catalog/frontmcp-setup/examples/setup-redis/vercel-kv-serverless.md +78 -0
- package/catalog/frontmcp-setup/examples/setup-sqlite/basic-sqlite-setup.md +75 -0
- package/catalog/frontmcp-setup/examples/setup-sqlite/encrypted-sqlite-storage.md +55 -0
- package/catalog/frontmcp-setup/examples/setup-sqlite/unix-socket-daemon.md +70 -0
- package/catalog/frontmcp-setup/references/frontmcp-skills-usage.md +33 -9
- package/catalog/frontmcp-setup/references/multi-app-composition.md +15 -0
- package/catalog/frontmcp-setup/references/nx-workflow.md +15 -0
- package/catalog/frontmcp-setup/references/project-structure-nx.md +15 -0
- package/catalog/frontmcp-setup/references/project-structure-standalone.md +15 -0
- package/catalog/frontmcp-setup/references/readme-guide.md +235 -0
- package/catalog/frontmcp-setup/references/setup-project.md +16 -1
- package/catalog/frontmcp-setup/references/setup-redis.md +15 -0
- package/catalog/frontmcp-setup/references/setup-sqlite.md +15 -0
- package/catalog/frontmcp-testing/SKILL.md +41 -27
- package/catalog/frontmcp-testing/examples/setup-testing/fixture-based-e2e-test.md +70 -0
- package/catalog/frontmcp-testing/examples/setup-testing/jest-config-with-coverage.md +59 -0
- package/catalog/frontmcp-testing/examples/setup-testing/unit-test-tool-resource-prompt.md +115 -0
- package/catalog/frontmcp-testing/examples/test-auth/oauth-flow-test.md +78 -0
- package/catalog/frontmcp-testing/examples/test-auth/role-based-access-test.md +88 -0
- package/catalog/frontmcp-testing/examples/test-auth/token-factory-test.md +71 -0
- package/catalog/frontmcp-testing/examples/test-browser-build/browser-bundle-validation.md +58 -0
- package/catalog/frontmcp-testing/examples/test-browser-build/playwright-browser-test.md +69 -0
- package/catalog/frontmcp-testing/examples/test-cli-binary/binary-startup-test.md +77 -0
- package/catalog/frontmcp-testing/examples/test-cli-binary/js-bundle-import-test.md +56 -0
- package/catalog/frontmcp-testing/examples/test-direct-client/basic-create-test.md +74 -0
- package/catalog/frontmcp-testing/examples/test-direct-client/openai-claude-format-test.md +79 -0
- package/catalog/frontmcp-testing/examples/test-e2e-handler/basic-e2e-test.md +67 -0
- package/catalog/frontmcp-testing/examples/test-e2e-handler/manual-client-with-transport.md +72 -0
- package/catalog/frontmcp-testing/examples/test-e2e-handler/tool-call-and-error-e2e.md +73 -0
- package/catalog/frontmcp-testing/examples/test-tool-unit/basic-tool-test.md +69 -0
- package/catalog/frontmcp-testing/examples/test-tool-unit/schema-validation-test.md +82 -0
- package/catalog/frontmcp-testing/examples/test-tool-unit/tool-error-handling-test.md +92 -0
- package/catalog/frontmcp-testing/references/setup-testing.md +17 -0
- package/catalog/frontmcp-testing/references/test-auth.md +15 -0
- package/catalog/frontmcp-testing/references/test-browser-build.md +14 -0
- package/catalog/frontmcp-testing/references/test-cli-binary.md +14 -0
- package/catalog/frontmcp-testing/references/test-direct-client.md +14 -0
- package/catalog/frontmcp-testing/references/test-e2e-handler.md +15 -0
- package/catalog/frontmcp-testing/references/test-tool-unit.md +15 -0
- package/catalog/skills-manifest.json +2849 -32
- package/package.json +2 -2
- package/src/index.d.ts +1 -1
- package/src/index.js.map +1 -1
- package/src/loader.js +0 -1
- package/src/loader.js.map +1 -1
- package/src/manifest.d.ts +36 -1
- package/src/manifest.js +6 -1
- package/src/manifest.js.map +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: common-checklist
|
|
3
|
+
description: Security, performance, reliability, and observability checks for all deployment targets
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Common Production Readiness Checklist
|
|
7
|
+
|
|
8
|
+
These checks apply to ALL deployment targets. Run them first, then proceed to your target-specific checklist.
|
|
9
|
+
|
|
10
|
+
## Security
|
|
11
|
+
|
|
12
|
+
### Authentication & Authorization
|
|
13
|
+
|
|
14
|
+
- [ ] JWT_SECRET is set to a strong random value (not the default)
|
|
15
|
+
- [ ] Authentication is enabled (`auth` config in `@FrontMcp` or `@frontmcp/auth`)
|
|
16
|
+
- [ ] API keys/tokens are loaded from environment variables, never hardcoded
|
|
17
|
+
- [ ] Session storage uses Redis or platform-native store (not in-memory) for multi-instance
|
|
18
|
+
- [ ] Session TTL is configured appropriately (not infinite)
|
|
19
|
+
- [ ] Tool-level authorization is enforced where needed (ApprovalPlugin or custom)
|
|
20
|
+
- [ ] OAuth redirect URIs are restricted to known domains
|
|
21
|
+
|
|
22
|
+
### CORS Configuration
|
|
23
|
+
|
|
24
|
+
- [ ] CORS is NOT permissive (don't allow all origins in production)
|
|
25
|
+
- [ ] Specific allowed origins are listed: `cors: { origin: ['https://your-app.com'] }`
|
|
26
|
+
- [ ] Credentials mode is only enabled if cookies/sessions are needed
|
|
27
|
+
- [ ] Preflight cache (`maxAge`) is set to reduce OPTIONS requests
|
|
28
|
+
|
|
29
|
+
### Input Validation
|
|
30
|
+
|
|
31
|
+
- [ ] All tool inputs use Zod schemas (never trust raw input)
|
|
32
|
+
- [ ] All tool outputs use `outputSchema` to prevent data leaks
|
|
33
|
+
- [ ] Path parameters and query params are validated
|
|
34
|
+
- [ ] File paths are sanitized to prevent directory traversal
|
|
35
|
+
- [ ] SQL queries use parameterized statements (never string interpolation)
|
|
36
|
+
|
|
37
|
+
### Secrets Management
|
|
38
|
+
|
|
39
|
+
- [ ] No secrets in source code or git history
|
|
40
|
+
- [ ] `.env` files are in `.gitignore`
|
|
41
|
+
- [ ] Production secrets are managed via secret manager (AWS SSM, Vault, etc.)
|
|
42
|
+
- [ ] API keys have minimum required permissions
|
|
43
|
+
- [ ] Secrets are rotated on a schedule
|
|
44
|
+
|
|
45
|
+
### Rate Limiting
|
|
46
|
+
|
|
47
|
+
- [ ] Rate limiting is configured for public-facing endpoints
|
|
48
|
+
- [ ] Per-client/per-IP limits are set
|
|
49
|
+
- [ ] Throttle configuration uses `@FrontMcp({ throttle: {...} })`
|
|
50
|
+
- [ ] Large payload limits are set to prevent memory exhaustion
|
|
51
|
+
|
|
52
|
+
### Dependencies
|
|
53
|
+
|
|
54
|
+
- [ ] `npm audit` shows no high/critical vulnerabilities
|
|
55
|
+
- [ ] Dependencies are pinned or use tilde ranges (not `*` or `latest`)
|
|
56
|
+
- [ ] No unused dependencies in package.json
|
|
57
|
+
|
|
58
|
+
## Performance
|
|
59
|
+
|
|
60
|
+
### Caching
|
|
61
|
+
|
|
62
|
+
- [ ] CachePlugin is configured for read-heavy tools
|
|
63
|
+
- [ ] Cache TTL is tuned per tool (not one-size-fits-all)
|
|
64
|
+
- [ ] Stale cache invalidation strategy is defined
|
|
65
|
+
|
|
66
|
+
### Response Optimization
|
|
67
|
+
|
|
68
|
+
- [ ] Large responses are paginated or streamed
|
|
69
|
+
- [ ] Tools return only necessary data (no over-fetching)
|
|
70
|
+
- [ ] Binary data uses proper encoding (base64 only when necessary)
|
|
71
|
+
|
|
72
|
+
### Memory Management
|
|
73
|
+
|
|
74
|
+
- [ ] No memory leaks from event listeners or unclosed connections
|
|
75
|
+
- [ ] Large data processing uses streams instead of buffering
|
|
76
|
+
- [ ] Provider lifecycle `dispose()` is implemented for cleanup
|
|
77
|
+
- [ ] Session storage has TTL to prevent unbounded growth
|
|
78
|
+
|
|
79
|
+
## Reliability
|
|
80
|
+
|
|
81
|
+
### Error Handling
|
|
82
|
+
|
|
83
|
+
- [ ] All tools use `this.fail()` with specific MCP error classes
|
|
84
|
+
- [ ] Unknown errors are caught and wrapped (never expose stack traces)
|
|
85
|
+
- [ ] Error responses include MCP error codes for client handling
|
|
86
|
+
- [ ] Async errors are properly caught (no unhandled promise rejections)
|
|
87
|
+
|
|
88
|
+
### Retry & Circuit Breaking
|
|
89
|
+
|
|
90
|
+
- [ ] External API calls have retry logic with exponential backoff
|
|
91
|
+
- [ ] Circuit breaker pattern for unreliable downstream services
|
|
92
|
+
- [ ] Timeouts are set for all external calls
|
|
93
|
+
- [ ] Job retries have maximum attempt limits
|
|
94
|
+
|
|
95
|
+
## Observability
|
|
96
|
+
|
|
97
|
+
### Logging
|
|
98
|
+
|
|
99
|
+
- [ ] Logs use structured format (JSON in production)
|
|
100
|
+
- [ ] Log levels are appropriate (info for normal, error for failures)
|
|
101
|
+
- [ ] Sensitive data is redacted from logs (tokens, passwords, PII)
|
|
102
|
+
- [ ] Request/response logging includes correlation IDs
|
|
103
|
+
|
|
104
|
+
### Health & Readiness
|
|
105
|
+
|
|
106
|
+
- [ ] `/healthz` endpoint is reachable from load balancer or orchestrator
|
|
107
|
+
- [ ] `/readyz` endpoint is configured for Kubernetes readiness or similar
|
|
108
|
+
- [ ] Custom probes added for external dependencies (databases, APIs, queues)
|
|
109
|
+
- [ ] `includeDetails: false` in production to avoid leaking infrastructure topology
|
|
110
|
+
- [ ] Probe timeout (`readyz.timeoutMs`) is lower than orchestrator probe timeout
|
|
111
|
+
- [ ] `toolsHash` from `/readyz` is monitored for config drift across instances
|
|
112
|
+
|
|
113
|
+
### Monitoring
|
|
114
|
+
|
|
115
|
+
- [ ] Request count and latency metrics are exposed
|
|
116
|
+
- [ ] Error rate metrics are tracked
|
|
117
|
+
- [ ] Tool execution duration is measured
|
|
118
|
+
- [ ] Error tracking service is integrated (Sentry, Datadog, etc.)
|
|
119
|
+
|
|
120
|
+
## Jobs & Workflows (if enabled)
|
|
121
|
+
|
|
122
|
+
- [ ] Jobs Redis store is configured for production (`jobs: { enabled: true, store: { redis } }`)
|
|
123
|
+
- [ ] Job retry config has reasonable `maxAttempts` and `maxBackoffMs`
|
|
124
|
+
- [ ] Workflow timeout is set to prevent runaway workflows
|
|
125
|
+
- [ ] Job execution times are monitored (long-running jobs need alerting)
|
|
126
|
+
- [ ] Workflow step `continueOnError` is only used for non-critical steps
|
|
127
|
+
|
|
128
|
+
## Skills HTTP Endpoints (if enabled)
|
|
129
|
+
|
|
130
|
+
- [ ] Skills HTTP auth is configured (`skillsConfig.auth: 'api-key'` or `'bearer'`)
|
|
131
|
+
- [ ] Skills caching is enabled for production (`skillsConfig.cache: { enabled: true }`)
|
|
132
|
+
- [ ] Cache TTL is tuned for skill instruction freshness requirements
|
|
133
|
+
- [ ] `/llm.txt` and `/skills` endpoints are tested for correct responses
|
|
134
|
+
|
|
135
|
+
## ExtApps / Widgets (if enabled)
|
|
136
|
+
|
|
137
|
+
- [ ] Host capabilities are reviewed — only enable what widgets need
|
|
138
|
+
- [ ] `serverToolProxy` is disabled if widgets should not call MCP tools
|
|
139
|
+
- [ ] Widget session validation is active (default with HTTP transport)
|
|
140
|
+
- [ ] CSP headers are configured for hosted widget origins
|
|
141
|
+
|
|
142
|
+
## SQLite (if used)
|
|
143
|
+
|
|
144
|
+
- [ ] WAL mode is enabled for concurrent read/write performance
|
|
145
|
+
- [ ] Database file path is writable and persistent (not ephemeral storage)
|
|
146
|
+
- [ ] Backup strategy is defined (periodic file copy or WAL checkpoint)
|
|
147
|
+
- [ ] Database size is monitored to prevent disk exhaustion
|
|
148
|
+
|
|
149
|
+
## Documentation
|
|
150
|
+
|
|
151
|
+
- [ ] README.md is up-to-date for the deployment target (see `frontmcp-setup` → `references/readme-guide.md`)
|
|
152
|
+
- [ ] API documentation covers all tools and resources
|
|
153
|
+
- [ ] Environment variables are documented in `.env.example`
|
|
154
|
+
|
|
155
|
+
## Common Anti-Patterns
|
|
156
|
+
|
|
157
|
+
| Anti-Pattern | Fix |
|
|
158
|
+
| ------------------------- | ------------------------------------------- |
|
|
159
|
+
| Default JWT_SECRET | Set a strong random secret |
|
|
160
|
+
| In-memory session store | Use Redis or platform-native storage |
|
|
161
|
+
| `cors: { origin: '*' }` | Restrict to known origins |
|
|
162
|
+
| No output schema on tools | Always define `outputSchema` |
|
|
163
|
+
| Synchronous file I/O | Use async operations from `@frontmcp/utils` |
|
|
164
|
+
| Hardcoded secrets | Use environment variables |
|
|
165
|
+
| Unbounded caching | Set TTL on all caches |
|
|
166
|
+
|
|
167
|
+
## Examples
|
|
168
|
+
|
|
169
|
+
| Example | Level | Description |
|
|
170
|
+
| ------------------------------------------------------------------------------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------- |
|
|
171
|
+
| [`caching-and-performance`](../examples/common-checklist/caching-and-performance.md) | Advanced | Shows how to configure caching with TTL, optimize responses, and manage memory with proper provider lifecycle cleanup. |
|
|
172
|
+
| [`observability-setup`](../examples/common-checklist/observability-setup.md) | Intermediate | Shows how to configure structured logging, error handling with MCP error codes, and monitoring integration for production. |
|
|
173
|
+
| [`security-hardening`](../examples/common-checklist/security-hardening.md) | Basic | Shows how to configure authentication, CORS, input validation, and rate limiting for a production FrontMCP server. |
|
|
174
|
+
|
|
175
|
+
> See all examples in [`examples/common-checklist/`](../examples/common-checklist/)
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: health-readiness-endpoints
|
|
3
|
+
description: Configure /healthz and /readyz endpoints with custom probes, runtime-aware readiness, and dependency health checks
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Health & Readiness Endpoints
|
|
7
|
+
|
|
8
|
+
FrontMCP provides Kubernetes-style `/healthz` (liveness) and `/readyz` (readiness) endpoints with automatic dependency probing, catalog introspection, and runtime-aware behavior.
|
|
9
|
+
|
|
10
|
+
## Runtime Availability
|
|
11
|
+
|
|
12
|
+
| Runtime | `/healthz` | `/readyz` | Notes |
|
|
13
|
+
| -------------------------- | ---------- | --------- | ---------------------------------- |
|
|
14
|
+
| Node.js / Bun / Deno | yes | yes | Full support |
|
|
15
|
+
| Edge / Cloudflare / Vercel | yes | no | No persistent connections to probe |
|
|
16
|
+
| CLI | yes | no | No HTTP server in stdio mode |
|
|
17
|
+
| Browser | yes | yes | Full support |
|
|
18
|
+
|
|
19
|
+
## Default Behavior
|
|
20
|
+
|
|
21
|
+
Health endpoints are **enabled by default** with zero configuration:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
@FrontMcp({
|
|
25
|
+
info: { name: 'my-server', version: '1.0.0' },
|
|
26
|
+
apps: [MyApp],
|
|
27
|
+
// health endpoints are auto-registered:
|
|
28
|
+
// GET /healthz -> liveness probe
|
|
29
|
+
// GET /readyz -> readiness probe (Node.js, Bun, Deno, Browser)
|
|
30
|
+
// GET /health -> legacy alias for /healthz
|
|
31
|
+
})
|
|
32
|
+
export default class Server {}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Endpoint Responses
|
|
36
|
+
|
|
37
|
+
### `/healthz` (Liveness)
|
|
38
|
+
|
|
39
|
+
Lightweight, no I/O. Returns server info, runtime context, and uptime.
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"status": "ok",
|
|
44
|
+
"server": { "name": "my-server", "version": "1.0.0" },
|
|
45
|
+
"runtime": { "platform": "linux", "runtime": "node", "deployment": "standalone", "env": "production" },
|
|
46
|
+
"uptime": 3600.5
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
- **HTTP 200**: Server process is alive
|
|
51
|
+
- **HTTP 503**: Server is in a degraded state
|
|
52
|
+
|
|
53
|
+
### `/readyz` (Readiness)
|
|
54
|
+
|
|
55
|
+
Deep check: probes all registered dependencies, returns catalog hash and registry counts.
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"status": "ready",
|
|
60
|
+
"totalLatencyMs": 45,
|
|
61
|
+
"catalog": {
|
|
62
|
+
"toolsHash": "a1b2c3d4e5f6...",
|
|
63
|
+
"toolCount": 12,
|
|
64
|
+
"resourceCount": 3,
|
|
65
|
+
"promptCount": 2,
|
|
66
|
+
"skillCount": 1,
|
|
67
|
+
"agentCount": 0
|
|
68
|
+
},
|
|
69
|
+
"probes": {
|
|
70
|
+
"session-store": { "status": "healthy", "latencyMs": 12 },
|
|
71
|
+
"remote:payment-svc": { "status": "healthy", "latencyMs": 25 }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- **HTTP 200**: All probes pass (`status: "ready"`)
|
|
77
|
+
- **HTTP 503**: At least one probe unhealthy (`status: "not_ready"`)
|
|
78
|
+
|
|
79
|
+
## Auto-Discovered Probes
|
|
80
|
+
|
|
81
|
+
The health service automatically registers probes for:
|
|
82
|
+
|
|
83
|
+
- **Session store** (Redis/Vercel KV) via `TransportService.pingSessionStore()`
|
|
84
|
+
- **Remote MCP apps** via the existing `HealthCheckManager` background checks
|
|
85
|
+
|
|
86
|
+
## Custom Probes
|
|
87
|
+
|
|
88
|
+
Add your own dependency checks via the `health.probes` config:
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
@FrontMcp({
|
|
92
|
+
info: { name: 'my-server', version: '1.0.0' },
|
|
93
|
+
apps: [MyApp],
|
|
94
|
+
redis: { host: 'localhost' },
|
|
95
|
+
health: {
|
|
96
|
+
probes: [
|
|
97
|
+
{
|
|
98
|
+
name: 'postgres',
|
|
99
|
+
async check() {
|
|
100
|
+
const start = Date.now();
|
|
101
|
+
await pool.query('SELECT 1');
|
|
102
|
+
return { status: 'healthy', latencyMs: Date.now() - start };
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'external-api',
|
|
107
|
+
async check() {
|
|
108
|
+
const res = await fetch('https://api.example.com/ping');
|
|
109
|
+
return { status: res.ok ? 'healthy' : 'unhealthy' };
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
})
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Configuration Options
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
health: {
|
|
121
|
+
enabled: true, // default: true
|
|
122
|
+
healthzPath: '/healthz', // default: '/healthz'
|
|
123
|
+
readyzPath: '/readyz', // default: '/readyz'
|
|
124
|
+
includeDetails: false, // default: true in dev, false in production
|
|
125
|
+
readyz: {
|
|
126
|
+
enabled: true, // auto-determined by runtime when omitted
|
|
127
|
+
timeoutMs: 5000, // per-probe timeout, default: 5000
|
|
128
|
+
},
|
|
129
|
+
probes: [], // custom user-defined probes
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Probe Result Shape
|
|
134
|
+
|
|
135
|
+
Each probe must return:
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
interface HealthProbeResult {
|
|
139
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
140
|
+
latencyMs?: number;
|
|
141
|
+
details?: Record<string, unknown>;
|
|
142
|
+
error?: string;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Production Recommendations
|
|
147
|
+
|
|
148
|
+
- [ ] Set `includeDetails: false` in production to avoid leaking infrastructure topology
|
|
149
|
+
- [ ] Set `readyz.timeoutMs` to a value lower than your orchestrator's probe timeout
|
|
150
|
+
- [ ] Add custom probes for all external dependencies (databases, APIs, queues)
|
|
151
|
+
- [ ] Use the `toolsHash` from `/readyz` to detect config drift across instances
|
|
152
|
+
- [ ] Point Kubernetes liveness probe at `/healthz` and readiness probe at `/readyz`
|
|
153
|
+
- [ ] Point load balancer health checks at `/health` or `/healthz`
|
|
154
|
+
|
|
155
|
+
## Kubernetes Example
|
|
156
|
+
|
|
157
|
+
```yaml
|
|
158
|
+
livenessProbe:
|
|
159
|
+
httpGet:
|
|
160
|
+
path: /healthz
|
|
161
|
+
port: 3001
|
|
162
|
+
initialDelaySeconds: 5
|
|
163
|
+
periodSeconds: 10
|
|
164
|
+
readinessProbe:
|
|
165
|
+
httpGet:
|
|
166
|
+
path: /readyz
|
|
167
|
+
port: 3001
|
|
168
|
+
initialDelaySeconds: 10
|
|
169
|
+
periodSeconds: 15
|
|
170
|
+
timeoutSeconds: 5
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Docker Example
|
|
174
|
+
|
|
175
|
+
```dockerfile
|
|
176
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
177
|
+
CMD curl -f http://localhost:3001/healthz || exit 1
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Disabling Health Endpoints
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
@FrontMcp({
|
|
184
|
+
health: { enabled: false },
|
|
185
|
+
})
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Examples
|
|
189
|
+
|
|
190
|
+
| Example | Level | Description |
|
|
191
|
+
| ------------------------------------------------------------------------------------ | ------------ | ------------------------------------------------------------------------------------------ |
|
|
192
|
+
| [`basic-health-setup`](../examples/health-readiness-endpoints/basic-health-setup.md) | Basic | Default health endpoints with Redis session store, showing /healthz and /readyz responses. |
|
|
193
|
+
| [`custom-probes`](../examples/health-readiness-endpoints/custom-probes.md) | Intermediate | Custom database and API probes with Kubernetes deployment configuration. |
|
|
194
|
+
|
|
195
|
+
## Reference
|
|
196
|
+
|
|
197
|
+
- [Health Checks Documentation](https://docs.agentfront.dev/frontmcp/deployment/health-checks)
|
|
198
|
+
- Related skills: `frontmcp-observability`, `frontmcp-deployment`, `frontmcp-config`
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-browser
|
|
3
|
+
description: Checklist for publishing FrontMCP as a browser-compatible SDK bundle
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Browser SDK
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for publishing FrontMCP as a browser-compatible SDK.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for browser-specific items.
|
|
11
|
+
|
|
12
|
+
## Build
|
|
13
|
+
|
|
14
|
+
- [ ] `frontmcp build --target browser` produces a correct ESM/UMD bundle
|
|
15
|
+
- [ ] Bundle size is acceptable (check with `npx bundlesize` or similar)
|
|
16
|
+
- [ ] Tree-shaking works (no unnecessary code in final bundle)
|
|
17
|
+
- [ ] Source maps are generated for debugging (but not shipped to production CDN)
|
|
18
|
+
|
|
19
|
+
## Browser Compatibility
|
|
20
|
+
|
|
21
|
+
- [ ] No Node.js-only APIs (`fs`, `path`, `child_process`, `net`, `crypto`)
|
|
22
|
+
- [ ] All crypto uses `@frontmcp/utils` (wraps Web Crypto API)
|
|
23
|
+
- [ ] All file operations removed or polyfilled
|
|
24
|
+
- [ ] Fetch API used instead of Node http/https modules
|
|
25
|
+
- [ ] Works in major browsers (Chrome, Firefox, Safari, Edge)
|
|
26
|
+
|
|
27
|
+
## Security
|
|
28
|
+
|
|
29
|
+
- [ ] No secrets bundled in the client-side code
|
|
30
|
+
- [ ] API keys are NOT in the browser bundle (use server-side proxy)
|
|
31
|
+
- [ ] CORS is configured on the server to accept browser origins
|
|
32
|
+
- [ ] Content Security Policy (CSP) headers are compatible
|
|
33
|
+
|
|
34
|
+
## Distribution
|
|
35
|
+
|
|
36
|
+
- [ ] Package exports both ESM and CJS: `"module"` and `"main"` in package.json
|
|
37
|
+
- [ ] `"browser"` field in package.json points to the browser build
|
|
38
|
+
- [ ] TypeScript declarations (`.d.ts`) are included
|
|
39
|
+
- [ ] CDN-friendly: works via `<script>` tag or `import` from CDN
|
|
40
|
+
|
|
41
|
+
## Performance
|
|
42
|
+
|
|
43
|
+
- [ ] Bundle is minified for production
|
|
44
|
+
- [ ] Code splitting is used for large optional features
|
|
45
|
+
- [ ] No synchronous operations that block the main thread
|
|
46
|
+
- [ ] WebSocket/SSE connections handle reconnection gracefully
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
| Example | Level | Description |
|
|
51
|
+
| ---------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
|
+
| [`browser-bundle-config`](../examples/production-browser/browser-bundle-config.md) | Basic | Shows how to configure package.json for browser-compatible SDK distribution with ESM/CJS/UMD entry points, TypeScript declarations, and CDN support. |
|
|
53
|
+
| [`cross-platform-crypto`](../examples/production-browser/cross-platform-crypto.md) | Intermediate | Shows how to use `@frontmcp/utils` for cross-platform crypto operations that work in both browser and Node.js, and how to avoid Node.js-only APIs. |
|
|
54
|
+
| [`security-and-performance`](../examples/production-browser/security-and-performance.md) | Advanced | Shows how to ensure no secrets are bundled in browser code, configure CSP headers on the server, optimize bundle size, and avoid blocking the main thread. |
|
|
55
|
+
|
|
56
|
+
> See all examples in [`examples/production-browser/`](../examples/production-browser/)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-cli-binary
|
|
3
|
+
description: Checklist for publishing FrontMCP as a one-shot CLI binary with stdin/stdout transport
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: CLI Binary (One-Shot Execution)
|
|
7
|
+
|
|
8
|
+
Checklist for publishing FrontMCP as a one-shot CLI binary — runs a command, processes input, exits. Not a long-running server.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for binary-specific items.
|
|
11
|
+
|
|
12
|
+
## Build
|
|
13
|
+
|
|
14
|
+
- [ ] `frontmcp build --target cli` produces a working binary
|
|
15
|
+
- [ ] Binary starts and responds to `--help` within 500ms
|
|
16
|
+
- [ ] `package.json` has correct `bin` field pointing to the built output
|
|
17
|
+
- [ ] Shebang line is correct: `#!/usr/bin/env node`
|
|
18
|
+
- [ ] Binary file has execute permissions (`chmod +x`)
|
|
19
|
+
|
|
20
|
+
## Startup Performance
|
|
21
|
+
|
|
22
|
+
- [ ] Cold start time is under 1 second
|
|
23
|
+
- [ ] No heavy initialization at module scope (lazy-load dependencies)
|
|
24
|
+
- [ ] No network calls during startup (model downloads, API fetches)
|
|
25
|
+
- [ ] No async initialization that blocks first output
|
|
26
|
+
|
|
27
|
+
## stdin/stdout Transport
|
|
28
|
+
|
|
29
|
+
- [ ] MCP stdio transport works: reads JSON-RPC from stdin, writes to stdout
|
|
30
|
+
- [ ] stderr is used for logging (not stdout — that's the MCP channel)
|
|
31
|
+
- [ ] Handles EOF on stdin gracefully (clean exit)
|
|
32
|
+
- [ ] Handles broken pipe on stdout gracefully (no crash)
|
|
33
|
+
|
|
34
|
+
## Exit Behavior
|
|
35
|
+
|
|
36
|
+
- [ ] Exit code 0 on success
|
|
37
|
+
- [ ] Exit code 1 on user error (bad input, missing args)
|
|
38
|
+
- [ ] Exit code 2 on internal error
|
|
39
|
+
- [ ] No hanging — process exits promptly after work is done
|
|
40
|
+
- [ ] All async operations complete before exit (no dangling promises)
|
|
41
|
+
|
|
42
|
+
## npm Distribution
|
|
43
|
+
|
|
44
|
+
- [ ] Package name is available on npm
|
|
45
|
+
- [ ] `package.json` has `name`, `version`, `description`, `keywords`, `license`
|
|
46
|
+
- [ ] `files` field includes only: `dist/`, `README.md`, `LICENSE`
|
|
47
|
+
- [ ] `.npmignore` or `files` excludes: `src/`, `e2e/`, `.env`, `coverage/`
|
|
48
|
+
- [ ] `README.md` has: `npm install -g <name>` and usage examples
|
|
49
|
+
|
|
50
|
+
## Error Messages
|
|
51
|
+
|
|
52
|
+
- [ ] User errors show helpful messages (not stack traces)
|
|
53
|
+
- [ ] `--version` flag works correctly
|
|
54
|
+
- [ ] Unknown flags produce a helpful error
|
|
55
|
+
- [ ] Missing required arguments show usage hint
|
|
56
|
+
|
|
57
|
+
## Security
|
|
58
|
+
|
|
59
|
+
- [ ] No secrets bundled in the binary
|
|
60
|
+
- [ ] No secrets logged to stderr
|
|
61
|
+
- [ ] No hardcoded paths (use `os.homedir()`, `os.tmpdir()`)
|
|
62
|
+
- [ ] No writes to unexpected locations
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
| Example | Level | Description |
|
|
67
|
+
| ------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
68
|
+
| [`binary-build-config`](../examples/production-cli-binary/binary-build-config.md) | Basic | Shows how to configure a FrontMCP CLI binary with correct package.json `bin` field, shebang, stdio transport, and npm distribution settings. |
|
|
69
|
+
| [`stdio-transport-error-handling`](../examples/production-cli-binary/stdio-transport-error-handling.md) | Intermediate | Shows how to handle stdin/stdout transport correctly, implement proper exit codes, and handle edge cases like EOF and broken pipes. |
|
|
70
|
+
|
|
71
|
+
> See all examples in [`examples/production-cli-binary/`](../examples/production-cli-binary/)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-cli-daemon
|
|
3
|
+
description: Checklist for deploying FrontMCP as a long-running local daemon with socket transport
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: CLI Daemon (Local MCP Server)
|
|
7
|
+
|
|
8
|
+
Checklist for deploying FrontMCP as a long-running local MCP server managed by the FrontMCP process manager (`frontmcp start/stop/restart`).
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for daemon-specific items.
|
|
11
|
+
|
|
12
|
+
## Process Management
|
|
13
|
+
|
|
14
|
+
- [ ] Server starts via `frontmcp start <name> --entry ./src/main.ts`
|
|
15
|
+
- [ ] `frontmcp stop <name>` cleanly shuts down the daemon
|
|
16
|
+
- [ ] `frontmcp restart <name>` works without orphaned processes
|
|
17
|
+
- [ ] `frontmcp status` shows the daemon as running
|
|
18
|
+
- [ ] `frontmcp logs <name> --follow` streams daemon output
|
|
19
|
+
|
|
20
|
+
## Socket / Transport
|
|
21
|
+
|
|
22
|
+
- [ ] Unix socket path is configured: `http: { socketPath: '/tmp/my-app.sock' }`
|
|
23
|
+
- [ ] Socket file is cleaned up on shutdown (no stale `.sock` files)
|
|
24
|
+
- [ ] Stdio transport works as fallback: `frontmcp socket ./src/main.ts`
|
|
25
|
+
- [ ] Socket permissions are restrictive (only the owning user can connect)
|
|
26
|
+
|
|
27
|
+
## Service Registration
|
|
28
|
+
|
|
29
|
+
- [ ] `frontmcp service install <name>` registers as a system service (launchd/systemd)
|
|
30
|
+
- [ ] Service starts automatically on boot (if desired)
|
|
31
|
+
- [ ] Service restarts on crash with backoff
|
|
32
|
+
- [ ] Logs are captured by the system journal / log file
|
|
33
|
+
|
|
34
|
+
## Storage
|
|
35
|
+
|
|
36
|
+
- [ ] SQLite used for local persistence (session, cache)
|
|
37
|
+
- [ ] Database file location is configurable (not hardcoded)
|
|
38
|
+
- [ ] WAL mode enabled for concurrent reads
|
|
39
|
+
- [ ] Automatic migration on startup (if schema changes)
|
|
40
|
+
- [ ] Redis optional (only if shared state is needed between instances)
|
|
41
|
+
|
|
42
|
+
## Graceful Shutdown
|
|
43
|
+
|
|
44
|
+
- [ ] SIGTERM handler completes in-flight requests
|
|
45
|
+
- [ ] Database connections are closed
|
|
46
|
+
- [ ] Socket file is removed
|
|
47
|
+
- [ ] PID file is cleaned up
|
|
48
|
+
|
|
49
|
+
## Health & Monitoring
|
|
50
|
+
|
|
51
|
+
- [ ] `/health` endpoint responds on the socket
|
|
52
|
+
- [ ] Startup errors are logged clearly (not swallowed)
|
|
53
|
+
- [ ] `frontmcp doctor` passes all checks
|
|
54
|
+
- [ ] Memory usage is stable over time (no leaks)
|
|
55
|
+
|
|
56
|
+
## Security
|
|
57
|
+
|
|
58
|
+
- [ ] Socket file has restrictive permissions
|
|
59
|
+
- [ ] No network exposure (socket-only, not TCP)
|
|
60
|
+
- [ ] Secrets stored in config file with `600` permissions
|
|
61
|
+
- [ ] Config stored in `~/.config/<app>/` or XDG directories
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
| Example | Level | Description |
|
|
66
|
+
| --------------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
67
|
+
| [`daemon-socket-config`](../examples/production-cli-daemon/daemon-socket-config.md) | Basic | Shows how to configure a FrontMCP server as a long-running local daemon with Unix socket transport, process management, and SQLite storage. |
|
|
68
|
+
| [`graceful-shutdown-cleanup`](../examples/production-cli-daemon/graceful-shutdown-cleanup.md) | Intermediate | Shows how to implement graceful shutdown for a daemon process, including completing in-flight requests, closing database connections, removing the socket file, and cleaning up the PID file. |
|
|
69
|
+
| [`security-and-permissions`](../examples/production-cli-daemon/security-and-permissions.md) | Advanced | Shows how to secure a local daemon with restrictive socket permissions, XDG-compliant config storage, and file-based secret management. |
|
|
70
|
+
|
|
71
|
+
> See all examples in [`examples/production-cli-daemon/`](../examples/production-cli-daemon/)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-cloudflare
|
|
3
|
+
description: Checklist for deploying FrontMCP to Cloudflare Workers with KV and Durable Objects
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Cloudflare Workers
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for deploying FrontMCP to Cloudflare Workers.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for Cloudflare-specific items.
|
|
11
|
+
|
|
12
|
+
## Wrangler Configuration
|
|
13
|
+
|
|
14
|
+
- [ ] `wrangler.toml` is configured with correct routes and bindings
|
|
15
|
+
- [ ] `frontmcp build --target cloudflare` produces the correct output
|
|
16
|
+
- [ ] Environment variables are set via `wrangler secret put` or dashboard
|
|
17
|
+
- [ ] Custom domain or `*.workers.dev` subdomain is configured for CORS
|
|
18
|
+
|
|
19
|
+
## Workers Runtime
|
|
20
|
+
|
|
21
|
+
- [ ] No Node.js-only APIs used (Workers use V8 isolates, not Node)
|
|
22
|
+
- [ ] No `node:crypto` or `node:fs` — use `@frontmcp/utils` or Web APIs
|
|
23
|
+
- [ ] Bundle size is within Workers limits (< 10MB compressed)
|
|
24
|
+
- [ ] No `eval()` or dynamic `Function()` (prohibited in Workers)
|
|
25
|
+
- [ ] Async I/O only — no synchronous blocking operations
|
|
26
|
+
|
|
27
|
+
## Storage
|
|
28
|
+
|
|
29
|
+
- [ ] Session storage uses Workers KV, Durable Objects, or D1
|
|
30
|
+
- [ ] Cache uses Workers KV or Cache API
|
|
31
|
+
- [ ] No file system access (Workers have no filesystem)
|
|
32
|
+
- [ ] R2 is used for blob/file storage if needed
|
|
33
|
+
|
|
34
|
+
## Performance
|
|
35
|
+
|
|
36
|
+
- [ ] Cold start time is within Workers limits (< 50ms)
|
|
37
|
+
- [ ] No heavy initialization at module scope
|
|
38
|
+
- [ ] Lazy-load dependencies
|
|
39
|
+
- [ ] Request handling completes within CPU time limits
|
|
40
|
+
|
|
41
|
+
## Scaling
|
|
42
|
+
|
|
43
|
+
- [ ] Stateless design (Workers are ephemeral)
|
|
44
|
+
- [ ] Durable Objects used for stateful coordination (if needed)
|
|
45
|
+
- [ ] No in-memory caching between requests (use KV instead)
|
|
46
|
+
|
|
47
|
+
## CI/CD
|
|
48
|
+
|
|
49
|
+
- [ ] `wrangler.toml` environment configs for staging/production
|
|
50
|
+
- [ ] Secrets set via `wrangler secret put`
|
|
51
|
+
- [ ] Deploy with `wrangler deploy` (not manual upload)
|
|
52
|
+
- [ ] Tail logs: `wrangler tail` for production debugging
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
| Example | Level | Description |
|
|
57
|
+
| ------------------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
58
|
+
| [`durable-objects-state`](../examples/production-cloudflare/durable-objects-state.md) | Advanced | Shows how to use Cloudflare Durable Objects for stateful coordination alongside the stateless Workers runtime, with KV for cache and R2 for blob storage. |
|
|
59
|
+
| [`workers-runtime-constraints`](../examples/production-cloudflare/workers-runtime-constraints.md) | Intermediate | Shows how to write tools that are compatible with the Cloudflare Workers runtime: no Node.js APIs, no eval, only async I/O, and using Web APIs. |
|
|
60
|
+
| [`wrangler-config`](../examples/production-cloudflare/wrangler-config.md) | Basic | Shows how to configure `wrangler.toml` with correct routes, KV bindings for session storage, and secret management for a FrontMCP Cloudflare Worker. |
|
|
61
|
+
|
|
62
|
+
> See all examples in [`examples/production-cloudflare/`](../examples/production-cloudflare/)
|