@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.
Files changed (133) hide show
  1. package/catalog/frontmcp-authorities/SKILL.md +272 -0
  2. package/catalog/frontmcp-authorities/references/authority-profiles.md +262 -0
  3. package/catalog/frontmcp-authorities/references/claims-mapping.md +266 -0
  4. package/catalog/frontmcp-authorities/references/custom-evaluators.md +420 -0
  5. package/catalog/frontmcp-authorities/references/rbac-abac-rebac.md +391 -0
  6. package/catalog/frontmcp-channels/SKILL.md +122 -0
  7. package/catalog/frontmcp-channels/examples/channel-sources/agent-notify.md +70 -0
  8. package/catalog/frontmcp-channels/examples/channel-sources/app-errors.md +71 -0
  9. package/catalog/frontmcp-channels/examples/channel-sources/file-watcher.md +102 -0
  10. package/catalog/frontmcp-channels/examples/channel-sources/job-completion.md +79 -0
  11. package/catalog/frontmcp-channels/examples/channel-sources/replay-buffer.md +106 -0
  12. package/catalog/frontmcp-channels/examples/channel-sources/service-connector.md +136 -0
  13. package/catalog/frontmcp-channels/examples/channel-sources/webhook-github.md +85 -0
  14. package/catalog/frontmcp-channels/examples/channel-two-way/whatsapp-bridge.md +133 -0
  15. package/catalog/frontmcp-channels/references/channel-sources.md +214 -0
  16. package/catalog/frontmcp-channels/references/channel-two-way.md +195 -0
  17. package/catalog/frontmcp-config/SKILL.md +20 -18
  18. package/catalog/frontmcp-config/examples/configure-auth/multi-app-auth.md +1 -2
  19. package/catalog/frontmcp-config/examples/configure-auth/public-mode-setup.md +1 -2
  20. package/catalog/frontmcp-config/examples/configure-auth/remote-oauth-with-vault.md +1 -2
  21. package/catalog/frontmcp-config/examples/configure-auth-modes/local-self-signed-tokens.md +1 -2
  22. package/catalog/frontmcp-config/examples/configure-auth-modes/remote-enterprise-oauth.md +1 -2
  23. package/catalog/frontmcp-config/examples/configure-auth-modes/transparent-jwt-validation.md +1 -2
  24. package/catalog/frontmcp-config/examples/configure-deployment-targets/distributed-ha-config.md +121 -0
  25. package/catalog/frontmcp-config/examples/configure-deployment-targets/json-schema-ide-support.md +64 -0
  26. package/catalog/frontmcp-config/examples/configure-deployment-targets/multi-target-with-security.md +113 -0
  27. package/catalog/frontmcp-config/examples/configure-elicitation/basic-confirmation-gate.md +1 -2
  28. package/catalog/frontmcp-config/examples/configure-elicitation/distributed-elicitation-redis.md +1 -2
  29. package/catalog/frontmcp-config/examples/configure-http/entry-path-reverse-proxy.md +1 -2
  30. package/catalog/frontmcp-config/examples/configure-http/unix-socket-local.md +1 -2
  31. package/catalog/frontmcp-config/examples/configure-security-headers/csp-report-only.md +69 -0
  32. package/catalog/frontmcp-config/examples/configure-security-headers/full-production-headers.md +91 -0
  33. package/catalog/frontmcp-config/examples/configure-throttle/distributed-redis-throttle.md +1 -2
  34. package/catalog/frontmcp-config/examples/configure-throttle/per-tool-rate-limit.md +1 -2
  35. package/catalog/frontmcp-config/examples/configure-throttle/server-level-rate-limit.md +1 -2
  36. package/catalog/frontmcp-config/examples/configure-transport/custom-protocol-flags.md +1 -2
  37. package/catalog/frontmcp-config/examples/configure-transport/distributed-sessions-redis.md +1 -2
  38. package/catalog/frontmcp-config/examples/configure-transport/stateless-serverless.md +1 -2
  39. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/legacy-preset-nodejs.md +1 -2
  40. package/catalog/frontmcp-config/examples/configure-transport-protocol-presets/stateless-api-serverless.md +1 -2
  41. package/catalog/frontmcp-config/references/configure-deployment-targets.md +214 -0
  42. package/catalog/frontmcp-config/references/configure-elicitation.md +1 -2
  43. package/catalog/frontmcp-config/references/configure-security-headers.md +198 -0
  44. package/catalog/frontmcp-deployment/SKILL.md +1 -0
  45. package/catalog/frontmcp-deployment/examples/build-for-cli/cli-binary-build.md +1 -2
  46. package/catalog/frontmcp-deployment/examples/build-for-cli/unix-socket-daemon.md +1 -2
  47. package/catalog/frontmcp-deployment/examples/build-for-mcpb/mcpb-bundle-build.md +117 -0
  48. package/catalog/frontmcp-deployment/examples/build-for-sdk/connect-openai.md +1 -3
  49. package/catalog/frontmcp-deployment/examples/build-for-sdk/create-flat-config.md +1 -2
  50. package/catalog/frontmcp-deployment/examples/build-for-sdk/multi-platform-connect.md +3 -3
  51. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/basic-worker-deploy.md +1 -2
  52. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-custom-domain.md +1 -2
  53. package/catalog/frontmcp-deployment/examples/deploy-to-cloudflare/worker-with-kv-storage.md +1 -2
  54. package/catalog/frontmcp-deployment/examples/deploy-to-lambda/lambda-handler-with-cors.md +1 -2
  55. package/catalog/frontmcp-deployment/examples/deploy-to-vercel/vercel-with-kv.md +1 -2
  56. package/catalog/frontmcp-deployment/examples/mcp-client-integration/http-remote.md +106 -0
  57. package/catalog/frontmcp-deployment/examples/mcp-client-integration/stdio-binary-with-env.md +107 -0
  58. package/catalog/frontmcp-deployment/examples/mcp-client-integration/stdio-npx.md +89 -0
  59. package/catalog/frontmcp-deployment/references/build-for-mcpb.md +209 -0
  60. package/catalog/frontmcp-deployment/references/build-for-sdk.md +1 -2
  61. package/catalog/frontmcp-deployment/references/mcp-client-integration.md +225 -0
  62. package/catalog/frontmcp-development/examples/create-agent/basic-agent-with-tools.md +3 -6
  63. package/catalog/frontmcp-development/examples/create-agent/custom-multi-pass-agent.md +1 -2
  64. package/catalog/frontmcp-development/examples/create-agent/nested-agents-with-swarm.md +2 -4
  65. package/catalog/frontmcp-development/examples/create-agent-llm-config/anthropic-config.md +1 -2
  66. package/catalog/frontmcp-development/examples/create-agent-llm-config/openai-config.md +1 -2
  67. package/catalog/frontmcp-development/examples/create-job/basic-report-job.md +1 -2
  68. package/catalog/frontmcp-development/examples/create-job/job-with-permissions.md +2 -3
  69. package/catalog/frontmcp-development/examples/create-job/job-with-retry.md +1 -2
  70. package/catalog/frontmcp-development/examples/create-plugin-hooks/tool-level-hooks-and-stage-replacement.md +2 -5
  71. package/catalog/frontmcp-development/examples/create-provider/basic-database-provider.md +4 -3
  72. package/catalog/frontmcp-development/examples/create-skill-with-tools/directory-skill-with-tools.md +2 -3
  73. package/catalog/frontmcp-development/examples/create-tool/basic-class-tool.md +1 -2
  74. package/catalog/frontmcp-development/examples/create-tool/tool-with-di-and-errors.md +2 -2
  75. package/catalog/frontmcp-development/examples/create-tool/tool-with-rate-limiting-and-progress.md +1 -2
  76. package/catalog/frontmcp-development/examples/create-tool-annotations/destructive-delete-tool.md +2 -4
  77. package/catalog/frontmcp-development/examples/create-tool-annotations/readonly-query-tool.md +1 -2
  78. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/primitive-and-media-outputs.md +3 -6
  79. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-raw-shape-output.md +1 -2
  80. package/catalog/frontmcp-development/examples/create-tool-output-schema-types/zod-schema-advanced-output.md +2 -4
  81. package/catalog/frontmcp-development/examples/decorators-guide/agent-skill-job-workflow.md +3 -5
  82. package/catalog/frontmcp-development/examples/decorators-guide/basic-server-with-app-and-tools.md +5 -5
  83. package/catalog/frontmcp-development/examples/decorators-guide/multi-app-with-plugins-and-providers.md +4 -6
  84. package/catalog/frontmcp-development/examples/official-plugins/cache-and-feature-flags.md +3 -5
  85. package/catalog/frontmcp-development/examples/official-plugins/production-multi-plugin-setup.md +4 -5
  86. package/catalog/frontmcp-development/examples/official-plugins/remember-plugin-session-memory.md +3 -5
  87. package/catalog/frontmcp-development/references/create-agent.md +4 -7
  88. package/catalog/frontmcp-development/references/create-job.md +3 -6
  89. package/catalog/frontmcp-development/references/create-plugin-hooks.md +12 -16
  90. package/catalog/frontmcp-development/references/create-skill-with-tools.md +2 -3
  91. package/catalog/frontmcp-development/references/create-tool.md +93 -23
  92. package/catalog/frontmcp-development/references/create-workflow.md +2 -3
  93. package/catalog/frontmcp-development/references/decorators-guide.md +32 -36
  94. package/catalog/frontmcp-extensibility/examples/vectoriadb/product-catalog-search.md +4 -4
  95. package/catalog/frontmcp-extensibility/examples/vectoriadb/semantic-search-with-persistence.md +4 -4
  96. package/catalog/frontmcp-extensibility/examples/vectoriadb/tfidf-keyword-search.md +4 -3
  97. package/catalog/frontmcp-guides/SKILL.md +3 -3
  98. package/catalog/frontmcp-guides/examples/example-knowledge-base/agent-and-plugin.md +4 -5
  99. package/catalog/frontmcp-guides/examples/example-knowledge-base/vector-search-and-resources.md +4 -3
  100. package/catalog/frontmcp-guides/examples/example-task-manager/auth-and-crud-tools.md +4 -4
  101. package/catalog/frontmcp-guides/examples/example-weather-api/weather-tool-with-schemas.md +1 -2
  102. package/catalog/frontmcp-guides/references/example-knowledge-base.md +22 -17
  103. package/catalog/frontmcp-guides/references/example-task-manager.md +16 -11
  104. package/catalog/frontmcp-guides/references/example-weather-api.md +6 -3
  105. package/catalog/frontmcp-observability/examples/telemetry-api/tool-custom-spans.md +2 -3
  106. package/catalog/frontmcp-observability/examples/tracing-setup/basic-tracing.md +4 -3
  107. package/catalog/frontmcp-observability/references/telemetry-api.md +2 -3
  108. package/catalog/frontmcp-production-readiness/examples/common-checklist/observability-setup.md +1 -2
  109. package/catalog/frontmcp-production-readiness/examples/common-checklist/security-hardening.md +3 -4
  110. package/catalog/frontmcp-production-readiness/examples/distributed-ha/ha-kubernetes-3-replicas.md +229 -0
  111. package/catalog/frontmcp-production-readiness/examples/production-browser/cross-platform-crypto.md +2 -3
  112. package/catalog/frontmcp-production-readiness/examples/production-cli-binary/stdio-transport-error-handling.md +1 -2
  113. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/durable-objects-state.md +2 -4
  114. package/catalog/frontmcp-production-readiness/examples/production-cloudflare/workers-runtime-constraints.md +2 -3
  115. package/catalog/frontmcp-production-readiness/examples/production-lambda/cold-start-connection-reuse.md +3 -2
  116. package/catalog/frontmcp-production-readiness/examples/production-vercel/cold-start-optimization.md +2 -2
  117. package/catalog/frontmcp-production-readiness/examples/production-vercel/stateless-serverless-design.md +3 -3
  118. package/catalog/frontmcp-production-readiness/references/distributed-ha.md +194 -0
  119. package/catalog/frontmcp-setup/SKILL.md +11 -11
  120. package/catalog/frontmcp-setup/examples/project-structure-standalone/feature-folder-organization.md +5 -3
  121. package/catalog/frontmcp-setup/examples/project-structure-standalone/minimal-standalone-layout.md +4 -2
  122. package/catalog/frontmcp-setup/examples/setup-project/basic-node-server.md +4 -2
  123. package/catalog/frontmcp-setup/examples/setup-project/vercel-serverless-server.md +4 -2
  124. package/catalog/frontmcp-setup/examples/setup-redis/hybrid-vercel-kv-with-pubsub.md +8 -7
  125. package/catalog/frontmcp-setup/references/setup-project.md +10 -9
  126. package/catalog/frontmcp-setup/references/setup-redis.md +19 -16
  127. package/catalog/frontmcp-testing/examples/test-direct-client/basic-create-test.md +1 -3
  128. package/catalog/frontmcp-testing/examples/test-direct-client/openai-claude-format-test.md +1 -3
  129. package/catalog/frontmcp-testing/examples/test-tool-unit/schema-validation-test.md +2 -2
  130. package/catalog/frontmcp-testing/references/test-direct-client.md +1 -3
  131. package/catalog/frontmcp-testing/references/test-tool-unit.md +2 -2
  132. package/catalog/skills-manifest.json +325 -3
  133. package/package.json +1 -1
