32d6014b42
The tools: array was hand-maintained and had drifted from openapi.yaml in two ways that only surfaced when an agent hit them: create-product omitted productcode and could never succeed, and list-products declared no parameters so it could not paginate — which let a model answer a product count that looked right and had not come from the tool's output. It is now produced by k8s-platform/tools/generate-mcp-tools.py: deck file openapi2mcp does the conversion, and the wrapper re-injects the five things Kong's generator cannot emit — per-tool ACLs, the MCP behavioural annotations, the response schemas the plugin uses for structuredOutput, the real upstream host, and JSON-only request bodies. Each is a documented gap; see k8s-platform/MCP-TOOL-GENERATION.md. tools-policy.yaml carries the ACLs and doubles as the allow-list: an operation becomes a tool only if the policy names it. Kong would otherwise expose every operation in the spec, DELETE included, and can express no authorization at all from a bearer-token spec — silently, exit 0, no warning. Same three tools as before, same ACLs. What changed: pagination is now callable, create-product's required list matches the API (quantityinstock included, which the hand-written repair had missed), each tool declares its response schema, and the request body is no longer tripled across three identical content types. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
21 lines
802 B
YAML
21 lines
802 B
YAML
# Which operations of openapi.yaml become MCP tools, and who may call each.
|
|
#
|
|
# This file is the allow-list as well as the ACL: an operation that is not
|
|
# named here does not become a tool. Kong's generator exposes every operation
|
|
# it finds and can express no authorization at all from a bearer-token spec —
|
|
# see k8s-platform/MCP-TOOL-GENERATION.md, limits 1 and 5.
|
|
#
|
|
# `allow` lists consumer groups, which come from realm_access.roles in the end
|
|
# user's own token. Kong applies them at tools/list, so a caller never sees a
|
|
# tool it may not call.
|
|
|
|
mcp_name: catalog-mcp
|
|
|
|
tools:
|
|
list-products:
|
|
allow: [admin, read_only, product_manager, customer, support]
|
|
get-product:
|
|
allow: [admin, read_only, product_manager, customer, support]
|
|
create-product:
|
|
allow: [admin, product_manager]
|