@frontmcp/skills 1.0.0-beta.13 → 1.0.0-beta.14
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/catalog/TEMPLATE.md +55 -0
- package/catalog/frontmcp-config/SKILL.md +2 -2
- 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 +10 -0
- package/catalog/frontmcp-config/references/configure-auth.md +10 -0
- package/catalog/frontmcp-config/references/configure-elicitation.md +9 -0
- package/catalog/frontmcp-config/references/configure-http.md +10 -0
- package/catalog/frontmcp-config/references/configure-session.md +10 -0
- package/catalog/frontmcp-config/references/configure-throttle-guard-config.md +9 -0
- package/catalog/frontmcp-config/references/configure-throttle.md +10 -0
- package/catalog/frontmcp-config/references/configure-transport-protocol-presets.md +9 -0
- package/catalog/frontmcp-config/references/configure-transport.md +10 -0
- package/catalog/frontmcp-config/references/setup-redis.md +5 -0
- package/catalog/frontmcp-config/references/setup-sqlite.md +5 -0
- package/catalog/frontmcp-deployment/SKILL.md +2 -2
- 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 +10 -0
- package/catalog/frontmcp-deployment/references/build-for-cli.md +9 -0
- package/catalog/frontmcp-deployment/references/build-for-sdk.md +10 -0
- package/catalog/frontmcp-deployment/references/deploy-to-cloudflare.md +10 -0
- package/catalog/frontmcp-deployment/references/deploy-to-lambda.md +10 -0
- package/catalog/frontmcp-deployment/references/deploy-to-node-dockerfile.md +9 -0
- package/catalog/frontmcp-deployment/references/deploy-to-node.md +10 -0
- package/catalog/frontmcp-deployment/references/deploy-to-vercel-config.md +9 -0
- package/catalog/frontmcp-deployment/references/deploy-to-vercel.md +10 -0
- package/catalog/frontmcp-development/SKILL.md +2 -2
- 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 +9 -0
- package/catalog/frontmcp-development/references/create-agent-llm-config.md +9 -0
- package/catalog/frontmcp-development/references/create-agent.md +10 -0
- package/catalog/frontmcp-development/references/create-job.md +10 -0
- package/catalog/frontmcp-development/references/create-plugin-hooks.md +10 -0
- package/catalog/frontmcp-development/references/create-plugin.md +10 -0
- package/catalog/frontmcp-development/references/create-prompt.md +10 -0
- package/catalog/frontmcp-development/references/create-provider.md +9 -0
- package/catalog/frontmcp-development/references/create-resource.md +52 -15
- package/catalog/frontmcp-development/references/create-skill-with-tools.md +10 -0
- package/catalog/frontmcp-development/references/create-skill.md +10 -0
- package/catalog/frontmcp-development/references/create-tool-annotations.md +9 -0
- package/catalog/frontmcp-development/references/create-tool-output-schema-types.md +10 -0
- package/catalog/frontmcp-development/references/create-tool.md +10 -0
- package/catalog/frontmcp-development/references/create-workflow.md +10 -0
- package/catalog/frontmcp-development/references/decorators-guide.md +10 -0
- package/catalog/frontmcp-development/references/official-adapters.md +10 -0
- package/catalog/frontmcp-development/references/official-plugins.md +10 -0
- package/catalog/frontmcp-extensibility/SKILL.md +1 -1
- 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 +10 -0
- package/catalog/frontmcp-guides/SKILL.md +2 -2
- 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 +10 -0
- package/catalog/frontmcp-guides/references/example-task-manager.md +10 -0
- package/catalog/frontmcp-guides/references/example-weather-api.md +10 -0
- package/catalog/frontmcp-production-readiness/SKILL.md +2 -2
- 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/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 +10 -0
- package/catalog/frontmcp-production-readiness/references/production-browser.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-binary.md +9 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-daemon.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-cloudflare.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-lambda.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-node-sdk.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-node-server.md +10 -0
- package/catalog/frontmcp-production-readiness/references/production-vercel.md +10 -0
- 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 +9 -0
- package/catalog/frontmcp-setup/references/multi-app-composition.md +10 -0
- package/catalog/frontmcp-setup/references/nx-workflow.md +10 -0
- package/catalog/frontmcp-setup/references/project-structure-nx.md +10 -0
- package/catalog/frontmcp-setup/references/project-structure-standalone.md +10 -0
- package/catalog/frontmcp-setup/references/readme-guide.md +9 -0
- package/catalog/frontmcp-setup/references/setup-project.md +10 -0
- package/catalog/frontmcp-setup/references/setup-redis.md +10 -0
- package/catalog/frontmcp-setup/references/setup-sqlite.md +10 -0
- 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 +10 -0
- package/catalog/frontmcp-testing/references/test-auth.md +10 -0
- package/catalog/frontmcp-testing/references/test-browser-build.md +9 -0
- package/catalog/frontmcp-testing/references/test-cli-binary.md +9 -0
- package/catalog/frontmcp-testing/references/test-direct-client.md +9 -0
- package/catalog/frontmcp-testing/references/test-e2e-handler.md +10 -0
- package/catalog/frontmcp-testing/references/test-tool-unit.md +10 -0
- package/catalog/skills-manifest.json +2383 -67
- package/package.json +1 -1
- package/src/manifest.d.ts +23 -0
- package/src/manifest.js +3 -1
- package/src/manifest.js.map +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pm2-with-nginx
|
|
3
|
+
reference: deploy-to-node
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Deploy a FrontMCP server on bare metal using PM2 for process management and NGINX for TLS termination.'
|
|
6
|
+
tags: [deployment, nx, node, pm2, nginx]
|
|
7
|
+
features:
|
|
8
|
+
- 'Using PM2 with `-i max` for multi-core clustering and automatic restarts'
|
|
9
|
+
- 'Configuring NGINX as a reverse proxy for TLS termination in front of the FrontMCP server'
|
|
10
|
+
- 'Setting environment variables via `.env` for production configuration'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# PM2 Process Manager with NGINX Reverse Proxy
|
|
14
|
+
|
|
15
|
+
Deploy a FrontMCP server on bare metal using PM2 for process management and NGINX for TLS termination.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Build the server
|
|
21
|
+
frontmcp build --target node
|
|
22
|
+
|
|
23
|
+
# Install PM2 globally
|
|
24
|
+
npm install -g pm2
|
|
25
|
+
|
|
26
|
+
# Start with cluster mode (one instance per CPU core)
|
|
27
|
+
pm2 start dist/main.js --name frontmcp-server -i max
|
|
28
|
+
|
|
29
|
+
# Save the process list for auto-restart on reboot
|
|
30
|
+
pm2 save
|
|
31
|
+
pm2 startup
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```nginx
|
|
35
|
+
# /etc/nginx/sites-available/mcp.example.com
|
|
36
|
+
server {
|
|
37
|
+
listen 443 ssl;
|
|
38
|
+
server_name mcp.example.com;
|
|
39
|
+
|
|
40
|
+
ssl_certificate /etc/ssl/certs/mcp.example.com.pem;
|
|
41
|
+
ssl_certificate_key /etc/ssl/private/mcp.example.com.key;
|
|
42
|
+
|
|
43
|
+
location / {
|
|
44
|
+
proxy_pass http://127.0.0.1:3000;
|
|
45
|
+
proxy_set_header Host $host;
|
|
46
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
47
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
48
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# .env
|
|
55
|
+
PORT=3000
|
|
56
|
+
NODE_ENV=production
|
|
57
|
+
HOST=0.0.0.0
|
|
58
|
+
REDIS_URL=redis://localhost:6379
|
|
59
|
+
LOG_LEVEL=info
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Enable the NGINX site and reload
|
|
64
|
+
sudo ln -s /etc/nginx/sites-available/mcp.example.com /etc/nginx/sites-enabled/
|
|
65
|
+
sudo nginx -t && sudo systemctl reload nginx
|
|
66
|
+
|
|
67
|
+
# Verify
|
|
68
|
+
curl https://mcp.example.com/health
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## What This Demonstrates
|
|
72
|
+
|
|
73
|
+
- Using PM2 with `-i max` for multi-core clustering and automatic restarts
|
|
74
|
+
- Configuring NGINX as a reverse proxy for TLS termination in front of the FrontMCP server
|
|
75
|
+
- Setting environment variables via `.env` for production configuration
|
|
76
|
+
|
|
77
|
+
## Related
|
|
78
|
+
|
|
79
|
+
- See `deploy-to-node` for Docker Compose deployment, resource limits, and the full environment variable reference
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: resource-limits
|
|
3
|
+
reference: deploy-to-node
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'Configure resource limits, health checks, and environment variables for a production FrontMCP deployment.'
|
|
6
|
+
tags: [deployment, docker-compose, docker, node, resource, limits]
|
|
7
|
+
features:
|
|
8
|
+
- 'Setting CPU and memory limits/reservations in Docker Compose to prevent OOM kills'
|
|
9
|
+
- 'Using `NODE_OPTIONS=--max-old-space-size` to align the V8 heap limit with the container memory'
|
|
10
|
+
- 'Configuring health checks with appropriate `start_period` to allow the server time to initialize'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Production Resource Limits and Health Checks
|
|
14
|
+
|
|
15
|
+
Configure resource limits, health checks, and environment variables for a production FrontMCP deployment.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
# docker-compose.yml with resource limits
|
|
21
|
+
version: '3.9'
|
|
22
|
+
|
|
23
|
+
services:
|
|
24
|
+
frontmcp:
|
|
25
|
+
build:
|
|
26
|
+
context: .
|
|
27
|
+
dockerfile: Dockerfile
|
|
28
|
+
ports:
|
|
29
|
+
- '${PORT:-3000}:3000'
|
|
30
|
+
environment:
|
|
31
|
+
- NODE_ENV=production
|
|
32
|
+
- PORT=3000
|
|
33
|
+
- REDIS_URL=redis://redis:6379
|
|
34
|
+
- LOG_LEVEL=info
|
|
35
|
+
- NODE_OPTIONS=--max-old-space-size=384
|
|
36
|
+
depends_on:
|
|
37
|
+
redis:
|
|
38
|
+
condition: service_healthy
|
|
39
|
+
restart: unless-stopped
|
|
40
|
+
deploy:
|
|
41
|
+
resources:
|
|
42
|
+
limits:
|
|
43
|
+
memory: 512M
|
|
44
|
+
cpus: '1.0'
|
|
45
|
+
reservations:
|
|
46
|
+
memory: 256M
|
|
47
|
+
cpus: '0.5'
|
|
48
|
+
healthcheck:
|
|
49
|
+
test: ['CMD', 'wget', '-qO-', 'http://localhost:3000/health']
|
|
50
|
+
interval: 30s
|
|
51
|
+
timeout: 5s
|
|
52
|
+
retries: 3
|
|
53
|
+
start_period: 10s
|
|
54
|
+
|
|
55
|
+
redis:
|
|
56
|
+
image: redis:7-alpine
|
|
57
|
+
volumes:
|
|
58
|
+
- redis-data:/data
|
|
59
|
+
deploy:
|
|
60
|
+
resources:
|
|
61
|
+
limits:
|
|
62
|
+
memory: 128M
|
|
63
|
+
cpus: '0.5'
|
|
64
|
+
healthcheck:
|
|
65
|
+
test: ['CMD', 'redis-cli', 'ping']
|
|
66
|
+
interval: 10s
|
|
67
|
+
timeout: 3s
|
|
68
|
+
retries: 5
|
|
69
|
+
restart: unless-stopped
|
|
70
|
+
|
|
71
|
+
volumes:
|
|
72
|
+
redis-data:
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Verify health check endpoint
|
|
77
|
+
curl http://localhost:3000/health
|
|
78
|
+
# {"status":"ok","uptime":12345}
|
|
79
|
+
|
|
80
|
+
# Monitor resource usage
|
|
81
|
+
docker stats --no-stream
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## What This Demonstrates
|
|
85
|
+
|
|
86
|
+
- Setting CPU and memory limits/reservations in Docker Compose to prevent OOM kills
|
|
87
|
+
- Using `NODE_OPTIONS=--max-old-space-size` to align the V8 heap limit with the container memory
|
|
88
|
+
- Configuring health checks with appropriate `start_period` to allow the server time to initialize
|
|
89
|
+
|
|
90
|
+
## Related
|
|
91
|
+
|
|
92
|
+
- See `deploy-to-node` for the full deployment guide including Dockerfile, PM2, and NGINX setup
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: basic-multistage-dockerfile
|
|
3
|
+
reference: deploy-to-node-dockerfile
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'A minimal multi-stage Dockerfile for building and running a FrontMCP server in production.'
|
|
6
|
+
tags: [deployment, dockerfile, docker, node, multistage]
|
|
7
|
+
features:
|
|
8
|
+
- 'Two-stage build: the first stage installs all dependencies and builds; the second copies only production artifacts'
|
|
9
|
+
- 'Using `yarn install --production` in the production stage to exclude dev dependencies'
|
|
10
|
+
- 'A health check that verifies the server is responding'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Basic Multi-Stage Dockerfile
|
|
14
|
+
|
|
15
|
+
A minimal multi-stage Dockerfile for building and running a FrontMCP server in production.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```dockerfile
|
|
20
|
+
# Dockerfile
|
|
21
|
+
|
|
22
|
+
# ---- Build Stage ----
|
|
23
|
+
FROM node:24-alpine AS builder
|
|
24
|
+
WORKDIR /app
|
|
25
|
+
COPY package.json yarn.lock ./
|
|
26
|
+
RUN yarn install --frozen-lockfile
|
|
27
|
+
COPY . .
|
|
28
|
+
RUN yarn frontmcp build --target node
|
|
29
|
+
|
|
30
|
+
# ---- Production Stage ----
|
|
31
|
+
FROM node:24-alpine AS production
|
|
32
|
+
WORKDIR /app
|
|
33
|
+
ENV NODE_ENV=production
|
|
34
|
+
ENV PORT=3000
|
|
35
|
+
COPY --from=builder /app/dist ./dist
|
|
36
|
+
COPY --from=builder /app/package.json ./
|
|
37
|
+
COPY --from=builder /app/yarn.lock ./
|
|
38
|
+
RUN yarn install --frozen-lockfile --production && \
|
|
39
|
+
yarn cache clean
|
|
40
|
+
EXPOSE 3000
|
|
41
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
42
|
+
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
|
|
43
|
+
CMD ["node", "dist/main.js"]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Build and run the container
|
|
48
|
+
docker build -t my-frontmcp-server .
|
|
49
|
+
docker run -p 3000:3000 -e NODE_ENV=production my-frontmcp-server
|
|
50
|
+
|
|
51
|
+
# Verify
|
|
52
|
+
curl http://localhost:3000/health
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## What This Demonstrates
|
|
56
|
+
|
|
57
|
+
- Two-stage build: the first stage installs all dependencies and builds; the second copies only production artifacts
|
|
58
|
+
- Using `yarn install --production` in the production stage to exclude dev dependencies
|
|
59
|
+
- A health check that verifies the server is responding
|
|
60
|
+
|
|
61
|
+
## Related
|
|
62
|
+
|
|
63
|
+
- See `deploy-to-node-dockerfile` for the complete reference Dockerfile with security hardening
|
package/catalog/frontmcp-deployment/examples/deploy-to-node-dockerfile/secure-nonroot-dockerfile.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: secure-nonroot-dockerfile
|
|
3
|
+
reference: deploy-to-node-dockerfile
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'A production Dockerfile with a non-root user, proper ownership, and security hardening.'
|
|
6
|
+
tags: [deployment, dockerfile, docker, security, node, secure]
|
|
7
|
+
features:
|
|
8
|
+
- 'Creating a dedicated non-root user (`frontmcp`) and switching to it with `USER`'
|
|
9
|
+
- 'Setting file ownership before switching users so the process can read its own files'
|
|
10
|
+
- 'Combining the Dockerfile with runtime resource limits (`--memory`, `--cpus`)'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Secure Non-Root Dockerfile
|
|
14
|
+
|
|
15
|
+
A production Dockerfile with a non-root user, proper ownership, and security hardening.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```dockerfile
|
|
20
|
+
# Dockerfile
|
|
21
|
+
|
|
22
|
+
# ---- Build Stage ----
|
|
23
|
+
FROM node:24-alpine AS builder
|
|
24
|
+
WORKDIR /app
|
|
25
|
+
COPY package.json yarn.lock ./
|
|
26
|
+
RUN yarn install --frozen-lockfile
|
|
27
|
+
COPY . .
|
|
28
|
+
RUN yarn frontmcp build --target node
|
|
29
|
+
|
|
30
|
+
# ---- Production Stage ----
|
|
31
|
+
FROM node:24-alpine AS production
|
|
32
|
+
WORKDIR /app
|
|
33
|
+
|
|
34
|
+
# Create non-root user for security
|
|
35
|
+
RUN addgroup -S frontmcp && adduser -S frontmcp -G frontmcp
|
|
36
|
+
|
|
37
|
+
# Copy only production artifacts
|
|
38
|
+
COPY --from=builder /app/dist ./dist
|
|
39
|
+
COPY --from=builder /app/package.json ./
|
|
40
|
+
COPY --from=builder /app/yarn.lock ./
|
|
41
|
+
|
|
42
|
+
# Install production dependencies only
|
|
43
|
+
RUN yarn install --frozen-lockfile --production && \
|
|
44
|
+
yarn cache clean
|
|
45
|
+
|
|
46
|
+
# Set ownership to non-root user
|
|
47
|
+
RUN chown -R frontmcp:frontmcp /app
|
|
48
|
+
|
|
49
|
+
USER frontmcp
|
|
50
|
+
|
|
51
|
+
# Environment defaults
|
|
52
|
+
ENV NODE_ENV=production
|
|
53
|
+
ENV PORT=3000
|
|
54
|
+
|
|
55
|
+
EXPOSE 3000
|
|
56
|
+
|
|
57
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
58
|
+
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
|
|
59
|
+
|
|
60
|
+
CMD ["node", "dist/main.js"]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Build
|
|
65
|
+
docker build -t my-frontmcp-server:secure .
|
|
66
|
+
|
|
67
|
+
# Run with resource limits
|
|
68
|
+
docker run -p 3000:3000 \
|
|
69
|
+
--memory=512m \
|
|
70
|
+
--cpus=1.0 \
|
|
71
|
+
-e NODE_ENV=production \
|
|
72
|
+
-e REDIS_URL=redis://redis:6379 \
|
|
73
|
+
my-frontmcp-server:secure
|
|
74
|
+
|
|
75
|
+
# Verify the process runs as non-root
|
|
76
|
+
docker exec $(docker ps -q -f ancestor=my-frontmcp-server:secure) whoami
|
|
77
|
+
# frontmcp
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## What This Demonstrates
|
|
81
|
+
|
|
82
|
+
- Creating a dedicated non-root user (`frontmcp`) and switching to it with `USER`
|
|
83
|
+
- Setting file ownership before switching users so the process can read its own files
|
|
84
|
+
- Combining the Dockerfile with runtime resource limits (`--memory`, `--cpus`)
|
|
85
|
+
|
|
86
|
+
## Related
|
|
87
|
+
|
|
88
|
+
- See `deploy-to-node-dockerfile` for the complete reference Dockerfile
|
|
89
|
+
- See `deploy-to-node` for Docker Compose, PM2, and NGINX deployment patterns
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vercel-mcp-endpoint-test
|
|
3
|
+
reference: deploy-to-vercel
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'Verify a Vercel-deployed FrontMCP server by testing health, tool listing, and tool invocation.'
|
|
6
|
+
tags: [deployment, json-rpc, vercel, mcp, endpoint]
|
|
7
|
+
features:
|
|
8
|
+
- 'Testing the health endpoint and MCP JSON-RPC API of a deployed Vercel function'
|
|
9
|
+
- 'Using preview deployments to validate changes before promoting to production'
|
|
10
|
+
- 'Setting `maxDuration` according to your Vercel plan (Hobby: 10s, Pro: 60s, Enterprise: 900s)'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Testing a Vercel MCP Endpoint
|
|
14
|
+
|
|
15
|
+
Verify a Vercel-deployed FrontMCP server by testing health, tool listing, and tool invocation.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Health check
|
|
21
|
+
curl https://your-project.vercel.app/health
|
|
22
|
+
# {"status":"ok"}
|
|
23
|
+
|
|
24
|
+
# List tools via JSON-RPC
|
|
25
|
+
curl -X POST https://your-project.vercel.app/mcp \
|
|
26
|
+
-H "Content-Type: application/json" \
|
|
27
|
+
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
28
|
+
|
|
29
|
+
# Call a tool via JSON-RPC
|
|
30
|
+
curl -X POST https://your-project.vercel.app/mcp \
|
|
31
|
+
-H "Content-Type: application/json" \
|
|
32
|
+
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"greet","arguments":{"name":"World"}},"id":2}'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Preview deployment for PR testing
|
|
37
|
+
vercel
|
|
38
|
+
# Creates a unique preview URL: https://my-project-abc123.vercel.app
|
|
39
|
+
|
|
40
|
+
# Test the preview before promoting to production
|
|
41
|
+
curl https://my-project-abc123.vercel.app/health
|
|
42
|
+
|
|
43
|
+
# Promote to production
|
|
44
|
+
vercel --prod
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
// vercel.json - with maxDuration matching your plan
|
|
49
|
+
{
|
|
50
|
+
"rewrites": [{ "source": "/(.*)", "destination": "/api/frontmcp" }],
|
|
51
|
+
"functions": {
|
|
52
|
+
"api/frontmcp.ts": {
|
|
53
|
+
"memory": 1024,
|
|
54
|
+
"maxDuration": 10
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"regions": ["iad1"]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## What This Demonstrates
|
|
62
|
+
|
|
63
|
+
- Testing the health endpoint and MCP JSON-RPC API of a deployed Vercel function
|
|
64
|
+
- Using preview deployments to validate changes before promoting to production
|
|
65
|
+
- Setting `maxDuration` according to your Vercel plan (Hobby: 10s, Pro: 60s, Enterprise: 900s)
|
|
66
|
+
|
|
67
|
+
## Related
|
|
68
|
+
|
|
69
|
+
- See `deploy-to-vercel` for the full deployment, KV storage, and cold start optimization guide
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vercel-with-kv
|
|
3
|
+
reference: deploy-to-vercel
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Deploy a FrontMCP server to Vercel serverless functions with Vercel KV for session persistence.'
|
|
6
|
+
tags: [deployment, vercel-kv, vercel, session, performance, serverless]
|
|
7
|
+
features:
|
|
8
|
+
- "Configuring `{ provider: 'vercel-kv' }` for automatic Vercel KV session storage"
|
|
9
|
+
- 'The `vercel.json` catch-all rewrite that routes all requests to the single FrontMCP handler'
|
|
10
|
+
- 'Setting function memory to 1024 MB for faster cold starts'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Deploy to Vercel with KV Storage
|
|
14
|
+
|
|
15
|
+
Deploy a FrontMCP server to Vercel serverless functions with Vercel KV for session persistence.
|
|
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: 'greet',
|
|
26
|
+
description: 'Greet a user',
|
|
27
|
+
inputSchema: { name: z.string() },
|
|
28
|
+
})
|
|
29
|
+
class GreetTool extends ToolContext<{ name: string }> {
|
|
30
|
+
async execute(input: { name: string }) {
|
|
31
|
+
return { content: [{ type: 'text' as const, text: `Hello, ${input.name}!` }] };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@App({ name: 'MyApp', tools: [GreetTool] })
|
|
36
|
+
class MyApp {}
|
|
37
|
+
|
|
38
|
+
@FrontMcp({
|
|
39
|
+
info: { name: 'my-server', version: '1.0.0' },
|
|
40
|
+
apps: [MyApp],
|
|
41
|
+
redis: { provider: 'vercel-kv' },
|
|
42
|
+
})
|
|
43
|
+
class MyServer {}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
// vercel.json
|
|
48
|
+
{
|
|
49
|
+
"rewrites": [{ "source": "/(.*)", "destination": "/api/frontmcp" }],
|
|
50
|
+
"functions": {
|
|
51
|
+
"api/frontmcp.ts": {
|
|
52
|
+
"memory": 1024,
|
|
53
|
+
"maxDuration": 60
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"regions": ["iad1"]
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Build for Vercel
|
|
62
|
+
frontmcp build --target vercel
|
|
63
|
+
|
|
64
|
+
# Preview deployment
|
|
65
|
+
vercel
|
|
66
|
+
|
|
67
|
+
# Production deployment
|
|
68
|
+
vercel --prod
|
|
69
|
+
|
|
70
|
+
# Verify
|
|
71
|
+
curl https://your-project.vercel.app/health
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## What This Demonstrates
|
|
75
|
+
|
|
76
|
+
- Configuring `{ provider: 'vercel-kv' }` for automatic Vercel KV session storage
|
|
77
|
+
- The `vercel.json` catch-all rewrite that routes all requests to the single FrontMCP handler
|
|
78
|
+
- Setting function memory to 1024 MB for faster cold starts
|
|
79
|
+
|
|
80
|
+
## Related
|
|
81
|
+
|
|
82
|
+
- See `deploy-to-vercel` for KV provisioning, environment variables, and cold start optimization
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vercel-with-skills-cache
|
|
3
|
+
reference: deploy-to-vercel
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Deploy a FrontMCP server to Vercel with skills enabled and KV-backed skill caching.'
|
|
6
|
+
tags: [deployment, vercel-kv, vercel, cache, security, skills]
|
|
7
|
+
features:
|
|
8
|
+
- 'Enabling skills cache backed by Vercel KV with a 60-second TTL'
|
|
9
|
+
- 'Setting environment variables via `vercel env add` instead of hardcoding in source'
|
|
10
|
+
- 'Adding security headers (`X-Content-Type-Options`, `X-Frame-Options`) in `vercel.json`'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Vercel Deployment with Skills Cache
|
|
14
|
+
|
|
15
|
+
Deploy a FrontMCP server to Vercel with skills enabled and KV-backed skill caching.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/server.ts
|
|
21
|
+
import { FrontMcp, App } from '@frontmcp/sdk';
|
|
22
|
+
|
|
23
|
+
@App({ name: 'MyApp' })
|
|
24
|
+
class MyApp {}
|
|
25
|
+
|
|
26
|
+
@FrontMcp({
|
|
27
|
+
info: { name: 'my-server', version: '1.0.0' },
|
|
28
|
+
apps: [MyApp],
|
|
29
|
+
redis: { provider: 'vercel-kv' },
|
|
30
|
+
skillsConfig: {
|
|
31
|
+
enabled: true,
|
|
32
|
+
cache: {
|
|
33
|
+
enabled: true,
|
|
34
|
+
redis: { provider: 'vercel-kv' },
|
|
35
|
+
ttlMs: 60000,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
class MyServer {}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Set environment variables via Vercel CLI
|
|
44
|
+
vercel env add KV_REST_API_URL "https://your-kv-store.kv.vercel-storage.com"
|
|
45
|
+
vercel env add KV_REST_API_TOKEN "your-token"
|
|
46
|
+
vercel env add NODE_ENV production
|
|
47
|
+
vercel env add LOG_LEVEL info
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
// vercel.json
|
|
52
|
+
{
|
|
53
|
+
"rewrites": [{ "source": "/(.*)", "destination": "/api/frontmcp" }],
|
|
54
|
+
"functions": {
|
|
55
|
+
"api/frontmcp.ts": {
|
|
56
|
+
"memory": 1024,
|
|
57
|
+
"maxDuration": 60
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"regions": ["iad1"],
|
|
61
|
+
"headers": [
|
|
62
|
+
{
|
|
63
|
+
"source": "/(.*)",
|
|
64
|
+
"headers": [
|
|
65
|
+
{ "key": "X-Content-Type-Options", "value": "nosniff" },
|
|
66
|
+
{ "key": "X-Frame-Options", "value": "DENY" }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Deploy to production
|
|
75
|
+
frontmcp build --target vercel
|
|
76
|
+
vercel --prod
|
|
77
|
+
|
|
78
|
+
# Add a custom domain
|
|
79
|
+
vercel domains add mcp.example.com
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## What This Demonstrates
|
|
83
|
+
|
|
84
|
+
- Enabling skills cache backed by Vercel KV with a 60-second TTL
|
|
85
|
+
- Setting environment variables via `vercel env add` instead of hardcoding in source
|
|
86
|
+
- Adding security headers (`X-Content-Type-Options`, `X-Frame-Options`) in `vercel.json`
|
|
87
|
+
|
|
88
|
+
## Related
|
|
89
|
+
|
|
90
|
+
- See `deploy-to-vercel` for the full deployment guide including cold start notes and execution limits
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: minimal-vercel-config
|
|
3
|
+
reference: deploy-to-vercel-config
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'The minimum `vercel.json` needed to deploy a FrontMCP server to Vercel.'
|
|
6
|
+
tags: [deployment, vercel, serverless, config, minimal]
|
|
7
|
+
features:
|
|
8
|
+
- 'The catch-all rewrite (`/(.*) -> /api/frontmcp`) routes all requests to the single FrontMCP handler'
|
|
9
|
+
- 'Setting `buildCommand` and `outputDirectory` so Vercel uses the FrontMCP build pipeline'
|
|
10
|
+
- 'Configuring function memory (512 MB) and max duration (30s) for the serverless function'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Minimal vercel.json Configuration
|
|
14
|
+
|
|
15
|
+
The minimum `vercel.json` needed to deploy a FrontMCP server to Vercel.
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
// vercel.json
|
|
21
|
+
{
|
|
22
|
+
"$schema": "https://openapi.vercel.sh/vercel.json",
|
|
23
|
+
"buildCommand": "frontmcp build --target vercel",
|
|
24
|
+
"outputDirectory": "dist",
|
|
25
|
+
"rewrites": [
|
|
26
|
+
{
|
|
27
|
+
"source": "/(.*)",
|
|
28
|
+
"destination": "/api/frontmcp"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"functions": {
|
|
32
|
+
"api/frontmcp.js": {
|
|
33
|
+
"memory": 512,
|
|
34
|
+
"maxDuration": 30
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"regions": ["iad1"]
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## What This Demonstrates
|
|
42
|
+
|
|
43
|
+
- The catch-all rewrite (`/(.*) -> /api/frontmcp`) routes all requests to the single FrontMCP handler
|
|
44
|
+
- Setting `buildCommand` and `outputDirectory` so Vercel uses the FrontMCP build pipeline
|
|
45
|
+
- Configuring function memory (512 MB) and max duration (30s) for the serverless function
|
|
46
|
+
|
|
47
|
+
## Related
|
|
48
|
+
|
|
49
|
+
- See `deploy-to-vercel-config` for the full reference configuration with security headers
|