@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,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remote-and-esm-apps
|
|
3
|
+
reference: multi-app-composition
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Compose local, ESM (npm package), and remote (external MCP server) apps into a single gateway.'
|
|
6
|
+
tags: [setup, oauth, auth, transport, multi-app, remote]
|
|
7
|
+
features:
|
|
8
|
+
- '`app.esm()` loads an `@App` class from an npm package with namespace and auto-update'
|
|
9
|
+
- '`app.remote()` proxies tools from external MCP servers with configurable auth modes'
|
|
10
|
+
- "`remoteAuth` supports `'static'` (fixed credentials), `'forward'` (pass gateway user token), and `'oauth'`"
|
|
11
|
+
- '`namespace` prevents tool name collisions between apps (`crm:tool_name`, `slack:tool_name`)'
|
|
12
|
+
- '`transportOptions` configure timeout, retries, and SSE fallback for remote connections'
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Remote and ESM App Composition
|
|
16
|
+
|
|
17
|
+
Compose local, ESM (npm package), and remote (external MCP server) apps into a single gateway.
|
|
18
|
+
|
|
19
|
+
## Code
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// src/main.ts
|
|
23
|
+
import 'reflect-metadata';
|
|
24
|
+
import { FrontMcp, App, app } from '@frontmcp/sdk';
|
|
25
|
+
|
|
26
|
+
@App({
|
|
27
|
+
id: 'local',
|
|
28
|
+
name: 'Local Tools',
|
|
29
|
+
tools: [EchoTool],
|
|
30
|
+
})
|
|
31
|
+
class LocalApp {}
|
|
32
|
+
|
|
33
|
+
@FrontMcp({
|
|
34
|
+
info: { name: 'gateway', version: '1.0.0' },
|
|
35
|
+
apps: [
|
|
36
|
+
// Local app
|
|
37
|
+
LocalApp,
|
|
38
|
+
|
|
39
|
+
// ESM app from npm package
|
|
40
|
+
app.esm('@acme/crm-tools@^2.0.0', {
|
|
41
|
+
namespace: 'crm',
|
|
42
|
+
autoUpdate: { enabled: true, intervalMs: 300_000 },
|
|
43
|
+
}),
|
|
44
|
+
|
|
45
|
+
// Remote MCP server with static auth
|
|
46
|
+
app.remote('https://slack-mcp.example.com/mcp', {
|
|
47
|
+
namespace: 'slack',
|
|
48
|
+
remoteAuth: {
|
|
49
|
+
mode: 'static',
|
|
50
|
+
credentials: { type: 'bearer', value: process.env['SLACK_TOKEN']! },
|
|
51
|
+
},
|
|
52
|
+
transportOptions: {
|
|
53
|
+
timeout: 30000,
|
|
54
|
+
retryAttempts: 3,
|
|
55
|
+
fallbackToSSE: true,
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
|
|
59
|
+
// Remote MCP server with forwarded auth
|
|
60
|
+
app.remote('https://api.internal.com/mcp', {
|
|
61
|
+
namespace: 'api',
|
|
62
|
+
remoteAuth: {
|
|
63
|
+
mode: 'forward',
|
|
64
|
+
},
|
|
65
|
+
}),
|
|
66
|
+
],
|
|
67
|
+
})
|
|
68
|
+
export default class Server {}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## What This Demonstrates
|
|
72
|
+
|
|
73
|
+
- `app.esm()` loads an `@App` class from an npm package with namespace and auto-update
|
|
74
|
+
- `app.remote()` proxies tools from external MCP servers with configurable auth modes
|
|
75
|
+
- `remoteAuth` supports `'static'` (fixed credentials), `'forward'` (pass gateway user token), and `'oauth'`
|
|
76
|
+
- `namespace` prevents tool name collisions between apps (`crm:tool_name`, `slack:tool_name`)
|
|
77
|
+
- `transportOptions` configure timeout, retries, and SSE fallback for remote connections
|
|
78
|
+
|
|
79
|
+
## Related
|
|
80
|
+
|
|
81
|
+
- See `multi-app-composition` for scope isolation, per-app auth, and shared plugins
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-test-affected
|
|
3
|
+
reference: nx-workflow
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Use Nx commands for efficient building, testing, and CI with affected-only execution.'
|
|
6
|
+
tags: [setup, nx, workflow, affected]
|
|
7
|
+
features:
|
|
8
|
+
- '`nx build <server>` resolves the dependency graph and builds with caching'
|
|
9
|
+
- '`nx affected -t test` only runs tests for changed projects, saving CI time'
|
|
10
|
+
- '`nx run-many -t build,test,lint` parallelizes multiple targets across all projects'
|
|
11
|
+
- '`nx graph` visualizes project dependencies to detect circular imports'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Build, Test, and Affected Commands
|
|
15
|
+
|
|
16
|
+
Use Nx commands for efficient building, testing, and CI with affected-only execution.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Build a single server (builds all dependencies in correct order)
|
|
22
|
+
nx build gateway
|
|
23
|
+
|
|
24
|
+
# Test a single app
|
|
25
|
+
nx test billing
|
|
26
|
+
|
|
27
|
+
# Run all tests across the workspace
|
|
28
|
+
nx run-many -t test
|
|
29
|
+
|
|
30
|
+
# Build all projects
|
|
31
|
+
nx run-many -t build
|
|
32
|
+
|
|
33
|
+
# Lint everything
|
|
34
|
+
nx run-many -t lint
|
|
35
|
+
|
|
36
|
+
# Run multiple targets at once
|
|
37
|
+
nx run-many -t build,test,lint
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# CI optimization: only test projects affected by changes
|
|
42
|
+
nx affected -t test
|
|
43
|
+
|
|
44
|
+
# Only build affected projects
|
|
45
|
+
nx affected -t build
|
|
46
|
+
|
|
47
|
+
# Visualize the dependency graph
|
|
48
|
+
nx graph
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Typical feature development workflow
|
|
53
|
+
# 1. Generate a new tool
|
|
54
|
+
nx g @frontmcp/nx:tool calculate-tax --project=billing
|
|
55
|
+
|
|
56
|
+
# 2. Implement the tool logic in apps/billing/src/tools/calculate-tax.tool.ts
|
|
57
|
+
|
|
58
|
+
# 3. Run tests for the affected app
|
|
59
|
+
nx test billing
|
|
60
|
+
|
|
61
|
+
# 4. Build the server that includes this app
|
|
62
|
+
nx build gateway
|
|
63
|
+
|
|
64
|
+
# 5. Or test everything affected by your changes
|
|
65
|
+
nx affected -t test
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## What This Demonstrates
|
|
69
|
+
|
|
70
|
+
- `nx build <server>` resolves the dependency graph and builds with caching
|
|
71
|
+
- `nx affected -t test` only runs tests for changed projects, saving CI time
|
|
72
|
+
- `nx run-many -t build,test,lint` parallelizes multiple targets across all projects
|
|
73
|
+
- `nx graph` visualizes project dependencies to detect circular imports
|
|
74
|
+
|
|
75
|
+
## Related
|
|
76
|
+
|
|
77
|
+
- See `nx-workflow` for workspace initialization, all generator commands, and troubleshooting
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-server-deployment
|
|
3
|
+
reference: nx-workflow
|
|
4
|
+
level: advanced
|
|
5
|
+
description: 'Generate multiple servers in an Nx workspace, each composing different apps for different deployment targets.'
|
|
6
|
+
tags: [setup, vercel, nx, node, workflow, multi]
|
|
7
|
+
features:
|
|
8
|
+
- 'Multiple servers composing different combinations of apps from the same workspace'
|
|
9
|
+
- 'Each server has its own deployment target (`node` vs `vercel`) and storage configuration'
|
|
10
|
+
- 'Apps are reusable across servers via Nx path aliases'
|
|
11
|
+
- '`nx build <server>` builds the server and all its app and lib dependencies'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Multi-Server Deployment Targets
|
|
15
|
+
|
|
16
|
+
Generate multiple servers in an Nx workspace, each composing different apps for different deployment targets.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Generate apps
|
|
22
|
+
nx g @frontmcp/nx:app billing
|
|
23
|
+
nx g @frontmcp/nx:app crm
|
|
24
|
+
nx g @frontmcp/nx:app admin
|
|
25
|
+
|
|
26
|
+
# Generate a public gateway (Node.js) composing billing and crm
|
|
27
|
+
nx g @frontmcp/nx:server public-gateway --apps=billing,crm --deploymentTarget=node --redis=docker
|
|
28
|
+
|
|
29
|
+
# Generate an internal admin server (Vercel) with the admin app
|
|
30
|
+
nx g @frontmcp/nx:server admin-portal --apps=admin --deploymentTarget=vercel
|
|
31
|
+
|
|
32
|
+
# Generate a shared library for common providers
|
|
33
|
+
nx g @frontmcp/nx:lib shared-db
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// servers/public-gateway/src/main.ts
|
|
38
|
+
import 'reflect-metadata';
|
|
39
|
+
import { FrontMcp } from '@frontmcp/sdk';
|
|
40
|
+
import { BillingApp } from '@my-workspace/billing';
|
|
41
|
+
import { CrmApp } from '@my-workspace/crm';
|
|
42
|
+
|
|
43
|
+
@FrontMcp({
|
|
44
|
+
info: { name: 'public-gateway', version: '1.0.0' },
|
|
45
|
+
apps: [BillingApp, CrmApp],
|
|
46
|
+
http: { port: 3000 },
|
|
47
|
+
redis: {
|
|
48
|
+
provider: 'redis',
|
|
49
|
+
host: process.env['REDIS_HOST'] ?? 'localhost',
|
|
50
|
+
port: parseInt(process.env['REDIS_PORT'] ?? '6379', 10),
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
class PublicGateway {}
|
|
54
|
+
|
|
55
|
+
export default PublicGateway;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// servers/admin-portal/src/main.ts
|
|
60
|
+
import 'reflect-metadata';
|
|
61
|
+
import { FrontMcp } from '@frontmcp/sdk';
|
|
62
|
+
import { AdminApp } from '@my-workspace/admin';
|
|
63
|
+
|
|
64
|
+
@FrontMcp({
|
|
65
|
+
info: { name: 'admin-portal', version: '1.0.0' },
|
|
66
|
+
apps: [AdminApp],
|
|
67
|
+
transport: { protocol: 'modern' },
|
|
68
|
+
redis: { provider: 'vercel-kv' },
|
|
69
|
+
})
|
|
70
|
+
class AdminPortal {}
|
|
71
|
+
|
|
72
|
+
export default AdminPortal;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Build each server independently
|
|
77
|
+
nx build public-gateway
|
|
78
|
+
nx build admin-portal
|
|
79
|
+
|
|
80
|
+
# Test all projects
|
|
81
|
+
nx run-many -t test
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## What This Demonstrates
|
|
85
|
+
|
|
86
|
+
- Multiple servers composing different combinations of apps from the same workspace
|
|
87
|
+
- Each server has its own deployment target (`node` vs `vercel`) and storage configuration
|
|
88
|
+
- Apps are reusable across servers via Nx path aliases
|
|
89
|
+
- `nx build <server>` builds the server and all its app and lib dependencies
|
|
90
|
+
|
|
91
|
+
## Related
|
|
92
|
+
|
|
93
|
+
- See `nx-workflow` for the full generator reference and workspace setup options
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scaffold-and-generate
|
|
3
|
+
reference: nx-workflow
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Initialize an Nx workspace and use generators to scaffold an app with tools, resources, and a server.'
|
|
6
|
+
tags: [setup, nx, workflow, scaffold, generate]
|
|
7
|
+
features:
|
|
8
|
+
- '`@frontmcp/nx:workspace` initializes the Nx monorepo structure with `apps/`, `libs/`, `servers/`'
|
|
9
|
+
- 'All primitive generators require `--project=<app-name>` to target the correct app'
|
|
10
|
+
- 'Each generator creates an implementation file, a `.spec.ts` test file, and updates barrel exports'
|
|
11
|
+
- '`@frontmcp/nx:server` with `--apps` and `--deploymentTarget` creates the deployment entry point'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Scaffold Workspace and Generate Primitives
|
|
15
|
+
|
|
16
|
+
Initialize an Nx workspace and use generators to scaffold an app with tools, resources, and a server.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Option A: New workspace via FrontMCP CLI
|
|
22
|
+
npx frontmcp create my-project --nx
|
|
23
|
+
|
|
24
|
+
# Option B: Add FrontMCP to existing Nx workspace
|
|
25
|
+
yarn add -D @frontmcp/nx
|
|
26
|
+
nx g @frontmcp/nx:workspace my-workspace
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Generate an app
|
|
31
|
+
nx g @frontmcp/nx:app billing
|
|
32
|
+
|
|
33
|
+
# Generate primitives inside the app
|
|
34
|
+
nx g @frontmcp/nx:tool create-invoice --project=billing
|
|
35
|
+
nx g @frontmcp/nx:resource invoice --project=billing
|
|
36
|
+
nx g @frontmcp/nx:prompt billing-summary --project=billing
|
|
37
|
+
nx g @frontmcp/nx:provider stripe --project=billing
|
|
38
|
+
nx g @frontmcp/nx:plugin audit-log --project=billing
|
|
39
|
+
|
|
40
|
+
# Generate a shared library
|
|
41
|
+
nx g @frontmcp/nx:lib shared-utils
|
|
42
|
+
|
|
43
|
+
# Generate a server composing the app
|
|
44
|
+
nx g @frontmcp/nx:server gateway --apps=billing --deploymentTarget=node
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Verify the generated structure
|
|
49
|
+
nx test billing
|
|
50
|
+
nx build gateway
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## What This Demonstrates
|
|
54
|
+
|
|
55
|
+
- `@frontmcp/nx:workspace` initializes the Nx monorepo structure with `apps/`, `libs/`, `servers/`
|
|
56
|
+
- All primitive generators require `--project=<app-name>` to target the correct app
|
|
57
|
+
- Each generator creates an implementation file, a `.spec.ts` test file, and updates barrel exports
|
|
58
|
+
- `@frontmcp/nx:server` with `--apps` and `--deploymentTarget` creates the deployment entry point
|
|
59
|
+
|
|
60
|
+
## Related
|
|
61
|
+
|
|
62
|
+
- See `nx-workflow` for the complete generator reference table and CI workflow commands
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nx-generator-scaffolding
|
|
3
|
+
reference: project-structure-nx
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Use `@frontmcp/nx` generators to scaffold tools, resources, and providers within an app, with automatic barrel export updates.'
|
|
6
|
+
tags: [setup, nx, structure, generator, scaffolding]
|
|
7
|
+
features:
|
|
8
|
+
- 'All primitive generators require `--project=<app-name>` to target the correct app'
|
|
9
|
+
- 'Each generator creates the implementation file and a `.spec.ts` test file'
|
|
10
|
+
- 'Barrel exports (`index.ts`) are updated automatically after each generator run'
|
|
11
|
+
- 'Files follow the `<name>.<type>.ts` naming convention'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Nx Generator Scaffolding
|
|
15
|
+
|
|
16
|
+
Use `@frontmcp/nx` generators to scaffold tools, resources, and providers within an app, with automatic barrel export updates.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Generate a tool in the billing app
|
|
22
|
+
nx g @frontmcp/nx:tool create-invoice --project=billing
|
|
23
|
+
|
|
24
|
+
# Generate a resource in the billing app
|
|
25
|
+
nx g @frontmcp/nx:resource invoice --project=billing
|
|
26
|
+
|
|
27
|
+
# Generate a provider in the billing app
|
|
28
|
+
nx g @frontmcp/nx:provider stripe --project=billing
|
|
29
|
+
|
|
30
|
+
# Generate a prompt in the crm app
|
|
31
|
+
nx g @frontmcp/nx:prompt summarize --project=crm
|
|
32
|
+
|
|
33
|
+
# Generate a plugin in the crm app
|
|
34
|
+
nx g @frontmcp/nx:plugin logging --project=crm
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
After generation, the app directory looks like:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
apps/billing/
|
|
41
|
+
src/
|
|
42
|
+
tools/
|
|
43
|
+
create-invoice.tool.ts
|
|
44
|
+
create-invoice.tool.spec.ts
|
|
45
|
+
resources/
|
|
46
|
+
invoice.resource.ts
|
|
47
|
+
invoice.resource.spec.ts
|
|
48
|
+
providers/
|
|
49
|
+
stripe.provider.ts
|
|
50
|
+
stripe.provider.spec.ts
|
|
51
|
+
billing.app.ts
|
|
52
|
+
index.ts # barrel exports updated automatically
|
|
53
|
+
project.json
|
|
54
|
+
tsconfig.json
|
|
55
|
+
jest.config.ts
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Build and test the app
|
|
60
|
+
nx test billing
|
|
61
|
+
nx build gateway
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## What This Demonstrates
|
|
65
|
+
|
|
66
|
+
- All primitive generators require `--project=<app-name>` to target the correct app
|
|
67
|
+
- Each generator creates the implementation file and a `.spec.ts` test file
|
|
68
|
+
- Barrel exports (`index.ts`) are updated automatically after each generator run
|
|
69
|
+
- Files follow the `<name>.<type>.ts` naming convention
|
|
70
|
+
|
|
71
|
+
## Related
|
|
72
|
+
|
|
73
|
+
- See `project-structure-nx` for the complete generator reference and workspace structure
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nx-workspace-with-apps
|
|
3
|
+
reference: project-structure-nx
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Scaffold an Nx monorepo with two apps and a server that composes them into a single gateway.'
|
|
6
|
+
tags: [setup, nx, structure, workspace, apps]
|
|
7
|
+
features:
|
|
8
|
+
- '`apps/` directory holding self-contained `@App` classes with their tools and resources'
|
|
9
|
+
- '`servers/` directory holding `@FrontMcp` entry points that compose apps'
|
|
10
|
+
- 'Nx path aliases (`@my-workspace/billing`) for clean imports across the monorepo'
|
|
11
|
+
- 'Apps are independently testable and do not import from each other'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Nx Workspace with Multiple Apps
|
|
15
|
+
|
|
16
|
+
Scaffold an Nx monorepo with two apps and a server that composes them into a single gateway.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Scaffold the Nx workspace
|
|
22
|
+
npx frontmcp create my-workspace --nx
|
|
23
|
+
|
|
24
|
+
cd my-workspace
|
|
25
|
+
|
|
26
|
+
# Generate two apps
|
|
27
|
+
nx g @frontmcp/nx:app billing
|
|
28
|
+
nx g @frontmcp/nx:app crm
|
|
29
|
+
|
|
30
|
+
# Generate a server composing both apps
|
|
31
|
+
nx g @frontmcp/nx:server gateway --apps=billing,crm
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// apps/billing/src/billing.app.ts
|
|
36
|
+
import { App } from '@frontmcp/sdk';
|
|
37
|
+
import { CreateInvoiceTool } from './tools/create-invoice.tool';
|
|
38
|
+
import { InvoiceResource } from './resources/invoice.resource';
|
|
39
|
+
|
|
40
|
+
@App({
|
|
41
|
+
name: 'billing',
|
|
42
|
+
tools: [CreateInvoiceTool],
|
|
43
|
+
resources: [InvoiceResource],
|
|
44
|
+
})
|
|
45
|
+
export class BillingApp {}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// apps/crm/src/crm.app.ts
|
|
50
|
+
import { App } from '@frontmcp/sdk';
|
|
51
|
+
import { LookupUserTool } from './tools/lookup-user.tool';
|
|
52
|
+
|
|
53
|
+
@App({
|
|
54
|
+
name: 'crm',
|
|
55
|
+
tools: [LookupUserTool],
|
|
56
|
+
})
|
|
57
|
+
export class CrmApp {}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// servers/gateway/src/main.ts
|
|
62
|
+
import 'reflect-metadata';
|
|
63
|
+
import { FrontMcp } from '@frontmcp/sdk';
|
|
64
|
+
import { BillingApp } from '@my-workspace/billing';
|
|
65
|
+
import { CrmApp } from '@my-workspace/crm';
|
|
66
|
+
|
|
67
|
+
@FrontMcp({
|
|
68
|
+
info: { name: 'gateway', version: '1.0.0' },
|
|
69
|
+
apps: [BillingApp, CrmApp],
|
|
70
|
+
})
|
|
71
|
+
class GatewayServer {}
|
|
72
|
+
|
|
73
|
+
export default GatewayServer;
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## What This Demonstrates
|
|
77
|
+
|
|
78
|
+
- `apps/` directory holding self-contained `@App` classes with their tools and resources
|
|
79
|
+
- `servers/` directory holding `@FrontMcp` entry points that compose apps
|
|
80
|
+
- Nx path aliases (`@my-workspace/billing`) for clean imports across the monorepo
|
|
81
|
+
- Apps are independently testable and do not import from each other
|
|
82
|
+
|
|
83
|
+
## Related
|
|
84
|
+
|
|
85
|
+
- See `project-structure-nx` for the full directory layout, dependency rules, and generator reference
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shared-library-usage
|
|
3
|
+
reference: project-structure-nx
|
|
4
|
+
level: intermediate
|
|
5
|
+
description: 'Create a shared library in an Nx monorepo and use it from multiple apps to avoid cross-app imports.'
|
|
6
|
+
tags: [setup, nx, database, structure, shared, library]
|
|
7
|
+
features:
|
|
8
|
+
- 'Shared libraries live in `libs/` with barrel `index.ts` exports'
|
|
9
|
+
- 'Both apps import `DatabaseProvider` from the shared library, not from each other'
|
|
10
|
+
- 'Nx dependency graph: `servers/ --> apps/ --> libs/` (apps never import other apps)'
|
|
11
|
+
- 'Path aliases configured in `tsconfig.base.json` keep imports clean (`@my-workspace/shared-utils`)'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Shared Library Between Apps
|
|
15
|
+
|
|
16
|
+
Create a shared library in an Nx monorepo and use it from multiple apps to avoid cross-app imports.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Generate a shared library
|
|
22
|
+
nx g @frontmcp/nx:lib shared-utils
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// libs/shared-utils/src/index.ts
|
|
27
|
+
export { formatCurrency } from './format-currency';
|
|
28
|
+
export { DatabaseProvider } from './database.provider';
|
|
29
|
+
export type { AppConfig } from './app-config.interface';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// libs/shared-utils/src/database.provider.ts
|
|
34
|
+
import { Provider } from '@frontmcp/sdk';
|
|
35
|
+
|
|
36
|
+
@Provider({ name: 'database' })
|
|
37
|
+
export class DatabaseProvider {
|
|
38
|
+
async query(sql: string): Promise<unknown[]> {
|
|
39
|
+
// shared database access logic
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// libs/shared-utils/src/format-currency.ts
|
|
47
|
+
export function formatCurrency(amount: number, currency: string): string {
|
|
48
|
+
return `${currency} ${amount.toFixed(2)}`;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// apps/billing/src/billing.app.ts
|
|
54
|
+
import { App } from '@frontmcp/sdk';
|
|
55
|
+
import { DatabaseProvider } from '@my-workspace/shared-utils';
|
|
56
|
+
import { CreateInvoiceTool } from './tools/create-invoice.tool';
|
|
57
|
+
|
|
58
|
+
@App({
|
|
59
|
+
name: 'billing',
|
|
60
|
+
tools: [CreateInvoiceTool],
|
|
61
|
+
providers: [DatabaseProvider],
|
|
62
|
+
})
|
|
63
|
+
export class BillingApp {}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
// apps/crm/src/crm.app.ts
|
|
68
|
+
import { App } from '@frontmcp/sdk';
|
|
69
|
+
import { DatabaseProvider } from '@my-workspace/shared-utils';
|
|
70
|
+
import { LookupUserTool } from './tools/lookup-user.tool';
|
|
71
|
+
|
|
72
|
+
@App({
|
|
73
|
+
name: 'crm',
|
|
74
|
+
tools: [LookupUserTool],
|
|
75
|
+
providers: [DatabaseProvider],
|
|
76
|
+
})
|
|
77
|
+
export class CrmApp {}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## What This Demonstrates
|
|
81
|
+
|
|
82
|
+
- Shared libraries live in `libs/` with barrel `index.ts` exports
|
|
83
|
+
- Both apps import `DatabaseProvider` from the shared library, not from each other
|
|
84
|
+
- Nx dependency graph: `servers/ --> apps/ --> libs/` (apps never import other apps)
|
|
85
|
+
- Path aliases configured in `tsconfig.base.json` keep imports clean (`@my-workspace/shared-utils`)
|
|
86
|
+
|
|
87
|
+
## Related
|
|
88
|
+
|
|
89
|
+
- See `project-structure-nx` for the full dependency hierarchy and Nx generator commands
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dev-workflow-commands
|
|
3
|
+
reference: project-structure-standalone
|
|
4
|
+
level: basic
|
|
5
|
+
description: 'Run the standard development workflow for a standalone FrontMCP project: dev server, build, and tests.'
|
|
6
|
+
tags: [setup, e2e, structure, standalone, dev, workflow]
|
|
7
|
+
features:
|
|
8
|
+
- '`frontmcp dev` for hot-reloading development server'
|
|
9
|
+
- '`frontmcp build --target <target>` for production builds targeting different runtimes'
|
|
10
|
+
- 'Test files use `.spec.ts` extension (not `.test.ts`) per FrontMCP convention'
|
|
11
|
+
- 'E2E tests live in the `e2e/` directory with `*.e2e.spec.ts` naming'
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Development Workflow Commands
|
|
15
|
+
|
|
16
|
+
Run the standard development workflow for a standalone FrontMCP project: dev server, build, and tests.
|
|
17
|
+
|
|
18
|
+
## Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Start the development server with hot reload
|
|
22
|
+
frontmcp dev
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Build for different deployment targets
|
|
27
|
+
frontmcp build --target node
|
|
28
|
+
frontmcp build --target vercel
|
|
29
|
+
frontmcp build --target lambda
|
|
30
|
+
frontmcp build --target cloudflare
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Run unit tests (test files use .spec.ts extension)
|
|
35
|
+
jest
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Run E2E tests from the e2e/ directory
|
|
40
|
+
jest --config e2e/jest.config.ts
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Start the dev server with HTTP transport on a specific port
|
|
45
|
+
PORT=3000 frontmcp dev
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Test the running server with an MCP initialize request
|
|
50
|
+
curl -X POST http://localhost:3000/mcp \
|
|
51
|
+
-H "Content-Type: application/json" \
|
|
52
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}}}'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## What This Demonstrates
|
|
56
|
+
|
|
57
|
+
- `frontmcp dev` for hot-reloading development server
|
|
58
|
+
- `frontmcp build --target <target>` for production builds targeting different runtimes
|
|
59
|
+
- Test files use `.spec.ts` extension (not `.test.ts`) per FrontMCP convention
|
|
60
|
+
- E2E tests live in the `e2e/` directory with `*.e2e.spec.ts` naming
|
|
61
|
+
|
|
62
|
+
## Related
|
|
63
|
+
|
|
64
|
+
- See `project-structure-standalone` for the full project layout and file naming conventions
|