This repository was archived by the owner on Aug 3, 2026. It is now read-only.
docs(mcp): audit mcp-* tool docs against current implementation - #421
Merged
Conversation
jfallows
marked this pull request as ready for review
August 3, 2026 17:23
…onsume_messages binding-mcp-kafka's TOOL_PRODUCE/TOOL_CONSUME constants were renamed to produce_message/consume_messages on develop after these docs were written. Verified against origin/develop's McpKafkaProxyFactory.java: all other mcp-kafka tool names already match the implementation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ikToCpeJTceYRhdyZNGRw
…entation Systematic audit of every mcp-* binding's tools documentation against zilla's current develop implementation, beyond the produce/consume rename already fixed: - mcp-openapi: fix the cross-link to mcp-kafka-connect/mcp-schema-registry in the x-zilla-mcp callout — @include'd partials resolve relative links from the partial file's own path (mcp-openapi/.partials/), so reaching a sibling binding directory needs two levels up, not one. This was breaking the linkChecker CI job. - mcp-openapi: resources.description has no fallback to the operation's native description/operation id (unlike tools.description) — the doc claimed one that McpOpenapiCompositeGenerator doesn't implement. - mcp-openapi: remove when[].capability from routes.md — no such field exists on McpOpenapiConditionConfig, and the JSON schema patch would reject it outright. - mcp-http: document tools.title and tools.annotations (with its 4 hint fields) — both exist and are fully wired in McpHttpToolConfig / McpHttpOptionsConfigAdapter but were never documented. - mcp-kafka-connect / mcp-schema-registry: correct required/optional status for every request-body-derived tool argument. Neither bundled OpenAPI spec declares a JSON-Schema `required` array on any request body, and McpOpenapiCompositeGenerator only required-flags a body property when one exists, so these arguments are actually optional in the generated tool despite being documented as required. - mcp (base): eager.policy's none/all semantics were exactly swapped — none (default) disables partitioning entirely so every tool stays eager, and all marks every tool cold, per McpProxyCache.eager()/ eagerConfigured() and confirmed against the binding's own K3PO specs. Verified every finding directly against origin/develop source in the zilla repo before fixing (OpenAPI spec JSON, config classes, composite generator, K3PO scripts) rather than trusting audit-agent output blind. Re-ran pnpm lint and a full pnpm link-checker build locally: 0 errors. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ikToCpeJTceYRhdyZNGRw
… commit Same @include relative-link resolution rule as the mcp-openapi fix earlier in this branch: a link from within mcp-http/.partials/options.md needs two levels up to reach a sibling binding directory, not one. Verified with a full local pnpm link-checker build: 0 errors. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ikToCpeJTceYRhdyZNGRw
jfallows
force-pushed
the
claude/mcp-tools-audit-support2x
branch
from
August 3, 2026 17:31
1c2e603 to
d778132
Compare
ankitk-me
approved these changes
Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #419: a systematic audit of the
mcp-*binding reference docs (as they'll stand once #419 merges) against the actual currentzillaimplementation on itsdevelopbranch, focused on the tools sections for each binding that has tools. This branch was based on #419's tip and has since been rebased ontosupport/2.xpost-merge, so its diff is scoped to audit fixes only.Every finding below was verified directly against
origin/developsource in the zilla repo (OpenAPI spec JSON, config classes, the composite generator, K3PO specs) before being fixed — not taken on faith from an initial pass.Fixes
binding-mcp-kafkarenamed its tool constants (produce→produce_message,consume→consume_messages) after these docs were written. Fixed intools.md/routes.md/options.md/client.yaml. Every other mcp-kafka tool name already matched.mcp-kafka-connect/mcp-schema-registryin thex-zilla-mcpcallout —@include'd partials resolve relative links from the partial file's own path (mcp-openapi/.partials/), so reaching a sibling binding directory needs two../, not one. This was failing thelinkCheckerCI job.resources.descriptionhas no fallback to the operation's nativedescription/operation id (unliketools.description) — corrected the doc, which claimed a fallback chainMcpOpenapiCompositeGeneratordoesn't implement.when[].capabilityfromroutes.md— no such field exists onMcpOpenapiConditionConfig, and the JSON schema patch would reject it outright (additionalProperties: false).tools.titleandtools.annotations(with its 4 hint fields) — both exist and are fully wired inMcpHttpToolConfig/McpHttpOptionsConfigAdapterbut were never written up.requiredarray on any request body, andMcpOpenapiCompositeGeneratoronly required-flags a body property when one exists — so these arguments are actually optional in the generated tool, despite being documented as required.eager.policy'snone/allsemantics were exactly swapped in the docs.none(the default) disables cache partitioning entirely, so every tool stays eager;allmarks every tool cold. Confirmed againstMcpProxyCache.eager()/eagerConfigured()and the binding's own K3PO specs (cache.serve.tools.list.eager.{none,all,explicit}).Verification
pnpm lint— zero new violations.pnpm link-checker(full VuePress build + lychee-equivalent local check) — 0 errors, confirming the mcp-openapi link fix.Known pre-existing CI gap (not fixed here, out of scope)
schemaCheckerfails on this branch, but the drift it reports spans the entire binding catalog —amqp,asyncapi,kafka,kafka-proxy,mqtt,openapi, several vaults/guards, andmcpall show the same "missingprompts[].name-style fields entirely" pattern..check-schema/zilla-schema.jsonis a point-in-time snapshot (per this repo's ownCLAUDE.md, it needs periodic regeneration from a live Docker container) and is stale well beyond anything this PR touches. Fixing it would mean regenerating that snapshot against a live Zilla build and reconciling the whole reference tree — a separate, much larger effort, not a side effect of an mcp tools audit. Confirmed this isn't something introduced by this diff: the same failure mode reproduces locally withpnpm check-schemaon this branch.Test plan
pnpm lintpnpm link-checker(local)pnpm check-schema— fails on pre-existing, repo-wide schema drift unrelated to this PR (see above)pnpm dev(not run in this environment)