feat(mcp): cap read volume per caller identity

A scope authorises a read and says nothing about volume. An agent reads a
thousand records in seconds where a person clicks ten, and until now nothing
noticed: the token is valid, the tool is permitted, the ACL passes.

identifier: credential keys the counter on the sub claim — the end user, whoever
is asking on their behalf — so an agent looping under one person's identity
spends that person's budget and cannot spend everyone's. Per-route namespace, so
a busy catalog cannot exhaust another domain's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Stéphane Tailland
2026-08-29 18:04:14 +02:00
parent 644c013edf
commit 2143c5f0bb
4 changed files with 61 additions and 0 deletions
+18
View File
@@ -51,3 +51,21 @@ spec:
group: configuration.konghq.com
kind: KongService
name: ${NAME}-catalog-mcp
---
apiVersion: configuration.konghq.com/v1alpha1
kind: KongPluginBinding
metadata:
name: ${NAME}-catalog-mcp-rate-limiting-binding
namespace: ${NAMESPACE}
spec:
controlPlaneRef:
type: konnectNamespacedRef
konnectNamespacedRef:
name: ${CONTROL_PLANE_REF_NAME}
pluginRef:
name: ${NAME}-catalog-mcp-rate-limiting
targets:
routeRef:
group: configuration.konghq.com
kind: KongRoute
name: ${NAME}-catalog-mcp