@cyanheads/mcp-ts-core 0.13.3 → 0.13.5
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 +9 -7
- package/CLAUDE.md +9 -7
- package/README.md +1 -1
- package/changelog/0.13.x/0.13.4.md +65 -0
- package/changelog/0.13.x/0.13.5.md +41 -0
- package/changelog/template.md +7 -7
- package/dist/config/appRoot.d.ts.map +1 -1
- package/dist/config/appRoot.js +48 -16
- package/dist/config/appRoot.js.map +1 -1
- package/dist/core/app.d.ts +20 -0
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +1 -0
- package/dist/core/app.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/linter/rules/error-contract-rules.d.ts +65 -3
- package/dist/linter/rules/error-contract-rules.d.ts.map +1 -1
- package/dist/linter/rules/error-contract-rules.js +138 -3
- package/dist/linter/rules/error-contract-rules.js.map +1 -1
- package/dist/linter/rules/index.d.ts +1 -1
- package/dist/linter/rules/index.d.ts.map +1 -1
- package/dist/linter/rules/index.js +1 -1
- package/dist/linter/rules/index.js.map +1 -1
- package/dist/linter/rules/resource-rules.d.ts.map +1 -1
- package/dist/linter/rules/resource-rules.js +4 -2
- package/dist/linter/rules/resource-rules.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +19 -0
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +36 -0
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts +17 -0
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +101 -3
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/mcp-server/handlerContext.d.ts +11 -2
- package/dist/mcp-server/handlerContext.d.ts.map +1 -1
- package/dist/mcp-server/handlerContext.js +6 -4
- package/dist/mcp-server/handlerContext.js.map +1 -1
- package/dist/mcp-server/inputRequired.d.ts +35 -2
- package/dist/mcp-server/inputRequired.d.ts.map +1 -1
- package/dist/mcp-server/inputRequired.js +116 -2
- package/dist/mcp-server/inputRequired.js.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts +2 -1
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +4 -4
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +2 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +5 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +11 -2
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +2 -1
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +4 -4
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts +114 -0
- package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/inputPrevalidation.js +428 -0
- package/dist/mcp-server/tools/utils/inputPrevalidation.js.map +1 -0
- package/dist/mcp-server/tools/utils/strictenRecord.d.ts +42 -0
- package/dist/mcp-server/tools/utils/strictenRecord.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/strictenRecord.js +48 -0
- package/dist/mcp-server/tools/utils/strictenRecord.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +27 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js +35 -6
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +33 -5
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +136 -20
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts +4 -1
- package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.js +5 -0
- package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +52 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +79 -3
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/sqlGate.d.ts +14 -1
- package/dist/services/canvas/core/sqlGate.d.ts.map +1 -1
- package/dist/services/canvas/core/sqlGate.js +69 -7
- package/dist/services/canvas/core/sqlGate.js.map +1 -1
- package/dist/services/canvas/index.d.ts +2 -2
- package/dist/services/canvas/index.d.ts.map +1 -1
- package/dist/services/canvas/index.js +2 -2
- package/dist/services/canvas/index.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +20 -0
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +75 -25
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/canvas/types.d.ts +6 -1
- package/dist/services/canvas/types.d.ts.map +1 -1
- package/dist/types-global/errors.d.ts +30 -0
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js +4 -3
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +13 -3
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/mappings.d.ts +14 -1
- package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/mappings.js +19 -1
- package/dist/utils/internal/error-handler/mappings.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +12 -1
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +4 -1
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +24 -4
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +10 -6
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/httpError.d.ts +56 -6
- package/dist/utils/network/httpError.d.ts.map +1 -1
- package/dist/utils/network/httpError.js +56 -7
- package/dist/utils/network/httpError.js.map +1 -1
- package/dist/utils/network/pacer.d.ts +117 -0
- package/dist/utils/network/pacer.d.ts.map +1 -0
- package/dist/utils/network/pacer.js +304 -0
- package/dist/utils/network/pacer.js.map +1 -0
- package/dist/utils/network/retry.d.ts +119 -3
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/network/retry.js +176 -35
- package/dist/utils/network/retry.js.map +1 -1
- package/dist/utils/security/rateLimiter.d.ts +19 -1
- package/dist/utils/security/rateLimiter.d.ts.map +1 -1
- package/dist/utils/security/rateLimiter.js +49 -1
- package/dist/utils/security/rateLimiter.js.map +1 -1
- package/dist/utils/telemetry/attributes.d.ts +27 -0
- package/dist/utils/telemetry/attributes.d.ts.map +1 -1
- package/dist/utils/telemetry/attributes.js +38 -0
- package/dist/utils/telemetry/attributes.js.map +1 -1
- package/framework-skills/add-tool/SKILL.md +49 -5
- package/framework-skills/api-canvas/SKILL.md +37 -16
- package/framework-skills/api-config/SKILL.md +4 -4
- package/framework-skills/api-context/SKILL.md +4 -2
- package/framework-skills/api-errors/SKILL.md +39 -7
- package/framework-skills/api-linter/SKILL.md +92 -5
- package/framework-skills/api-telemetry/SKILL.md +43 -4
- package/framework-skills/api-utils/SKILL.md +9 -5
- package/framework-skills/api-utils/references/security.md +2 -2
- package/framework-skills/design-mcp-server/SKILL.md +20 -3
- package/framework-skills/field-test/SKILL.md +4 -2
- package/framework-skills/git-wrapup/SKILL.md +87 -69
- package/framework-skills/release-and-publish/SKILL.md +5 -5
- package/framework-skills/release-pr-review/SKILL.md +5 -5
- package/framework-skills/report-issue-framework/SKILL.md +6 -35
- package/framework-skills/report-issue-local/SKILL.md +6 -36
- package/package.json +2 -2
- package/templates/.github/ISSUE_TEMPLATE/bug_report.yml +2 -2
- package/templates/.github/ISSUE_TEMPLATE/feature_request.yml +2 -2
- package/templates/AGENTS.md +1 -1
- package/templates/CLAUDE.md +1 -1
- package/templates/changelog/template.md +7 -7
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
* Validates tool definitions against MCP spec and framework conventions.
|
|
4
4
|
* @module src/linter/rules/tool-rules
|
|
5
5
|
*/
|
|
6
|
+
import { foldArgumentKey } from '../../mcp-server/tools/utils/inputPrevalidation.js';
|
|
7
|
+
import { inputVariants } from '../../mcp-server/tools/utils/schemaShape.js';
|
|
6
8
|
import { invalidDefinitionEntry, isDefinitionObject } from './definition-rules.js';
|
|
7
9
|
import { lintEnrichmentContract } from './enrichment-rules.js';
|
|
8
|
-
import { lintErrorContract, lintErrorContractConformance } from './error-contract-rules.js';
|
|
10
|
+
import { lintErrorContract, lintErrorContractConformance, lintErrorContractUnthrown, } from './error-contract-rules.js';
|
|
9
11
|
import { lintFormatParity } from './format-parity-rules.js';
|
|
10
12
|
import { lintHandlerBody } from './handler-body-rules.js';
|
|
11
13
|
import { checkNameRequired, checkToolNameFormat } from './name-rules.js';
|
|
12
|
-
import { checkHeaderDesignations, lintSchemaRoot, objectShapeKeys } from './schema-rules.js';
|
|
14
|
+
import { checkHeaderDesignations, checkStrictenedRootMeta, lintSchemaRoot, objectShapeKeys, } from './schema-rules.js';
|
|
13
15
|
/**
|
|
14
16
|
* Runs all lint rules against a single tool definition.
|
|
15
17
|
* Accepts `unknown` to catch structural issues before type narrowing.
|
|
@@ -62,6 +64,13 @@ export function lintToolDefinition(def, portability) {
|
|
|
62
64
|
if (designations)
|
|
63
65
|
diagnostics.push(designations);
|
|
64
66
|
}
|
|
67
|
+
// Root `.describe()` / `.meta()` that strictening discarded — read off the
|
|
68
|
+
// record `tool()` left, since the stored schema no longer carries it.
|
|
69
|
+
diagnostics.push(...checkStrictenedRootMeta(def, displayName));
|
|
70
|
+
// Declared argument aliases must resolve to exactly one declared key.
|
|
71
|
+
if (d?.inputAliases !== undefined) {
|
|
72
|
+
diagnostics.push(...lintInputAliases(d.inputAliases, d?.input, displayName));
|
|
73
|
+
}
|
|
65
74
|
// Output schema: must be ZodObject, serializable to JSON Schema
|
|
66
75
|
const outputRoot = lintSchemaRoot(d?.output, 'output', 'tool', displayName, { portability });
|
|
67
76
|
diagnostics.push(...outputRoot.diagnostics);
|
|
@@ -88,8 +97,97 @@ export function lintToolDefinition(def, portability) {
|
|
|
88
97
|
diagnostics.push(...lintHandlerBody(d, 'tool'));
|
|
89
98
|
// Declarative error contract validation
|
|
90
99
|
if (d?.errors !== undefined) {
|
|
100
|
+
const contractDef = d;
|
|
91
101
|
diagnostics.push(...lintErrorContract(d.errors, 'tool', displayName));
|
|
92
|
-
diagnostics.push(...lintErrorContractConformance(
|
|
102
|
+
diagnostics.push(...lintErrorContractConformance(contractDef, 'tool', displayName));
|
|
103
|
+
diagnostics.push(...lintErrorContractUnthrown(contractDef, 'tool', displayName));
|
|
104
|
+
}
|
|
105
|
+
return diagnostics;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validates a tool's `inputAliases` against the declared input keys.
|
|
109
|
+
*
|
|
110
|
+
* An alias is a one-to-one mapping fixed ahead of time — the whole reason it is
|
|
111
|
+
* accepted where nearest-key matching is not — so an alias that resolves to
|
|
112
|
+
* more than one key, or to none, is a definition error rather than a runtime
|
|
113
|
+
* one. The runtime declines an ambiguous rewrite silently and the caller sees
|
|
114
|
+
* the ordinary strict rejection, which reads as the alias simply not working;
|
|
115
|
+
* every condition below is decidable from the definition, so it is decided
|
|
116
|
+
* here instead.
|
|
117
|
+
*
|
|
118
|
+
* Case-folding uses {@link foldArgumentKey}, the same fold the rewrite applies.
|
|
119
|
+
* On a discriminated-union root, every variant's keys count as declared: a
|
|
120
|
+
* rewrite resolves against the selected variant, so an alias naming a key no
|
|
121
|
+
* variant declares can never fire.
|
|
122
|
+
*/
|
|
123
|
+
export function lintInputAliases(aliases, input, definitionName) {
|
|
124
|
+
const diagnostic = (message) => ({
|
|
125
|
+
rule: 'input-alias-conflict',
|
|
126
|
+
severity: 'error',
|
|
127
|
+
message,
|
|
128
|
+
definitionType: 'tool',
|
|
129
|
+
definitionName,
|
|
130
|
+
});
|
|
131
|
+
if (aliases === null || typeof aliases !== 'object' || Array.isArray(aliases)) {
|
|
132
|
+
return [
|
|
133
|
+
diagnostic(`Tool '${definitionName}' inputAliases must be an object mapping each alias to the ` +
|
|
134
|
+
`declared input key it stands for, e.g. { drug_name: 'drug' }.`),
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
const declared = new Set();
|
|
138
|
+
for (const variant of inputVariants(input)) {
|
|
139
|
+
for (const key of Object.keys(variant.shape))
|
|
140
|
+
declared.add(key);
|
|
141
|
+
}
|
|
142
|
+
const diagnostics = [];
|
|
143
|
+
// A declared key that case-folds onto another leaves the case-style half with
|
|
144
|
+
// no single target, so it rewrites nothing and the alias silently never fires.
|
|
145
|
+
const declaredByFold = new Map();
|
|
146
|
+
for (const key of declared) {
|
|
147
|
+
const fold = foldArgumentKey(key);
|
|
148
|
+
declaredByFold.set(fold, [...(declaredByFold.get(fold) ?? []), key]);
|
|
149
|
+
}
|
|
150
|
+
for (const keys of declaredByFold.values()) {
|
|
151
|
+
if (keys.length > 1) {
|
|
152
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' declares ${keys.join(' and ')}, which differ only in case ` +
|
|
153
|
+
`style. No alias can resolve between them — rename one, or drop the other and ` +
|
|
154
|
+
`declare it as an alias of the one you keep.`));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const aliasesByFold = new Map();
|
|
158
|
+
for (const [alias, target] of Object.entries(aliases)) {
|
|
159
|
+
if (typeof target !== 'string' || target.length === 0) {
|
|
160
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' inputAliases['${alias}'] must name a declared input key as ` +
|
|
161
|
+
`a non-empty string.`));
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (declared.has(alias)) {
|
|
165
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' declares '${alias}' as both an input key and an alias for ` +
|
|
166
|
+
`'${target}'. A declared key is never rewritten, so the alias can never fire — ` +
|
|
167
|
+
`remove it, or rename the input key.`));
|
|
168
|
+
}
|
|
169
|
+
if (!declared.has(target)) {
|
|
170
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' aliases '${alias}' to '${target}', which is not a declared ` +
|
|
171
|
+
`input key${declared.size > 0 ? ` (declared: ${[...declared].join(', ')})` : ''}. ` +
|
|
172
|
+
`Point the alias at an existing key.`));
|
|
173
|
+
}
|
|
174
|
+
const fold = foldArgumentKey(alias);
|
|
175
|
+
const shadowed = (declaredByFold.get(fold) ?? []).filter((key) => key !== target);
|
|
176
|
+
if (shadowed.length > 0) {
|
|
177
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' aliases '${alias}' to '${target}', but '${alias}' is a case-` +
|
|
178
|
+
`style variant of ${shadowed.join(' and ')}. Alias it to the key it spells, or ` +
|
|
179
|
+
`rename it so the two readings cannot disagree.`));
|
|
180
|
+
}
|
|
181
|
+
aliasesByFold.set(fold, [...(aliasesByFold.get(fold) ?? []), { alias, target }]);
|
|
182
|
+
}
|
|
183
|
+
for (const entries of aliasesByFold.values()) {
|
|
184
|
+
const targets = new Set(entries.map((entry) => entry.target));
|
|
185
|
+
if (entries.length > 1 && targets.size > 1) {
|
|
186
|
+
diagnostics.push(diagnostic(`Tool '${definitionName}' aliases ${entries
|
|
187
|
+
.map((entry) => `'${entry.alias}' → '${entry.target}'`)
|
|
188
|
+
.join(' and ')}, which differ only in case style but name different keys. Pick one ` +
|
|
189
|
+
`target, or spell the aliases so they are distinguishable.`));
|
|
190
|
+
}
|
|
93
191
|
}
|
|
94
192
|
return diagnostics;
|
|
95
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/tool-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/tool-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ServerContext } from '@modelcontextprotocol/server';
|
|
8
8
|
import { type Context } from '../core/context.js';
|
|
9
|
+
import { type InputRequiredGate } from './inputRequired.js';
|
|
9
10
|
import { type NotifierSources, type OptionalNotifiers } from './notifications.js';
|
|
11
|
+
import type { InputHandlingOptions } from './tools/utils/inputPrevalidation.js';
|
|
10
12
|
import type { StorageService } from '../storage/core/StorageService.js';
|
|
11
13
|
import type { ErrorContract } from '../types-global/errors.js';
|
|
12
14
|
import type { Logger } from '../utils/internal/logger.js';
|
|
@@ -20,6 +22,11 @@ export interface HandlerServices {
|
|
|
20
22
|
* request-spanning lifetime (HTTP `stateful` / `auto` mode).
|
|
21
23
|
*/
|
|
22
24
|
exposeStatelessSessionId?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Server-level switches for the tool-argument pre-validation step. Wired from
|
|
27
|
+
* `createApp({ input })`; every stage is on when this is absent. Tools only.
|
|
28
|
+
*/
|
|
29
|
+
input?: InputHandlingOptions;
|
|
23
30
|
logger: Logger;
|
|
24
31
|
storage: StorageService;
|
|
25
32
|
}
|
|
@@ -60,7 +67,9 @@ export declare function handlerParentContext(request: HandlerRequest): Partial<P
|
|
|
60
67
|
* `ctx.traceId` / `ctx.spanId` — and the child logger built from them — name
|
|
61
68
|
* the span the handler runs in rather than the enclosing request span (#296).
|
|
62
69
|
* `attachTypedFail` adds `ctx.fail` when the definition declares an error
|
|
63
|
-
* contract; otherwise the context is unchanged.
|
|
70
|
+
* contract; otherwise the context is unchanged. `inputGate` is the
|
|
71
|
+
* connection's client-capability check, which `ctx.requestInput` runs on the
|
|
72
|
+
* result it builds (#379); the context is unchanged without one.
|
|
64
73
|
*/
|
|
65
|
-
export declare function buildHandlerContext(request: HandlerRequest, services: HandlerServices, spanContext: RequestContext, errors: readonly ErrorContract[] | undefined, uri?: URL): Context;
|
|
74
|
+
export declare function buildHandlerContext(request: HandlerRequest, services: HandlerServices, spanContext: RequestContext, errors: readonly ErrorContract[] | undefined, inputGate?: InputRequiredGate, uri?: URL): Context;
|
|
66
75
|
//# sourceMappingURL=handlerContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlerContext.d.ts","sourceRoot":"","sources":["../../src/mcp-server/handlerContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,EAAmB,KAAK,OAAO,EAAiB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"handlerContext.d.ts","sourceRoot":"","sources":["../../src/mcp-server/handlerContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,EAAmB,KAAK,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAE3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC5C,oEAAoE;IACpE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,qFAAqF;IACrF,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,eAAe,GACzB,cAAc,CAehB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAM1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC5C,SAAS,CAAC,EAAE,iBAAiB,EAC7B,GAAG,CAAC,EAAE,GAAG,GACR,OAAO,CAoBT"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { config } from '../config/index.js';
|
|
8
8
|
import { attachTypedFail, createContext } from '../core/context.js';
|
|
9
|
-
import { createContextInputs, createRequestInput } from './inputRequired.js';
|
|
9
|
+
import { createContextInputs, createRequestInput, } from './inputRequired.js';
|
|
10
10
|
import { selectNotifiers, } from './notifications.js';
|
|
11
11
|
import { resolveSessionMode } from './types.js';
|
|
12
12
|
/**
|
|
@@ -48,9 +48,11 @@ export function handlerParentContext(request) {
|
|
|
48
48
|
* `ctx.traceId` / `ctx.spanId` — and the child logger built from them — name
|
|
49
49
|
* the span the handler runs in rather than the enclosing request span (#296).
|
|
50
50
|
* `attachTypedFail` adds `ctx.fail` when the definition declares an error
|
|
51
|
-
* contract; otherwise the context is unchanged.
|
|
51
|
+
* contract; otherwise the context is unchanged. `inputGate` is the
|
|
52
|
+
* connection's client-capability check, which `ctx.requestInput` runs on the
|
|
53
|
+
* result it builds (#379); the context is unchanged without one.
|
|
52
54
|
*/
|
|
53
|
-
export function buildHandlerContext(request, services, spanContext, errors, uri) {
|
|
55
|
+
export function buildHandlerContext(request, services, spanContext, errors, inputGate, uri) {
|
|
54
56
|
const { mcpReq, notifiers } = request;
|
|
55
57
|
return attachTypedFail(createContext({
|
|
56
58
|
appContext: spanContext,
|
|
@@ -59,7 +61,7 @@ export function buildHandlerContext(request, services, spanContext, errors, uri)
|
|
|
59
61
|
signal: request.signal,
|
|
60
62
|
sessionId: request.sessionId,
|
|
61
63
|
inputs: createContextInputs(mcpReq),
|
|
62
|
-
requestInput: createRequestInput(),
|
|
64
|
+
requestInput: createRequestInput(inputGate),
|
|
63
65
|
...(mcpReq?.log && { wireLog: mcpReq.log }),
|
|
64
66
|
notifyPromptListChanged: notifiers.notifyPromptListChanged,
|
|
65
67
|
notifyResourceListChanged: notifiers.notifyResourceListChanged,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlerContext.js","sourceRoot":"","sources":["../../src/mcp-server/handlerContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAgB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"handlerContext.js","sourceRoot":"","sources":["../../src/mcp-server/handlerContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAgB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA0C3D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,aAAwC,EACxC,QAAyB,EACzB,SAA0B;IAE1B,MAAM,MAAM,GAAG,aAAa,EAAE,MAAM,CAAC;IACrC,MAAM,YAAY,GAChB,OAAO,aAAa,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,UAAU,CAAC;IAChF,OAAO;QACL,MAAM;QACN,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C,YAAY;QACZ,SAAS,EACP,YAAY,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,wBAAwB,KAAK,IAAI,CAAC;YAC5E,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAuB;IAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACrC,OAAO;QACL,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,QAAyB,EACzB,WAA2B,EAC3B,MAA4C,EAC5C,SAA6B,EAC7B,GAAS;IAET,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACtC,OAAO,eAAe,CACpB,aAAa,CAAC;QACZ,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC;QACnC,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC;QAC3C,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3C,uBAAuB,EAAE,SAAS,CAAC,uBAAuB;QAC1D,yBAAyB,EAAE,SAAS,CAAC,yBAAyB;QAC9D,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;QACtD,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;QACtD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KACpB,CAAC,EACF,MAAM,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
* @see {@link https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr | MCP Multi-Round-Trip Requests}
|
|
19
19
|
* @module src/mcp-server/inputRequired
|
|
20
20
|
*/
|
|
21
|
-
import { acceptedContent, type InputRequiredResult, type InputRequiredSpec, type ServerContext } from '@modelcontextprotocol/server';
|
|
21
|
+
import { acceptedContent, type ClientCapabilities, type InputRequiredResult, type InputRequiredSpec, type ServerContext } from '@modelcontextprotocol/server';
|
|
22
22
|
import type { ContextInputs } from '../core/context.js';
|
|
23
|
+
import { McpError } from '../types-global/errors.js';
|
|
23
24
|
/**
|
|
24
25
|
* Thrown by `ctx.requestInput(...)` and caught by the handler factories, which
|
|
25
26
|
* return the carried `input_required` result to the SDK instead of a normal
|
|
@@ -36,12 +37,44 @@ export declare class InputRequiredSignal extends Error {
|
|
|
36
37
|
}
|
|
37
38
|
/** Narrows an unknown thrown value to the input-required control-flow signal. */
|
|
38
39
|
export declare function isInputRequiredSignal(error: unknown): error is InputRequiredSignal;
|
|
40
|
+
/**
|
|
41
|
+
* Decides whether a handler's `input_required` return can be served on this
|
|
42
|
+
* connection: the `McpError` the caller receives instead, or `undefined` to
|
|
43
|
+
* let the return through.
|
|
44
|
+
*/
|
|
45
|
+
export type InputRequiredGate = (result: InputRequiredResult) => McpError | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Builds the gate for one connection from its declared client capabilities.
|
|
48
|
+
*
|
|
49
|
+
* Only the 2025-era arm needs it. There the refusal is produced by the SDK's
|
|
50
|
+
* legacy shim, which runs *above* the handler callback on the result that
|
|
51
|
+
* callback already returned — the handler factories' catch is off the stack by
|
|
52
|
+
* then, so the failure cannot be shaped where it is produced and arrives as a
|
|
53
|
+
* bare `isError` text block with no error envelope at all. Checking before the
|
|
54
|
+
* signal is returned is the reachable seam, and it keeps the timing: the
|
|
55
|
+
* refusal still precedes any wire traffic. A 2026-07-28 instance is gated by
|
|
56
|
+
* the SDK itself, which raises `MissingRequiredClientCapabilityError`
|
|
57
|
+
* (`-32021`) — that arm takes no gate.
|
|
58
|
+
*
|
|
59
|
+
* `clientCapabilities()` returning `undefined` is the per-request legacy case:
|
|
60
|
+
* an instance that never saw an `initialize` holds no capability view, so every
|
|
61
|
+
* embedded request is refused, and the message and hint say so.
|
|
62
|
+
*/
|
|
63
|
+
export declare function createInputRequiredGate(clientCapabilities: () => ClientCapabilities | undefined): InputRequiredGate;
|
|
39
64
|
/**
|
|
40
65
|
* Builds `ctx.requestInput`. Always present — a handler may request input on
|
|
41
66
|
* any transport and either era; whether the round trip is served by the client
|
|
42
67
|
* (2026) or by the SDK's legacy shim (2025) is not the handler's concern.
|
|
68
|
+
*
|
|
69
|
+
* `gate` is the connection's capability check (#379). It runs here, at the
|
|
70
|
+
* point the signal is created and while the handler is still on the stack, so
|
|
71
|
+
* a refusal leaves the handler as an ordinary thrown `McpError`: the execution
|
|
72
|
+
* measurement records it as the failed call it is, and each family's existing
|
|
73
|
+
* error path shapes it. Resolving it any later — in a factory's catch, after
|
|
74
|
+
* the measured region has closed — would record a refused call as a successful
|
|
75
|
+
* input-required round while the client is told the call failed.
|
|
43
76
|
*/
|
|
44
|
-
export declare function createRequestInput(): (spec: InputRequiredSpec) => never;
|
|
77
|
+
export declare function createRequestInput(gate?: InputRequiredGate): (spec: InputRequiredSpec) => never;
|
|
45
78
|
/**
|
|
46
79
|
* Builds the `ctx.inputs` reader over a retried request's `inputResponses`.
|
|
47
80
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputRequired.d.ts","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAItB,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"inputRequired.d.ts","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAItB,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAoB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAIhC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;IAHhD,wEAAwE;IACxE,QAAQ,CAAC,qBAAqB,OAAiB;IAE/C,YAAqB,MAAM,EAAE,mBAAmB,EAG/C;CACF;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAOlF;AAwED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,QAAQ,GAAG,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,kBAAkB,EAAE,MAAM,kBAAkB,GAAG,SAAS,GACvD,iBAAiB,CA+BnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,KAAK,CAO/F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,aAAa,CAM9F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,EAChD,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,aAAa,CAaf"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* @module src/mcp-server/inputRequired
|
|
20
20
|
*/
|
|
21
21
|
import { acceptedContent, inputRequired, inputResponse, } from '@modelcontextprotocol/server';
|
|
22
|
+
import { JsonRpcErrorCode, McpError } from '../types-global/errors.js';
|
|
22
23
|
/**
|
|
23
24
|
* Thrown by `ctx.requestInput(...)` and caught by the handler factories, which
|
|
24
25
|
* return the carried `input_required` result to the SDK instead of a normal
|
|
@@ -44,14 +45,127 @@ export function isInputRequiredSignal(error) {
|
|
|
44
45
|
error !== null &&
|
|
45
46
|
error.isInputRequiredSignal === true));
|
|
46
47
|
}
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Client-capability gate (#379)
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
/**
|
|
52
|
+
* The framework-owned `data.reason` on an input request this connection cannot
|
|
53
|
+
* serve. It joins `invalid_arguments` as a reserved reason: a definition cannot
|
|
54
|
+
* declare it in `errors[]`, because it names a property of the connection
|
|
55
|
+
* rather than a domain outcome.
|
|
56
|
+
*/
|
|
57
|
+
const CLIENT_CAPABILITY_MISSING_REASON = 'client_capability_missing';
|
|
58
|
+
/**
|
|
59
|
+
* What an embedded request kind requires, mode-aware where the capability is:
|
|
60
|
+
* URL-mode elicitation needs `elicitation.url`, form-mode (or mode-omitted)
|
|
61
|
+
* needs `elicitation.form`, and a sampling request carrying `tools` /
|
|
62
|
+
* `toolChoice` needs `sampling.tools`.
|
|
63
|
+
*
|
|
64
|
+
* `undefined` for an entry that is not an embedded input-request kind at all —
|
|
65
|
+
* a server bug the SDK raises its own error for, not a capability question.
|
|
66
|
+
*/
|
|
67
|
+
function capabilityRequirement(entry) {
|
|
68
|
+
const request = entry;
|
|
69
|
+
const params = request?.params;
|
|
70
|
+
switch (request?.method) {
|
|
71
|
+
case 'elicitation/create':
|
|
72
|
+
return { capability: 'elicitation', member: params?.mode === 'url' ? 'url' : 'form' };
|
|
73
|
+
case 'sampling/createMessage':
|
|
74
|
+
return params?.tools !== undefined || params?.toolChoice !== undefined
|
|
75
|
+
? { capability: 'sampling', member: 'tools' }
|
|
76
|
+
: { capability: 'sampling' };
|
|
77
|
+
case 'roots/list':
|
|
78
|
+
return { capability: 'roots' };
|
|
79
|
+
default:
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Whether the connection's declared capabilities cover `requirement`. A bare
|
|
85
|
+
* `elicitation: {}` — the pre-mode (2025) declaration — counts as declaring
|
|
86
|
+
* `elicitation.form`, matching how the SDK reads it.
|
|
87
|
+
*/
|
|
88
|
+
function isDeclared(requirement, declared) {
|
|
89
|
+
const value = declared?.[requirement.capability];
|
|
90
|
+
if (value === undefined)
|
|
91
|
+
return false;
|
|
92
|
+
if (requirement.member === undefined)
|
|
93
|
+
return true;
|
|
94
|
+
if (value[requirement.member] !== undefined)
|
|
95
|
+
return true;
|
|
96
|
+
return (requirement.capability === 'elicitation' &&
|
|
97
|
+
requirement.member === 'form' &&
|
|
98
|
+
value.form === undefined &&
|
|
99
|
+
value.url === undefined);
|
|
100
|
+
}
|
|
101
|
+
/** `elicitation.form`, `sampling.tools`, `roots`. */
|
|
102
|
+
function capabilityPath({ capability, member }) {
|
|
103
|
+
return member === undefined ? capability : `${capability}.${member}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Builds the gate for one connection from its declared client capabilities.
|
|
107
|
+
*
|
|
108
|
+
* Only the 2025-era arm needs it. There the refusal is produced by the SDK's
|
|
109
|
+
* legacy shim, which runs *above* the handler callback on the result that
|
|
110
|
+
* callback already returned — the handler factories' catch is off the stack by
|
|
111
|
+
* then, so the failure cannot be shaped where it is produced and arrives as a
|
|
112
|
+
* bare `isError` text block with no error envelope at all. Checking before the
|
|
113
|
+
* signal is returned is the reachable seam, and it keeps the timing: the
|
|
114
|
+
* refusal still precedes any wire traffic. A 2026-07-28 instance is gated by
|
|
115
|
+
* the SDK itself, which raises `MissingRequiredClientCapabilityError`
|
|
116
|
+
* (`-32021`) — that arm takes no gate.
|
|
117
|
+
*
|
|
118
|
+
* `clientCapabilities()` returning `undefined` is the per-request legacy case:
|
|
119
|
+
* an instance that never saw an `initialize` holds no capability view, so every
|
|
120
|
+
* embedded request is refused, and the message and hint say so.
|
|
121
|
+
*/
|
|
122
|
+
export function createInputRequiredGate(clientCapabilities) {
|
|
123
|
+
return (result) => {
|
|
124
|
+
const requests = result.inputRequests;
|
|
125
|
+
if (requests === undefined)
|
|
126
|
+
return;
|
|
127
|
+
const declared = clientCapabilities();
|
|
128
|
+
for (const [key, entry] of Object.entries(requests)) {
|
|
129
|
+
const requirement = capabilityRequirement(entry);
|
|
130
|
+
if (requirement === undefined || isDeclared(requirement, declared))
|
|
131
|
+
continue;
|
|
132
|
+
const path = capabilityPath(requirement);
|
|
133
|
+
const method = entry.method;
|
|
134
|
+
const blind = declared === undefined;
|
|
135
|
+
return new McpError(JsonRpcErrorCode.InvalidRequest, `Cannot request input '${key}' (${method}): the client on this 2025-era connection did not declare the \`${path}\` capability${blind
|
|
136
|
+
? ' (this request is served per-request, so no client capabilities are available and no server-to-client round trip can be made)'
|
|
137
|
+
: ''}`, {
|
|
138
|
+
reason: CLIENT_CAPABILITY_MISSING_REASON,
|
|
139
|
+
recovery: {
|
|
140
|
+
hint: blind
|
|
141
|
+
? `No client capabilities are visible on a per-request connection, so \`${path}\` cannot be requested here. Reconnect over a stateful session whose client declares it, or call again supplying the value this request would have asked for.`
|
|
142
|
+
: `Reconnect with a client that declares the \`${path}\` capability, or call again supplying the value this request would have asked for.`,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
47
149
|
/**
|
|
48
150
|
* Builds `ctx.requestInput`. Always present — a handler may request input on
|
|
49
151
|
* any transport and either era; whether the round trip is served by the client
|
|
50
152
|
* (2026) or by the SDK's legacy shim (2025) is not the handler's concern.
|
|
153
|
+
*
|
|
154
|
+
* `gate` is the connection's capability check (#379). It runs here, at the
|
|
155
|
+
* point the signal is created and while the handler is still on the stack, so
|
|
156
|
+
* a refusal leaves the handler as an ordinary thrown `McpError`: the execution
|
|
157
|
+
* measurement records it as the failed call it is, and each family's existing
|
|
158
|
+
* error path shapes it. Resolving it any later — in a factory's catch, after
|
|
159
|
+
* the measured region has closed — would record a refused call as a successful
|
|
160
|
+
* input-required round while the client is told the call failed.
|
|
51
161
|
*/
|
|
52
|
-
export function createRequestInput() {
|
|
162
|
+
export function createRequestInput(gate) {
|
|
53
163
|
return (spec) => {
|
|
54
|
-
|
|
164
|
+
const result = inputRequired(spec);
|
|
165
|
+
const refusal = gate?.(result);
|
|
166
|
+
if (refusal !== undefined)
|
|
167
|
+
throw refusal;
|
|
168
|
+
throw new InputRequiredSignal(result);
|
|
55
169
|
};
|
|
56
170
|
}
|
|
57
171
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputRequired.js","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"inputRequired.js","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @module src/mcp-server/resources/resource-registration
|
|
4
4
|
*/
|
|
5
5
|
import { type McpServer, type ServerNotifier } from '@modelcontextprotocol/server';
|
|
6
|
+
import type { InputRequiredGate } from '../inputRequired.js';
|
|
6
7
|
import type { ResourceSubscriptions } from '../notifications.js';
|
|
7
8
|
import type { AnyResourceDefinition } from './utils/resourceDefinition.js';
|
|
8
9
|
import { type HandlerServices } from './utils/resourceHandlerFactory.js';
|
|
@@ -15,7 +16,7 @@ export declare class ResourceRegistry {
|
|
|
15
16
|
/**
|
|
16
17
|
* Registers all resolved resource definitions with the provided McpServer instance.
|
|
17
18
|
*/
|
|
18
|
-
registerAll(server: McpServer, subscriptions?: ResourceSubscriptions, bus?: ServerNotifier): Promise<void>;
|
|
19
|
+
registerAll(server: McpServer, subscriptions?: ResourceSubscriptions, bus?: ServerNotifier, inputGate?: InputRequiredGate): Promise<void>;
|
|
19
20
|
/** Throws at startup if a resource with the same name was already registered. */
|
|
20
21
|
private assertUniqueName;
|
|
21
22
|
private registerResource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wDAAwD,CAAC;AAUhE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IALlB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,eAAe,EAC/B;IAEJ;;OAEG;IACU,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"resource-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wDAAwD,CAAC;AAUhE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IALlB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,eAAe,EAC/B;IAEJ;;OAEG;IACU,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,EACpB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA4Bf;IAED,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;YAUV,gBAAgB;CAyD/B"}
|
|
@@ -23,7 +23,7 @@ export class ResourceRegistry {
|
|
|
23
23
|
/**
|
|
24
24
|
* Registers all resolved resource definitions with the provided McpServer instance.
|
|
25
25
|
*/
|
|
26
|
-
async registerAll(server, subscriptions, bus) {
|
|
26
|
+
async registerAll(server, subscriptions, bus, inputGate) {
|
|
27
27
|
this.registeredNames.clear();
|
|
28
28
|
// Per-server notifier closures targeting `server.send*ListChanged()`. Bound
|
|
29
29
|
// once per registerAll() call — never mutated on a shared services object
|
|
@@ -45,7 +45,7 @@ export class ResourceRegistry {
|
|
|
45
45
|
// declared `resources` capability, so a server with no resources still
|
|
46
46
|
// answers `resources/list` with an empty array rather than `-32601`.
|
|
47
47
|
for (const resourceDef of this.resourceDefs) {
|
|
48
|
-
await this.registerResource(server, resourceDef, notifiers);
|
|
48
|
+
await this.registerResource(server, resourceDef, notifiers, inputGate);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
/** Throws at startup if a resource with the same name was already registered. */
|
|
@@ -56,7 +56,7 @@ export class ResourceRegistry {
|
|
|
56
56
|
}
|
|
57
57
|
this.registeredNames.add(name);
|
|
58
58
|
}
|
|
59
|
-
async registerResource(server, def, notifiers) {
|
|
59
|
+
async registerResource(server, def, notifiers, inputGate) {
|
|
60
60
|
const resourceName = def.name ?? def.uriTemplate;
|
|
61
61
|
const registrationContext = requestContextService.createRequestContext({
|
|
62
62
|
operation: 'ResourceRegistry.registerResource',
|
|
@@ -65,7 +65,7 @@ export class ResourceRegistry {
|
|
|
65
65
|
logger.debug(`Registering resource: '${resourceName}'`, registrationContext);
|
|
66
66
|
this.assertUniqueName(resourceName);
|
|
67
67
|
await ErrorHandler.tryCatch(() => {
|
|
68
|
-
const handler = createResourceHandler(def, this.services, notifiers);
|
|
68
|
+
const handler = createResourceHandler(def, this.services, notifiers, inputGate);
|
|
69
69
|
const title = def.title ?? resourceName;
|
|
70
70
|
const mimeType = def.mimeType ?? 'application/json';
|
|
71
71
|
const metadata = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { InputRequiredResult, ReadResourceResult, ServerContext, Variables } from '@modelcontextprotocol/server';
|
|
7
7
|
import { type HandlerServices } from '../../handlerContext.js';
|
|
8
|
+
import { type InputRequiredGate } from '../../inputRequired.js';
|
|
8
9
|
import type { NotifierSources } from '../../notifications.js';
|
|
9
10
|
import type { AnyResourceDefinition } from './resourceDefinition.js';
|
|
10
11
|
/** The factory's own contract, shared with the tool factory. */
|
|
@@ -31,5 +32,5 @@ export declare function defaultResponseFormatter(result: unknown, meta: {
|
|
|
31
32
|
* - Formats response via `format` or JSON default
|
|
32
33
|
* - Catches errors and re-throws for the SDK
|
|
33
34
|
*/
|
|
34
|
-
export declare function createResourceHandler(def: AnyResourceDefinition, services: HandlerServices, notifiers: NotifierSources): (uri: URL, variables: Variables, ctx: ServerContext) => Promise<ReadResourceResult | InputRequiredResult>;
|
|
35
|
+
export declare function createResourceHandler(def: AnyResourceDefinition, services: HandlerServices, notifiers: NotifierSources, inputGate?: InputRequiredGate): (uri: URL, variables: Variables, ctx: ServerContext) => Promise<ReadResourceResult | InputRequiredResult>;
|
|
35
36
|
//# sourceMappingURL=resourceHandlerFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAWhG,gEAAgE;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAiBrE;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC,kBAAkB,CAAC,UAAU,CAAC,CAShC;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,eAAe,EAC1B,SAAS,CAAC,EAAE,iBAAiB,GAC5B,CACD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAuFrD"}
|
|
@@ -63,7 +63,7 @@ function observableResourceUri(uri) {
|
|
|
63
63
|
* - Formats response via `format` or JSON default
|
|
64
64
|
* - Catches errors and re-throws for the SDK
|
|
65
65
|
*/
|
|
66
|
-
export function createResourceHandler(def, services, notifiers) {
|
|
66
|
+
export function createResourceHandler(def, services, notifiers, inputGate) {
|
|
67
67
|
const mimeType = def.mimeType ?? 'application/json';
|
|
68
68
|
const formatter = def.format ?? defaultResponseFormatter;
|
|
69
69
|
const resourceName = def.name ?? def.uriTemplate;
|
|
@@ -93,7 +93,7 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
93
93
|
// outcome, so a failure in either is a failed read. Closing the span when
|
|
94
94
|
// the handler returned recorded those as successes (#346).
|
|
95
95
|
return await measureResourceExecution(async (spanContext, recordOutput) => {
|
|
96
|
-
const ctx = buildHandlerContext(request, services, spanContext, def.errors, uri);
|
|
96
|
+
const ctx = buildHandlerContext(request, services, spanContext, def.errors, inputGate, uri);
|
|
97
97
|
try {
|
|
98
98
|
// Handler may return sync or async.
|
|
99
99
|
const handlerResult = await def.handler(validatedParams, ctx);
|
|
@@ -115,6 +115,9 @@ export function createResourceHandler(def, services, notifiers) {
|
|
|
115
115
|
catch (error) {
|
|
116
116
|
// `ctx.requestInput(...)` is protocol control flow, not a failure —
|
|
117
117
|
// `resources/read` honors `input_required` on the 2026-07-28 revision.
|
|
118
|
+
// A request this connection cannot serve never reaches here as a signal:
|
|
119
|
+
// `ctx.requestInput` throws the refusal instead, and it arrives below as
|
|
120
|
+
// an `McpError` carrying the reason and hint (#379).
|
|
118
121
|
if (isInputRequiredSignal(error))
|
|
119
122
|
return error.result;
|
|
120
123
|
// Classify without logging — the SDK logs when it catches the thrown error.
|