Static MCP
Route to a Model Context Protocol (MCP) server through a static address. For more information, see the About MCP topic.
Before you begin
Set up an agentgateway proxy.
Step 1: Deploy an MCP server
Deploy a Model Context Protocol (MCP) server that you want agentgateway to proxy traffic to. The following example sets up a simple MCP server with one tool, fetch, that retrieves the content of a website URL that you pass in.
-
Create the MCP server workload. Notice the following details about the Service:
appProtocol: kgateway.dev/mcp(required): Configure your service to use the MCP protocol. This way, the agentgateway proxy uses the MCP protocol when connecting to the service.kgateway.dev/mcp-pathannotation (optional): The default values are/ssefor the SSE protocol or/mcpfor the Streamable HTTP protocol. If you need to change the path of the MCP target endpoint, set this annotation on the Service.
kubectl apply -f- <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: mcp-website-fetcher spec: selector: matchLabels: app: mcp-website-fetcher template: metadata: labels: app: mcp-website-fetcher spec: containers: - name: mcp-website-fetcher image: ghcr.io/peterj/mcp-website-fetcher:main imagePullPolicy: Always --- apiVersion: v1 kind: Service metadata: name: mcp-website-fetcher labels: app: mcp-website-fetcher spec: selector: app: mcp-website-fetcher ports: - port: 80 targetPort: 8000 appProtocol: kgateway.dev/mcp EOF -
Create a Backend that sets up the agentgateway target details for the MCP server.
kubectl apply -f- <<EOF apiVersion: gateway.kgateway.dev/v1alpha1 kind: Backend metadata: name: mcp-backend spec: mcp: targets: - name: mcp-target static: host: mcp-website-fetcher.default.svc.cluster.local port: 80 protocol: SSE EOF
Step 2: Route with agentgateway
Create an HTTPRoute resource that routes to the Backend that you created in the previous step.
kubectl apply -f- <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: mcp
spec:
parentRefs:
- name: agentgateway
namespace: kgateway-system
rules:
- backendRefs:
- name: mcp-backend
group: gateway.kgateway.dev
kind: Backend
EOFStep 3: Verify the connection
Use the MCP Inspector tool to verify that you can connect to your sample MCP server through agentgateway.
-
Get the agentgateway address.
export INGRESS_GW_ADDRESS=$(kubectl get gateway agentgateway -n kgateway-system -o=jsonpath="{.status.addresses[0].value}") echo $INGRESS_GW_ADDRESSkubectl port-forward deployment/agentgateway -n kgateway-system 8080:80 -
From the terminal, run the MCP Inspector command. Then, the MCP Inspector opens in your browser. If the MCP inspector tool does not open automatically, run
mcp-inspector.npx modelcontextprotocol/inspector#0.17.5 -
From the MCP Inspector menu, connect to your agentgateway address as follows:
- Transport Type: Select
Streamable HTTP. - URL: Enter the agentgateway address, port, and the
/mcppath. If your agentgateway proxy is exposed with a LoadBalancer server, usehttp://<lb-address>/mcp. In local test setups where you port-forwarded the agentgateway proxy on your local machine, usehttp://localhost:8080/mcp. - Click Connect.
- Transport Type: Select
-
From the menu bar, click the Tools tab. Then from the Tools pane, click List Tools and select the
fetchtool. -
From the fetch pane, in the url field, enter a website URL, such as
https://lipsum.com/, and click Run Tool. -
Verify that you get back the fetched URL content.
Cleanup
You can remove the resources that you created in this guide.kubectl delete Deployment mcp-website-fetcher
kubectl delete Service mcp-website-fetcher
kubectl delete Backend mcp-backend
kubectl delete HTTPRoute mcp