You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is the same class of noise as #2601 (google-duration), with an instance found in the wild.
The Notion MCP server's post-page tool annotates two string properties with "format": "json" — a value that is defined neither by JSON Schema nor by ajv-formats. Compiling that inputSchema through the default validator instances of @modelcontextprotocol/client@2.0.0 (createDefaultAjvInstance: { strict: false, allErrors: true } + ajv-formats) logs, per compile:
unknown format "json" ignored in schema at path "#/properties/icon"
unknown format "json" ignored in schema at path "#/properties/icon"
unknown format "json" ignored in schema at path "#/properties/cover"
unknown format "json" ignored in schema at path "#/properties/cover"
Two lines per property, because allErrors: true makes Ajv compile the format check twice — i.e. connecting to that one server costs 4 lines of client-side warning output per session.
It is not purely cosmetic: with Ajv's own defaults (strict: true) the same schema throws during compile (Error: unknown format "json" ignored in schema at path "#/properties/icon"), so any integrator who wants a strict validator cannot load that tool.
Downgrade the unknown-format message to debug-level output, so quirks in third-party schemas don't surface as user-visible warnings.
Note on custom validator providers
Consumers that pass their own Ajv instance to AjvJsonSchemaValidator bypass the default instances entirely, so registering formats there does not help them — e.g. a downstream extension that constructs its own validator provider still gets the warnings until it registers json itself. Worth a line in the validator docs.
Context
This is the same class of noise as #2601 (
google-duration), with an instance found in the wild.The Notion MCP server's
post-pagetool annotates two string properties with"format": "json"— a value that is defined neither by JSON Schema nor byajv-formats. Compiling thatinputSchemathrough the default validator instances of@modelcontextprotocol/client@2.0.0(createDefaultAjvInstance:{ strict: false, allErrors: true }+ajv-formats) logs, per compile:Two lines per property, because
allErrors: truemakes Ajv compile the format check twice — i.e. connecting to that one server costs 4 lines of client-side warning output per session.It is not purely cosmetic: with Ajv's own defaults (
strict: true) the same schema throws during compile (Error: unknown format "json" ignored in schema at path "#/properties/icon"), so any integrator who wants a strict validator cannot load that tool.Ask
jsonas a no-op format (ajv.addFormat("json", true)) increateDefaultAjvInstance, for all three dialect engines, alongside thegoogle-durationregistration proposed in fix: register google-duration format to silence unknown format warnings #2601; orNote on custom validator providers
Consumers that pass their own Ajv instance to
AjvJsonSchemaValidatorbypass the default instances entirely, so registering formats there does not help them — e.g. a downstream extension that constructs its own validator provider still gets the warnings until it registersjsonitself. Worth a line in the validator docs.Environment / reproduction
@modelcontextprotocol/client2.0.0 · ajv 8.20.0 · node 24.12.0Filed after reproducing the behaviour locally with the reporter's coding agent; outputs above are from that run and can be provided on request.