@@ -0,0 +1,225 @@
1
+ ---
2
+ name: mcp-client-integration
3
+ description: Configure MCP clients (Claude Desktop, Claude Code, Cursor, VS Code) to connect to a FrontMCP server via stdio, HTTP, or Unix socket
4
+ ---
5
+
6
+ # MCP Client Integration
7
+
8
+ Configure MCP clients to connect to your FrontMCP server. Covers all transport types (stdio, HTTP, Unix socket) and all major clients (Claude Desktop, Claude Code, Cursor, VS Code).
9
+
10
+ ## When to Use This Skill
11
+
12
+ ### Must Use
13
+
14
+ - Configuring `.mcp.json`, `claude_desktop_config.json`, or any MCP client config file to point at a FrontMCP server
15
+ - Publishing a FrontMCP server to npm for use with `npx` and `--stdio`
16
+ - Setting up a local daemon for IDE integration
17
+
18
+ ### Recommended
19
+
20
+ - Choosing between stdio, HTTP, and Unix socket transport for your deployment scenario
21
+ - Passing environment variables or auth tokens to your server from the MCP client config
22
+
23
+ ### Skip When
24
+
25
+ - Building the server itself (see `frontmcp-development`)
26
+ - Configuring server-side transport options (see `frontmcp-config` → `configure-transport`)
27
+ - Deploying to cloud platforms (see `deploy-to-vercel`, `deploy-to-lambda`)
28
+
29
+ > **Decision:** Use this skill when you have a working FrontMCP server and need to connect an MCP client to it.
30
+
31
+ ## Transport Selection
32
+
33
+ | Scenario | Transport | Server Command | Config Key |
34
+ | ------------------------------------- | ----------- | -------------------------------- | ----------------------------------- |
35
+ | npm package for public distribution | Stdio | `npx my-server --stdio` | `command` + `args` |
36
+ | Local CLI binary for personal use | Stdio | `./my-server --stdio` | `command` + `args` |
37
+ | Remote/cloud server | HTTP | `my-server serve -p 3000` | `type: "http"`, `url` |
38
+ | Local persistent daemon (low latency) | Unix Socket | `my-server daemon start` | `type: "http"`, `url`, `socketPath` |
39
+ | Background daemon on specific port | HTTP | `my-server daemon start -p 4000` | `type: "http"`, `url` |
40
+ | Vibe coding with AI agent (dev mode) | HTTP | `frontmcp dev` | `type: "http"`, `url` |
41
+
42
+ ## Development with AI Coding Agents
43
+
44
+ When building a FrontMCP server with a coding agent (Claude Code, Cursor, Windsurf), use **HTTP transport with `frontmcp dev`** for live hot reload. The agent edits code, the server auto-restarts, and the MCP client reconnects — no manual restart needed.
45
+
46
+ ### Setup
47
+
48
+ 1. Start the dev server: `npm run dev` (or `frontmcp dev`)
49
+ 2. Register in `.mcp.json`:
50
+ ```json
51
+ {
52
+ "mcpServers": {
53
+ "my-server": {
54
+ "type": "http",
55
+ "url": "http://localhost:3000/mcp"
56
+ }
57
+ }
58
+ }
59
+ ```
60
+ 3. Code and iterate — every file save triggers a server reload
61
+
62
+ ### Why HTTP for development (not stdio)
63
+
64
+ - **Hot reload:** Server restarts on file change (~200ms), client reconnects automatically
65
+ - **Multiple clients:** Agent + MCP Inspector + you can all connect simultaneously
66
+ - **Debugging:** Logs visible in terminal, Inspector UI available via `npm run inspect`
67
+ - **Persistence:** Server stays running across edits, no new process per connection
68
+
69
+ ## Stdio Transport
70
+
71
+ The most common transport. The MCP client spawns your server as a child process and communicates via stdin/stdout JSON-RPC.
72
+
73
+ **Key points:**
74
+
75
+ - Pass `--stdio` flag to the binary (detected before CLI framework loads)
76
+ - All logs are automatically redirected to stderr and `~/.frontmcp/logs/`
77
+ - stdout contains ONLY MCP JSON-RPC protocol messages
78
+ - One client per process (no multiplexing)
79
+
80
+ ### npx (published npm package)
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "my-server": {
86
+ "command": "npx",
87
+ "args": ["-y", "my-frontmcp-server", "--stdio"],
88
+ "env": {
89
+ "API_KEY": "sk-xxxxx"
90
+ }
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### Local binary
97
+
98
+ ```json
99
+ {
100
+ "mcpServers": {
101
+ "my-server": {
102
+ "command": "/path/to/my-server",
103
+ "args": ["--stdio"]
104
+ }
105
+ }
106
+ }
107
+ ```
108
+
109
+ ### Node.js bundle
110
+
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "my-server": {
115
+ "command": "node",
116
+ "args": ["/path/to/my-server.bundle.js", "--stdio"]
117
+ }
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## HTTP Transport
123
+
124
+ Connect to a running FrontMCP HTTP server. The server must be started separately.
125
+
126
+ ```json
127
+ {
128
+ "mcpServers": {
129
+ "my-server": {
130
+ "type": "http",
131
+ "url": "http://localhost:3005/mcp"
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ With authentication:
138
+
139
+ ```json
140
+ {
141
+ "mcpServers": {
142
+ "my-server": {
143
+ "type": "http",
144
+ "url": "https://my-server.example.com/mcp",
145
+ "headers": {
146
+ "Authorization": "Bearer token-here"
147
+ }
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## Unix Socket Transport
154
+
155
+ Connect to a FrontMCP daemon running on a Unix socket. Start the daemon first with `my-server daemon start`.
156
+
157
+ ```json
158
+ {
159
+ "mcpServers": {
160
+ "my-server": {
161
+ "type": "http",
162
+ "url": "http://localhost/mcp",
163
+ "socketPath": "/Users/you/.frontmcp/sockets/my-server.sock"
164
+ }
165
+ }
166
+ }
167
+ ```
168
+
169
+ The `url` hostname is ignored for Unix sockets; only the path (`/mcp`) is used for HTTP routing.
170
+
171
+ ## Publishing to npm
172
+
173
+ 1. Build: `frontmcp build --target cli --js`
174
+ 2. Set `bin` in `package.json`:
175
+ ```json
176
+ { "bin": { "my-server": "./dist/my-server-cli.bundle.js" } }
177
+ ```
178
+ 3. Publish: `npm publish`
179
+ 4. Users configure: `{ "command": "npx", "args": ["-y", "my-server", "--stdio"] }`
180
+
181
+ ## Client Config File Locations
182
+
183
+ | Client | File | Location |
184
+ | -------------- | ---------------------------- | ----------------------------------------------- |
185
+ | Claude Code | `.mcp.json` | Project root or `~/.claude/.mcp.json` |
186
+ | Claude Desktop | `claude_desktop_config.json` | `~/Library/Application Support/Claude/` (macOS) |
187
+ | Cursor | `.cursor/mcp.json` | Project root |
188
+ | VS Code | `.vscode/mcp.json` | Project root |
189
+ | Windsurf | `mcp_config.json` | `~/.codeium/windsurf/` |
190
+
191
+ ## Common Patterns
192
+
193
+ | Pattern | Correct | Incorrect | Why |
194
+ | ----------- | ----------------------------- | ---------------------- | --------------------------------------------------- |
195
+ | Stdio flag | `["--stdio"]` as arg | `"--stdio"` in env var | Flag must be in process argv |
196
+ | HTTP path | `url` ends with `/mcp` | `url` ends with `/` | FrontMCP serves MCP protocol at `/mcp` by default |
197
+ | Socket URL | Include `url` field with path | Only `socketPath` | HTTP routing needs the URL path even for sockets |
198
+ | npx flag | `"-y"` to auto-confirm | Omit `-y` | Without `-y`, npx prompts and blocks the MCP client |
199
+ | Env secrets | Use `env` in config | Hardcode in args | Env vars are not visible in process listings |
200
+
201
+ ## Troubleshooting
202
+
203
+ | Problem | Cause | Solution |
204
+ | ------------------------------ | ------------------------- | ------------------------------------------------------ |
205
+ | "Connection failed" with stdio | Server crashes on startup | Check `~/.frontmcp/logs/` for stack traces |
206
+ | Garbled protocol in stdio | Logs leaking to stdout | Ensure `--stdio` flag is passed (auto-redirects logs) |
207
+ | `ENOENT` for command | Binary not found | Use absolute path or ensure it's in PATH |
208
+ | `ECONNREFUSED` for HTTP | Server not running | Start server first: `my-server serve -p PORT` |
209
+ | Socket not found | Daemon not started | Run `my-server daemon start` |
210
+ | npx timeout | Package download slow | Run `npx -y my-server --stdio` manually first to cache |
211
+
212
+ ## Examples
213
+
214
+ | Example | Level | Description |
215
+ | -------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------ |
216
+ | [`stdio-npx`](../examples/mcp-client-integration/stdio-npx.md) | Basic | Publish a FrontMCP server to npm and configure MCP clients to use it with npx --stdio. |
217
+ | [`http-remote`](../examples/mcp-client-integration/http-remote.md) | Basic | Connect an MCP client to a FrontMCP server running as an HTTP server, locally or remotely. |
218
+ | [`stdio-binary-with-env`](../examples/mcp-client-integration/stdio-binary-with-env.md) | Intermediate | Configure a local FrontMCP CLI binary with environment variables and custom arguments in MCP client configs. |
219
+
220
+ > See all examples in [`examples/mcp-client-integration/`](../examples/mcp-client-integration/)
221
+
222
+ ## Reference
223
+
224
+ - **Docs:** <https://docs.agentfront.dev/frontmcp/deployment/mcp-clients>
225
+ - **Related skills:** `build-for-cli`, `deploy-to-node`, `frontmcp-config`
@@ -20,8 +20,7 @@ An autonomous agent that uses inner tools to review GitHub pull requests.
20
20
 
21
21
  ```typescript
22
22
  // src/apps/review/tools/fetch-pr.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  @Tool({
27
26
  name: 'fetch_pr',
@@ -44,8 +43,7 @@ class FetchPRTool extends ToolContext {
44
43
 
45
44
  ```typescript
46
45
  // src/apps/review/tools/post-review.tool.ts
47
- import { Tool, ToolContext } from '@frontmcp/sdk';
48
- import { z } from 'zod';
46
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
49
47
 
50
48
  @Tool({
51
49
  name: 'post_review_comment',
@@ -70,8 +68,7 @@ class PostReviewCommentTool extends ToolContext {
70
68
 
71
69
  ```typescript
72
70
  // src/apps/review/agents/pr-reviewer.agent.ts
73
- import { Agent, AgentContext } from '@frontmcp/sdk';
74
- import { z } from 'zod';
71
+ import { Agent, AgentContext, z } from '@frontmcp/sdk';
75
72
 
76
73
  @Agent({
77
74
  name: 'pr_reviewer',
@@ -19,8 +19,7 @@ An agent that overrides `execute()` to perform multi-pass LLM reasoning with `th
19
19
 
20
20
  ```typescript
21
21
  // src/apps/review/agents/structured-reviewer.agent.ts
22
- import { Agent, AgentContext } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Agent, AgentContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Agent({
26
25
  name: 'structured_reviewer',
@@ -19,8 +19,7 @@ Composing specialized sub-agents and configuring swarm-based handoff between age
19
19
 
20
20
  ```typescript
21
21
  // src/apps/support/agents/billing.agent.ts
22
- import { Agent, AgentContext, Tool, ToolContext } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Agent, AgentContext, Tool, ToolContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Tool({
26
25
  name: 'lookup_invoice',
@@ -65,8 +64,7 @@ class TechnicalAgent extends AgentContext {}
65
64
 
66
65
  ```typescript
67
66
  // src/apps/support/agents/triage.agent.ts
68
- import { Agent, AgentContext } from '@frontmcp/sdk';
69
- import { z } from 'zod';
67
+ import { Agent, AgentContext, z } from '@frontmcp/sdk';
70
68
 
71
69
  @Agent({
72
70
  name: 'triage_agent',
@@ -19,8 +19,7 @@ Configuring an agent with the Anthropic provider and common model options.
19
19
 
20
20
  ```typescript
21
21
  // src/apps/main/agents/summarizer.agent.ts
22
- import { Agent, AgentContext } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Agent, AgentContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Agent({
26
25
  name: 'summarizer',
@@ -19,8 +19,7 @@ Configuring an agent with the OpenAI provider and different model options.
19
19
 
20
20
  ```typescript
21
21
  // src/apps/main/agents/data-pipeline.agent.ts
22
- import { Agent, AgentContext, Tool, ToolContext } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Agent, AgentContext, Tool, ToolContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Tool({
26
25
  name: 'extract_data',
@@ -18,8 +18,7 @@ A minimal job that generates a report with progress tracking and structured outp
18
18
 
19
19
  ```typescript
20
20
  // src/jobs/generate-report.job.ts
21
- import { Job, JobContext } from '@frontmcp/sdk';
22
- import { z } from 'zod';
21
+ import { Job, JobContext, z } from '@frontmcp/sdk';
23
22
 
24
23
  @Job({
25
24
  name: 'generate-report',
@@ -19,8 +19,7 @@ A data export job with declarative permission controls, plus a function-style jo
19
19
 
20
20
  ```typescript
21
21
  // src/jobs/data-export.job.ts
22
- import { Job, JobContext, job } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Job, job, JobContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Job({
26
25
  name: 'data-export',
@@ -79,7 +78,7 @@ const CleanupTempFiles = job({
79
78
 
80
79
  ```typescript
81
80
  // src/server.ts
82
- import { FrontMcp, App } from '@frontmcp/sdk';
81
+ import { App, FrontMcp } from '@frontmcp/sdk';
83
82
 
84
83
  @App({
85
84
  name: 'data-app',
@@ -19,8 +19,7 @@ A job that syncs data from an external API with automatic retry, exponential bac
19
19
 
20
20
  ```typescript
21
21
  // src/jobs/sync-external-api.job.ts
22
- import { Job, JobContext } from '@frontmcp/sdk';
23
- import { z } from 'zod';
22
+ import { Job, JobContext, z } from '@frontmcp/sdk';
24
23
 
25
24
  @Job({
26
25
  name: 'sync-external-api',
@@ -20,9 +20,7 @@ Demonstrates two advanced patterns: adding `@Will`/`@Did` hooks directly on a `@
20
20
 
21
21
  ```typescript
22
22
  // src/tools/process-order.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { ToolHook } from '@frontmcp/sdk';
25
- import { z } from 'zod';
23
+ import { Tool, ToolContext, ToolHook, z } from '@frontmcp/sdk';
26
24
 
27
25
  const { Will, Did } = ToolHook;
28
26
 
@@ -70,8 +68,7 @@ class ProcessOrderTool extends ToolContext {
70
68
 
71
69
  ```typescript
72
70
  // src/plugins/mock.plugin.ts
73
- import { Plugin } from '@frontmcp/sdk';
74
- import { ToolHook } from '@frontmcp/sdk';
71
+ import { Plugin, ToolHook } from '@frontmcp/sdk';
75
72
 
76
73
  const { Stage } = ToolHook;
77
74
 
@@ -31,9 +31,10 @@ export const DB_TOKEN: Token<DatabaseService> = Symbol('DatabaseService');
31
31
 
32
32
  ```typescript
33
33
  // src/apps/main/providers/database.provider.ts
34
- import { Provider } from '@frontmcp/sdk';
35
34
  import { createPool, Pool } from 'your-db-driver';
36
35
 
36
+ import { Provider } from '@frontmcp/sdk';
37
+
37
38
  @Provider({ name: 'DatabaseProvider' })
38
39
  class DatabaseProvider implements DatabaseService {
39
40
  private pool!: Pool;
@@ -61,8 +62,8 @@ class DatabaseProvider implements DatabaseService {
61
62
 
62
63
  ```typescript
63
64
  // src/apps/main/tools/query-users.tool.ts
64
- import { Tool, ToolContext } from '@frontmcp/sdk';
65
- import { z } from 'zod';
65
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
66
+
66
67
  import { DB_TOKEN } from '../tokens';
67
68
 
68
69
  @Tool({
@@ -74,8 +74,7 @@ const DeployServiceSkill = await skillDir('./skills/deploy-service');
74
74
 
75
75
  ```typescript
76
76
  // src/skills/audit.skill.ts
77
- import { Skill, SkillContext, Tool, ToolContext } from '@frontmcp/sdk';
78
- import { z } from 'zod';
77
+ import { Skill, SkillContext, Tool, ToolContext, z } from '@frontmcp/sdk';
79
78
 
80
79
  @Tool({
81
80
  name: 'analyze_codebase',
@@ -120,7 +119,7 @@ class CodebaseAuditSkill extends SkillContext {}
120
119
 
121
120
  ```typescript
122
121
  // src/server.ts
123
- import { FrontMcp, App } from '@frontmcp/sdk';
122
+ import { App, FrontMcp } from '@frontmcp/sdk';
124
123
 
125
124
  @App({
126
125
  name: 'audit-app',
@@ -19,8 +19,7 @@ A minimal tool using the class-based pattern with Zod input validation and outpu
19
19
 
20
20
  ```typescript
21
21
  // src/apps/main/tools/greet-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: 'greet_user',
@@ -30,8 +30,8 @@ export const DATABASE: Token<DatabaseService> = Symbol('database');
30
30
 
31
31
  ```typescript
32
32
  // src/apps/main/tools/delete-record.tool.ts
33
- import { Tool, ToolContext, ResourceNotFoundError } from '@frontmcp/sdk';
34
- import { z } from 'zod';
33
+ import { ResourceNotFoundError, Tool, ToolContext, z } from '@frontmcp/sdk';
34
+
35
35
  import { DATABASE } from '../tokens';
36
36
 
37
37
  @Tool({
@@ -20,8 +20,7 @@ A batch processing tool that uses rate limiting, concurrency control, progress n
20
20
 
21
21
  ```typescript
22
22
  // src/apps/main/tools/batch-process.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  @Tool({
27
26
  name: 'batch_process',
@@ -20,8 +20,7 @@ Demonstrates annotating a tool that deletes data, enabling MCP clients to warn u
20
20
 
21
21
  ```typescript
22
22
  // src/tools/delete-user.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  @Tool({
27
26
  name: 'delete_user',
@@ -52,8 +51,7 @@ class DeleteUserTool extends ToolContext {
52
51
 
53
52
  ```typescript
54
53
  // src/tools/send-email.tool.ts
55
- import { Tool, ToolContext } from '@frontmcp/sdk';
56
- import { z } from 'zod';
54
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
57
55
 
58
56
  @Tool({
59
57
  name: 'send_email',
@@ -20,8 +20,7 @@ Demonstrates annotating a tool that only reads data, signaling to MCP clients th
20
20
 
21
21
  ```typescript
22
22
  // src/tools/search-users.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  @Tool({
27
26
  name: 'search_users',
@@ -20,8 +20,7 @@ Demonstrates using primitive string literals and media types as `outputSchema` f
20
20
 
21
21
  ```typescript
22
22
  // src/tools/summarize.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  // Primitive literal: returns plain text
27
26
  @Tool({
@@ -42,8 +41,7 @@ class SummarizeTextTool extends ToolContext {
42
41
 
43
42
  ```typescript
44
43
  // src/tools/generate-chart.tool.ts
45
- import { Tool, ToolContext } from '@frontmcp/sdk';
46
- import { z } from 'zod';
44
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
47
45
 
48
46
  // Media type: returns base64 image data
49
47
  @Tool({
@@ -66,8 +64,7 @@ class GenerateChartTool extends ToolContext {
66
64
 
67
65
  ```typescript
68
66
  // src/tools/analyze-document.tool.ts
69
- import { Tool, ToolContext } from '@frontmcp/sdk';
70
- import { z } from 'zod';
67
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
71
68
 
72
69
  // Multi-content array: returns text + image
73
70
  @Tool({
@@ -19,8 +19,7 @@ Demonstrates the recommended approach of using a Zod raw shape as `outputSchema`
19
19
 
20
20
  ```typescript
21
21
  // src/tools/get-user-profile.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: 'get_user_profile',
@@ -19,8 +19,7 @@ Demonstrates using full Zod schema objects (not raw shapes) as `outputSchema`, i
19
19
 
20
20
  ```typescript
21
21
  // src/tools/list-products.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
  // z.object() -- structured object output
26
25
  @Tool({
@@ -56,8 +55,7 @@ class GetOrderStatusTool extends ToolContext {
56
55
 
57
56
  ```typescript
58
57
  // src/tools/search-catalog.tool.ts
59
- import { Tool, ToolContext } from '@frontmcp/sdk';
60
- import { z } from 'zod';
58
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
61
59
 
62
60
  // z.discriminatedUnion() -- different shapes based on a type field
63
61
  const ProductResult = z.discriminatedUnion('type', [
@@ -21,8 +21,7 @@ Demonstrates the advanced decorator types: `@Agent` for autonomous AI agents, `@
21
21
 
22
22
  ```typescript
23
23
  // src/agents/research.agent.ts
24
- import { Agent, AgentContext } from '@frontmcp/sdk';
25
- import { z } from 'zod';
24
+ import { Agent, AgentContext, z } from '@frontmcp/sdk';
26
25
 
27
26
  @Agent({
28
27
  name: 'research_agent',
@@ -61,8 +60,7 @@ class CodeMigrationSkill {}
61
60
 
62
61
  ```typescript
63
62
  // src/jobs/sync-data.job.ts
64
- import { Job, JobContext } from '@frontmcp/sdk';
65
- import { z } from 'zod';
63
+ import { Job, JobContext, z } from '@frontmcp/sdk';
66
64
 
67
65
  @Job({
68
66
  name: 'sync_data',
@@ -110,7 +108,7 @@ class DeployPipeline {}
110
108
 
111
109
  ```typescript
112
110
  // src/server.ts
113
- import { FrontMcp, App } from '@frontmcp/sdk';
111
+ import { App, FrontMcp } from '@frontmcp/sdk';
114
112
 
115
113
  @App({
116
114
  name: 'platform',
@@ -20,8 +20,7 @@ Demonstrates the minimal decorator hierarchy to create a working FrontMCP server
20
20
 
21
21
  ```typescript
22
22
  // src/tools/search-users.tool.ts
23
- import { Tool, ToolContext } from '@frontmcp/sdk';
24
- import { z } from 'zod';
23
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
25
24
 
26
25
  @Tool({
27
26
  name: 'search_users',
@@ -88,10 +87,11 @@ class CodeReviewPrompt extends PromptContext {
88
87
 
89
88
  ```typescript
90
89
  // src/server.ts
91
- import { FrontMcp, App } from '@frontmcp/sdk';
92
- import { SearchUsersTool } from './tools/search-users.tool';
93
- import { AppConfigResource } from './resources/app-config.resource';
90
+ import { App, FrontMcp } from '@frontmcp/sdk';
91
+
94
92
  import { CodeReviewPrompt } from './prompts/code-review.prompt';
93
+ import { AppConfigResource } from './resources/app-config.resource';
94
+ import { SearchUsersTool } from './tools/search-users.tool';
95
95
 
96
96
  @App({
97
97
  name: 'analytics',
@@ -47,8 +47,7 @@ class AuditPlugin {}
47
47
 
48
48
  ```typescript
49
49
  // src/tools/query.tool.ts
50
- import { Tool, ToolContext } from '@frontmcp/sdk';
51
- import { z } from 'zod';
50
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
52
51
 
53
52
  @Tool({
54
53
  name: 'run_query',
@@ -68,8 +67,7 @@ class QueryTool extends ToolContext {
68
67
 
69
68
  ```typescript
70
69
  // src/tools/report.tool.ts
71
- import { Tool, ToolContext } from '@frontmcp/sdk';
72
- import { z } from 'zod';
70
+ import { Tool, ToolContext, z } from '@frontmcp/sdk';
73
71
 
74
72
  @Tool({
75
73
  name: 'generate_report',
@@ -90,7 +88,7 @@ class ReportTool extends ToolContext {
90
88
 
91
89
  ```typescript
92
90
  // src/resources/dashboard.resource.ts
93
- import { ResourceTemplate, ResourceContext } from '@frontmcp/sdk';
91
+ import { ResourceContext, ResourceTemplate } from '@frontmcp/sdk';
94
92
 
95
93
  @ResourceTemplate({
96
94
  name: 'dashboard',
@@ -109,7 +107,7 @@ class DashboardResource extends ResourceContext {
109
107
 
110
108
  ```typescript
111
109
  // src/server.ts
112
- import { FrontMcp, App } from '@frontmcp/sdk';
110
+ import { App, FrontMcp } from '@frontmcp/sdk';
113
111
 
114
112
  @App({
115
113
  name: 'analytics',