title: "MCP at Production Scale: Gateway Architecture, Tool-Level RBAC & Securing AI Agent Infrastructure on Kubernetes" date: 2026-09-16 tags: [Kubernetes, MCP, AI Agents, AI Infrastructure, AI Gateway, Security, OAuth2.1, Platform Engineering, LLMOps] cover: ../images/mcp-production-gateway-agent-infrastructure-cover.png

Cover

MCP at Production Scale: Gateway Architecture, Tool-Level RBAC & Securing AI Agent Infrastructure on Kubernetes

1. Topic of the Day

Eighteen months ago, "MCP" meant a developer wiring a Claude Desktop config file to a local filesystem server. In 2026 it means something categorically different: the public MCP registry crossed 10,000 active servers in March, SDK downloads are running at roughly 97 million a month, and 78% of enterprise AI teams report agents calling MCP tools in production. Gartner's number for the year — 40% of enterprise applications embedding autonomous agents — is the business reason platform teams can no longer treat MCP as a developer-tooling curiosity. It is now an integration surface with the same blast radius as an internal API gateway, except the caller is a non-deterministic model instead of a typed client, and the "API contract" is a natural-language tool description that the model itself decides whether to trust.

Model Context Protocol (MCP) standardizes how an LLM-driven agent discovers and invokes external tools, reads resources, and pulls prompts — JSON-RPC over a transport, with a schema for tool definitions the model can reason about. That part was never the hard engineering problem. The hard problem, and the one that produced over 30 disclosed CVEs in the first half of 2026 alone (including a CVSS 8.8 SSRF in Azure's own MCP Server), is what happens when you connect a model that has no reliable concept of “this input is untrusted” to a tool that has filesystem access, cloud credentials, or a database connection — at the scale of hundreds of internal services and thousands of employees, each capable of pointing their agent at any MCP server they find.

2026 has also been the year the protocol itself grew up to meet this reality. The July 28 specification revision (2026-07-28) is the third major MCP spec since the original November 2024 release, and it is the first one written primarily for production operators rather than SDK authors: it removes the stateful session handshake entirely, mandates Mcp-Method/Mcp-Name headers so infrastructure can route and rate-limit without parsing JSON bodies, and repositions MCP servers as pure OAuth 2.1 resource servers that validate tokens rather than mint them. This session covers the production topology that has emerged around that spec revision — the gateway tier, the internal registry, tool-level RBAC, and the defense-in-depth model that security teams are converging on — plus the Kubernetes-native patterns for running it all at scale.

2. Real Business Problem

Scenario: A 900-engineer product organization rolled out agent-assisted development eighteen months ago. Adoption was organic and fast: individual teams stood up MCP servers for their internal systems — a Jira server, a Postgres read-replica server, an internal deploy-tooling server, a Confluence server — and engineers pointed their coding agents at whichever ones they needed, coordinated over Slack. By Q3 2026, platform engineering inherited the fallout:

  • Nobody can enumerate which MCP servers are in use, by whom, or with what credentials. There are an estimated 40+ MCP servers running across developer laptops, CI runners, and a handful of shared Kubernetes namespaces, deployed with no central catalog, no ownership record, and no way to answer "which servers can reach our production database" during an incident review.
  • A tool-poisoning incident already happened. A developer added a community-published MCP server for a third-party SaaS integration. Its tool description contained a hidden instruction block (invisible in the UI, present in the JSON the model reads) telling any agent that loaded it to also read the contents of ~/.ssh and ~/.aws/credentials and pass them as a parameter on an unrelated, legitimate-looking tool call. The agent complied, because from the model's perspective the tool description is trusted context — there is no built-in separation between "instructions from my operator" and "text a third-party tool author wrote." The credentials leaked to the SaaS vendor's logging infrastructure before anyone noticed.
  • Every credential an MCP server needs is embedded directly in that server's environment, unscoped. The Jira server runs with an org-admin API token because that was the token someone had handy. The Postgres server connects with the application's full read-write service account, not a read-only, row-limited one, because the developer who stood it up wasn't thinking about what an LLM-driven client — as opposed to a human — should be trusted to do with that connection.
  • There is no audit trail an SRE or security engineer can query. When an agent's tool call causes a bad production change (a real incident: an agent, following a subtly ambiguous instruction, invoked a deploy-tooling MCP server's rollback tool against the wrong service), the only record is scattered client-side conversation logs. There is no centralized, queryable log of "which identity, which tool, which parameters, which server, at what time" — the exact shape of data a SOC needs and doesn't have.
  • New spec compliance is nobody's job. The July 2026 spec deprecated the stateful session model most of these servers were built against; none of the 40+ internal servers have been audited for compliance, and two of the most heavily used ones still implement the pre-2025-06-18 protocol version with no OAuth at all — bearer tokens passed in plaintext query strings.

