apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: ${NAME}-catalog-mcp-ai-mcp-proxy namespace: ${NAMESPACE} plugin: ai-mcp-proxy config: mode: conversion-listener include_consumer_groups: true tools: - name: list-products description: Retrieves a paginated list of products in the classic-models catalog. annotations: title: List all products read_only_hint: true idempotent_hint: true destructive_hint: false open_world_hint: false acl: allow: - admin - read_only - product_manager - customer - support method: GET scheme: http host: ${REST_HOSTNAME} path: /catalog/v1/products/ - name: get-product description: Retrieves a single product by its product code. annotations: title: Get a product read_only_hint: true idempotent_hint: true destructive_hint: false open_world_hint: false acl: allow: - admin - read_only - product_manager - customer - support method: GET scheme: http host: ${REST_HOSTNAME} path: /catalog/v1/products/{productcode}/ parameters: - name: productcode in: path required: true description: The product's unique code. schema: {} - name: create-product description: Creates a new product in the catalog. annotations: title: Create a product read_only_hint: false idempotent_hint: false destructive_hint: false open_world_hint: false acl: allow: - admin - product_manager method: POST scheme: http host: ${REST_HOSTNAME} path: /catalog/v1/products/ request_body: required: true content: application/json: # Mirrors ProductRequest in catalog-api/openapi.yaml. It has to: # this schema is the only thing the caller sees, so anything it # omits the caller cannot send. `productcode` was missing and is # required by the API, which made this tool impossible to call # successfully — every attempt came back # {"productcode":["This field is required."]}, and a caller that # tried to supply it anyway was rejected earlier still, here. schema: type: object properties: productcode: type: string maxLength: 15 description: Unique catalog identifier, e.g. S10_1949. Ask for it; do not invent one. productname: type: string maxLength: 70 productline: type: string description: Must be an existing product line, as returned by list-productlines. productscale: type: string maxLength: 10 productvendor: type: string maxLength: 50 productdescription: type: string quantityinstock: type: integer minimum: -32768 maximum: 32767 buyprice: type: string description: Decimal as a string, at most two places, e.g. "50.00". msrp: type: string description: Decimal as a string, at most two places, e.g. "99.00". required: - productcode - productname - productline - productscale - productvendor - productdescription - buyprice - msrp