@cyanheads/mcp-ts-core 0.10.1 → 0.10.3
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/AGENTS.md +15 -9
- package/CLAUDE.md +15 -9
- package/README.md +5 -6
- package/changelog/0.10.x/0.10.2.md +35 -0
- package/changelog/0.10.x/0.10.3.md +46 -0
- package/dist/core/app.d.ts +36 -0
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +9 -4
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts +57 -15
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +12 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/index.d.ts +5 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/serverManifest.d.ts +18 -0
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +10 -2
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.d.ts +20 -0
- package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +74 -9
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/index.d.ts +2 -2
- package/dist/linter/rules/index.d.ts.map +1 -1
- package/dist/linter/rules/index.js +2 -2
- package/dist/linter/rules/index.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +4 -0
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +13 -0
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts +12 -0
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +48 -1
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/linter/types.d.ts +17 -0
- package/dist/linter/types.d.ts.map +1 -1
- package/dist/linter/validate.d.ts.map +1 -1
- package/dist/linter/validate.js +55 -1
- package/dist/linter/validate.js.map +1 -1
- package/dist/logs/combined.log +4 -0
- package/dist/logs/error.log +2 -0
- package/dist/logs/interactions.log +0 -0
- package/dist/mcp-server/notifications.d.ts +4 -4
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +1 -0
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +6 -0
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +3 -0
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +9 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +13 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +23 -12
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts +18 -2
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +4 -1
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +2 -0
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +14 -2
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +37 -13
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts +1 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.js +36 -11
- package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +50 -3
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +163 -6
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/spillover.d.ts +6 -0
- package/dist/services/canvas/spillover.d.ts.map +1 -1
- package/dist/services/canvas/spillover.js +1 -0
- package/dist/services/canvas/spillover.js.map +1 -1
- package/dist/services/canvas/types.d.ts +21 -0
- package/dist/services/canvas/types.d.ts.map +1 -1
- package/dist/testing/index.d.ts +8 -14
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +10 -11
- package/dist/testing/index.js.map +1 -1
- package/package.json +7 -7
- package/skills/add-prompt/SKILL.md +33 -2
- package/skills/add-resource/SKILL.md +25 -1
- package/skills/add-service/SKILL.md +2 -2
- package/skills/add-test/SKILL.md +3 -3
- package/skills/add-tool/SKILL.md +38 -1
- package/skills/api-canvas/SKILL.md +23 -3
- package/skills/api-config/SKILL.md +12 -3
- package/skills/api-context/SKILL.md +57 -31
- package/skills/api-linter/SKILL.md +77 -3
- package/skills/api-mirror/SKILL.md +30 -1
- package/skills/api-testing/SKILL.md +2 -16
- package/skills/code-simplifier/SKILL.md +2 -2
- package/skills/design-mcp-server/SKILL.md +2 -1
- package/skills/polish-docs-meta/SKILL.md +1 -1
- package/skills/polish-docs-meta/references/agent-protocol.md +1 -1
- package/skills/report-issue-framework/SKILL.md +2 -2
- package/skills/security-pass/SKILL.md +6 -11
- package/templates/AGENTS.md +17 -5
- package/templates/CLAUDE.md +17 -5
- package/templates/Dockerfile +17 -0
- package/dist/mcp-server/roots/roots-registration.d.ts +0 -22
- package/dist/mcp-server/roots/roots-registration.d.ts.map +0 -1
- package/dist/mcp-server/roots/roots-registration.js +0 -25
- package/dist/mcp-server/roots/roots-registration.js.map +0 -1
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Package:** `@cyanheads/mcp-ts-core`
|
|
4
|
-
**Version:** 0.10.
|
|
4
|
+
**Version:** 0.10.3
|
|
5
5
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
6
6
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
7
7
|
**Zod:** ^4.4.3
|
|
@@ -30,7 +30,7 @@ Both paths share the same public API. Init copies starter `package.json`, config
|
|
|
30
30
|
|
|
31
31
|
- **Logic throws, framework catches.** Pure, stateless `handler` functions, no `try/catch`. Plain `Error` works — framework catches, classifies, formats. Use `McpError(code, message, data, options?)` only when you need a specific JSON-RPC code or structured data; 4th arg `{ cause }` chains.
|
|
32
32
|
- **Full-stack observability.** The framework automatically instruments every tool/resource call — OTel span, duration/payload/memory metrics, structured completion log. Use `ctx.log` for additional domain-specific logging within handlers (external API calls, multi-step operations, business events). `requestId`, `traceId`, `tenantId` auto-correlated. No `console` calls.
|
|
33
|
-
- **Unified Context.** Handlers receive `ctx` with logging (`ctx.log`), tenant-scoped storage (`ctx.state`), optional protocol capabilities (`ctx.elicit
|
|
33
|
+
- **Unified Context.** Handlers receive `ctx` with logging (`ctx.log`), tenant-scoped storage (`ctx.state`), optional protocol capabilities (`ctx.elicit`), and cancellation (`ctx.signal`).
|
|
34
34
|
- **Decoupled storage.** `ctx.state` for tenant-scoped KV. Never access persistence backends directly.
|
|
35
35
|
- **Canvas tokens are capabilities, not tenant-scoped state.** A `canvasId` is a 10-char URL-safe token; possession grants full read/write/drop. Shareable between agents and across users in single-tenant deployments. Tools accept token in `input` (omit to create fresh) and return in `output`; collaboration is opt-in via token exchange.
|
|
36
36
|
- **Runtime parity.** All features work across `stdio`/`http`/Worker. Guard non-portable deps via `runtimeCaps` from `/utils` (`isNode`, `isBun`, `isWorkerLike`, `hasBuffer`, `hasProcess`, etc.). Prefer runtime-agnostic abstractions (Hono, Fetch APIs).
|
|
@@ -44,7 +44,7 @@ Both paths share the same public API. Init copies starter `package.json`, config
|
|
|
44
44
|
|
|
45
45
|
| Subpath | Key Exports | Purpose |
|
|
46
46
|
|:--------|:------------|:--------|
|
|
47
|
-
| `@cyanheads/mcp-ts-core` | `createApp`, `tool`, `resource`, `prompt`, `appTool`, `appResource`, `APP_RESOURCE_MIME_TYPE`, `Context`, `createFail`, `createRecoveryFor`, `TypedFail`, `TypedRecoveryFor`, `ReasonOf`, `HandlerContext`, `Enrich`, `EnrichHelpers`, `TypedEnrich`, `z` | Main entry point |
|
|
47
|
+
| `@cyanheads/mcp-ts-core` | `createApp`, `tool`, `resource`, `prompt`, `appTool`, `appResource`, `APP_RESOURCE_MIME_TYPE`, `Context`, `createFail`, `createRecoveryFor`, `TypedFail`, `TypedRecoveryFor`, `ReasonOf`, `HandlerContext`, `Enrich`, `EnrichHelpers`, `TypedEnrich`, `z`, `completable`, `isCompletable`, `CompleteCallback`, `CompleteResourceTemplateCallback` | Main entry point |
|
|
48
48
|
| `/worker` | `createWorkerHandler`, `CloudflareBindings` | Cloudflare Workers entry |
|
|
49
49
|
| `/tools` | `ToolDefinition`, `AnyToolDefinition`, `ToolAnnotations` | Tool definition types |
|
|
50
50
|
| `/resources` | `ResourceDefinition`, `AnyResourceDefinition` | Resource definition types |
|
|
@@ -93,6 +93,9 @@ import { allPromptDefinitions } from './mcp-server/prompts/index.js';
|
|
|
93
93
|
await createApp({
|
|
94
94
|
name: 'my-mcp-server', // overrides package.json / MCP_SERVER_NAME
|
|
95
95
|
version: '0.1.0', // overrides package.json / MCP_SERVER_VERSION
|
|
96
|
+
title: 'My Server', // optional identity (SEP-973): display name for client UIs
|
|
97
|
+
websiteUrl: 'https://github.com/owner/my-mcp-server',
|
|
98
|
+
icons: [{ src: 'https://example.com/icon.png', sizes: ['48x48'], mimeType: 'image/png' }],
|
|
96
99
|
tools: allToolDefinitions,
|
|
97
100
|
resources: allResourceDefinitions,
|
|
98
101
|
prompts: allPromptDefinitions,
|
|
@@ -110,6 +113,8 @@ await createApp({
|
|
|
110
113
|
|
|
111
114
|
**`instructions`** — Optional server-level orientation, surfaced on every `initialize` response as session-level system context. Use for deployment-specific guidance (connection aliases, regional notes, scope hints) instead of repeating in tool descriptions. Client adoption uneven but no downside when set.
|
|
112
115
|
|
|
116
|
+
**Identity fields** — Optional `title`, `websiteUrl`, `description`, `icons` (SEP-973) pass through to the SDK's `initialize` serverInfo and to the server manifest, keeping the `/.well-known/mcp.json` server card and landing page consistent with what `initialize` reports. Explicit `description` wins over `MCP_SERVER_DESCRIPTION`/package.json.
|
|
117
|
+
|
|
113
118
|
### Cloudflare Workers — `createWorkerHandler(options)`
|
|
114
119
|
|
|
115
120
|
```ts
|
|
@@ -231,7 +236,7 @@ export const myTool = tool('my_tool', {
|
|
|
231
236
|
- **Escape hatch:** if the schema was over-typed for a genuinely dynamic upstream API, relax it (`z.object({}).passthrough()`) — passthrough still flows data to `structuredContent`.
|
|
232
237
|
- **Fallback:** omit `format` for JSON stringify. Additional formatters in `/utils`: `markdown()` (builder), `diffFormatter` (async), `tableFormatter`, `treeFormatter`.
|
|
233
238
|
|
|
234
|
-
**`enrichment`** (optional): The success-path counterpart to `errors[]` — a `ZodRawShape` of agent-facing context (empty-result notices, query/filter echo, pagination totals) that must reach both client surfaces. Populate via `ctx.enrich(...)` (or `ctx.enrich.notice()` / `.total()` / `.echo()`) in the handler or service layer. The framework merges it into `structuredContent`, advertises `output.extend(enrichment)` as `outputSchema`, and mirrors it into a `content[]` trailer — so it reaches `structuredContent`-only and `content[]`-only clients alike, with no `format()` entry. Keys must be disjoint from `output`; a required field never populated fails the effective-output parse. See `api-context`'s `ctx.enrich`.
|
|
239
|
+
**`enrichment`** (optional): The success-path counterpart to `errors[]` — a `ZodRawShape` of agent-facing context (empty-result notices, query/filter echo, pagination totals, truncation disclosure) that must reach both client surfaces. Populate via `ctx.enrich(...)` (or `ctx.enrich.notice()` / `.total()` / `.echo()` / `.truncated()`) in the handler or service layer. The framework merges it into `structuredContent`, advertises `output.extend(enrichment)` as `outputSchema`, and mirrors it into a `content[]` trailer — so it reaches `structuredContent`-only and `content[]`-only clients alike, with no `format()` entry. Keys must be disjoint from `output`; a required field never populated fails the effective-output parse. See `api-context`'s `ctx.enrich`.
|
|
235
240
|
|
|
236
241
|
**Task tools:** Add `task: true` for long-running async operations. Framework manages lifecycle: creates task → returns ID immediately → runs handler in background with `ctx.progress` → stores result/error → `ctx.signal` for cancellation. See `add-tool` skill for full example.
|
|
237
242
|
|
|
@@ -274,8 +279,7 @@ interface Context {
|
|
|
274
279
|
readonly auth?: AuthContext;
|
|
275
280
|
readonly log: ContextLogger; // auto-correlated: requestId, traceId, tenantId
|
|
276
281
|
readonly state: ContextState; // tenant-scoped KV storage
|
|
277
|
-
readonly elicit?: (message
|
|
278
|
-
readonly sample?: (messages: SamplingMessage[], opts?: SamplingOpts) => Promise<CreateMessageResult>;
|
|
282
|
+
readonly elicit?: ElicitFn; // form call (message, schema) + .url(message, url); present iff client advertises elicitation
|
|
279
283
|
readonly notifyResourceListChanged?: (() => void) | undefined; // resource list changed
|
|
280
284
|
readonly notifyResourceUpdated?: ((uri: string) => void) | undefined; // resource content changed
|
|
281
285
|
readonly signal: AbortSignal; // cancellation
|
|
@@ -312,7 +316,7 @@ Throws `McpError(InvalidRequest)` if `tenantId` missing. Tenant ID resolution:
|
|
|
312
316
|
| HTTP + `MCP_AUTH_MODE=none` | `'default'` (single-tenant by design) |
|
|
313
317
|
| HTTP + `MCP_AUTH_MODE=jwt`/`oauth` | JWT `'tid'` claim — fail-closed if absent |
|
|
314
318
|
|
|
315
|
-
### `ctx.elicit`
|
|
319
|
+
### `ctx.elicit`
|
|
316
320
|
|
|
317
321
|
Check for presence before calling:
|
|
318
322
|
|
|
@@ -325,6 +329,8 @@ if (ctx.elicit) {
|
|
|
325
329
|
}
|
|
326
330
|
```
|
|
327
331
|
|
|
332
|
+
URL mode: `await ctx.elicit.url('Authorize access', 'https://example.com/authorize')` — hands the user an external link instead of a form. `elicitationId` is generated internally; `content` is absent, only `action` reports the outcome.
|
|
333
|
+
|
|
328
334
|
### `ctx.progress`
|
|
329
335
|
|
|
330
336
|
Present when `task: true`. Methods: `setTotal(n)`, `increment(amount?)`, `update(message)`.
|
|
@@ -438,7 +444,7 @@ describe('myTool', () => {
|
|
|
438
444
|
});
|
|
439
445
|
```
|
|
440
446
|
|
|
441
|
-
**`createMockContext` options:** `createMockContext()` (minimal), `{ tenantId: 'test-tenant' }` (enables state), `{
|
|
447
|
+
**`createMockContext` options:** `createMockContext()` (minimal), `{ tenantId: 'test-tenant' }` (enables state), `{ elicit: vi.fn() }`, `{ progress: true }` (task progress).
|
|
442
448
|
|
|
443
449
|
**Fuzz testing:** `fuzzTool`/`fuzzResource`/`fuzzPrompt` from `/testing/fuzz` generate valid and adversarial inputs from Zod schemas via `fast-check`, then assert handler invariants (no crashes, no prototype pollution, no stack trace leaks). Returns a `FuzzReport` for custom assertions.
|
|
444
450
|
|
|
@@ -485,7 +491,7 @@ Skills live in `skills/<name>/SKILL.md`. Read the relevant skill before starting
|
|
|
485
491
|
- **Builders:** `tool()`/`resource()`/`prompt()` with correct fields (`handler`, `input`, `output`, `format`, `auth`, `args`)
|
|
486
492
|
- **`format()` completeness:** must carry the same data as `output` (parity is lint-enforced — see Adding a Tool)
|
|
487
493
|
- **Auth:** via `auth: ['scope']` on definitions (not HOF wrapper)
|
|
488
|
-
- **Presence checks:** `ctx.elicit
|
|
494
|
+
- **Presence checks:** `ctx.elicit` checked before use
|
|
489
495
|
- **Task tools:** use `task: true` flag
|
|
490
496
|
- **Pagination:** large resource lists use `extractCursor`/`paginateArray`
|
|
491
497
|
- **Registration:** definitions exported in `definitions/index.ts` barrel
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Package:** `@cyanheads/mcp-ts-core`
|
|
4
|
-
**Version:** 0.10.
|
|
4
|
+
**Version:** 0.10.3
|
|
5
5
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
6
6
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
7
7
|
**Zod:** ^4.4.3
|
|
@@ -30,7 +30,7 @@ Both paths share the same public API. Init copies starter `package.json`, config
|
|
|
30
30
|
|
|
31
31
|
- **Logic throws, framework catches.** Pure, stateless `handler` functions, no `try/catch`. Plain `Error` works — framework catches, classifies, formats. Use `McpError(code, message, data, options?)` only when you need a specific JSON-RPC code or structured data; 4th arg `{ cause }` chains.
|
|
32
32
|
- **Full-stack observability.** The framework automatically instruments every tool/resource call — OTel span, duration/payload/memory metrics, structured completion log. Use `ctx.log` for additional domain-specific logging within handlers (external API calls, multi-step operations, business events). `requestId`, `traceId`, `tenantId` auto-correlated. No `console` calls.
|
|
33
|
-
- **Unified Context.** Handlers receive `ctx` with logging (`ctx.log`), tenant-scoped storage (`ctx.state`), optional protocol capabilities (`ctx.elicit
|
|
33
|
+
- **Unified Context.** Handlers receive `ctx` with logging (`ctx.log`), tenant-scoped storage (`ctx.state`), optional protocol capabilities (`ctx.elicit`), and cancellation (`ctx.signal`).
|
|
34
34
|
- **Decoupled storage.** `ctx.state` for tenant-scoped KV. Never access persistence backends directly.
|
|
35
35
|
- **Canvas tokens are capabilities, not tenant-scoped state.** A `canvasId` is a 10-char URL-safe token; possession grants full read/write/drop. Shareable between agents and across users in single-tenant deployments. Tools accept token in `input` (omit to create fresh) and return in `output`; collaboration is opt-in via token exchange.
|
|
36
36
|
- **Runtime parity.** All features work across `stdio`/`http`/Worker. Guard non-portable deps via `runtimeCaps` from `/utils` (`isNode`, `isBun`, `isWorkerLike`, `hasBuffer`, `hasProcess`, etc.). Prefer runtime-agnostic abstractions (Hono, Fetch APIs).
|
|
@@ -44,7 +44,7 @@ Both paths share the same public API. Init copies starter `package.json`, config
|
|
|
44
44
|
|
|
45
45
|
| Subpath | Key Exports | Purpose |
|
|
46
46
|
|:--------|:------------|:--------|
|
|
47
|
-
| `@cyanheads/mcp-ts-core` | `createApp`, `tool`, `resource`, `prompt`, `appTool`, `appResource`, `APP_RESOURCE_MIME_TYPE`, `Context`, `createFail`, `createRecoveryFor`, `TypedFail`, `TypedRecoveryFor`, `ReasonOf`, `HandlerContext`, `Enrich`, `EnrichHelpers`, `TypedEnrich`, `z` | Main entry point |
|
|
47
|
+
| `@cyanheads/mcp-ts-core` | `createApp`, `tool`, `resource`, `prompt`, `appTool`, `appResource`, `APP_RESOURCE_MIME_TYPE`, `Context`, `createFail`, `createRecoveryFor`, `TypedFail`, `TypedRecoveryFor`, `ReasonOf`, `HandlerContext`, `Enrich`, `EnrichHelpers`, `TypedEnrich`, `z`, `completable`, `isCompletable`, `CompleteCallback`, `CompleteResourceTemplateCallback` | Main entry point |
|
|
48
48
|
| `/worker` | `createWorkerHandler`, `CloudflareBindings` | Cloudflare Workers entry |
|
|
49
49
|
| `/tools` | `ToolDefinition`, `AnyToolDefinition`, `ToolAnnotations` | Tool definition types |
|
|
50
50
|
| `/resources` | `ResourceDefinition`, `AnyResourceDefinition` | Resource definition types |
|
|
@@ -93,6 +93,9 @@ import { allPromptDefinitions } from './mcp-server/prompts/index.js';
|
|
|
93
93
|
await createApp({
|
|
94
94
|
name: 'my-mcp-server', // overrides package.json / MCP_SERVER_NAME
|
|
95
95
|
version: '0.1.0', // overrides package.json / MCP_SERVER_VERSION
|
|
96
|
+
title: 'My Server', // optional identity (SEP-973): display name for client UIs
|
|
97
|
+
websiteUrl: 'https://github.com/owner/my-mcp-server',
|
|
98
|
+
icons: [{ src: 'https://example.com/icon.png', sizes: ['48x48'], mimeType: 'image/png' }],
|
|
96
99
|
tools: allToolDefinitions,
|
|
97
100
|
resources: allResourceDefinitions,
|
|
98
101
|
prompts: allPromptDefinitions,
|
|
@@ -110,6 +113,8 @@ await createApp({
|
|
|
110
113
|
|
|
111
114
|
**`instructions`** — Optional server-level orientation, surfaced on every `initialize` response as session-level system context. Use for deployment-specific guidance (connection aliases, regional notes, scope hints) instead of repeating in tool descriptions. Client adoption uneven but no downside when set.
|
|
112
115
|
|
|
116
|
+
**Identity fields** — Optional `title`, `websiteUrl`, `description`, `icons` (SEP-973) pass through to the SDK's `initialize` serverInfo and to the server manifest, keeping the `/.well-known/mcp.json` server card and landing page consistent with what `initialize` reports. Explicit `description` wins over `MCP_SERVER_DESCRIPTION`/package.json.
|
|
117
|
+
|
|
113
118
|
### Cloudflare Workers — `createWorkerHandler(options)`
|
|
114
119
|
|
|
115
120
|
```ts
|
|
@@ -231,7 +236,7 @@ export const myTool = tool('my_tool', {
|
|
|
231
236
|
- **Escape hatch:** if the schema was over-typed for a genuinely dynamic upstream API, relax it (`z.object({}).passthrough()`) — passthrough still flows data to `structuredContent`.
|
|
232
237
|
- **Fallback:** omit `format` for JSON stringify. Additional formatters in `/utils`: `markdown()` (builder), `diffFormatter` (async), `tableFormatter`, `treeFormatter`.
|
|
233
238
|
|
|
234
|
-
**`enrichment`** (optional): The success-path counterpart to `errors[]` — a `ZodRawShape` of agent-facing context (empty-result notices, query/filter echo, pagination totals) that must reach both client surfaces. Populate via `ctx.enrich(...)` (or `ctx.enrich.notice()` / `.total()` / `.echo()`) in the handler or service layer. The framework merges it into `structuredContent`, advertises `output.extend(enrichment)` as `outputSchema`, and mirrors it into a `content[]` trailer — so it reaches `structuredContent`-only and `content[]`-only clients alike, with no `format()` entry. Keys must be disjoint from `output`; a required field never populated fails the effective-output parse. See `api-context`'s `ctx.enrich`.
|
|
239
|
+
**`enrichment`** (optional): The success-path counterpart to `errors[]` — a `ZodRawShape` of agent-facing context (empty-result notices, query/filter echo, pagination totals, truncation disclosure) that must reach both client surfaces. Populate via `ctx.enrich(...)` (or `ctx.enrich.notice()` / `.total()` / `.echo()` / `.truncated()`) in the handler or service layer. The framework merges it into `structuredContent`, advertises `output.extend(enrichment)` as `outputSchema`, and mirrors it into a `content[]` trailer — so it reaches `structuredContent`-only and `content[]`-only clients alike, with no `format()` entry. Keys must be disjoint from `output`; a required field never populated fails the effective-output parse. See `api-context`'s `ctx.enrich`.
|
|
235
240
|
|
|
236
241
|
**Task tools:** Add `task: true` for long-running async operations. Framework manages lifecycle: creates task → returns ID immediately → runs handler in background with `ctx.progress` → stores result/error → `ctx.signal` for cancellation. See `add-tool` skill for full example.
|
|
237
242
|
|
|
@@ -274,8 +279,7 @@ interface Context {
|
|
|
274
279
|
readonly auth?: AuthContext;
|
|
275
280
|
readonly log: ContextLogger; // auto-correlated: requestId, traceId, tenantId
|
|
276
281
|
readonly state: ContextState; // tenant-scoped KV storage
|
|
277
|
-
readonly elicit?: (message
|
|
278
|
-
readonly sample?: (messages: SamplingMessage[], opts?: SamplingOpts) => Promise<CreateMessageResult>;
|
|
282
|
+
readonly elicit?: ElicitFn; // form call (message, schema) + .url(message, url); present iff client advertises elicitation
|
|
279
283
|
readonly notifyResourceListChanged?: (() => void) | undefined; // resource list changed
|
|
280
284
|
readonly notifyResourceUpdated?: ((uri: string) => void) | undefined; // resource content changed
|
|
281
285
|
readonly signal: AbortSignal; // cancellation
|
|
@@ -312,7 +316,7 @@ Throws `McpError(InvalidRequest)` if `tenantId` missing. Tenant ID resolution:
|
|
|
312
316
|
| HTTP + `MCP_AUTH_MODE=none` | `'default'` (single-tenant by design) |
|
|
313
317
|
| HTTP + `MCP_AUTH_MODE=jwt`/`oauth` | JWT `'tid'` claim — fail-closed if absent |
|
|
314
318
|
|
|
315
|
-
### `ctx.elicit`
|
|
319
|
+
### `ctx.elicit`
|
|
316
320
|
|
|
317
321
|
Check for presence before calling:
|
|
318
322
|
|
|
@@ -325,6 +329,8 @@ if (ctx.elicit) {
|
|
|
325
329
|
}
|
|
326
330
|
```
|
|
327
331
|
|
|
332
|
+
URL mode: `await ctx.elicit.url('Authorize access', 'https://example.com/authorize')` — hands the user an external link instead of a form. `elicitationId` is generated internally; `content` is absent, only `action` reports the outcome.
|
|
333
|
+
|
|
328
334
|
### `ctx.progress`
|
|
329
335
|
|
|
330
336
|
Present when `task: true`. Methods: `setTotal(n)`, `increment(amount?)`, `update(message)`.
|
|
@@ -438,7 +444,7 @@ describe('myTool', () => {
|
|
|
438
444
|
});
|
|
439
445
|
```
|
|
440
446
|
|
|
441
|
-
**`createMockContext` options:** `createMockContext()` (minimal), `{ tenantId: 'test-tenant' }` (enables state), `{
|
|
447
|
+
**`createMockContext` options:** `createMockContext()` (minimal), `{ tenantId: 'test-tenant' }` (enables state), `{ elicit: vi.fn() }`, `{ progress: true }` (task progress).
|
|
442
448
|
|
|
443
449
|
**Fuzz testing:** `fuzzTool`/`fuzzResource`/`fuzzPrompt` from `/testing/fuzz` generate valid and adversarial inputs from Zod schemas via `fast-check`, then assert handler invariants (no crashes, no prototype pollution, no stack trace leaks). Returns a `FuzzReport` for custom assertions.
|
|
444
450
|
|
|
@@ -485,7 +491,7 @@ Skills live in `skills/<name>/SKILL.md`. Read the relevant skill before starting
|
|
|
485
491
|
- **Builders:** `tool()`/`resource()`/`prompt()` with correct fields (`handler`, `input`, `output`, `format`, `auth`, `args`)
|
|
486
492
|
- **`format()` completeness:** must carry the same data as `output` (parity is lint-enforced — see Adding a Tool)
|
|
487
493
|
- **Auth:** via `auth: ['scope']` on definitions (not HOF wrapper)
|
|
488
|
-
- **Presence checks:** `ctx.elicit
|
|
494
|
+
- **Presence checks:** `ctx.elicit` checked before use
|
|
489
495
|
- **Task tools:** use `task: true` flag
|
|
490
496
|
- **Pagination:** large resource lists use `extractCursor`/`paginateArray`
|
|
491
497
|
- **Registration:** definitions exported in `definitions/index.ts` barrel
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
<div align="center">
|
|
7
7
|
|
|
8
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx)
|
|
9
9
|
|
|
10
10
|
[](https://modelcontextprotocol.io/) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
@@ -138,7 +138,8 @@ It also works on Cloudflare Workers with `createWorkerHandler()` — same defini
|
|
|
138
138
|
|
|
139
139
|
- **Declarative definitions** — `tool()`, `resource()`, `prompt()` builders with Zod schemas; `appTool()`/`appResource()` add interactive HTML UIs.
|
|
140
140
|
- **Server-level orientation** — `instructions` on `createApp`/`createWorkerHandler` rides every `initialize` for the model. Cross-tool composition hints, regional notes, scope guidance — without leaking text into every tool description.
|
|
141
|
-
- **
|
|
141
|
+
- **Server identity** — optional `title`, `websiteUrl`, `description`, `icons` (SEP-973) on `createApp`/`createWorkerHandler` flow to `initialize` serverInfo, the `/.well-known/mcp.json` server card, and the landing page.
|
|
142
|
+
- **Unified Context** — one `ctx` for logging, tenant-scoped storage, elicitation, cancellation, and task progress.
|
|
142
143
|
- **Auth** — `auth: ['scope']` on definitions, checked before dispatch (no wrapper code). Modes: `none`, `jwt`, or `oauth` (local secret or JWKS).
|
|
143
144
|
- **Task tools** — `task: true` for long-running ops; framework manages create/poll/progress/complete/cancel.
|
|
144
145
|
- **Definition linter** — validates names, schemas, auth scopes, annotations, format-parity, and cross-vendor JSON Schema portability at build time. Run via `lint:mcp` or `devcheck` — not invoked at server startup.
|
|
@@ -216,8 +217,7 @@ Handlers receive a unified `Context` object:
|
|
|
216
217
|
|:---------|:-----|:------------|
|
|
217
218
|
| `ctx.log` | `ContextLogger` | Request-scoped logger (auto-correlates requestId, traceId, tenantId) |
|
|
218
219
|
| `ctx.state` | `ContextState` | Tenant-scoped key-value storage |
|
|
219
|
-
| `ctx.elicit` | `
|
|
220
|
-
| `ctx.sample` | `Function?` | Request LLM completion from the client |
|
|
220
|
+
| `ctx.elicit` | `ElicitFn?` | Ask the user for input — form schema, or `.url()` for an external link (when client supports it) |
|
|
221
221
|
| `ctx.fail` | `(reason, msg?, data?) => McpError` | Typed error throw — reason checked against `errors[]` contract at compile time |
|
|
222
222
|
| `ctx.signal` | `AbortSignal` | Cancellation signal |
|
|
223
223
|
| `ctx.notifyResourceUpdated` | `Function?` | Notify subscribed clients a resource changed |
|
|
@@ -254,7 +254,6 @@ The `examples/` directory contains a reference server consuming core through pub
|
|
|
254
254
|
| `template_echo_message` | Basic tool with `format`, `auth` |
|
|
255
255
|
| `template_cat_fact` | External API call, error factories |
|
|
256
256
|
| `template_madlibs_elicitation` | `ctx.elicit` for interactive input |
|
|
257
|
-
| `template_code_review_sampling` | `ctx.sample` for LLM completion |
|
|
258
257
|
| `template_image_test` | Image content blocks |
|
|
259
258
|
| `template_async_countdown` | `task: true` with `ctx.progress` |
|
|
260
259
|
| `template_data_explorer` | MCP Apps with linked UI resource via `appTool()`/`appResource()` builders |
|
|
@@ -270,7 +269,7 @@ const input = myTool.input.parse({ query: 'test' });
|
|
|
270
269
|
const result = await myTool.handler(input, ctx);
|
|
271
270
|
```
|
|
272
271
|
|
|
273
|
-
`createMockContext()` provides stubbed `log`, `state`, and `signal`. Pass `{ tenantId }` for state operations, `{
|
|
272
|
+
`createMockContext()` provides stubbed `log`, `state`, and `signal`. Pass `{ tenantId }` for state operations, `{ elicit }` for elicitation mocking, `{ progress: true }` for task tools.
|
|
274
273
|
|
|
275
274
|
### Fuzz testing
|
|
276
275
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Per-table TTL for DataCanvas; ctx.enrich.truncated() helper; canvas-consumer and capped-list-no-truncation lint rules; scaffold Dockerfile pre-creates writable data dirs."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
agent-notes: |
|
|
6
|
+
Two new warning-severity lint rules are active on upgrade and may surface new warnings in consumer devcheck runs:
|
|
7
|
+
- `canvas-consumer-missing`: fires when a tool registers a canvas token in output but no `*_dataframe_query`-style consumer tool is found. Fix by adding a query tool, or suppress via `LintInput.canvasConsumers` (programmatic) or `MCP_LINT_CANVAS_CONSUMERS` (CSV env var; `false` disables entirely).
|
|
8
|
+
- `capped-list-no-truncation`: fires when a tool has a cap-like input, an array output, and no `truncated`/`totalCount` disclosure in enrichment or output. Fix by adding `ctx.enrich.truncated(...)` or a `totalCount` field, or suppress via `LintInput.truncationAllowlist` (programmatic) or `MCP_LINT_TRUNCATION_ALLOWLIST` (CSV env var).
|
|
9
|
+
Programmatic knobs take precedence over env vars.
|
|
10
|
+
Six skills were updated in this release — re-sync via maintenance Phase A: api-mirror 1.0→1.1, api-canvas 1.4→1.5, api-linter 1.6→1.7, api-context 1.6→1.7, add-tool 2.13→2.14, design-mcp-server 2.17→2.18.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 0.10.2 — 2026-06-10
|
|
14
|
+
|
|
15
|
+
## Added
|
|
16
|
+
|
|
17
|
+
- **`RegisterTableOptions.ttlMs`** — per-table TTL on `registerTable`; table expires after `ttlMs` ms and is dropped on the next sweep pass ([#140](https://github.com/cyanheads/mcp-ts-core/issues/140)).
|
|
18
|
+
- **`QueryOptions.ttlMs` with `registerAs`** — when a query result is materialized into a named table, `ttlMs` sets its TTL; the sweep drops expired tables before the canvas-level check.
|
|
19
|
+
- **`SpilloverOptions.ttlMs` passthrough** — spillover-created tables inherit `ttlMs` from the spillover options.
|
|
20
|
+
- **`TableInfo.expiresAt`** — ISO 8601 expiry field on table metadata; set only for TTL'd tables; surfaced via `describe()`.
|
|
21
|
+
- **Sliding TTL** — the per-table window slides on reads and writes against that table (`registerTable`, SQL references in `query()`, `export`); re-registering without `ttlMs` clears the prior TTL. Failed sweep drops are retried on the next pass.
|
|
22
|
+
- **`ctx.enrich.truncated({ shown, cap, ceiling?, guidance? })`** helper ([#197](https://github.com/cyanheads/mcp-ts-core/issues/197)) — writes `truncated`, `shown`, `cap`, `truncationCeiling?` enrichment values plus a `notice` (last-wins); eliminates boilerplate in cap-bounded list tools.
|
|
23
|
+
- **`canvas-consumer-missing` lint rule** (warning) ([#209](https://github.com/cyanheads/mcp-ts-core/issues/209)) — fires when a tool outputs a canvas token with no `*_dataframe_query`-style consumer in the definition set. Knobs: `LintInput.canvasConsumers` (array literal or `false`) / `MCP_LINT_CANVAS_CONSUMERS` (CSV; `false` disables). Programmatic knob wins.
|
|
24
|
+
- **`capped-list-no-truncation` lint rule** (warning) ([#197](https://github.com/cyanheads/mcp-ts-core/issues/197)) — fires when a tool has a cap-like input (`limit`/`per_page`/`page_size`/`max_results`/`max_items`, snake or camel), an array output, and no `truncated`/`totalCount` disclosure. Knobs: `LintInput.truncationAllowlist` (tool names) / `MCP_LINT_TRUNCATION_ALLOWLIST` (CSV). Programmatic knob wins.
|
|
25
|
+
- **Scaffold `Dockerfile` pre-creates writable data dirs** ([#199](https://github.com/cyanheads/mcp-ts-core/issues/199)) — `RUN mkdir -p /usr/src/app/.cache /usr/src/app/.mirror && chown -R bun:bun ...` before `USER bun`, so on-disk SQLite stores (`sqliteMirrorStore` catalog/mirror paths) open cleanly for the non-root runtime user.
|
|
26
|
+
- **`api-mirror` skill: "Shipping the mirror CLI in a production Docker image"** recipe ([#195](https://github.com/cyanheads/mcp-ts-core/issues/195)) — copy the mirror lifecycle scripts (plus the shared `_mirror-context.ts` shim) into the runtime stage and emit a runtime `tsconfig.json` mapping `@/*` to `./dist/*`, so `docker exec <container> bun run mirror:*` works in production. A commented reference block in the scaffold `Dockerfile` points at the recipe.
|
|
27
|
+
- **Skill updates**: api-mirror 1.0→1.1, api-canvas 1.4→1.5, api-linter 1.6→1.7, api-context 1.6→1.7, add-tool 2.13→2.14, design-mcp-server 2.17→2.18.
|
|
28
|
+
|
|
29
|
+
## Changed
|
|
30
|
+
|
|
31
|
+
- `hono` ^4.12.24 → ^4.12.25
|
|
32
|
+
- `@cloudflare/vitest-pool-workers` ^0.16.13 → ^0.16.14
|
|
33
|
+
- `@cloudflare/workers-types` 4.20260608.1 → 4.20260610.1
|
|
34
|
+
- `@supabase/supabase-js` ^2.108.0 → ^2.108.1
|
|
35
|
+
- `sanitize-html` ^2.17.4 → ^2.17.5
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Elicitation wired on the wire (#211), URL-mode elicitation (#212), sampling surface removed (#220), server identity fields (#213), completable prompt args + resource template completion (#214), RootsRegistry deleted (#218)"
|
|
3
|
+
breaking: true
|
|
4
|
+
agent-notes: |
|
|
5
|
+
**Breaking — compilation stops for sampling consumers:**
|
|
6
|
+
`Context.sample`, `SamplingOpts`, `CreateMessageResult`, and `SamplingMessage` are removed from the public API. Delete any code paths that reference `ctx.sample` or import these types — the member was always `undefined` at runtime (no production behavior change). Sampling is deprecated by SEP-2577 (MCP 2026-07-28); the recommended replacement is a direct LLM provider service.
|
|
7
|
+
|
|
8
|
+
**Elicitation now works on the wire:**
|
|
9
|
+
`ctx.elicit` is defined when the connected client advertised the elicitation capability and `undefined` otherwise. Re-verify any handler that presence-gates on `ctx.elicit` — previously the guard always routed to the fallback; now it routes to the elicit branch for capable clients.
|
|
10
|
+
|
|
11
|
+
**Optional adoptions (no breaking change):**
|
|
12
|
+
- Pass `title`, `websiteUrl`, `description`, `icons` to `createApp()`/`createWorkerHandler()` to populate `initialize` serverInfo and `/.well-known/mcp.json`.
|
|
13
|
+
- Wrap `prompt()` args with `completable()` (re-exported from main entry) to enable argument autocompletion.
|
|
14
|
+
- Add `title` to `prompt()` definitions.
|
|
15
|
+
- Add a `complete` map to `resource()` definitions for URI template variable completion.
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# 0.10.3 — 2026-06-10
|
|
19
|
+
|
|
20
|
+
## Added
|
|
21
|
+
|
|
22
|
+
- **`ElicitFn`** — new exported interface for `ctx.elicit`; directly callable for form-mode elicitation and carries a `.url(message, url)` method for URL-mode (external link) elicitation. `elicitationId` is generated internally for URL-mode. ([#211](https://github.com/cyanheads/mcp-ts-core/issues/211), [#212](https://github.com/cyanheads/mcp-ts-core/issues/212))
|
|
23
|
+
- **`completable`, `isCompletable`, `CompleteCallback`, `CompleteResourceTemplateCallback`** re-exported from the main entry (`@cyanheads/mcp-ts-core`) so consumers don't need a direct `@modelcontextprotocol/sdk` import. ([#214](https://github.com/cyanheads/mcp-ts-core/issues/214))
|
|
24
|
+
- **`PromptDefinition.title`** — optional human-readable display name forwarded to `registerPrompt`'s config and surfaced in `prompts/list`. ([#214](https://github.com/cyanheads/mcp-ts-core/issues/214))
|
|
25
|
+
- **`ResourceDefinition.complete`** — optional per-variable completion callbacks (`Record<string, CompleteResourceTemplateCallback>`) forwarded to the SDK's `ResourceTemplate` constructor; the SDK auto-installs `completion/complete` handling and advertises the `completions` capability. ([#214](https://github.com/cyanheads/mcp-ts-core/issues/214))
|
|
26
|
+
- **`CreateAppOptions`** — new optional fields `title`, `websiteUrl`, `description`, `icons` (typed against `Implementation['icons']`) forwarded to the `McpServer` constructor's `serverInfo` and to `buildServerManifest` so `initialize` and `/.well-known/mcp.json` stay consistent. Explicit `description` wins over `MCP_SERVER_DESCRIPTION`/`package.json`. ([#213](https://github.com/cyanheads/mcp-ts-core/issues/213))
|
|
27
|
+
- **`ManifestServer`** — new optional `title`, `websiteUrl`, `icons` fields in the server manifest output. ([#213](https://github.com/cyanheads/mcp-ts-core/issues/213))
|
|
28
|
+
- **Integration tests** — `tests/integration/elicitation.int.test.ts` drives a real SDK client over a linked in-memory transport; `tests/integration/completions.int.test.ts` covers completable prompt args and resource template completion. ([#211](https://github.com/cyanheads/mcp-ts-core/issues/211), [#214](https://github.com/cyanheads/mcp-ts-core/issues/214))
|
|
29
|
+
- **Linter regression test** — `tests/unit/linter/prompt-rules.test.ts` covers `generate-required`, `description-required`, `describe-on-fields` on args, and confirms `completable`-wrapped fields pass without warnings. ([#214](https://github.com/cyanheads/mcp-ts-core/issues/214))
|
|
30
|
+
|
|
31
|
+
## Changed
|
|
32
|
+
|
|
33
|
+
- **`ctx.elicit`** is now wired at registration time via `elicitInput` and `getClientCapabilities` closures over the per-server SDK `Server` instance (rather than sniffing `RequestHandlerExtra`). Presence is gated at request time on the client's advertised `elicitation` capability. Zod schemas are converted to the spec's restricted flat JSON Schema via `toJSONSchema()` before being sent on the wire. ([#211](https://github.com/cyanheads/mcp-ts-core/issues/211))
|
|
34
|
+
- **`HandlerNotifiers` / `ResourceHandlerNotifiers`** — both interfaces gain `elicitInput` and `getClientCapabilities` fields bound at registration time. `wrapElicit` now accepts `notifiers` (not `SdkRuntimeCapabilities`) in both `toolHandlerFactory.ts` and `resourceHandlerFactory.ts`. ([#211](https://github.com/cyanheads/mcp-ts-core/issues/211))
|
|
35
|
+
- **`createMockContext`** — when `options.elicit` is provided, the mock context's `ctx.elicit` is promoted to an `ElicitFn` with a default no-op `.url()` stub (`{ action: 'cancel' }`), so tests that only exercise form-mode elicitation don't need to supply `.url` explicitly. ([#212](https://github.com/cyanheads/mcp-ts-core/issues/212))
|
|
36
|
+
- **`scripts/audit-open-index-signatures.ts`** — `listSourceFiles()` now filters out worktree-deleted files (`existsSync(p)` guard) so the audit doesn't crash on files removed but not yet staged. ([chore])
|
|
37
|
+
- **`@types/node` `^25.9.2` → `25.9.3`** (pinned).
|
|
38
|
+
|
|
39
|
+
## Removed
|
|
40
|
+
|
|
41
|
+
- **`ctx.sample`** — removed from `Context`, `ContextDeps`, `createContext`, and all public type exports. Sampling is deprecated by SEP-2577 (MCP 2026-07-28); the member was always `undefined` at runtime. ([#220](https://github.com/cyanheads/mcp-ts-core/issues/220))
|
|
42
|
+
- **`SamplingOpts`** — removed from `src/core/context.ts` and the public API. ([#220](https://github.com/cyanheads/mcp-ts-core/issues/220))
|
|
43
|
+
- **`CreateMessageResult`, `SamplingMessage`** — removed from the main entry re-exports. ([#220](https://github.com/cyanheads/mcp-ts-core/issues/220))
|
|
44
|
+
- **`template_code_review_sampling`** example tool and its smoke test — deleted alongside the sampling surface. ([#220](https://github.com/cyanheads/mcp-ts-core/issues/220))
|
|
45
|
+
- **`RootsRegistry`** (`src/mcp-server/roots/roots-registration.ts`) — placeholder class deleted; the `roots/` directory and its test are gone. `RootsRegistry` was never exported publicly and `registerAll()` was a no-op. Roots is also deprecated by SEP-2577. ([#218](https://github.com/cyanheads/mcp-ts-core/issues/218))
|
|
46
|
+
- **`MockContextOptions.sample`** — removed from `src/testing/index.ts`. ([#220](https://github.com/cyanheads/mcp-ts-core/issues/220))
|
package/dist/core/app.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* @module src/core/app
|
|
7
7
|
*/
|
|
8
8
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
import type { Implementation } from '@modelcontextprotocol/sdk/types.js';
|
|
9
10
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
10
11
|
import { config } from '../config/index.js';
|
|
11
12
|
import { type LandingConfig, type ServerManifest } from '../core/serverManifest.js';
|
|
@@ -41,11 +42,30 @@ export interface ContextOptions {
|
|
|
41
42
|
export interface CreateAppOptions {
|
|
42
43
|
/** Options affecting the `Context` object passed to handlers. */
|
|
43
44
|
context?: ContextOptions;
|
|
45
|
+
/**
|
|
46
|
+
* One-line description shown in client listings and the server card.
|
|
47
|
+
* When set, this takes priority over the `MCP_SERVER_DESCRIPTION` env var
|
|
48
|
+
* and `package.json` `description`. Forwarded to the `McpServer` constructor
|
|
49
|
+
* and to `buildServerManifest` so `initialize` and `/.well-known/mcp.json`
|
|
50
|
+
* stay consistent.
|
|
51
|
+
*/
|
|
52
|
+
description?: string;
|
|
44
53
|
/**
|
|
45
54
|
* SEP-2133 extensions to advertise in server capabilities.
|
|
46
55
|
* Keys are extension identifiers (`vendor-prefix/extension-name`).
|
|
47
56
|
*/
|
|
48
57
|
extensions?: Record<string, object>;
|
|
58
|
+
/**
|
|
59
|
+
* Server icon(s) rendered in client listings. Typed against the SDK's
|
|
60
|
+
* `Implementation['icons']` — each entry carries `src` (URL), optional
|
|
61
|
+
* `mimeType`, `sizes?: string[]`, and `theme?: 'light' | 'dark'`.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* icons: [{ src: 'https://example.com/icon.png', sizes: ['48x48'], mimeType: 'image/png' }]
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
icons?: Implementation['icons'];
|
|
49
69
|
/**
|
|
50
70
|
* Server-level orientation text included on every `initialize` response.
|
|
51
71
|
* Spec-compliant clients SHOULD forward this to the model as session-level
|
|
@@ -71,10 +91,26 @@ export interface CreateAppOptions {
|
|
|
71
91
|
resources?: AnyResourceDefinition[];
|
|
72
92
|
/** Runs after core services are constructed, before transport starts. */
|
|
73
93
|
setup?: (core: CoreServices) => void | Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Human-readable display name shown in client listings and consent UIs.
|
|
96
|
+
* Supplements `name` (which is the machine identifier). Forwarded to the
|
|
97
|
+
* `McpServer` constructor's `serverInfo` and to the server manifest.
|
|
98
|
+
*
|
|
99
|
+
* @example `'My Server'`
|
|
100
|
+
*/
|
|
101
|
+
title?: string;
|
|
74
102
|
/** Tool definitions (legacy, new-style, or task). */
|
|
75
103
|
tools?: AnyToolDef[];
|
|
76
104
|
/** Server version — overrides package.json and MCP_SERVER_VERSION env var. */
|
|
77
105
|
version?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Canonical URL for the server's homepage or repository. Forwarded to the
|
|
108
|
+
* `McpServer` constructor's `serverInfo` and to the server manifest so
|
|
109
|
+
* `initialize` and `/.well-known/mcp.json` stay consistent.
|
|
110
|
+
*
|
|
111
|
+
* @example `'https://github.com/owner/my-mcp-server'`
|
|
112
|
+
*/
|
|
113
|
+
websiteUrl?: string;
|
|
78
114
|
}
|
|
79
115
|
/** Services available in the `setup()` callback and on ServerHandle. */
|
|
80
116
|
export interface CoreServices {
|
package/dist/core/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/core/app.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAe,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/core/app.ts"],"names":[],"mappings":"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"}
|
package/dist/core/app.js
CHANGED
|
@@ -11,7 +11,6 @@ import { startGcPressureLoop } from '../core/gcPressure.js';
|
|
|
11
11
|
import { buildServerManifest, } from '../core/serverManifest.js';
|
|
12
12
|
import { PromptRegistry } from '../mcp-server/prompts/prompt-registration.js';
|
|
13
13
|
import { ResourceRegistry } from '../mcp-server/resources/resource-registration.js';
|
|
14
|
-
import { RootsRegistry } from '../mcp-server/roots/roots-registration.js';
|
|
15
14
|
import { createMcpServerInstance } from '../mcp-server/server.js';
|
|
16
15
|
import { TaskManager } from '../mcp-server/tasks/core/taskManager.js';
|
|
17
16
|
import { isTaskToolDefinition } from '../mcp-server/tasks/utils/taskToolDefinition.js';
|
|
@@ -42,7 +41,7 @@ import { withSpan } from '../utils/telemetry/trace.js';
|
|
|
42
41
|
* @internal
|
|
43
42
|
*/
|
|
44
43
|
export async function composeServices(options = {}) {
|
|
45
|
-
const { tools = [], resources = [], prompts = [], extensions, instructions, landing, setup, context: contextOptions, } = options;
|
|
44
|
+
const { tools = [], resources = [], prompts = [], description, extensions, icons, instructions, landing, setup, title, websiteUrl, context: contextOptions, } = options;
|
|
46
45
|
// Persist name/version overrides to process.env so they survive resetConfig()
|
|
47
46
|
// and are visible to OTEL, logger, and transport throughout the process lifetime.
|
|
48
47
|
if (options.name || options.version) {
|
|
@@ -139,15 +138,17 @@ export async function composeServices(options = {}) {
|
|
|
139
138
|
exposeStatelessSessionId,
|
|
140
139
|
});
|
|
141
140
|
const promptRegistry = new PromptRegistry(prompts, logger);
|
|
142
|
-
const rootsRegistry = new RootsRegistry(logger);
|
|
143
141
|
const createServer = () => createMcpServerInstance({
|
|
144
142
|
advertiseTasks,
|
|
145
143
|
config,
|
|
144
|
+
...(description && { description }),
|
|
146
145
|
...(extensions && { extensions }),
|
|
146
|
+
...(icons && { icons }),
|
|
147
147
|
...(instructions && { instructions }),
|
|
148
|
+
...(title && { title }),
|
|
149
|
+
...(websiteUrl && { websiteUrl }),
|
|
148
150
|
promptRegistry,
|
|
149
151
|
resourceRegistry,
|
|
150
|
-
rootsRegistry,
|
|
151
152
|
taskStore: taskManager.getTaskStore(),
|
|
152
153
|
taskMessageQueue: taskManager.getMessageQueue(),
|
|
153
154
|
toolRegistry,
|
|
@@ -157,8 +158,12 @@ export async function composeServices(options = {}) {
|
|
|
157
158
|
tools,
|
|
158
159
|
resources,
|
|
159
160
|
prompts,
|
|
161
|
+
...(description && { description }),
|
|
160
162
|
...(extensions && { extensions }),
|
|
163
|
+
...(icons && { icons }),
|
|
161
164
|
...(landing && { landing }),
|
|
165
|
+
...(title && { title }),
|
|
166
|
+
...(websiteUrl && { websiteUrl }),
|
|
162
167
|
});
|
|
163
168
|
return {
|
|
164
169
|
coreServices,
|
package/dist/core/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/core/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/core/app.ts"],"names":[],"mappings":"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"}
|