Revert stream-binding approach: merge GET into the single MCP route instead

The second ai-mcp-proxy binding (added to fix the GET/SSE 502 loop)
created a second runtime plugin instance with the same tool config,
which ai-mcp-proxy's own duplicate-name detection caught: all three
tools (list-customers/get-customer/create-customer) fell back to
auto-generated names across both instances. Confirmed via dataplane
pod logs right after applying the previous fix.

Real fix: one KongRoute for all three MCP HTTP methods (GET/POST/
DELETE) instead of two, one ai-mcp-proxy binding instead of two.
ai-mcp-proxy already tolerates multi-method routes (same "skips
method selection" notice the existing POST+DELETE route already
produces) — extending to GET is the same class of thing, not new
risk, and there is now exactly one plugin instance so no duplicate
tool names.
This commit is contained in:
Stéphane Tailland
2026-08-23 15:39:27 +02:00
parent 1d8922e1b5
commit 3b20b0a35b
2 changed files with 14 additions and 52 deletions
-31
View File
@@ -34,37 +34,6 @@ spec:
kind: KongRoute
name: ${NAME}-customers-mcp
---
# Also bind to the GET/-stream route, not just the POST/DELETE one above.
# Without this, GET requests never reach ai-mcp-proxy at all and fall
# through to the KongService's own upstream target — which is
# ${REST_HOSTNAME} (Kong's own external hostname, mcp/service.yaml), so an
# unintercepted GET loops back into the Gateway and grows response headers
# on every pass until nginx rejects it ("upstream sent too big header",
# 502) — confirmed 2026-08-23 via customers dataplane pod logs (28
# occurrences) while debugging a LibreChat connection failure specific to
# customers-mcp. catalog-mcp has the identical gap (checked: its
# ai-mcp-proxy-binding also targets only the non-stream route) but happens
# to fail as a harmless 405 there instead of looping — not fixed here,
# flagged in STATUS.md, don't assume catalog's GET stream actually works
# just because nothing broke loudly.
apiVersion: configuration.konghq.com/v1alpha1
kind: KongPluginBinding
metadata:
name: ${NAME}-customers-mcp-ai-mcp-proxy-stream-binding
namespace: ${NAMESPACE}
spec:
controlPlaneRef:
type: konnectNamespacedRef
konnectNamespacedRef:
name: ${CONTROL_PLANE_REF_NAME}
pluginRef:
name: ${NAME}-customers-mcp-ai-mcp-proxy
targets:
routeRef:
group: configuration.konghq.com
kind: KongRoute
name: ${NAME}-customers-mcp-stream
---
apiVersion: configuration.konghq.com/v1alpha1
kind: KongPluginBinding
metadata: