Files
kong-catalog-api/kong/mcp/ai-mcp-proxy.yaml
T
Stéphane Tailland fc6b60c582 Rebuild catalog-mcp consumer groups on the real 5-role model
KongConsumerGroups were still named sttlab-user/sttlab-admin, a leftover
from before the classic-models realm's role model existed. Real users'
JWTs carry realm roles (admin, read_only, product_manager, customer,
support) via consumer_groups_claim, so no group ever matched and every
tool call was rejected with 403 "consumer groups were not found".

Groups now match the realm roles directly; tool ACLs gate on each role's
catalog:read/catalog:write grant from security-model.yaml.
2026-08-21 18:35:02 +02:00

97 lines
2.5 KiB
YAML

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:
schema:
type: object
properties:
productname:
type: string
productline:
type: string
productscale:
type: string
productvendor:
type: string
productdescription:
type: string
quantityinstock:
type: integer
buyprice:
type: string
msrp:
type: string
required:
- productname
- productline