The fix requires exactly what API management required a decade earlier, applied to a fundamentally less trustworthy caller: a mandatory gateway tier, a governed internal registry that replaces ad hoc discovery, tool-level authorization instead of server-level all-or-nothing trust, and centralized, tamper-evident audit logging — engineered for a client (the LLM) that cannot be relied on to police itself.

3. Production Architecture

Architecture image: blogs/architecture/mcp-production-gateway-agent-infrastructure-architecture.png

Tier 1 — Agent runtime. Coding agents, internal chat-ops agents, and autonomous pipeline agents all run as MCP clients. None of them are permitted to hold direct network routes to any MCP server — client egress is restricted at the network-policy layer to a single destination: the MCP gateway's internal DNS name. This single change eliminates an entire class of shadow-integration risk: an agent literally cannot discover or call a server that hasn't been registered.

Tier 2 — MCP Gateway (the control point). A dedicated gateway deployment (Kong AI Gateway, Higress, or an in-house Envoy-based build are the common 2026 choices; Gartner's number — 75% of API gateway vendors shipping MCP features this year — reflects how fast this category consolidated onto existing gateway platforms rather than spawning a fully new one) terminates every MCP session. It is the single place that: validates the caller's OAuth 2.1 access token against the org's external authorization server (per the July 2026 spec, the gateway/server never issues tokens itself — it validates JWTs issued by Okta/Entra ID/Auth0 and enforces audience and scope claims); routes on the Mcp-Method and Mcp-Name headers mandated by SEP-2243 without needing to parse the JSON-RPC body, which is what makes plain L7 load balancing and per-tool rate limiting possible again after the stateful-session era made both awkward; enforces tool-level RBAC by cross-referencing the caller's identity/role against a policy store (OPA/Kyverno-style policy bundles, not per-server config) before the call is ever forwarded; and rewrites outbound calls to inject narrowly scoped, short-lived credentials from a secrets broker rather than letting any MCP server hold a standing credential.

Tier 3 — Curated internal MCP registry. A private registry (mirroring the pattern of package registries like Artifactory, but for tool manifests) is the only source developers and agents are allowed to discover servers from. Every server must be submitted, reviewed — provenance-checked, manifest-pinned so a server cannot silently change its tool descriptions post-approval (the "rug pull" attack class), and signed — before it's promotable from staging to approved. The registry, not tribal Slack knowledge, is now the enumeration answer to "what can our agents reach."

Tier 4 — MCP servers, deployed stateless. Per the 2026-07-28 spec, servers no longer need sticky sessions or an Mcp-Session-Id-keyed affinity layer — this is the single biggest operational simplification of the year. Each capability domain (Jira, Postgres read-replica, internal deploy tooling, Confluence) runs as its own Kubernetes Deployment + Service + HPA, one namespace per domain with a dedicated NetworkPolicy and a dedicated, minimally-scoped ServiceAccount bound via IRSA/Workload Identity to a credential with only the permissions that domain's tools legitimately need (the Postgres server's identity, for example, is bound to a read-only role with row-level security applied, never the application's own service account).

Tier 5 — Outbound trust boundary. Every MCP server's egress is itself constrained by an egress-only proxy or Cilium-enforced FQDN allowlist — a defense-in-depth layer that assumes a server will eventually be compromised or manipulated into an unintended call, and bounds the damage to a known set of destinations rather than the open internet.

Observability and control plane: every gateway decision (allow/deny, which tool, which identity, latency, response size) is emitted as a structured audit event to the org's SIEM; an OpenTelemetry-instrumented trace follows each tool call from agent through gateway to server and back, correlated with the agent's own reasoning trace where the agent framework supports it; and the registry, gateway policy bundles, and NetworkPolicies are all GitOps-managed through ArgoCD so a policy change is reviewable, revertible, and attributable — the same operational discipline platform teams already apply to Kubernetes RBAC, now applied to what an LLM is allowed to do.

4. Solution Design

Design decision: gateway-mediated, never direct client-to-server. The alternative — letting agents hold direct connections to MCP servers, with authorization enforced inside each server — was rejected because it means reimplementing OAuth validation, RBAC, and audit logging N times (once per server, by whichever team owns it), with N different levels of rigor. A single gateway tier centralizes the security-critical logic and lets server owners focus on tool correctness, not auth.

Design decision: tool-level RBAC, not server-level. Server-level trust ("this identity may talk to the Postgres server") is too coarse — the Postgres server might expose both a read_query tool and a drop_table tool, and most agent identities should only ever reach the first. The gateway's policy store binds roles to individual tool names within a server's manifest, which is the direct mitigation for the deploy-tooling rollback incident in Section 2: the offending agent identity should never have had the rollback scope in the first place, only read_deploy_status.

Alternative considered — sidecar-per-server authorization (an "MCP mesh"). Instead of a centralized gateway, attach an authorization sidecar to every MCP server pod, Envoy-mesh style. Pros: no single point of failure, policy enforcement colocated with the resource. Cons: N sidecars to keep in version lockstep, policy drift risk across teams, and — critically — it does nothing to solve the discovery/registry problem, since clients would still need to know which of 40+ servers to call directly. Rejected for this organization's maturity level; revisited only if gateway throughput becomes the bottleneck at a much larger tool-call volume.

Scalability considerations. The gateway must be stateless and horizontally scalable — the July 2026 spec's removal of session affinity is what makes this trivial; pre-2026-07-28, gateway HA required session-aware routing that added real operational cost. Token validation is cached (JWKS keys, short TTL) to avoid a round trip to the identity provider on every call, since agent workloads can generate call volumes an order of magnitude higher than human-driven API traffic in autonomous pipeline scenarios.

Cost implications. The registry review process is a real headcount cost — someone has to review submitted servers — but is materially cheaper than the incident-response cost already paid once. Tool-level policy evaluation adds single-digit-millisecond latency per call at the gateway; negligible against typical LLM inference latency (hundreds of milliseconds to seconds), so it is not a meaningful performance trade-off.

Security implications. Manifest pinning closes the "rug pull" gap (a server changing its tool description after approval to add a malicious instruction). Egress allowlisting on servers bounds a compromised server's blast radius. Short-lived, narrowly scoped credentials injected by the gateway rather than held by servers mean a compromised MCP server pod exposes a credential with a short TTL and a small permission set, not a standing org-admin token.

5. Deep Technical Walkthrough

Request flow, tool discovery. An agent calls tools/list against the gateway's single endpoint. The gateway does not simply proxy this to every registered server — it filters the aggregated tool list down to only the tools the caller's validated identity is authorized for, per the policy store, before returning it. This means the model's own context window only ever contains tool descriptions it's actually permitted to invoke — a meaningful reduction in both prompt-injection surface area and token cost, since the agent isn't reasoning over dozens of irrelevant tool schemas.

Request flow, tool invocation. The client sends a stateless HTTP POST with Mcp-Method: tools/call and Mcp-Name: <tool> headers (per SEP-2243) plus a bearer token in the Authorization header. The gateway: (1) validates the JWT signature against cached JWKS and checks aud/exp/scope claims; (2) resolves caller identity and role; (3) checks the tool-level policy bundle for an allow decision; (4) if allowed, resolves the target server from the registry, swaps in a short-lived scoped credential from the secrets broker (e.g., a Vault dynamic secret with a 5-minute TTL), and forwards the call; (5) streams the server's response back, and (6) emits a structured audit event regardless of outcome.

Control-plane interaction. Registry approvals and policy bundle changes are Git commits; ArgoCD reconciles them into the gateway's policy store (typically an OPA sidecar or an embedded Rego/Cedar evaluator) within its normal sync interval — meaning a compromised or misbehaving server can be de-registered and have its access revoked within one sync cycle, not by touching individual server deployments.

Data-plane interaction. Because MCP servers are now stateless per the 2026-07-28 spec, the gateway can load-balance every request independently — no sticky sessions, no session-store dependency, no Mcp-Session-Id to track. This collapses what used to require a session-aware service mesh configuration into a plain Kubernetes Service with round-robin or least-connection balancing.

Failure scenarios and recovery. If the identity provider is unreachable, the gateway fails closed on token validation — new tool calls are rejected, not silently allowed, with cached JWKS giving a grace window for already-issued tokens near expiry. If a specific MCP server pod is unhealthy, the HPA-backed Service simply routes around it; because there's no session affinity, in-flight requests to a killed pod fail fast and are safely retryable by the agent framework rather than corrupting session state. If the policy store itself is stale (ArgoCD sync lag), the gateway is configured to fail closed on policy-store cache miss rather than defaulting to allow.

Performance bottlenecks and scaling behavior. At high agent-driven call volumes (autonomous pipelines making hundreds of tool calls per minute), the two hot paths are JWT validation and policy evaluation — both solved by in-memory caching with short, security-appropriate TTLs. The genuine bottleneck tends to be downstream: an MCP server wrapping a legacy internal API that was never built for the query patterns an LLM generates (e.g., broad, exploratory SELECT *-style calls rather than the narrow queries a human developer would write), which shows up as tail latency at the server tier, not the gateway.

6. Production Troubleshooting

Symptom: Agents intermittently report "tool not found" for a tool that was working an hour earlier, for one team only.

Investigation path a senior platform engineer would take: Check the gateway's audit log filtered by that team's identity and the specific Mcp-Name — confirm whether the call is reaching the gateway at all or being rejected pre-routing. If it's a 403 at the policy-evaluation step, check the ArgoCD sync history on the policy-bundle repo for a recent commit that narrowed that role's tool scope — this is almost always a policy change, not a server outage, because a genuinely down server produces a different error class (502/timeout, not 403). Cross-reference with the registry's approval log: did the server's manifest get re-pinned after a routine update, changing its declared tool name? Confirm by diffing the current registry-pinned manifest hash against the server's live tools/list response — a mismatch means the server drifted from its approved manifest and the gateway correctly blocked it, which is the manifest-pinning control working as designed, not a bug.

Symptom: A spike in gateway p99 latency correlated with a spike in 429s from one downstream MCP server.

Investigation path: Pull the OTel trace for a sampled slow request — determine whether the time is in JWT/policy evaluation (gateway-side) or the proxied call itself (server-side). If server-side, check that server's HPA metrics: is it under-provisioned for the current call rate, or is the downstream system it wraps (the actual Jira/Postgres/internal API) the one rate-limiting it? Check Grafana for that server's request rate against its configured max concurrency. The typical root cause here is a single agent workflow gone rogue — a bug in an autonomous pipeline agent causing it to retry a failed tool call in a tight loop — visible immediately by grouping the gateway's audit log by caller identity and looking for a single identity responsible for a disproportionate share of calls in the window; the fix is a per-identity rate limit at the gateway, which most 2026-generation MCP gateways support natively as a policy dimension alongside RBAC.

Symptom: Security review flags an MCP server's egress reaching an unexpected external IP.

Investigation path: Pull the Cilium/egress-proxy flow logs for that server's namespace, correlate the timestamp against the gateway's audit log to identify which tool call triggered the outbound connection and under which caller identity. This is the exact defense-in-depth scenario the FQDN allowlist exists for — either the destination is legitimate (a tool the server author didn't fully document, requiring a registry manifest update and allowlist addition) or it's a compromise/injection indicator, requiring immediate de-registration of that server from the gateway's active routing table (a single registry-status flip, not a redeploy) while the pod is preserved for forensics.

7. Hands-on Lab

Objective: Stand up a minimal MCP gateway topology on a local Kubernetes cluster (kind/minikube) demonstrating OAuth 2.1 token validation and tool-level policy enforcement in front of two MCP servers.

  1. Provision cluster and namespaces: kind create cluster --name mcp-lab; create mcp-gateway, mcp-server-readonly-db, mcp-server-ticketing namespaces with default-deny NetworkPolicies.
  2. Deploy two stub MCP servers implementing the 2026-07-28 stateless Streamable HTTP transport: one exposing a query_readonly tool, one exposing create_ticket and close_ticket tools. Each as a Deployment + Service + HPA (min 2 replicas), each bound to a distinct minimally-scoped ServiceAccount.
  3. Deploy a local OAuth 2.1 authorization server stub (e.g., a lightweight Keycloak instance) issuing JWTs with sub, scope, and aud claims for two test identities: agent-readonly (scope: mcp:query_readonly) and agent-ops (scope: mcp:create_ticket, deliberately excluding close_ticket).
  4. Deploy the gateway (Kong or Higress Helm chart, or a hand-rolled Envoy config) configured to: validate JWTs against the stub IdP's JWKS endpoint; route on Mcp-Method/Mcp-Name headers; and evaluate an OPA policy bundle mapping scope claims to allowed Mcp-Name values.
  5. Deploy the registry stub as a ConfigMap-backed manifest store listing both servers as approved, each with a SHA-256 pinned hash of its tools/list response.
  6. Validate the happy path: call tools/call with Mcp-Name: query_readonly using the agent-readonly token — expect 200. Call with Mcp-Name: create_ticket using the same token — expect 403 from the policy layer, confirmed in the gateway's audit log.
  7. Validate the manifest-pinning control: modify the ticketing server's tool description (simulating a rug-pull), redeploy without updating the registry's pinned hash, and confirm the gateway rejects routing to it on the next tools/list aggregation with a manifest-mismatch error.
  8. Validate stateless failover: kill a server pod mid-request-burst and confirm the HPA-backed Service routes subsequent calls to the surviving replica with no session-state errors — the direct, observable benefit of the 2026-07-28 spec's statelessness.
  9. Cleanup: kind delete cluster --name mcp-lab; remove any local IdP client registrations created for the lab.

8. Production Case Study

Large platform organizations running agent-assisted engineering at scale in 2026 have converged on strikingly similar architecture, independent of vendor: a mandatory gateway in front of every internal tool integration an agent can reach, a curated internal catalog rather than open community-registry access for anything touching production systems, and OAuth 2.1 as the non-negotiable baseline for any remote MCP server — mirroring, almost exactly, the internal API gateway consolidation that companies like Amazon and Netflix went through a decade earlier for service-to-service traffic, now replayed for agent-to-tool traffic. The industry pattern that has emerged most clearly through 2026 is treating every MCP tool description as untrusted input requiring the same sanitization discipline as user-submitted content — because, functionally, it is: a tool description authored by a third party and consumed by a model is not meaningfully different from a webpage a browsing agent might read, and both require the same instruction/data separation discipline that the broader industry is still working out. The organizations with the fewest incidents in 2026 are the ones that treated MCP governance as a day-one platform engineering responsibility rather than a bolt-on after the first tool-poisoning event — standing up the registry and gateway before adoption scaled past a handful of teams, not after.

9. Architecture Review

Strengths: centralizing auth, RBAC, and audit at the gateway means server owners don't need to be security experts; the stateless 2026-07-28 spec dramatically simplifies HA and scaling versus the prior session-affinity era; manifest pinning and a curated registry directly close the two highest-severity 2026 incident classes (rug-pulls and unvetted community servers reaching production credentials).

Weaknesses: the gateway is now a hard single point of policy enforcement — a gateway outage means no agent can call any tool, which is a meaningfully different failure mode than today's fragmented, partially-available shadow integrations (worse for availability, much better for security, a deliberate trade-off). The registry review process is a manual bottleneck that will not scale linearly with the number of teams wanting to onboard servers without dedicated headcount.

What breaks first at 10x scale: policy-store propagation latency — at 10x the number of registered servers and roles, a Git-commit-to-ArgoCD-sync-to-gateway-cache propagation delay that's acceptable today (seconds to low minutes) becomes a real operational gap during an active incident requiring immediate access revocation, pushing toward a push-based policy invalidation mechanism rather than pull-based sync.

At 100 million calls/day scale (illustrative of a large enterprise-wide agent rollout): JWKS/token-validation caching architecture needs to move from per-gateway-pod in-memory caching to a shared, low-latency cache (Redis/Momento) to avoid thundering-herd re-validation on pod restarts; the audit log pipeline needs to move from direct SIEM writes to a buffered streaming pipeline (Kafka/Kinesis) to avoid audit-logging becoming the new gateway bottleneck; and the registry review process must shift from fully manual to policy-as-code with automated static analysis of submitted tool manifests (flagging suspicious instruction-like text in tool descriptions automatically) with manual review reserved for flagged submissions only.

What would be redesigned: move from a single centralized gateway cluster to a regional gateway topology with policy replicated at the edge, closer to where large autonomous pipeline workloads run, to keep the per-call latency overhead negligible even as call volume grows an order of magnitude.

10. Best Practices

Reliability: run the gateway itself with the same production rigor as any tier-0 service — multi-AZ, HPA, PodDisruptionBudgets, and a documented fail-closed behavior for every dependency (IdP, policy store, registry) so a dependency outage degrades safely rather than silently allowing unauthorized calls.

Scalability: lean into the 2026-07-28 spec's statelessness fully — resist any temptation to reintroduce session affinity for "simplicity," since it's the single biggest scaling unlock of the year for this workload class.

Observability: every tool call needs three correlated signals — the gateway's structured audit event, an OTel trace spanning agent-to-gateway-to-server, and (where the agent framework exposes it) the model's own reasoning trace explaining why it chose to call that tool — because incident review increasingly needs to answer "was this a bug in the server, a bad policy, or a model reasoning failure," and only having the first signal makes that undiagnosable.

Security: default every new server registration to zero scopes and require explicit, reviewed scope grants per tool, per identity class — never per-server blanket trust; pin manifests and diff on every server update; enforce egress allowlisting on every server as a default, not an opt-in.

Cost optimization: cache JWT validation and policy decisions aggressively; right-size MCP server HPA targets based on actual agent-driven call patterns (bursty, not steady-state like human traffic) rather than copying assumptions from traditional API workload sizing.

Operational excellence: GitOps everything — registry approvals, policy bundles, NetworkPolicies — so every access change is a reviewable, revertible, attributable commit, and de-registering a compromised server is a one-line config change, not a deploy-and-pray.

11. Common Production Mistakes

Trusting tool descriptions as inert metadata rather than untrusted, model-consumed input is the single most common and most severe mistake — teams that wouldn't dream of eval()-ing unsanitized user input happily let an LLM ingest a third-party tool description verbatim into its context. Granting server-level rather than tool-level scopes is the second most common, usually born of convenience during initial rollout ("just give the agent access to the Jira server") that nobody revisits once it's working. Running MCP servers with standing, long-lived credentials instead of gateway-brokered short-lived ones is a direct holdover from pre-agent API integration habits that doesn't survive contact with a non-deterministic caller. Skipping manifest pinning because "we trust our internal teams" ignores that the rug-pull risk applies just as much to an internal server whose maintainer's account or CI pipeline gets compromised as to an external one. And treating the July 2026 spec migration as optional because "the old servers still work" ignores that pre-2026-07-08 servers built on the stateful session model are also, disproportionately, the ones without OAuth 2.1 — spec non-compliance and security posture are strongly correlated in practice, not independent concerns.

12. Interview Preparation

Why does MCP's shift to a stateless protocol in the 2026-07-28 spec matter operationally, beyond removing a header? It removes the need for session-affinity-aware load balancing and session-store infrastructure entirely, meaning any gateway or server replica can handle any request — turning MCP server HA into a plain stateless-service scaling problem, and eliminating an entire class of session-hijacking and session-fixation risk that existed under the stateful model.

Why is tool-level RBAC necessary instead of server-level trust? Because a single MCP server commonly exposes tools spanning a wide range of blast radius (a read-only query tool alongside a destructive rollback tool), and an agent identity legitimately needing the former has no business holding the latter; server-level trust is the equivalent of granting a database connection full DBA rights because the application only needed SELECT.

What is a "rug pull" attack in the MCP context, and how does manifest pinning mitigate it? A server that was reviewed and approved with one set of tool descriptions later changes those descriptions — potentially injecting malicious instructions — without going through re-review. Manifest pinning stores a cryptographic hash of the approved tool manifest at registration time and has the gateway verify the live server's tools/list response against that hash on every use, rejecting drift.

How would you design credential handling for an MCP server that needs to write to a production database? Never embed a standing credential in the server. The gateway or an adjacent secrets broker (Vault, cloud-native equivalent) issues a short-lived, narrowly scoped credential per authorized call, injected at proxy time, with the server itself holding no long-lived secret material — minimizing the value of compromising the server pod itself.

How do you reason about the trust boundary between a model and a tool description it reads? Treat the tool description exactly like third-party or user-submitted content: it can contain instructions the model may act on unless the agent framework enforces a hard separation between "operator-provided system instructions" and "content read during tool discovery or tool execution" — a separation most 2026-generation agent frameworks are still actively hardening, not something MCP the protocol guarantees on its own.

13. Latest Industry Updates

The 2026-07-28 MCP specification is the defining update of the year: removal of the stateful session handshake and Mcp-Session-Id, mandatory Mcp-Method/Mcp-Name headers for infrastructure-level routing (SEP-2243), and repositioning MCP servers as OAuth 2.1 resource servers only, validating tokens from an external authorization server rather than managing auth themselves (Model Context Protocol blog, WorkOS). This matters because it's the first spec revision written for production operators, not demo authors — it directly enables the stateless, horizontally scalable gateway topology covered in this session.

MCP gateway consolidation into existing API gateway vendors — Gartner's projection of 75% of API gateway vendors shipping MCP support this year is already visibly playing out, with Kong, and dedicated entrants like Higress and several AI-security-focused startups, treating MCP as a first-class protocol alongside REST/gRPC rather than a separate product category (NeuralTrust, Composio). This matters because it means most organizations won't need to build gateway infrastructure from scratch — they'll extend platforms they already operate.

The 30+ disclosed MCP CVEs in H1 2026, including the CVSS 8.8 Azure MCP Server SSRF, have made "defense-in-depth beyond the gateway" — isolated management infrastructure, bounded outbound trust via egress allowlisting, and semantic integrity via manifest pinning — the explicit 2026 security baseline rather than an aspirational best practice (InfoQ). This matters because it confirms gateway-only enforcement is now considered insufficient on its own — the per-server egress boundary in Tier 5 of this session's architecture is a direct response.

Continued CNCF/Kubernetes AI-infrastructure convergence — the GPU Operator's DRA support maturing through the v26.x line, NVIDIA's DRA driver donation to CNCF at KubeCon Europe 2026, and Istio's ambient multicluster beta plus Gateway API Inference Extension beta (CNCF) — matters because MCP servers and gateways are increasingly deployed on the same clusters as GPU inference workloads, and the networking/scheduling primitives maturing for AI training and serving are the same ones platform teams now lean on for MCP gateway HA and topology-aware routing.

14. Summary & Cheat Sheet

Key concepts: MCP is a JSON-RPC-based protocol standardizing tool discovery and invocation for LLM agents; the 2026-07-28 spec made it stateless-first and OAuth 2.1-native; production MCP requires a gateway tier, a curated internal registry, and tool-level (not server-level) RBAC to be safe at scale.

Reference architecture: Agent (client) → Gateway (auth, routing on Mcp-Method/Mcp-Name, tool-level policy, credential injection, audit) → Registry (approval, manifest pinning) → Stateless MCP servers (Deployment + Service + HPA, scoped ServiceAccount per domain) → Egress-bounded outbound calls.

Key headers/spec details: Mcp-Method, Mcp-Name (SEP-2243, routing without body parsing); no more Mcp-Session-Id; MCP servers validate, never issue, OAuth 2.1 tokens.

Troubleshooting checklist: unexpected 403 → check recent policy-bundle commits before assuming server outage; latency spike + downstream 429s → group gateway audit log by caller identity to find a runaway agent loop; unexpected server egress → correlate egress flow logs with gateway audit log by timestamp to identify the triggering tool call and caller.

Design patterns to default to: zero-scope-by-default registration, manifest pinning with hash verification on every tools/list, short-lived gateway-brokered credentials instead of standing server secrets, fail-closed on every gateway dependency (IdP, policy store, registry).

Common mistakes to avoid: trusting tool descriptions as inert data, server-level instead of tool-level trust, standing credentials embedded in servers, skipping manifest pinning for "internal" servers, treating spec-migration as optional.

Interview one-liners: statelessness removes session-affinity infrastructure and a session-hijacking risk class; tool-level RBAC prevents blast-radius creep from server-level trust; manifest pinning is the direct mitigation for rug-pull attacks; the model-tool-description trust boundary is an agent-framework responsibility, not a protocol guarantee.