@mcpdesc/validator 0.10.0 → 0.10.1
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/CHANGELOG.md +15 -1
- package/README.md +12 -22
- package/index.d.ts +4 -28
- package/package.json +3 -2
- package/src/index.js +1 -17
- package/standalone.js +1 -1
- package/src/snapshots/0.8.0-draft.1/index.js +0 -69
- package/src/snapshots/0.8.0-draft.1/schema.json +0 -1648
- package/src/snapshots/0.8.0-draft.1/semantic.js +0 -1397
- package/src/snapshots/0.8.0-draft.2/base.js +0 -1397
- package/src/snapshots/0.8.0-draft.2/index.js +0 -17
- package/src/snapshots/0.8.0-draft.2/schema.json +0 -2161
- package/src/snapshots/0.8.0-draft.2/semantic.js +0 -446
- package/src/snapshots/0.8.0-draft.3/base.js +0 -1397
- package/src/snapshots/0.8.0-draft.3/index.js +0 -17
- package/src/snapshots/0.8.0-draft.3/schema.json +0 -2031
- package/src/snapshots/0.8.0-draft.3/semantic.js +0 -401
- package/src/snapshots/0.8.0-draft.4/base.js +0 -1397
- package/src/snapshots/0.8.0-draft.4/index.js +0 -17
- package/src/snapshots/0.8.0-draft.4/schema.json +0 -2820
- package/src/snapshots/0.8.0-draft.4/semantic.js +0 -960
- package/src/snapshots/0.8.0-rc.1/base.js +0 -1397
- package/src/snapshots/0.8.0-rc.1/index.js +0 -17
- package/src/snapshots/0.8.0-rc.1/schema.json +0 -2820
- package/src/snapshots/0.8.0-rc.1/semantic.js +0 -972
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
and this package follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
Dates for published releases are the UTC publication dates recorded by npm.
|
|
8
8
|
|
|
9
|
+
## [Unreleased]
|
|
10
|
+
|
|
11
|
+
## [0.10.1] - 2026-09-07
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Narrowed active runtime support to RC.2 and RC.3 and marked RC.2 deprecated.
|
|
16
|
+
- Excluded retired runtime snapshots from generated bundles and package
|
|
17
|
+
contents while retaining their source and frozen fixtures in Git.
|
|
18
|
+
- Removed the retained snapshot-intake manifest; intake bundles are disposable
|
|
19
|
+
inputs and imported bytes remain protected by the snapshot integrity manifest.
|
|
20
|
+
|
|
9
21
|
## [0.10.0] - 2026-09-07
|
|
10
22
|
|
|
11
23
|
### Added
|
|
@@ -127,7 +139,9 @@ Dates for published releases are the UTC publication dates recorded by npm.
|
|
|
127
139
|
- Added synchronous structural and semantic validation for parsed JavaScript values with deterministic diagnostics and exact selector dispatch.
|
|
128
140
|
- Added ESM browser support, TypeScript declarations, embedded schema provenance, frozen fixtures, and package-content checks.
|
|
129
141
|
|
|
130
|
-
[Unreleased]: https://github.com/mcpdesc/core/compare/validator-v0.
|
|
142
|
+
[Unreleased]: https://github.com/mcpdesc/core/compare/validator-v0.10.1...HEAD
|
|
143
|
+
[0.10.1]: https://github.com/mcpdesc/core/compare/validator-v0.10.0...validator-v0.10.1
|
|
144
|
+
[0.10.0]: https://github.com/mcpdesc/core/compare/validator-v0.9.0...validator-v0.10.0
|
|
131
145
|
[0.9.0]: https://github.com/mcpdesc/core/compare/validator-v0.8.0...validator-v0.9.0
|
|
132
146
|
[0.8.0]: https://github.com/mcpdesc/core/compare/validator-v0.7.1...validator-v0.8.0
|
|
133
147
|
[0.7.1]: https://github.com/mcpdesc/core/compare/validator-v0.7.0...validator-v0.7.1
|
package/README.md
CHANGED
|
@@ -44,20 +44,17 @@ a later draft is published.
|
|
|
44
44
|
|
|
45
45
|
## Supported snapshots
|
|
46
46
|
|
|
47
|
-
The
|
|
47
|
+
The package supports these immutable selectors, newest first:
|
|
48
48
|
|
|
49
49
|
| Selector | First validator release | Embedded schema SHA-256 |
|
|
50
50
|
|---|---|---|
|
|
51
51
|
| `0.8.0-rc.3` | `0.10.0` | `a9c3ff77ba37c72362909f538f6e957d055e6fdb372f8b3d529e3651af3fecf4` |
|
|
52
|
-
| `0.8.0-rc.2` | `0.9.0` | `40f6775dde052224114e91d6aa484d826eecf56b77f7ac87b4cf707ffbcb6ce8` |
|
|
53
|
-
| `0.8.0-rc.1` | `0.5.0` | `936a0f24ade501fcabf3d6498c0440c445daa672a575573a35954cee49430ac4` |
|
|
54
|
-
| `0.8.0-draft.4` | `0.4.0` | `93ed03f74059b5b3ce7509a96b59161bdab2c3cf7734397a9bec5a7588d0b03b` |
|
|
55
|
-
| `0.8.0-draft.3` | `0.3.0` | `8823c1f1946360b2a44d00920e2092e5e4acd139a1964befad4eb0bf3ce96002` |
|
|
56
|
-
| `0.8.0-draft.2` | `0.2.0` | `ab692c1a5a0f7e5f29be1940aa8c64a56d4620be0a19d00cf0a64680b7e517fa` |
|
|
57
|
-
| `0.8.0-draft.1` | `0.1.0` | `4ceb6042c3fd31703199cd3db869ec5c35c17d2fe9ab7b2f5b96a2a3af0cebe4` |
|
|
52
|
+
| `0.8.0-rc.2` (deprecated) | `0.9.0` | `40f6775dde052224114e91d6aa484d826eecf56b77f7ac87b4cf707ffbcb6ce8` |
|
|
58
53
|
|
|
59
54
|
The validator package embeds the schema and executable behavior for each
|
|
60
|
-
selector.
|
|
55
|
+
selector. RC.2 remains available for migration compatibility; new integrations
|
|
56
|
+
should select RC.3. Earlier selectors remain available by pinning an older
|
|
57
|
+
immutable validator release. npm integrity and trusted-publishing provenance identify released
|
|
61
58
|
package bytes; specification repository tags and commits are informational.
|
|
62
59
|
|
|
63
60
|
## Usage
|
|
@@ -100,17 +97,10 @@ if (resolution.status === 'resolved') {
|
|
|
100
97
|
|
|
101
98
|
Resolution is pure and performs no network retrieval. It does not validate the
|
|
102
99
|
document and never infers a draft snapshot from `mcpdesc: "0.8.0"` alone.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
ambiguous unless the caller supplies a consistent exact selector:
|
|
100
|
+
Retired schema identities are reported as unknown by current releases. Pin an
|
|
101
|
+
older package release to resolve or validate a retired selector.
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
const resolution = resolveMcpDescriptionSpecification(parsedDocument, {
|
|
109
|
-
specification: '0.8.0-draft.3'
|
|
110
|
-
});
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Unresolved results distinguish missing, invalid, unknown, ambiguous, and
|
|
103
|
+
Unresolved results distinguish missing, invalid, unknown, and
|
|
114
104
|
contradictory identity, as well as unsupported caller selectors. A supplied
|
|
115
105
|
selector can resolve a document with no `$schema`; when `$schema` is present it
|
|
116
106
|
must match the selected snapshot's recorded schema URI.
|
|
@@ -137,7 +127,7 @@ Structural paths start with AJV's instance path. A `required` error appends its
|
|
|
137
127
|
|
|
138
128
|
## Support metadata
|
|
139
129
|
|
|
140
|
-
The package exports frozen `supportedSpecifications`, `supportedProtocolVersions`, and `specificationProvenance` values. Provenance records include the snapshot tag, recorded schema URI, and embedded schema SHA-256 digest. Public validation dispatches through a registry keyed by exact specification selectors. The
|
|
130
|
+
The package exports frozen `supportedSpecifications`, `deprecatedSpecifications`, `supportedProtocolVersions`, and `specificationProvenance` values. Provenance records include the snapshot tag, recorded schema URI, and embedded schema SHA-256 digest. Public validation dispatches through a registry keyed by exact specification selectors. The active selector set is `0.8.0-rc.2` and `0.8.0-rc.3`; `deprecatedSpecifications` contains RC.2. The protocol-version export is the deduplicated union supported by active snapshots.
|
|
141
131
|
|
|
142
132
|
RC.2 and RC.3 also export the frozen `mcpExtensionCatalogue` and
|
|
143
133
|
`mcpExtensionMaturity` classifier. The catalogue pins its authoritative source,
|
|
@@ -147,7 +137,7 @@ extension-specific settings.
|
|
|
147
137
|
|
|
148
138
|
npm package SemVer tracks implementation releases independently from specification snapshot identity. Adding a later snapshot is additive: it must use a sibling implementation and selector rather than changing an existing snapshot's schema, semantics, metadata, fixtures, or results.
|
|
149
139
|
|
|
150
|
-
The RC.
|
|
140
|
+
The RC.2 and RC.3 component resolvers report authored and terminal target
|
|
151
141
|
paths for successful substitutions. The additive tooling corrections do not
|
|
152
142
|
change snapshot schemas, validation results, diagnostics, or fixtures and are
|
|
153
143
|
recorded in the integrity manifest.
|
|
@@ -164,7 +154,7 @@ exact specification repository tag or commit and then:
|
|
|
164
154
|
3. Add the exact selector to the runtime registry and update support metadata, TypeScript declarations, tests, the package changelog, and expected package contents. Unqualified versions, aliases, ranges, and not-yet-published selectors remain unsupported.
|
|
165
155
|
4. Run the package and repository validation suites. The schema digest, immutable metadata, fixture behavior, browser bundle, declarations, and tarball contents must all pass.
|
|
166
156
|
|
|
167
|
-
The test snapshots are repository-only development assets and are excluded from the npm tarball.
|
|
157
|
+
The test snapshots are repository-only development assets and are excluded from the npm tarball. Historical runtime sources remain in Git for integrity history. Only active runtime snapshot implementations and embedded schemas ship, so installed packages remain self-contained without accumulating retired selectors.
|
|
168
158
|
|
|
169
159
|
Specification approval and imported supporting code do not authorize package
|
|
170
160
|
publication. During release review, a maintainer explicitly decides the
|
|
@@ -187,4 +177,4 @@ npm run test:browser --workspace @mcpdesc/validator
|
|
|
187
177
|
npm run test:package --workspace @mcpdesc/validator
|
|
188
178
|
```
|
|
189
179
|
|
|
190
|
-
The package test runs each
|
|
180
|
+
The package test runs each active snapshot against its own frozen valid, invalid, and warning fixture corpus and verifies historical artifact integrity separately. YAML source fixtures are decoded by the test harness before validation; the public API continues to accept parsed JavaScript values only. The other checks compile the declarations, bundle the public browser entry with esbuild and Vite, reject runtime AJV compiler inputs and dynamic code generation in those bundles, and inspect `npm pack --dry-run --json` against the intended tarball contents and declared export targets.
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type McpDescriptionSpecification = '0.8.0-
|
|
1
|
+
export type McpDescriptionSpecification = '0.8.0-rc.2' | '0.8.0-rc.3';
|
|
2
2
|
|
|
3
3
|
export type SupportedProtocolVersion =
|
|
4
4
|
| '2024-11-05'
|
|
@@ -38,7 +38,7 @@ export interface McpDescriptionComponentResolutionResult {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export interface ResolveMcpDescriptionComponentReferencesOptions {
|
|
41
|
-
readonly specification: '0.8.0-rc.
|
|
41
|
+
readonly specification: '0.8.0-rc.2' | '0.8.0-rc.3';
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export type McpExtensionMaturity = 'official' | 'experimental' | 'uncatalogued';
|
|
@@ -56,31 +56,6 @@ export interface McpExtensionCatalogue {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
export interface SpecificationProvenance {
|
|
59
|
-
readonly '0.8.0-draft.1': {
|
|
60
|
-
readonly snapshotTag: 'v0.8.0-draft.1';
|
|
61
|
-
readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
|
|
62
|
-
readonly schemaSha256: '4ceb6042c3fd31703199cd3db869ec5c35c17d2fe9ab7b2f5b96a2a3af0cebe4';
|
|
63
|
-
};
|
|
64
|
-
readonly '0.8.0-draft.2': {
|
|
65
|
-
readonly snapshotTag: 'v0.8.0-draft.2';
|
|
66
|
-
readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
|
|
67
|
-
readonly schemaSha256: 'ab692c1a5a0f7e5f29be1940aa8c64a56d4620be0a19d00cf0a64680b7e517fa';
|
|
68
|
-
};
|
|
69
|
-
readonly '0.8.0-draft.3': {
|
|
70
|
-
readonly snapshotTag: 'v0.8.0-draft.3';
|
|
71
|
-
readonly schemaUri: 'https://mcpdesc.org/schema/0.8.0.json';
|
|
72
|
-
readonly schemaSha256: '8823c1f1946360b2a44d00920e2092e5e4acd139a1964befad4eb0bf3ce96002';
|
|
73
|
-
};
|
|
74
|
-
readonly '0.8.0-draft.4': {
|
|
75
|
-
readonly snapshotTag: 'v0.8.0-draft.4';
|
|
76
|
-
readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-draft.4.json';
|
|
77
|
-
readonly schemaSha256: '93ed03f74059b5b3ce7509a96b59161bdab2c3cf7734397a9bec5a7588d0b03b';
|
|
78
|
-
};
|
|
79
|
-
readonly '0.8.0-rc.1': {
|
|
80
|
-
readonly snapshotTag: 'v0.8.0-rc.1';
|
|
81
|
-
readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.1.json';
|
|
82
|
-
readonly schemaSha256: '936a0f24ade501fcabf3d6498c0440c445daa672a575573a35954cee49430ac4';
|
|
83
|
-
};
|
|
84
59
|
readonly '0.8.0-rc.2': {
|
|
85
60
|
readonly snapshotTag: 'v0.8.0-rc.2';
|
|
86
61
|
readonly schemaUri: 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.2.json';
|
|
@@ -114,7 +89,8 @@ export type McpDescriptionSpecificationResolution =
|
|
|
114
89
|
| ResolvedMcpDescriptionSpecification
|
|
115
90
|
| UnresolvedMcpDescriptionSpecification;
|
|
116
91
|
|
|
117
|
-
export declare const supportedSpecifications: readonly ['0.8.0-
|
|
92
|
+
export declare const supportedSpecifications: readonly ['0.8.0-rc.2', '0.8.0-rc.3'];
|
|
93
|
+
export declare const deprecatedSpecifications: readonly ['0.8.0-rc.2'];
|
|
118
94
|
|
|
119
95
|
export declare const supportedProtocolVersions: readonly [
|
|
120
96
|
'2024-11-05',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcpdesc/validator",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Structural and semantic validation for MCP Description snapshots",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
33
|
"src/index.js",
|
|
34
|
-
"src/snapshots",
|
|
34
|
+
"src/snapshots/0.8.0-rc.2",
|
|
35
|
+
"src/snapshots/0.8.0-rc.3",
|
|
35
36
|
"standalone.js",
|
|
36
37
|
"index.d.ts",
|
|
37
38
|
"CHANGELOG.md",
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import * as draft1 from './snapshots/0.8.0-draft.1/index.js';
|
|
2
|
-
import * as draft2 from './snapshots/0.8.0-draft.2/index.js';
|
|
3
|
-
import * as draft3 from './snapshots/0.8.0-draft.3/index.js';
|
|
4
|
-
import * as draft4 from './snapshots/0.8.0-draft.4/index.js';
|
|
5
|
-
import * as rc1 from './snapshots/0.8.0-rc.1/index.js';
|
|
6
1
|
import * as rc2 from './snapshots/0.8.0-rc.2/index.js';
|
|
7
2
|
import * as rc3 from './snapshots/0.8.0-rc.3/index.js';
|
|
8
|
-
import { resolveComponentReferences as resolveRc1ComponentReferences } from './snapshots/0.8.0-rc.1/semantic.js';
|
|
9
3
|
import { resolveComponentReferences as resolveRc2ComponentReferences } from './snapshots/0.8.0-rc.2/semantic.js';
|
|
10
4
|
import { resolveComponentReferences as resolveRc3ComponentReferences } from './snapshots/0.8.0-rc.3/semantic.js';
|
|
11
5
|
import {
|
|
@@ -16,32 +10,22 @@ import {
|
|
|
16
10
|
export { mcpExtensionCatalogue, mcpExtensionMaturity };
|
|
17
11
|
|
|
18
12
|
const snapshots = Object.freeze({
|
|
19
|
-
[draft1.specification]: draft1,
|
|
20
|
-
[draft2.specification]: draft2,
|
|
21
|
-
[draft3.specification]: draft3,
|
|
22
|
-
[draft4.specification]: draft4,
|
|
23
|
-
[rc1.specification]: rc1,
|
|
24
13
|
[rc2.specification]: rc2,
|
|
25
14
|
[rc3.specification]: rc3
|
|
26
15
|
});
|
|
27
16
|
|
|
28
17
|
const componentResolvers = Object.freeze({
|
|
29
|
-
'0.8.0-rc.1': resolveRc1ComponentReferences,
|
|
30
18
|
'0.8.0-rc.2': resolveRc2ComponentReferences,
|
|
31
19
|
'0.8.0-rc.3': resolveRc3ComponentReferences
|
|
32
20
|
});
|
|
33
21
|
|
|
34
22
|
const schemaUris = Object.freeze({
|
|
35
|
-
'0.8.0-draft.1': 'https://mcpdesc.org/schema/0.8.0.json',
|
|
36
|
-
'0.8.0-draft.2': 'https://mcpdesc.org/schema/0.8.0.json',
|
|
37
|
-
'0.8.0-draft.3': 'https://mcpdesc.org/schema/0.8.0.json',
|
|
38
|
-
'0.8.0-draft.4': 'https://mcpdesc.org/schema/mcp-description/0.8.0-draft.4.json',
|
|
39
|
-
'0.8.0-rc.1': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.1.json',
|
|
40
23
|
'0.8.0-rc.2': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.2.json',
|
|
41
24
|
'0.8.0-rc.3': 'https://mcpdesc.org/schema/mcp-description/0.8.0-rc.3.json'
|
|
42
25
|
});
|
|
43
26
|
|
|
44
27
|
export const supportedSpecifications = Object.freeze(Object.keys(snapshots));
|
|
28
|
+
export const deprecatedSpecifications = Object.freeze(['0.8.0-rc.2']);
|
|
45
29
|
export const supportedProtocolVersions = Object.freeze([
|
|
46
30
|
...new Set(Object.values(snapshots).flatMap((snapshot) => snapshot.supportedProtocolVersions))
|
|
47
31
|
]);
|