@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,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unix-socket-daemon
|
|
3
|
+
reference: build-for-cli
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Run a FrontMCP server as a local daemon accessible via Unix socket for IDE extensions and local MCP clients.'
|
|
6
|
+
tags: [deployment, unix-socket, cli, transport, local, unix]
|
|
7
|
+
features:
|
|
8
|
+
- 'Configuring a FrontMCP server for Unix socket transport instead of TCP'
|
|
9
|
+
- 'Running the server as a background daemon with process management (`frontmcp start/stop/status`)'
|
|
10
|
+
- 'Installing the daemon as a system service for automatic startup on reboot'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Unix Socket Daemon Mode
|
|
14
|
+
|
|
15
|
+
Run a FrontMCP server as a local daemon accessible via Unix socket for IDE extensions and local MCP clients.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/main.ts
|
|
21
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
|
|
24
|
+
@Tool({
|
|
25
|
+
name: 'lookup',
|
|
26
|
+
description: 'Look up a term in the local database',
|
|
27
|
+
inputSchema: { term: z.string() },
|
|
28
|
+
})
|
|
29
|
+
class LookupTool extends ToolContext<{ term: string }> {
|
|
30
|
+
async execute(input: { term: string }) {
|
|
31
|
+
return { content: [{ type: 'text' as const, text: `Result for: ${input.term}` }] };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@App({ name: 'DaemonApp', tools: [LookupTool] })
|
|
36
|
+
class DaemonApp {}
|
|
37
|
+
|
|
38
|
+
@FrontMcp({
|
|
39
|
+
info: { name: 'my-daemon', version: '1.0.0' },
|
|
40
|
+
apps: [DaemonApp],
|
|
41
|
+
http: { socketPath: '/tmp/my-tool.sock' },
|
|
42
|
+
sqlite: { path: '~/.my-tool/data.db' },
|
|
43
|
+
})
|
|
44
|
+
class MyDaemonServer {}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Start daemon in foreground
|
|
49
|
+
frontmcp socket ./src/main.ts -s ~/.frontmcp/sockets/my-app.sock
|
|
50
|
+
|
|
51
|
+
# Start daemon in background with a local database
|
|
52
|
+
frontmcp socket ./src/main.ts -b --db ~/.my-tool/data.db
|
|
53
|
+
|
|
54
|
+
# Manage the daemon process
|
|
55
|
+
frontmcp start my-daemon -e ./src/main.ts --max-restarts 5
|
|
56
|
+
frontmcp status my-daemon
|
|
57
|
+
frontmcp logs my-daemon -F
|
|
58
|
+
frontmcp stop my-daemon
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Install as a system service for automatic startup
|
|
63
|
+
# Linux: creates a systemd unit
|
|
64
|
+
# macOS: creates a launchd plist
|
|
65
|
+
frontmcp service install my-daemon
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## What This Demonstrates
|
|
69
|
+
|
|
70
|
+
- Configuring a FrontMCP server for Unix socket transport instead of TCP
|
|
71
|
+
- Running the server as a background daemon with process management (`frontmcp start/stop/status`)
|
|
72
|
+
- Installing the daemon as a system service for automatic startup on reboot
|
|
73
|
+
|
|
74
|
+
## Related
|
|
75
|
+
|
|
76
|
+
- See `build-for-cli` for the full process management and system service reference
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connect-openai
|
|
3
|
+
reference: build-for-sdk
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: "Use `connectOpenAI()` to get tools formatted for OpenAI's function-calling API."
|
|
6
|
+
tags: [deployment, sdk, openai, session, connect]
|
|
7
|
+
features:
|
|
8
|
+
- 'Setting `serve: false` to prevent the HTTP server from starting in library mode'
|
|
9
|
+
- 'Using `connectOpenAI()` to get tools in OpenAI function-calling format automatically'
|
|
10
|
+
- 'Passing session information via `ConnectOptions` for user context'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Connect to OpenAI Function Calling
|
|
14
|
+
|
|
15
|
+
Use `connectOpenAI()` to get tools formatted for OpenAI's function-calling API.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/openai-integration.ts
|
|
21
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
22
|
+
import { connectOpenAI } from '@frontmcp/sdk';
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
|
|
25
|
+
@Tool({
|
|
26
|
+
name: 'search_docs',
|
|
27
|
+
description: 'Search documentation by keyword',
|
|
28
|
+
inputSchema: { query: z.string(), limit: z.number().optional() },
|
|
29
|
+
})
|
|
30
|
+
class SearchDocsTool extends ToolContext<{ query: string; limit?: number }> {
|
|
31
|
+
async execute(input: { query: string; limit?: number }) {
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text' as const, text: `Found results for: ${input.query}` }],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@App({ name: 'DocsApp', tools: [SearchDocsTool] })
|
|
39
|
+
class DocsApp {}
|
|
40
|
+
|
|
41
|
+
@FrontMcp({
|
|
42
|
+
info: { name: 'docs-sdk', version: '1.0.0' },
|
|
43
|
+
apps: [DocsApp],
|
|
44
|
+
serve: false, // No HTTP server - library mode only
|
|
45
|
+
})
|
|
46
|
+
class DocsSDK {}
|
|
47
|
+
|
|
48
|
+
// Connect with OpenAI-formatted tools
|
|
49
|
+
async function main() {
|
|
50
|
+
const client = await connectOpenAI(DocsSDK, {
|
|
51
|
+
session: { id: 'user-123', user: { sub: 'user-id' } },
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Tools are returned in OpenAI format:
|
|
55
|
+
// [{ type: 'function', function: { name, description, parameters, strict: true } }]
|
|
56
|
+
const tools = await client.listTools();
|
|
57
|
+
console.log(JSON.stringify(tools, null, 2));
|
|
58
|
+
|
|
59
|
+
// Call a tool
|
|
60
|
+
const result = await client.callTool('search_docs', { query: 'authentication' });
|
|
61
|
+
console.log(result);
|
|
62
|
+
|
|
63
|
+
// Always clean up
|
|
64
|
+
await client.close();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
main();
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## What This Demonstrates
|
|
71
|
+
|
|
72
|
+
- Setting `serve: false` to prevent the HTTP server from starting in library mode
|
|
73
|
+
- Using `connectOpenAI()` to get tools in OpenAI function-calling format automatically
|
|
74
|
+
- Passing session information via `ConnectOptions` for user context
|
|
75
|
+
|
|
76
|
+
## Related
|
|
77
|
+
|
|
78
|
+
- See `build-for-sdk` for `connectClaude()`, `connectLangChain()`, and `connectVercelAI()` alternatives
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-flat-config
|
|
3
|
+
reference: build-for-sdk
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Spin up an in-memory FrontMCP server from a flat config object using `create()`.'
|
|
6
|
+
tags: [deployment, sdk, cache, flat, config]
|
|
7
|
+
features:
|
|
8
|
+
- 'Using `create()` to spin up a server without decorators or classes'
|
|
9
|
+
- 'Calling tools directly via `server.callTool()` with zero network overhead'
|
|
10
|
+
- 'Using `cacheKey` to reuse the same server instance across multiple calls'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Programmatic Server with create()
|
|
14
|
+
|
|
15
|
+
Spin up an in-memory FrontMCP server from a flat config object using `create()`.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/embedded-server.ts
|
|
21
|
+
import { create, tool } from '@frontmcp/sdk';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
|
|
24
|
+
async function main() {
|
|
25
|
+
const server = await create({
|
|
26
|
+
info: { name: 'my-service', version: '1.0.0' },
|
|
27
|
+
tools: [
|
|
28
|
+
tool({
|
|
29
|
+
name: 'calculate',
|
|
30
|
+
description: 'Perform calculation',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
a: z.number(),
|
|
33
|
+
b: z.number(),
|
|
34
|
+
operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
|
|
35
|
+
},
|
|
36
|
+
outputSchema: { result: z.number() },
|
|
37
|
+
})((input) => {
|
|
38
|
+
switch (input.operation) {
|
|
39
|
+
case 'add':
|
|
40
|
+
return { result: input.a + input.b };
|
|
41
|
+
case 'subtract':
|
|
42
|
+
return { result: input.a - input.b };
|
|
43
|
+
case 'multiply':
|
|
44
|
+
return { result: input.a * input.b };
|
|
45
|
+
case 'divide':
|
|
46
|
+
return { result: input.a / input.b };
|
|
47
|
+
}
|
|
48
|
+
}),
|
|
49
|
+
],
|
|
50
|
+
cacheKey: 'my-service', // Reuse same instance on repeated calls
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Call tools directly - no HTTP involved
|
|
54
|
+
const result = await server.callTool('calculate', { a: 2, b: 2, operation: 'add' });
|
|
55
|
+
console.log(result); // { result: 4 }
|
|
56
|
+
|
|
57
|
+
// List available tools
|
|
58
|
+
const { tools } = await server.listTools();
|
|
59
|
+
console.log(tools.map((t) => t.name)); // ['calculate']
|
|
60
|
+
|
|
61
|
+
// Clean up when done
|
|
62
|
+
await server.dispose();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
main();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Build as an SDK library
|
|
70
|
+
frontmcp build --target sdk
|
|
71
|
+
|
|
72
|
+
# Verify outputs
|
|
73
|
+
ls dist/
|
|
74
|
+
# my-service.cjs.js my-service.esm.mjs *.d.ts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## What This Demonstrates
|
|
78
|
+
|
|
79
|
+
- Using `create()` to spin up a server without decorators or classes
|
|
80
|
+
- Calling tools directly via `server.callTool()` with zero network overhead
|
|
81
|
+
- Using `cacheKey` to reuse the same server instance across multiple calls
|
|
82
|
+
|
|
83
|
+
## Related
|
|
84
|
+
|
|
85
|
+
- See `build-for-sdk` for the full `CreateConfig` fields and `DirectClient` API
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-platform-connect
|
|
3
|
+
reference: build-for-sdk
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'Connect the same FrontMCP server to multiple LLM platforms using platform-specific `connect*()` functions.'
|
|
6
|
+
tags: [deployment, sdk, multi, platform, connect]
|
|
7
|
+
features:
|
|
8
|
+
- 'Connecting a single FrontMCP server to four different LLM platforms with automatic schema translation'
|
|
9
|
+
- "Each `connect*()` function returns tools in the platform's native format"
|
|
10
|
+
- 'All clients share the same `DirectClient` API (`listTools`, `callTool`, `close`)'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Multi-Platform Tool Connection
|
|
14
|
+
|
|
15
|
+
Connect the same FrontMCP server to multiple LLM platforms using platform-specific `connect*()` functions.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/server.ts
|
|
21
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
|
|
24
|
+
@Tool({
|
|
25
|
+
name: 'translate',
|
|
26
|
+
description: 'Translate text to a target language',
|
|
27
|
+
inputSchema: { text: z.string(), targetLang: z.string() },
|
|
28
|
+
})
|
|
29
|
+
class TranslateTool extends ToolContext<{ text: string; targetLang: string }> {
|
|
30
|
+
async execute(input: { text: string; targetLang: string }) {
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: 'text' as const, text: `[${input.targetLang}] ${input.text}` }],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@App({ name: 'TranslateApp', tools: [TranslateTool] })
|
|
38
|
+
class TranslateApp {}
|
|
39
|
+
|
|
40
|
+
@FrontMcp({
|
|
41
|
+
info: { name: 'translate-sdk', version: '1.0.0' },
|
|
42
|
+
apps: [TranslateApp],
|
|
43
|
+
serve: false,
|
|
44
|
+
})
|
|
45
|
+
class TranslateSDK {}
|
|
46
|
+
|
|
47
|
+
export default TranslateSDK;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// src/connect-all-platforms.ts
|
|
52
|
+
import { connectOpenAI, connectClaude, connectLangChain, connectVercelAI } from '@frontmcp/sdk';
|
|
53
|
+
import TranslateSDK from './server';
|
|
54
|
+
|
|
55
|
+
async function main() {
|
|
56
|
+
// OpenAI format: [{ type: 'function', function: { name, description, parameters, strict: true } }]
|
|
57
|
+
const openaiClient = await connectOpenAI(TranslateSDK, {
|
|
58
|
+
clientInfo: { name: 'my-app', version: '1.0' },
|
|
59
|
+
session: { id: 'session-1', user: { sub: 'user-1', name: 'Alice' } },
|
|
60
|
+
});
|
|
61
|
+
const openaiTools = await openaiClient.listTools();
|
|
62
|
+
console.log('OpenAI tools:', openaiTools);
|
|
63
|
+
|
|
64
|
+
// Claude format: [{ name, description, input_schema }]
|
|
65
|
+
const claudeClient = await connectClaude(TranslateSDK);
|
|
66
|
+
const claudeTools = await claudeClient.listTools();
|
|
67
|
+
console.log('Claude tools:', claudeTools);
|
|
68
|
+
|
|
69
|
+
// LangChain tool schema format
|
|
70
|
+
const langchainClient = await connectLangChain(TranslateSDK);
|
|
71
|
+
const langchainTools = await langchainClient.listTools();
|
|
72
|
+
console.log('LangChain tools:', langchainTools);
|
|
73
|
+
|
|
74
|
+
// Vercel AI SDK format
|
|
75
|
+
const vercelClient = await connectVercelAI(TranslateSDK);
|
|
76
|
+
const vercelTools = await vercelClient.listTools();
|
|
77
|
+
console.log('Vercel AI tools:', vercelTools);
|
|
78
|
+
|
|
79
|
+
// All clients share the same DirectClient API
|
|
80
|
+
const result = await openaiClient.callTool('translate', {
|
|
81
|
+
text: 'Hello',
|
|
82
|
+
targetLang: 'es',
|
|
83
|
+
});
|
|
84
|
+
console.log(result);
|
|
85
|
+
|
|
86
|
+
// Clean up all clients
|
|
87
|
+
await openaiClient.close();
|
|
88
|
+
await claudeClient.close();
|
|
89
|
+
await langchainClient.close();
|
|
90
|
+
await vercelClient.close();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
main();
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## What This Demonstrates
|
|
97
|
+
|
|
98
|
+
- Connecting a single FrontMCP server to four different LLM platforms with automatic schema translation
|
|
99
|
+
- Each `connect*()` function returns tools in the platform's native format
|
|
100
|
+
- All clients share the same `DirectClient` API (`listTools`, `callTool`, `close`)
|
|
101
|
+
|
|
102
|
+
## Related
|
|
103
|
+
|
|
104
|
+
- See `build-for-sdk` for the full `DirectClient` API reference and `ConnectOptions` details
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: basic-worker-deploy
|
|
3
|
+
reference: deploy-to-cloudflare
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Deploy a FrontMCP server to Cloudflare Workers with a minimal configuration.'
|
|
6
|
+
tags: [deployment, cloudflare, transport, local, worker]
|
|
7
|
+
features:
|
|
8
|
+
- 'A minimal FrontMCP server configured for Cloudflare Workers with SSE transport'
|
|
9
|
+
- 'The `wrangler.toml` configuration with `main` pointing to the build output'
|
|
10
|
+
- 'Using `wrangler dev` for local testing before deploying with `wrangler deploy`'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Basic Cloudflare Workers Deployment
|
|
14
|
+
|
|
15
|
+
Deploy a FrontMCP server to Cloudflare Workers with a minimal configuration.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/server.ts
|
|
21
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
|
|
24
|
+
@Tool({
|
|
25
|
+
name: 'echo',
|
|
26
|
+
description: 'Echo back the input',
|
|
27
|
+
inputSchema: { message: z.string() },
|
|
28
|
+
})
|
|
29
|
+
class EchoTool extends ToolContext<{ message: string }> {
|
|
30
|
+
async execute(input: { message: string }) {
|
|
31
|
+
return { content: [{ type: 'text' as const, text: input.message }] };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@App({ name: 'MyApp', tools: [EchoTool] })
|
|
36
|
+
class MyApp {}
|
|
37
|
+
|
|
38
|
+
@FrontMcp({
|
|
39
|
+
info: { name: 'my-worker', version: '1.0.0' },
|
|
40
|
+
apps: [MyApp],
|
|
41
|
+
transport: {
|
|
42
|
+
protocol: 'legacy',
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
class MyServer {}
|
|
46
|
+
|
|
47
|
+
export default MyServer;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```toml
|
|
51
|
+
# wrangler.toml
|
|
52
|
+
name = "frontmcp-worker"
|
|
53
|
+
main = "dist/index.js"
|
|
54
|
+
compatibility_date = "2024-01-01"
|
|
55
|
+
|
|
56
|
+
[vars]
|
|
57
|
+
NODE_ENV = "production"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Build for Cloudflare Workers
|
|
62
|
+
frontmcp build --target cloudflare
|
|
63
|
+
|
|
64
|
+
# Preview locally
|
|
65
|
+
wrangler dev
|
|
66
|
+
|
|
67
|
+
# Deploy to production
|
|
68
|
+
wrangler deploy
|
|
69
|
+
|
|
70
|
+
# Verify
|
|
71
|
+
curl https://frontmcp-worker.your-subdomain.workers.dev/health
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## What This Demonstrates
|
|
75
|
+
|
|
76
|
+
- A minimal FrontMCP server configured for Cloudflare Workers with SSE transport
|
|
77
|
+
- The `wrangler.toml` configuration with `main` pointing to the build output
|
|
78
|
+
- Using `wrangler dev` for local testing before deploying with `wrangler deploy`
|
|
79
|
+
|
|
80
|
+
## Related
|
|
81
|
+
|
|
82
|
+
- See `deploy-to-cloudflare` for KV storage, D1, bundle size limits, and troubleshooting
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: worker-custom-domain
|
|
3
|
+
reference: deploy-to-cloudflare
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'Scaffold a FrontMCP project targeting Cloudflare, configure a custom domain, and verify the deployment.'
|
|
6
|
+
tags: [deployment, json-rpc, cloudflare, worker, custom, domain]
|
|
7
|
+
features:
|
|
8
|
+
- 'Using `frontmcp create --target cloudflare` to scaffold a project with `wrangler.toml` and deploy scripts'
|
|
9
|
+
- 'Adding a custom domain with `wrangler domains add` for production-ready URLs'
|
|
10
|
+
- 'End-to-end verification of both the health check and MCP JSON-RPC endpoint'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Cloudflare Worker with Custom Domain and Project Scaffold
|
|
14
|
+
|
|
15
|
+
Scaffold a FrontMCP project targeting Cloudflare, configure a custom domain, and verify the deployment.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Scaffold a new project targeting Cloudflare
|
|
21
|
+
npx frontmcp create my-app --target cloudflare
|
|
22
|
+
cd my-app
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// src/server.ts
|
|
27
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
28
|
+
import { z } from 'zod';
|
|
29
|
+
|
|
30
|
+
@Tool({
|
|
31
|
+
name: 'translate',
|
|
32
|
+
description: 'Translate text',
|
|
33
|
+
inputSchema: { text: z.string(), lang: z.string() },
|
|
34
|
+
})
|
|
35
|
+
class TranslateTool extends ToolContext<{ text: string; lang: string }> {
|
|
36
|
+
async execute(input: { text: string; lang: string }) {
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: 'text' as const, text: `[${input.lang}] ${input.text}` }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@App({ name: 'TranslateApp', tools: [TranslateTool] })
|
|
44
|
+
class TranslateApp {}
|
|
45
|
+
|
|
46
|
+
@FrontMcp({
|
|
47
|
+
info: { name: 'translate-worker', version: '1.0.0' },
|
|
48
|
+
apps: [TranslateApp],
|
|
49
|
+
transport: {
|
|
50
|
+
type: 'sse',
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
class TranslateServer {}
|
|
54
|
+
|
|
55
|
+
export default TranslateServer;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```toml
|
|
59
|
+
# wrangler.toml
|
|
60
|
+
name = "translate-worker"
|
|
61
|
+
main = "dist/index.js"
|
|
62
|
+
compatibility_date = "2024-01-01"
|
|
63
|
+
|
|
64
|
+
[[kv_namespaces]]
|
|
65
|
+
binding = "FRONTMCP_KV"
|
|
66
|
+
id = "your-kv-namespace-id"
|
|
67
|
+
|
|
68
|
+
[vars]
|
|
69
|
+
NODE_ENV = "production"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Build and deploy
|
|
74
|
+
frontmcp build --target cloudflare
|
|
75
|
+
wrangler deploy
|
|
76
|
+
|
|
77
|
+
# Add a custom domain
|
|
78
|
+
wrangler domains add mcp.example.com
|
|
79
|
+
|
|
80
|
+
# Verify health endpoint
|
|
81
|
+
curl https://mcp.example.com/health
|
|
82
|
+
|
|
83
|
+
# Test MCP endpoint
|
|
84
|
+
curl -X POST https://mcp.example.com/mcp \
|
|
85
|
+
-H "Content-Type: application/json" \
|
|
86
|
+
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## What This Demonstrates
|
|
90
|
+
|
|
91
|
+
- Using `frontmcp create --target cloudflare` to scaffold a project with `wrangler.toml` and deploy scripts
|
|
92
|
+
- Adding a custom domain with `wrangler domains add` for production-ready URLs
|
|
93
|
+
- End-to-end verification of both the health check and MCP JSON-RPC endpoint
|
|
94
|
+
|
|
95
|
+
## Related
|
|
96
|
+
|
|
97
|
+
- See `deploy-to-cloudflare` for bundle size limits, CPU time constraints, and the full storage options table
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: worker-with-kv-storage
|
|
3
|
+
reference: deploy-to-cloudflare
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Deploy a FrontMCP server to Cloudflare Workers with KV namespace for session and state storage.'
|
|
6
|
+
tags: [deployment, cloudflare, cli, session, worker, kv]
|
|
7
|
+
features:
|
|
8
|
+
- 'Binding a KV namespace in `wrangler.toml` with `[[kv_namespaces]]`'
|
|
9
|
+
- 'Using `wrangler secret put` for sensitive values instead of `[vars]` (which are visible in plaintext)'
|
|
10
|
+
- 'Creating the KV namespace via CLI and copying the ID into the configuration'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Cloudflare Worker with KV Storage
|
|
14
|
+
|
|
15
|
+
Deploy a FrontMCP server to Cloudflare Workers with KV namespace for session and state storage.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/server.ts
|
|
21
|
+
import { FrontMcp, App, Tool, ToolContext } from '@frontmcp/sdk';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
|
|
24
|
+
@Tool({
|
|
25
|
+
name: 'store_value',
|
|
26
|
+
description: 'Store a value by key',
|
|
27
|
+
inputSchema: { key: z.string(), value: z.string() },
|
|
28
|
+
})
|
|
29
|
+
class StoreValueTool extends ToolContext<{ key: string; value: string }> {
|
|
30
|
+
async execute(input: { key: string; value: string }) {
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: 'text' as const, text: `Stored: ${input.key}` }],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@App({ name: 'StorageApp', tools: [StoreValueTool] })
|
|
38
|
+
class StorageApp {}
|
|
39
|
+
|
|
40
|
+
@FrontMcp({
|
|
41
|
+
info: { name: 'my-worker', version: '1.0.0' },
|
|
42
|
+
apps: [StorageApp],
|
|
43
|
+
transport: {
|
|
44
|
+
type: 'sse',
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
class MyServer {}
|
|
48
|
+
|
|
49
|
+
export default MyServer;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```toml
|
|
53
|
+
# wrangler.toml
|
|
54
|
+
name = "frontmcp-worker"
|
|
55
|
+
main = "dist/index.js"
|
|
56
|
+
compatibility_date = "2024-01-01"
|
|
57
|
+
|
|
58
|
+
[[kv_namespaces]]
|
|
59
|
+
binding = "FRONTMCP_KV"
|
|
60
|
+
id = "your-kv-namespace-id"
|
|
61
|
+
|
|
62
|
+
[vars]
|
|
63
|
+
NODE_ENV = "production"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Create the KV namespace
|
|
68
|
+
wrangler kv:namespace create FRONTMCP_KV
|
|
69
|
+
# Copy the returned id into wrangler.toml
|
|
70
|
+
|
|
71
|
+
# Store secrets securely (not in [vars])
|
|
72
|
+
wrangler secret put MY_API_KEY
|
|
73
|
+
|
|
74
|
+
# Build and deploy
|
|
75
|
+
frontmcp build --target cloudflare
|
|
76
|
+
wrangler deploy
|
|
77
|
+
|
|
78
|
+
# Verify
|
|
79
|
+
curl -X POST https://frontmcp-worker.your-subdomain.workers.dev/mcp \
|
|
80
|
+
-H "Content-Type: application/json" \
|
|
81
|
+
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## What This Demonstrates
|
|
85
|
+
|
|
86
|
+
- Binding a KV namespace in `wrangler.toml` with `[[kv_namespaces]]`
|
|
87
|
+
- Using `wrangler secret put` for sensitive values instead of `[vars]` (which are visible in plaintext)
|
|
88
|
+
- Creating the KV namespace via CLI and copying the ID into the configuration
|
|
89
|
+
|
|
90
|
+
## Related
|
|
91
|
+
|
|
92
|
+
- See `deploy-to-cloudflare` for D1, Durable Objects, bundle size limits, and storage comparison table
|