MCP & LLMGateway
Two infrastructure CRDs the operator turns into Deployments + Services: an MCP proxy that fronts upstream tool servers, and an LLM gateway that fronts model providers.
Where Agent and Tool describe work, MCP and LLMGateway describe shared infrastructure. Each reconciles into a Deployment plus a Service that agents in the namespace point at.
MCP
An MCP runs a proxy that fronts one or more upstream MCP servers and exposes a filtered tool surface. Agents bind it through spec.mcpRefs. Upstreams can be http, another mcpRef, or stdio, each with its own auth and tool filter.
An MCP proxy
1apiVersion: v12kind: Secret3metadata: { name: github-upstream-pat, namespace: team-a }4type: Opaque5stringData: { token: "ghp_REPLACE_ME" }6---7apiVersion: agentkube.io/v1alpha18kind: MCP9metadata:10 name: github-tools11 namespace: team-a12spec:13 port: 808014 replicas: 215 upstreams:16 - name: github17 kind: http # http | mcpRef | stdio18 endpoint: https://mcp.github.com19 auth:20 mode: bearer21 secretRef: { name: github-upstream-pat, key: token }22 tools:23 mode: allow24 allow: [create_issue, list_issues, add_comment]LLMGateway
An LLMGateway is a provider gateway: it terminates model traffic, routes to upstreams (OpenAI, Anthropic, Bedrock, Vertex, Azure OpenAI, Ollama, vLLM), and applies rate limits, guardrails, and caching. Agents reach it instead of calling a provider directly, so credentials and policy live in one place.
A gateway
1apiVersion: agentkube.io/v1alpha12kind: LLMGateway3metadata:4 name: shared-gateway5 namespace: platform6spec:7 upstreams:8 - name: anthropic9 provider: anthropic10 credentialsRef: { name: anthropic-key, key: api-key }11 models: [claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5]12 priority: 113 routing:14 defaultModel: claude-opus-4-715 modelMap:16 - { from: "opus", to: "claude-opus-4-7", upstream: anthropic }17 - { from: "sonnet", to: "claude-sonnet-4-6", upstream: anthropic }18 rateLimit:19 requestsPerMinute: 60020 scope: perClient # global | perClient | perModel21 guardrails:22 piiRedaction: true23 inputFilters: [prompt-injection]24 auth:25 mode: apikey