@frontmcp/skills 1.0.4 → 1.1.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/catalog/frontmcp-authorities/SKILL.md +272 -0
- package/catalog/frontmcp-authorities/references/authority-profiles.md +262 -0
- package/catalog/frontmcp-authorities/references/claims-mapping.md +266 -0
- package/catalog/frontmcp-authorities/references/custom-evaluators.md +420 -0
- package/catalog/frontmcp-authorities/references/rbac-abac-rebac.md +391 -0
- package/catalog/frontmcp-channels/SKILL.md +122 -0
- package/catalog/frontmcp-channels/examples/channel-sources/agent-notify.md +70 -0
- package/catalog/frontmcp-channels/examples/channel-sources/app-errors.md +71 -0
- package/catalog/frontmcp-channels/examples/channel-sources/file-watcher.md +102 -0
- package/catalog/frontmcp-channels/examples/channel-sources/job-completion.md +79 -0
- package/catalog/frontmcp-channels/examples/channel-sources/replay-buffer.md +106 -0
- package/catalog/frontmcp-channels/examples/channel-sources/service-connector.md +136 -0
- package/catalog/frontmcp-channels/examples/channel-sources/webhook-github.md +85 -0
- package/catalog/frontmcp-channels/examples/channel-two-way/whatsapp-bridge.md +133 -0
- package/catalog/frontmcp-channels/references/channel-sources.md +214 -0
- package/catalog/frontmcp-channels/references/channel-two-way.md +195 -0
- package/catalog/frontmcp-config/SKILL.md +20 -18
- package/catalog/frontmcp-config/examples/configure-auth/multi-app-auth.md +1 -2
- package/catalog/frontmcp-config/examples/configure-auth/public-mode-setup.md +1 -2
- package/catalog/frontmcp-config/examples/configure-auth/remote-oauth-with-vault.md +1 -2
- package/catalog/frontmcp-config/examples/configure-auth-modes/local-self-signed-tokens.md +1 -2
- package/catalog/frontmcp-config/examples/configure-auth-modes/remote-enterprise-oauth.md +1 -2
- package/catalog/frontmcp-config/examples/configure-auth-modes/transparent-jwt-validation.md +1 -2
- package/catalog/frontmcp-config/examples/configure-deployment-targets/distributed-ha-config.md +121 -0
- package/catalog/frontmcp-config/examples/configure-deployment-targets/json-schema-ide-support.md +64 -0
- package/catalog/frontmcp-config/examples/configure-deployment-targets/multi-target-with-security.md +113 -0
- package/catalog/frontmcp-config/examples/configure-elicitation/basic-confirmation-gate.md +1 -2
- package/catalog/frontmcp-config/examples/configure-elicitation/distributed-elicitation-redis.md +1 -2
- package/catalog/frontmcp-config/examples/configure-http/entry-path-reverse-proxy.md +1 -2
- package/catalog/frontmcp-config/examples/configure-http/unix-socket-local.md +1 -2
- package/catalog/frontmcp-config/examples/configure-security-headers/csp-report-only.md +69 -0
- package/catalog/frontmcp-config/examples/configure-security-headers/full-production-headers.md +91 -0
- package/catalog/frontmcp-config/examples/configure-throttle/distributed-redis-throttle.md +1 -2
- package/catalog/frontmcp-config/examples/configure-throttle/per-tool-rate-limit.md +1 -2
- package/catalog/frontmcp-config/examples/configure-throttle/server-level-rate-limit.md +1 -2
- package/catalog/frontmcp-config/examples/configure-transport/custom-protocol-flags.md +1 -2
- package/catalog/frontmcp-config/examples/configure-transport/distributed-sessions-redis.md +1 -2
- package/catalog/frontmcp-config/examples/configure-transport/stateless-serverless.md +1 -2
- package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/legacy-preset-nodejs.md +1 -2
- package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/stateless-api-serverless.md +1 -2
- package/catalog/frontmcp-config/references/configure-deployment-targets.md +214 -0
- package/catalog/frontmcp-config/references/configure-elicitation.md +1 -2
- package/catalog/frontmcp-config/references/configure-security-headers.md +198 -0
- package/catalog/frontmcp-deployment/SKILL.md +1 -0
- package/catalog/frontmcp-deployment/examples/build-for-cli/cli-binary-build.md +1 -2
- package/catalog/frontmcp-deployment/examples/build-for-cli/unix-socket-daemon.md +1 -2
- package/catalog/frontmcp-deployment/examples/build-for-mcpb/mcpb-bundle-build.md +117 -0
- package/catalog/frontmcp-deployment/examples/build-for-sdk/connect-openai.md +1 -3
- package/catalog/frontmcp-deployment/examples/build-for-sdk/create-flat-config.md +1 -2
- package/catalog/frontmcp-deployment/examples/build-for-sdk/multi-platform-connect.md +3 -3
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/basic-worker-deploy.md +1 -2
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-custom-domain.md +1 -2
- package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-with-kv-storage.md +1 -2
- package/catalog/frontmcp-deployment/examples/deploy-to-lambda/lambda-handler-with-cors.md +1 -2
- package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-kv.md +1 -2
- package/catalog/frontmcp-deployment/examples/mcp-client-integration/http-remote.md +106 -0
- package/catalog/frontmcp-deployment/examples/mcp-client-integration/stdio-binary-with-env.md +107 -0
- package/catalog/frontmcp-deployment/examples/mcp-client-integration/stdio-npx.md +89 -0
- package/catalog/frontmcp-deployment/references/build-for-mcpb.md +209 -0
- package/catalog/frontmcp-deployment/references/build-for-sdk.md +1 -2
- package/catalog/frontmcp-deployment/references/mcp-client-integration.md +225 -0
- package/catalog/frontmcp-development/examples/create-agent/basic-agent-with-tools.md +3 -6
- package/catalog/frontmcp-development/examples/create-agent/custom-multi-pass-agent.md +1 -2
- package/catalog/frontmcp-development/examples/create-agent/nested-agents-with-swarm.md +2 -4
- package/catalog/frontmcp-development/examples/create-agent-llm-config/anthropic-config.md +1 -2
- package/catalog/frontmcp-development/examples/create-agent-llm-config/openai-config.md +1 -2
- package/catalog/frontmcp-development/examples/create-job/basic-report-job.md +1 -2
- package/catalog/frontmcp-development/examples/create-job/job-with-permissions.md +2 -3
- package/catalog/frontmcp-development/examples/create-job/job-with-retry.md +1 -2
- package/catalog/frontmcp-development/examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md +2 -5
- package/catalog/frontmcp-development/examples/create-provider/basic-database-provider.md +4 -3
- package/catalog/frontmcp-development/examples/create-skill-with-tools/directory-skill-with-tools.md +2 -3
- package/catalog/frontmcp-development/examples/create-tool/basic-class-tool.md +1 -2
- package/catalog/frontmcp-development/examples/create-tool/tool-with-di-and-errors.md +2 -2
- package/catalog/frontmcp-development/examples/create-tool/tool-with-rate-limiting-and-progress.md +1 -2
- package/catalog/frontmcp-development/examples/create-tool-annotations/destructive-delete-tool.md +2 -4
- package/catalog/frontmcp-development/examples/create-tool-annotations/readonly-query-tool.md +1 -2
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/primitive-and-media-outputs.md +3 -6
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-raw-shape-output.md +1 -2
- package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-schema-advanced-output.md +2 -4
- package/catalog/frontmcp-development/examples/decorators-guide/agent-skill-job-workflow.md +3 -5
- package/catalog/frontmcp-development/examples/decorators-guide/basic-server-with-app-and-tools.md +5 -5
- package/catalog/frontmcp-development/examples/decorators-guide/multi-app-with-plugins-and-providers.md +4 -6
- package/catalog/frontmcp-development/examples/official-plugins/cache-and-feature-flags.md +3 -5
- package/catalog/frontmcp-development/examples/official-plugins/production-multi-plugin-setup.md +4 -5
- package/catalog/frontmcp-development/examples/official-plugins/remember-plugin-session-memory.md +3 -5
- package/catalog/frontmcp-development/references/create-agent.md +4 -7
- package/catalog/frontmcp-development/references/create-job.md +3 -6
- package/catalog/frontmcp-development/references/create-plugin-hooks.md +12 -16
- package/catalog/frontmcp-development/references/create-skill-with-tools.md +2 -3
- package/catalog/frontmcp-development/references/create-tool.md +93 -23
- package/catalog/frontmcp-development/references/create-workflow.md +2 -3
- package/catalog/frontmcp-development/references/decorators-guide.md +32 -36
- package/catalog/frontmcp-extensibility/examples/vectoriadb/product-catalog-search.md +4 -4
- package/catalog/frontmcp-extensibility/examples/vectoriadb/semantic-search-with-persistence.md +4 -4
- package/catalog/frontmcp-extensibility/examples/vectoriadb/tfidf-keyword-search.md +4 -3
- package/catalog/frontmcp-guides/SKILL.md +3 -3
- package/catalog/frontmcp-guides/examples/example-knowledge-base/agent-and-plugin.md +4 -5
- package/catalog/frontmcp-guides/examples/example-knowledge-base/vector-search-and-resources.md +4 -3
- package/catalog/frontmcp-guides/examples/example-task-manager/auth-and-crud-tools.md +4 -4
- package/catalog/frontmcp-guides/examples/example-weather-api/weather-tool-with-schemas.md +1 -2
- package/catalog/frontmcp-guides/references/example-knowledge-base.md +22 -17
- package/catalog/frontmcp-guides/references/example-task-manager.md +16 -11
- package/catalog/frontmcp-guides/references/example-weather-api.md +6 -3
- package/catalog/frontmcp-observability/examples/telemetry-api/tool-custom-spans.md +2 -3
- package/catalog/frontmcp-observability/examples/tracing-setup/basic-tracing.md +4 -3
- package/catalog/frontmcp-observability/references/telemetry-api.md +2 -3
- package/catalog/frontmcp-production-readiness/examples/common-checklist/observability-setup.md +1 -2
- package/catalog/frontmcp-production-readiness/examples/common-checklist/security-hardening.md +3 -4
- package/catalog/frontmcp-production-readiness/examples/distributed-ha/ha-kubernetes-3-replicas.md +229 -0
- package/catalog/frontmcp-production-readiness/examples/production-browser/cross-platform-crypto.md +2 -3
- package/catalog/frontmcp-production-readiness/examples/production-cli-binary/stdio-transport-error-handling.md +1 -2
- package/catalog/frontmcp-production-readiness/examples/production-cloudflare/durable-objects-state.md +2 -4
- package/catalog/frontmcp-production-readiness/examples/production-cloudflare/workers-runtime-constraints.md +2 -3
- package/catalog/frontmcp-production-readiness/examples/production-lambda/cold-start-connection-reuse.md +3 -2
- package/catalog/frontmcp-production-readiness/examples/production-vercel/cold-start-optimization.md +2 -2
- package/catalog/frontmcp-production-readiness/examples/production-vercel/stateless-serverless-design.md +3 -3
- package/catalog/frontmcp-production-readiness/references/distributed-ha.md +194 -0
- package/catalog/frontmcp-setup/SKILL.md +11 -11
- package/catalog/frontmcp-setup/examples/project-structure-standalone/feature-folder-organization.md +5 -3
- package/catalog/frontmcp-setup/examples/project-structure-standalone/minimal-standalone-layout.md +4 -2
- package/catalog/frontmcp-setup/examples/setup-project/basic-node-server.md +4 -2
- package/catalog/frontmcp-setup/examples/setup-project/vercel-serverless-server.md +4 -2
- package/catalog/frontmcp-setup/examples/setup-redis/hybrid-vercel-kv-with-pubsub.md +8 -7
- package/catalog/frontmcp-setup/references/setup-project.md +10 -9
- package/catalog/frontmcp-setup/references/setup-redis.md +19 -16
- package/catalog/frontmcp-testing/examples/test-direct-client/basic-create-test.md +1 -3
- package/catalog/frontmcp-testing/examples/test-direct-client/openai-claude-format-test.md +1 -3
- package/catalog/frontmcp-testing/examples/test-tool-unit/schema-validation-test.md +2 -2
- package/catalog/frontmcp-testing/references/test-direct-client.md +1 -3
- package/catalog/frontmcp-testing/references/test-tool-unit.md +2 -2
- package/catalog/skills-manifest.json +325 -3
- package/package.json +1 -1
|
@@ -19,8 +19,7 @@ Configure a FrontMCP server for Vercel deployment with Vercel KV storage and mod
|
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
21
|
// src/tools/lookup-user.tool.ts
|
|
22
|
-
import { Tool, ToolContext } from '@frontmcp/sdk';
|
|
23
|
-
import { z } from 'zod';
|
|
22
|
+
import { Tool, ToolContext, z } from '@frontmcp/sdk';
|
|
24
23
|
|
|
25
24
|
@Tool({
|
|
26
25
|
name: 'lookup_user',
|
|
@@ -37,6 +36,7 @@ export default class LookupUserTool extends ToolContext {
|
|
|
37
36
|
```typescript
|
|
38
37
|
// src/apps/users.app.ts
|
|
39
38
|
import { App } from '@frontmcp/sdk';
|
|
39
|
+
|
|
40
40
|
import LookupUserTool from '../tools/lookup-user.tool';
|
|
41
41
|
|
|
42
42
|
@App({
|
|
@@ -49,7 +49,9 @@ export class UsersApp {}
|
|
|
49
49
|
```typescript
|
|
50
50
|
// src/main.ts
|
|
51
51
|
import 'reflect-metadata';
|
|
52
|
+
|
|
52
53
|
import { FrontMcp } from '@frontmcp/sdk';
|
|
54
|
+
|
|
53
55
|
import { UsersApp } from './apps/users.app';
|
|
54
56
|
|
|
55
57
|
@FrontMcp({
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
name: hybrid-vercel-kv-with-pubsub
|
|
3
3
|
reference: setup-redis
|
|
4
4
|
level: advanced
|
|
5
|
-
description: 'Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions.'
|
|
5
|
+
description: 'Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions in distributed multi-instance deployments.'
|
|
6
6
|
tags: [setup, vercel-kv, redis, vercel, session, hybrid]
|
|
7
7
|
features:
|
|
8
8
|
- 'Vercel KV handles sessions (`redis` config) while a real Redis handles pub/sub (`pubsub` config)'
|
|
9
|
-
- 'Vercel KV does not support pub/sub operations, so a separate Redis instance is required'
|
|
10
|
-
- '
|
|
9
|
+
- 'Vercel KV does not support pub/sub operations, so a separate Redis instance is required for distributed setups'
|
|
10
|
+
- 'Resource subscriptions across multiple server instances rely on the `pubsub` config for cross-instance notifications (single-instance servers use in-memory subscriptions automatically)'
|
|
11
11
|
- "The `pubsub` field accepts `provider: 'redis'` only (no Vercel KV support)"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# Hybrid Vercel KV with Redis Pub/Sub
|
|
15
15
|
|
|
16
|
-
Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions.
|
|
16
|
+
Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions in distributed multi-instance deployments.
|
|
17
|
+
|
|
18
|
+
> **Note:** Single-server deployments (stdio, binary, or single-instance HTTP) do not need pub/sub — resource subscriptions work in-memory out of the box.
|
|
17
19
|
|
|
18
20
|
## Code
|
|
19
21
|
|
|
@@ -50,7 +52,6 @@ import { Resource, ResourceContext } from '@frontmcp/sdk';
|
|
|
50
52
|
uri: 'metrics://live',
|
|
51
53
|
name: 'Live Metrics',
|
|
52
54
|
mimeType: 'application/json',
|
|
53
|
-
subscribe: true,
|
|
54
55
|
})
|
|
55
56
|
export default class LiveMetricsResource extends ResourceContext {
|
|
56
57
|
async read() {
|
|
@@ -69,8 +70,8 @@ REDIS_PUBSUB_PASSWORD=secret
|
|
|
69
70
|
## What This Demonstrates
|
|
70
71
|
|
|
71
72
|
- Vercel KV handles sessions (`redis` config) while a real Redis handles pub/sub (`pubsub` config)
|
|
72
|
-
- Vercel KV does not support pub/sub operations, so a separate Redis instance is required
|
|
73
|
-
-
|
|
73
|
+
- Vercel KV does not support pub/sub operations, so a separate Redis instance is required for distributed setups
|
|
74
|
+
- Resource subscriptions across multiple server instances rely on the `pubsub` config for cross-instance notifications (single-instance servers use in-memory subscriptions automatically)
|
|
74
75
|
- The `pubsub` field accepts `provider: 'redis'` only (no Vercel KV support)
|
|
75
76
|
|
|
76
77
|
## Related
|
|
@@ -141,6 +141,7 @@ The `@FrontMcp` decorator accepts a `FrontMcpMetadata` object with these fields:
|
|
|
141
141
|
|
|
142
142
|
```typescript
|
|
143
143
|
import 'reflect-metadata';
|
|
144
|
+
|
|
144
145
|
import { FrontMcp } from '@frontmcp/sdk';
|
|
145
146
|
|
|
146
147
|
@FrontMcp({
|
|
@@ -180,6 +181,7 @@ export default class Server {}
|
|
|
180
181
|
|
|
181
182
|
```typescript
|
|
182
183
|
import 'reflect-metadata';
|
|
184
|
+
|
|
183
185
|
import { FrontMcp } from '@frontmcp/sdk';
|
|
184
186
|
|
|
185
187
|
@FrontMcp({
|
|
@@ -225,8 +227,7 @@ export default class Server {}
|
|
|
225
227
|
Create `src/tools/add.tool.ts`:
|
|
226
228
|
|
|
227
229
|
```typescript
|
|
228
|
-
import { Tool, ToolContext } from '@frontmcp/sdk';
|
|
229
|
-
import { z } from 'zod';
|
|
230
|
+
import { Tool, ToolContext, z } from '@frontmcp/sdk';
|
|
230
231
|
|
|
231
232
|
@Tool({
|
|
232
233
|
name: 'add',
|
|
@@ -249,6 +250,7 @@ Create `src/apps/calc.app.ts`:
|
|
|
249
250
|
|
|
250
251
|
```typescript
|
|
251
252
|
import { App } from '@frontmcp/sdk';
|
|
253
|
+
|
|
252
254
|
import AddTool from '../tools/add.tool';
|
|
253
255
|
|
|
254
256
|
@App({
|
|
@@ -276,7 +278,9 @@ Update `src/main.ts`:
|
|
|
276
278
|
|
|
277
279
|
```typescript
|
|
278
280
|
import 'reflect-metadata';
|
|
281
|
+
|
|
279
282
|
import { FrontMcp } from '@frontmcp/sdk';
|
|
283
|
+
|
|
280
284
|
import { CalcApp } from './apps/calc.app';
|
|
281
285
|
|
|
282
286
|
@FrontMcp({
|
|
@@ -292,24 +296,21 @@ Resources, Prompts, and Skills follow the same decorator pattern:
|
|
|
292
296
|
|
|
293
297
|
```typescript
|
|
294
298
|
// Resource - returns MCP ReadResourceResult
|
|
295
|
-
|
|
299
|
+
// Prompt - returns MCP GetPromptResult
|
|
300
|
+
|
|
301
|
+
// Skill - compound capability with tools + instructions
|
|
302
|
+
import { Prompt, PromptContext, Resource, ResourceContext, Skill, SkillContext } from '@frontmcp/sdk';
|
|
296
303
|
|
|
297
304
|
@Resource({ uri: 'config://app', name: 'App Config', mimeType: 'application/json' })
|
|
298
305
|
export default class AppConfigResource extends ResourceContext {
|
|
299
306
|
/* ... */
|
|
300
307
|
}
|
|
301
308
|
|
|
302
|
-
// Prompt - returns MCP GetPromptResult
|
|
303
|
-
import { Prompt, PromptContext } from '@frontmcp/sdk';
|
|
304
|
-
|
|
305
309
|
@Prompt({ name: 'summarize', description: 'Summarize a document' })
|
|
306
310
|
export default class SummarizePrompt extends PromptContext {
|
|
307
311
|
/* ... */
|
|
308
312
|
}
|
|
309
313
|
|
|
310
|
-
// Skill - compound capability with tools + instructions
|
|
311
|
-
import { Skill, SkillContext } from '@frontmcp/sdk';
|
|
312
|
-
|
|
313
314
|
@Skill({ name: 'data-analysis', description: 'Analyze datasets' })
|
|
314
315
|
export default class DataAnalysisSkill extends SkillContext {
|
|
315
316
|
/* ... */
|
|
@@ -15,15 +15,16 @@ description: Provision and configure Redis or Vercel KV for session storage and
|
|
|
15
15
|
|
|
16
16
|
### Recommended
|
|
17
17
|
|
|
18
|
-
- Resource subscriptions with `subscribe: true`
|
|
18
|
+
- Resource subscriptions with `subscribe: true` across **multiple server instances** (distributed pub/sub)
|
|
19
19
|
- Auth sessions or elicitation state must persist across server restarts
|
|
20
20
|
- Distributed rate limiting is configured in the throttle guard
|
|
21
21
|
|
|
22
22
|
### Skip When
|
|
23
23
|
|
|
24
|
-
- Running a single-instance stdio-only server for local development -- use `setup-sqlite` or in-memory stores
|
|
24
|
+
- Running a single-instance stdio-only server for local development -- use `setup-sqlite` or in-memory stores (resource subscriptions work in-memory without Redis)
|
|
25
25
|
- Only need to configure session TTL and key prefix on an already-provisioned Redis -- use `configure-session`
|
|
26
26
|
- Deploying a read-only MCP server with no sessions, subscriptions, or stateful tools
|
|
27
|
+
- Using resource subscriptions on a single server instance -- subscriptions work in-memory out of the box
|
|
27
28
|
|
|
28
29
|
> **Decision:** Use this skill to provision and connect Redis (Docker, existing instance, or Vercel KV); use `configure-session` to tune session-specific options after Redis is available.
|
|
29
30
|
|
|
@@ -217,9 +218,11 @@ const sessionStore = createSessionStoreSync({
|
|
|
217
218
|
});
|
|
218
219
|
```
|
|
219
220
|
|
|
220
|
-
## Step 4 -- Pub/Sub for Resource Subscriptions
|
|
221
|
+
## Step 4 -- Pub/Sub for Resource Subscriptions (Multi-Instance Only)
|
|
221
222
|
|
|
222
|
-
|
|
223
|
+
> **Single-server note:** If you run a single server instance (stdio, binary, or single-instance HTTP), resource subscriptions work in-memory without any Redis or pub/sub configuration. Skip this step for local development and single-server deployments.
|
|
224
|
+
|
|
225
|
+
For **distributed multi-instance** deployments where subscription state must be shared across server instances, you need pub/sub. Pub/sub requires a real Redis instance -- Vercel KV does not support pub/sub operations.
|
|
223
226
|
|
|
224
227
|
For a hybrid setup (Vercel KV for sessions, Redis for pub/sub):
|
|
225
228
|
|
|
@@ -318,13 +321,13 @@ You should see session keys like `mcp:session:<session-id>`.
|
|
|
318
321
|
|
|
319
322
|
## Common Patterns
|
|
320
323
|
|
|
321
|
-
| Pattern | Correct | Incorrect | Why
|
|
322
|
-
| ---------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
|
|
323
|
-
| Redis provider field | `redis: { provider: 'redis', host: '...', port: 6379 }` | `redis: { host: '...', port: 6379 }` without `provider` | Both forms are type-safe (the SDK's `RedisOptions` union accepts both shapes), but explicit `provider: 'redis'` improves clarity and intent
|
|
324
|
-
| Environment variables | `host: process.env['REDIS_HOST'] ?? 'localhost'` | Hardcoding `host: 'redis.internal'` in source | Hardcoded values break across environments (dev, staging, prod); always read from env with a sensible fallback
|
|
325
|
-
| Vercel KV credentials | Let Vercel auto-inject `KV_REST_API_URL` and `KV_REST_API_TOKEN` | Manually setting KV tokens in the `redis` config object | Auto-injection is safer and ensures tokens rotate correctly; manual values risk stale or committed secrets
|
|
326
|
-
| Docker persistence | `command: redis-server --appendonly yes` in docker-compose | Running Redis without `--appendonly` in development | Without AOF persistence, data is lost on container restart; `--appendonly yes` preserves data across restarts
|
|
327
|
-
| Pub/sub with Vercel KV | Separate `pubsub: { provider: 'redis', ... }` alongside `redis: { provider: 'vercel-kv' }` | Expecting Vercel KV to handle pub/sub | Vercel KV does not support pub/sub; a real Redis instance is required for resource subscriptions
|
|
324
|
+
| Pattern | Correct | Incorrect | Why |
|
|
325
|
+
| ---------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
326
|
+
| Redis provider field | `redis: { provider: 'redis', host: '...', port: 6379 }` | `redis: { host: '...', port: 6379 }` without `provider` | Both forms are type-safe (the SDK's `RedisOptions` union accepts both shapes), but explicit `provider: 'redis'` improves clarity and intent |
|
|
327
|
+
| Environment variables | `host: process.env['REDIS_HOST'] ?? 'localhost'` | Hardcoding `host: 'redis.internal'` in source | Hardcoded values break across environments (dev, staging, prod); always read from env with a sensible fallback |
|
|
328
|
+
| Vercel KV credentials | Let Vercel auto-inject `KV_REST_API_URL` and `KV_REST_API_TOKEN` | Manually setting KV tokens in the `redis` config object | Auto-injection is safer and ensures tokens rotate correctly; manual values risk stale or committed secrets |
|
|
329
|
+
| Docker persistence | `command: redis-server --appendonly yes` in docker-compose | Running Redis without `--appendonly` in development | Without AOF persistence, data is lost on container restart; `--appendonly yes` preserves data across restarts |
|
|
330
|
+
| Pub/sub with Vercel KV | Separate `pubsub: { provider: 'redis', ... }` alongside `redis: { provider: 'vercel-kv' }` | Expecting Vercel KV to handle pub/sub | Vercel KV does not support pub/sub; a real Redis instance is required for distributed resource subscriptions (single-instance servers use in-memory subscriptions and do not need pub/sub) |
|
|
328
331
|
|
|
329
332
|
## Verification Checklist
|
|
330
333
|
|
|
@@ -359,11 +362,11 @@ You should see session keys like `mcp:session:<session-id>`.
|
|
|
359
362
|
|
|
360
363
|
## Examples
|
|
361
364
|
|
|
362
|
-
| Example | Level | Description
|
|
363
|
-
| ----------------------------------------------------------------------------------------- | ------------ |
|
|
364
|
-
| [`docker-redis-local-dev`](../examples/setup-redis/docker-redis-local-dev.md) | Basic | Provision Redis with Docker Compose and connect a FrontMCP server for local session storage.
|
|
365
|
-
| [`hybrid-vercel-kv-with-pubsub`](../examples/setup-redis/hybrid-vercel-kv-with-pubsub.md) | Advanced | Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions. |
|
|
366
|
-
| [`vercel-kv-serverless`](../examples/setup-redis/vercel-kv-serverless.md) | Intermediate | Configure a FrontMCP server with Vercel KV as the session store for serverless deployment.
|
|
365
|
+
| Example | Level | Description |
|
|
366
|
+
| ----------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
367
|
+
| [`docker-redis-local-dev`](../examples/setup-redis/docker-redis-local-dev.md) | Basic | Provision Redis with Docker Compose and connect a FrontMCP server for local session storage. |
|
|
368
|
+
| [`hybrid-vercel-kv-with-pubsub`](../examples/setup-redis/hybrid-vercel-kv-with-pubsub.md) | Advanced | Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions in distributed multi-instance deployments. |
|
|
369
|
+
| [`vercel-kv-serverless`](../examples/setup-redis/vercel-kv-serverless.md) | Intermediate | Configure a FrontMCP server with Vercel KV as the session store for serverless deployment. |
|
|
367
370
|
|
|
368
371
|
> See all examples in [`examples/setup-redis/`](../examples/setup-redis/)
|
|
369
372
|
|
|
@@ -19,9 +19,7 @@ Test tools in-memory without any HTTP overhead using the `create()` function fro
|
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
21
|
// src/__tests__/direct-client.spec.ts
|
|
22
|
-
import { create } from '@frontmcp/sdk';
|
|
23
|
-
import { tool } from '@frontmcp/sdk';
|
|
24
|
-
import { z } from 'zod';
|
|
22
|
+
import { create, tool, z } from '@frontmcp/sdk';
|
|
25
23
|
|
|
26
24
|
const AddTool = tool({
|
|
27
25
|
name: 'add',
|
|
@@ -19,9 +19,7 @@ Verify that tools are returned in the correct format for OpenAI and Claude clien
|
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
21
|
// src/__tests__/client-formats.spec.ts
|
|
22
|
-
import { connectOpenAI } from '@frontmcp/sdk';
|
|
23
|
-
import { tool } from '@frontmcp/sdk';
|
|
24
|
-
import { z } from 'zod';
|
|
22
|
+
import { connectOpenAI, tool, z } from '@frontmcp/sdk';
|
|
25
23
|
|
|
26
24
|
const AddTool = tool({
|
|
27
25
|
name: 'add',
|
|
@@ -19,8 +19,8 @@ Validate that a tool's Zod input schema rejects invalid data before `execute()`
|
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
21
|
// src/tools/__tests__/add.tool.schema.spec.ts
|
|
22
|
-
import { z } from '
|
|
23
|
-
|
|
22
|
+
import { ToolContext, z } from '@frontmcp/sdk';
|
|
23
|
+
|
|
24
24
|
import { AddTool } from '../add.tool';
|
|
25
25
|
|
|
26
26
|
describe('AddTool schema validation', () => {
|
|
@@ -8,9 +8,7 @@ description: In-memory testing with create() and connectOpenAI/connectClaude wit
|
|
|
8
8
|
Uses `connect()` or `create()` for in-memory testing without HTTP overhead.
|
|
9
9
|
|
|
10
10
|
```typescript
|
|
11
|
-
import { create,
|
|
12
|
-
import { tool } from '@frontmcp/sdk';
|
|
13
|
-
import { z } from 'zod';
|
|
11
|
+
import { connectOpenAI, create, tool, z } from '@frontmcp/sdk';
|
|
14
12
|
|
|
15
13
|
const AddTool = tool({
|
|
16
14
|
name: 'add',
|
|
@@ -6,8 +6,8 @@ description: Unit test a ToolContext execute method with mock context, inputs, a
|
|
|
6
6
|
# Unit Testing a Tool
|
|
7
7
|
|
|
8
8
|
```typescript
|
|
9
|
-
import { z } from '
|
|
10
|
-
|
|
9
|
+
import { ToolContext, z } from '@frontmcp/sdk';
|
|
10
|
+
|
|
11
11
|
import { AddTool } from '../tools/add.tool';
|
|
12
12
|
|
|
13
13
|
describe('AddTool', () => {
|
|
@@ -364,6 +364,77 @@
|
|
|
364
364
|
"name": "setup-sqlite",
|
|
365
365
|
"description": "Cross-reference to the full SQLite configuration guide in frontmcp-setup",
|
|
366
366
|
"examples": []
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"name": "configure-deployment-targets",
|
|
370
|
+
"description": "Configure multi-target builds with frontmcp.config.ts for node, distributed, vercel, lambda, cloudflare, browser, cli, and sdk targets",
|
|
371
|
+
"examples": [
|
|
372
|
+
{
|
|
373
|
+
"name": "multi-target-with-security",
|
|
374
|
+
"description": "Configure a FrontMCP project with node + distributed targets, CSP headers, and HSTS",
|
|
375
|
+
"level": "intermediate",
|
|
376
|
+
"tags": ["config", "deployment", "csp", "security", "distributed", "hsts", "multi-target"],
|
|
377
|
+
"features": [
|
|
378
|
+
"Using defineConfig() for typed configuration with IDE autocomplete",
|
|
379
|
+
"Multi-target deployments with per-target server settings",
|
|
380
|
+
"CSP directives including value-less directives like upgrade-insecure-requests",
|
|
381
|
+
"Security headers (HSTS, X-Frame-Options, X-Content-Type-Options)",
|
|
382
|
+
"HA configuration for the distributed target"
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"name": "distributed-ha-config",
|
|
387
|
+
"description": "Configure a distributed deployment target with HA settings for heartbeat, session takeover, and Redis-backed session persistence",
|
|
388
|
+
"level": "advanced",
|
|
389
|
+
"tags": ["config", "deployment", "distributed", "ha", "redis", "heartbeat", "session-takeover"],
|
|
390
|
+
"features": [
|
|
391
|
+
"Configuring the distributed deployment target with HA options",
|
|
392
|
+
"Setting custom heartbeat intervals and TTL for pod liveness detection",
|
|
393
|
+
"Combining server config (CSP, cookies) with HA config in the same target",
|
|
394
|
+
"Using per-target environment variables for Redis connection"
|
|
395
|
+
]
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"name": "json-schema-ide-support",
|
|
399
|
+
"description": "Use frontmcp.config.json with JSON Schema for VS Code and WebStorm autocomplete",
|
|
400
|
+
"level": "basic",
|
|
401
|
+
"tags": ["config", "deployment", "json", "schema", "ide", "autocomplete"],
|
|
402
|
+
"features": [
|
|
403
|
+
"Adding $schema field for IDE autocomplete in JSON config files",
|
|
404
|
+
"Configuring multiple deployment targets in JSON format",
|
|
405
|
+
"Using the frontmcp.schema.json for property validation and hover docs"
|
|
406
|
+
]
|
|
407
|
+
}
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"name": "configure-security-headers",
|
|
412
|
+
"description": "Configure CSP, HSTS, X-Frame-Options, and X-Content-Type-Options via frontmcp.config server settings",
|
|
413
|
+
"examples": [
|
|
414
|
+
{
|
|
415
|
+
"name": "csp-report-only",
|
|
416
|
+
"description": "Test CSP policies in report-only mode to identify violations before enforcement",
|
|
417
|
+
"level": "basic",
|
|
418
|
+
"tags": ["config", "csp", "security", "report-only", "headers"],
|
|
419
|
+
"features": [
|
|
420
|
+
"Enabling CSP in report-only mode with reportUri for violation monitoring",
|
|
421
|
+
"Using the object-format directives in frontmcp.config",
|
|
422
|
+
"Verifying report-only header is emitted instead of enforcement header"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "full-production-headers",
|
|
427
|
+
"description": "Complete security headers configuration for production with CSP enforcement, HSTS preload, and clickjacking protection",
|
|
428
|
+
"level": "intermediate",
|
|
429
|
+
"tags": ["config", "csp", "security", "hsts", "production", "headers", "frame-options"],
|
|
430
|
+
"features": [
|
|
431
|
+
"Full CSP enforcement with multiple directive types including value-less directives",
|
|
432
|
+
"HSTS with preload and includeSubDomains for HTTPS enforcement",
|
|
433
|
+
"X-Frame-Options DENY for clickjacking protection",
|
|
434
|
+
"Custom headers for additional security controls"
|
|
435
|
+
]
|
|
436
|
+
}
|
|
437
|
+
]
|
|
367
438
|
}
|
|
368
439
|
]
|
|
369
440
|
},
|
|
@@ -441,6 +512,23 @@
|
|
|
441
512
|
}
|
|
442
513
|
]
|
|
443
514
|
},
|
|
515
|
+
{
|
|
516
|
+
"name": "build-for-mcpb",
|
|
517
|
+
"description": "Package a FrontMCP server as a .mcpb archive that Claude Desktop and other MCPB-aware clients install with one click",
|
|
518
|
+
"examples": [
|
|
519
|
+
{
|
|
520
|
+
"name": "mcpb-bundle-build",
|
|
521
|
+
"description": "Produce a .mcpb archive for Claude Desktop with metadata, tools, and install-time user_config.",
|
|
522
|
+
"level": "basic",
|
|
523
|
+
"tags": ["deployment", "mcpb", "bundle", "claude-desktop", "user-config"],
|
|
524
|
+
"features": [
|
|
525
|
+
"Using `frontmcp build --target mcpb` to produce a single `.mcpb` archive",
|
|
526
|
+
"Translating `setup.steps` into MCPB `user_config` + `${user_config.KEY}` env bindings",
|
|
527
|
+
"Validating the archive round-trip with `frontmcp mcpb validate`"
|
|
528
|
+
]
|
|
529
|
+
}
|
|
530
|
+
]
|
|
531
|
+
},
|
|
444
532
|
{
|
|
445
533
|
"name": "build-for-sdk",
|
|
446
534
|
"description": "Build a FrontMCP server as an embeddable library with create() and connect() APIs",
|
|
@@ -691,6 +779,48 @@
|
|
|
691
779
|
]
|
|
692
780
|
}
|
|
693
781
|
]
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"name": "mcp-client-integration",
|
|
785
|
+
"description": "Configure MCP clients (Claude Desktop, Claude Code, Cursor, VS Code) to connect to a FrontMCP server via stdio, HTTP, or Unix socket",
|
|
786
|
+
"examples": [
|
|
787
|
+
{
|
|
788
|
+
"name": "stdio-npx",
|
|
789
|
+
"description": "Publish a FrontMCP server to npm and configure MCP clients to use it with npx --stdio.",
|
|
790
|
+
"level": "basic",
|
|
791
|
+
"tags": ["deployment", "stdio", "npx", "npm", "mcp-client", "claude-code", "claude-desktop"],
|
|
792
|
+
"features": [
|
|
793
|
+
"Building a FrontMCP server as a distributable CLI bundle",
|
|
794
|
+
"Configuring package.json bin field for npx execution",
|
|
795
|
+
"Setting up Claude Code, Claude Desktop, and Cursor to use the server via stdio",
|
|
796
|
+
"Passing environment variables from MCP client config to the server"
|
|
797
|
+
]
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"name": "http-remote",
|
|
801
|
+
"description": "Connect an MCP client to a FrontMCP server running as an HTTP server, locally or remotely.",
|
|
802
|
+
"level": "basic",
|
|
803
|
+
"tags": ["deployment", "http", "mcp-client", "remote", "cloud", "production"],
|
|
804
|
+
"features": [
|
|
805
|
+
"Connecting to a local FrontMCP dev server on a custom port",
|
|
806
|
+
"Connecting to a remote production FrontMCP server with authentication",
|
|
807
|
+
"Configuring HTTP transport in Claude Code and Claude Desktop",
|
|
808
|
+
"Using a background daemon on a TCP port for persistent local access"
|
|
809
|
+
]
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
"name": "stdio-binary-with-env",
|
|
813
|
+
"description": "Configure a local FrontMCP CLI binary with environment variables and custom arguments in MCP client configs.",
|
|
814
|
+
"level": "intermediate",
|
|
815
|
+
"tags": ["deployment", "stdio", "cli", "binary", "env", "mcp-client", "configuration"],
|
|
816
|
+
"features": [
|
|
817
|
+
"Pointing MCP clients at a locally installed FrontMCP binary",
|
|
818
|
+
"Passing database URLs, API keys, and feature flags via environment variables",
|
|
819
|
+
"Using absolute paths for reliable binary resolution",
|
|
820
|
+
"Configuring different environments (dev, staging) via env vars"
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
]
|
|
694
824
|
}
|
|
695
825
|
]
|
|
696
826
|
},
|
|
@@ -2097,6 +2227,24 @@
|
|
|
2097
2227
|
]
|
|
2098
2228
|
}
|
|
2099
2229
|
]
|
|
2230
|
+
},
|
|
2231
|
+
{
|
|
2232
|
+
"name": "distributed-ha",
|
|
2233
|
+
"description": "Deploy FrontMCP across multiple pods with heartbeat, session takeover, and notification relay for zero-downtime failover",
|
|
2234
|
+
"examples": [
|
|
2235
|
+
{
|
|
2236
|
+
"name": "ha-kubernetes-3-replicas",
|
|
2237
|
+
"description": "Deploy FrontMCP with 3 replicas, Redis, and automatic session failover on Kubernetes",
|
|
2238
|
+
"level": "intermediate",
|
|
2239
|
+
"tags": ["ha", "kubernetes", "redis", "distributed", "session-takeover", "heartbeat"],
|
|
2240
|
+
"features": [
|
|
2241
|
+
"Configuring @FrontMcp with Redis for distributed deployment",
|
|
2242
|
+
"Kubernetes Deployment YAML with 3 replicas and readiness probes",
|
|
2243
|
+
"Verifying heartbeat keys and session takeover via redis-cli",
|
|
2244
|
+
"NGINX sticky sessions for session affinity"
|
|
2245
|
+
]
|
|
2246
|
+
}
|
|
2247
|
+
]
|
|
2100
2248
|
}
|
|
2101
2249
|
]
|
|
2102
2250
|
},
|
|
@@ -2401,13 +2549,13 @@
|
|
|
2401
2549
|
},
|
|
2402
2550
|
{
|
|
2403
2551
|
"name": "hybrid-vercel-kv-with-pubsub",
|
|
2404
|
-
"description": "Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions.",
|
|
2552
|
+
"description": "Use Vercel KV for session storage and a separate Redis instance for pub/sub resource subscriptions in distributed multi-instance deployments.",
|
|
2405
2553
|
"level": "advanced",
|
|
2406
2554
|
"tags": ["setup", "vercel-kv", "redis", "vercel", "session", "hybrid"],
|
|
2407
2555
|
"features": [
|
|
2408
2556
|
"Vercel KV handles sessions (`redis` config) while a real Redis handles pub/sub (`pubsub` config)",
|
|
2409
|
-
"Vercel KV does not support pub/sub operations, so a separate Redis instance is required",
|
|
2410
|
-
"
|
|
2557
|
+
"Vercel KV does not support pub/sub operations, so a separate Redis instance is required for distributed setups",
|
|
2558
|
+
"Resource subscriptions across multiple server instances rely on the `pubsub` config for cross-instance notifications (single-instance servers use in-memory subscriptions automatically)",
|
|
2411
2559
|
"The `pubsub` field accepts `provider: 'redis'` only (no Vercel KV support)"
|
|
2412
2560
|
]
|
|
2413
2561
|
},
|
|
@@ -2907,6 +3055,180 @@
|
|
|
2907
3055
|
]
|
|
2908
3056
|
}
|
|
2909
3057
|
]
|
|
3058
|
+
},
|
|
3059
|
+
{
|
|
3060
|
+
"name": "frontmcp-channels",
|
|
3061
|
+
"category": "development",
|
|
3062
|
+
"description": "Use when you want to push real-time notifications into Claude Code sessions. Build webhook channels, chat bridges (WhatsApp, Telegram, Slack), agent completion alerts, job status notifications, or error forwarding. The skill for CHANNELS and NOTIFICATIONS.",
|
|
3063
|
+
"path": "frontmcp-channels",
|
|
3064
|
+
"targets": ["all"],
|
|
3065
|
+
"hasResources": true,
|
|
3066
|
+
"tags": [
|
|
3067
|
+
"channels",
|
|
3068
|
+
"notifications",
|
|
3069
|
+
"claude-code",
|
|
3070
|
+
"webhooks",
|
|
3071
|
+
"messaging",
|
|
3072
|
+
"real-time",
|
|
3073
|
+
"two-way",
|
|
3074
|
+
"whatsapp",
|
|
3075
|
+
"telegram",
|
|
3076
|
+
"slack",
|
|
3077
|
+
"chat-bridge"
|
|
3078
|
+
],
|
|
3079
|
+
"bundle": ["full"],
|
|
3080
|
+
"references": [
|
|
3081
|
+
{
|
|
3082
|
+
"name": "channel-sources",
|
|
3083
|
+
"description": "Configure different channel source types - webhooks, app events, agent completion, job completion, and manual push",
|
|
3084
|
+
"examples": [
|
|
3085
|
+
{
|
|
3086
|
+
"name": "webhook-github",
|
|
3087
|
+
"description": "Forward GitHub webhook events (PRs, pushes, CI) into Claude Code",
|
|
3088
|
+
"level": "basic",
|
|
3089
|
+
"tags": ["webhook", "github", "ci", "notifications"],
|
|
3090
|
+
"features": [
|
|
3091
|
+
"Webhook source with HTTP POST endpoint",
|
|
3092
|
+
"GitHub event type routing",
|
|
3093
|
+
"Static meta for team context"
|
|
3094
|
+
]
|
|
3095
|
+
},
|
|
3096
|
+
{
|
|
3097
|
+
"name": "app-errors",
|
|
3098
|
+
"description": "Forward application errors to Claude Code via the in-process event bus",
|
|
3099
|
+
"level": "basic",
|
|
3100
|
+
"tags": ["errors", "app-event", "debugging", "monitoring"],
|
|
3101
|
+
"features": [
|
|
3102
|
+
"App event source with ChannelEventBus",
|
|
3103
|
+
"Error severity classification",
|
|
3104
|
+
"Stack trace forwarding"
|
|
3105
|
+
]
|
|
3106
|
+
},
|
|
3107
|
+
{
|
|
3108
|
+
"name": "agent-notify",
|
|
3109
|
+
"description": "Notify Claude Code when AI agents complete their tasks",
|
|
3110
|
+
"level": "intermediate",
|
|
3111
|
+
"tags": ["agents", "completion", "notifications", "automation"],
|
|
3112
|
+
"features": [
|
|
3113
|
+
"Agent completion source with ID filtering",
|
|
3114
|
+
"Duration and output reporting",
|
|
3115
|
+
"Integration with agent registry emitter"
|
|
3116
|
+
]
|
|
3117
|
+
},
|
|
3118
|
+
{
|
|
3119
|
+
"name": "job-completion",
|
|
3120
|
+
"description": "Notify Claude Code when background jobs and workflows complete",
|
|
3121
|
+
"level": "intermediate",
|
|
3122
|
+
"tags": ["jobs", "workflows", "completion", "background", "notifications"],
|
|
3123
|
+
"features": [
|
|
3124
|
+
"Job completion source with name filtering",
|
|
3125
|
+
"Status-aware notification formatting",
|
|
3126
|
+
"Duration and output reporting"
|
|
3127
|
+
]
|
|
3128
|
+
},
|
|
3129
|
+
{
|
|
3130
|
+
"name": "service-connector",
|
|
3131
|
+
"description": "Build a persistent service connector that lets Claude send and receive messages through WhatsApp, Telegram, or any messaging API",
|
|
3132
|
+
"level": "advanced",
|
|
3133
|
+
"tags": ["service", "connector", "whatsapp", "persistent-connection", "bidirectional"],
|
|
3134
|
+
"features": [
|
|
3135
|
+
"Service source type with onConnect/onDisconnect lifecycle",
|
|
3136
|
+
"Channel-contributed tools for outbound messages",
|
|
3137
|
+
"pushIncoming() for feeding service events into the notification pipeline",
|
|
3138
|
+
"Bidirectional conversation flow"
|
|
3139
|
+
]
|
|
3140
|
+
},
|
|
3141
|
+
{
|
|
3142
|
+
"name": "file-watcher",
|
|
3143
|
+
"description": "Watch files for changes and notify Claude Code in real-time",
|
|
3144
|
+
"level": "intermediate",
|
|
3145
|
+
"tags": ["file-watcher", "filesystem", "logs", "monitoring", "real-time"],
|
|
3146
|
+
"features": [
|
|
3147
|
+
"File watcher source type with glob patterns",
|
|
3148
|
+
"onConnect lifecycle for starting the watcher",
|
|
3149
|
+
"pushIncoming for streaming file events",
|
|
3150
|
+
"Log file monitoring example"
|
|
3151
|
+
]
|
|
3152
|
+
},
|
|
3153
|
+
{
|
|
3154
|
+
"name": "replay-buffer",
|
|
3155
|
+
"description": "Buffer channel events so Claude Code receives them when it connects, even if events occurred while offline",
|
|
3156
|
+
"level": "advanced",
|
|
3157
|
+
"tags": ["replay", "buffer", "persistence", "offline", "reconnect"],
|
|
3158
|
+
"features": [
|
|
3159
|
+
"Replay configuration with maxEvents cap",
|
|
3160
|
+
"In-memory ring buffer for event storage",
|
|
3161
|
+
"Replay on session connect",
|
|
3162
|
+
"Persistent store pattern with onConnect"
|
|
3163
|
+
]
|
|
3164
|
+
}
|
|
3165
|
+
]
|
|
3166
|
+
},
|
|
3167
|
+
{
|
|
3168
|
+
"name": "channel-two-way",
|
|
3169
|
+
"description": "Build two-way chat bridges connecting WhatsApp, Telegram, Slack, and Discord to Claude Code",
|
|
3170
|
+
"examples": [
|
|
3171
|
+
{
|
|
3172
|
+
"name": "whatsapp-bridge",
|
|
3173
|
+
"description": "Full WhatsApp Business API bridge allowing users to chat with Claude Code via WhatsApp",
|
|
3174
|
+
"level": "advanced",
|
|
3175
|
+
"tags": ["whatsapp", "chat", "two-way", "messaging", "bridge"],
|
|
3176
|
+
"features": [
|
|
3177
|
+
"Two-way channel with reply support",
|
|
3178
|
+
"WhatsApp Cloud API integration",
|
|
3179
|
+
"Sender verification and allowlisting",
|
|
3180
|
+
"Webhook signature validation"
|
|
3181
|
+
]
|
|
3182
|
+
}
|
|
3183
|
+
]
|
|
3184
|
+
}
|
|
3185
|
+
]
|
|
3186
|
+
},
|
|
3187
|
+
{
|
|
3188
|
+
"name": "frontmcp-authorities",
|
|
3189
|
+
"category": "development",
|
|
3190
|
+
"description": "Use when implementing authorization, access control, RBAC, ABAC, or ReBAC for tools, resources, or prompts. Covers JWT claims mapping, authority profiles, and policy enforcement.",
|
|
3191
|
+
"path": "frontmcp-authorities",
|
|
3192
|
+
"targets": ["all"],
|
|
3193
|
+
"hasResources": true,
|
|
3194
|
+
"tags": [
|
|
3195
|
+
"authorization",
|
|
3196
|
+
"rbac",
|
|
3197
|
+
"abac",
|
|
3198
|
+
"rebac",
|
|
3199
|
+
"security",
|
|
3200
|
+
"permissions",
|
|
3201
|
+
"roles",
|
|
3202
|
+
"access-control",
|
|
3203
|
+
"authorities",
|
|
3204
|
+
"jwt"
|
|
3205
|
+
],
|
|
3206
|
+
"bundle": ["full"],
|
|
3207
|
+
"priority": 9,
|
|
3208
|
+
"visibility": "both",
|
|
3209
|
+
"license": "Apache-2.0",
|
|
3210
|
+
"references": [
|
|
3211
|
+
{
|
|
3212
|
+
"name": "claims-mapping",
|
|
3213
|
+
"description": "JWT claims mapping per identity provider (Auth0, Keycloak, Okta, Cognito, Frontegg)",
|
|
3214
|
+
"examples": []
|
|
3215
|
+
},
|
|
3216
|
+
{
|
|
3217
|
+
"name": "authority-profiles",
|
|
3218
|
+
"description": "Registering and using named authority profiles for reusable access patterns",
|
|
3219
|
+
"examples": []
|
|
3220
|
+
},
|
|
3221
|
+
{
|
|
3222
|
+
"name": "rbac-abac-rebac",
|
|
3223
|
+
"description": "Comparison of RBAC, ABAC, and ReBAC authorization models with usage guidance",
|
|
3224
|
+
"examples": []
|
|
3225
|
+
},
|
|
3226
|
+
{
|
|
3227
|
+
"name": "custom-evaluators",
|
|
3228
|
+
"description": "Creating custom authority evaluators for domain-specific access control",
|
|
3229
|
+
"examples": []
|
|
3230
|
+
}
|
|
3231
|
+
]
|
|
2910
3232
|
}
|
|
2911
3233
|
]
|
|
2912
3234
|
}
|