Skip to content

Commit b1d9aa4

Browse files
committed
refactor api, support http server
1 parent 25447c4 commit b1d9aa4

10 files changed

+391
-192
lines changed

api/v1alpha1/mcpserver_types.go

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,44 +33,42 @@ const (
3333

3434
// MCPServerSpec defines the desired state of MCPServer.
3535
type MCPServerSpec struct {
36+
// Configuration to Deploy the MCP Server using a docker container
37+
Deployment MCPServerDeployment `json:"deployment"`
38+
3639
// TransportType defines the type of mcp server being run
3740
// +kubebuilder:validation:Enum=stdio;http
3841
TransportType TransportType `json:"transportType,omitempty"`
39-
40-
// StdioTransport defines the configuration for a standard input/output transport.
41-
// +optional
42-
StdioTransport *StdioTransport `json:"stdioTransport,omitempty"`
43-
44-
// HTTPTransport defines the configuration for a Streamable HTTP transport.
45-
// +optional
46-
HTTPTransport *HTTPTransport `json:"httpTransport,omitempty"`
47-
48-
// Overrides for the deployment
49-
DeploymentOverrides *DeploymentOverrides `json:"deploymentOverrides,omitempty"`
50-
51-
// Port defines the port on which the MCP server will listen.
52-
Port uint16 `json:"port,omitempty"`
5342
}
5443

5544
// StdioTransport defines the configuration for a standard input/output transport.
56-
type StdioTransport struct {
57-
Cmd string `json:"cmd,omitempty"`
58-
Args []string `json:"args,omitempty"`
59-
Env map[string]string `json:"env,omitempty"`
60-
}
45+
type StdioTransport struct{}
6146

6247
// HTTPTransport defines the configuration for a Streamable HTTP transport.
63-
type HTTPTransport struct {
64-
}
48+
type HTTPTransport struct{}
6549

6650
// MCPServerStatus defines the observed state of MCPServer.
6751
type MCPServerStatus struct {
6852
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
6953
// Important: Run "make" to regenerate code after modifying this file
7054
}
7155

72-
// DeploymentOverrides defines overrides for the MCP server deployment.
73-
type DeploymentOverrides struct {
56+
// MCPServerDeployment
57+
type MCPServerDeployment struct {
58+
// Image defines the container image to to deploy the MCP server.
59+
Image string `json:"image,omitempty"`
60+
61+
// Port defines the port on which the MCP server will listen.
62+
Port uint16 `json:"port,omitempty"`
63+
64+
// Cmd defines the command to run in the container to start the mcp server.
65+
Cmd string `json:"cmd,omitempty"`
66+
67+
// Args defines the arguments to pass to the command.
68+
Args []string `json:"args,omitempty"`
69+
70+
// Env defines the environment variables to set in the container.
71+
Env map[string]string `json:"env,omitempty"`
7472
}
7573

7674
// +kubebuilder:object:root=true
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: v1
2+
data:
3+
local.yaml: |
4+
binds:
5+
- listeners:
6+
- name: default
7+
protocol: HTTP
8+
routes:
9+
- backends:
10+
- backend:
11+
mcp:
12+
name: test-http-server
13+
targets:
14+
- name: test-http-server
15+
spec:
16+
stdio:
17+
args:
18+
- run
19+
- start:streamableHttp
20+
cmd: npm
21+
weight: 100
22+
matches:
23+
- path:
24+
pathPrefix: /sse
25+
- path:
26+
pathPrefix: /mcp
27+
name: mcp
28+
port: 3001
29+
config: {}
30+
kind: ConfigMap
31+
metadata:
32+
creationTimestamp: null
33+
name: test-http-server
34+
namespace: default

pkg/agentgateway/agentgateway_configmap.yaml renamed to pkg/agentgateway/agentgateway_configmap_stdio.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
apiVersion: v1
22
data:
33
local.yaml: |
4-
config: {}
54
binds:
65
- listeners:
76
- name: default
@@ -10,9 +9,9 @@ data:
109
- backends:
1110
- backend:
1211
mcp:
13-
name: test-server
12+
name: test-stdio-server
1413
targets:
15-
- name: test-server
14+
- name: test-stdio-server
1615
spec:
1716
stdio:
1817
args:
@@ -28,8 +27,9 @@ data:
2827
pathPrefix: /mcp
2928
name: mcp
3029
port: 3000
30+
config: {}
3131
kind: ConfigMap
3232
metadata:
3333
creationTimestamp: null
34-
name: test-server
34+
name: test-stdio-server
3535
namespace: default

pkg/agentgateway/agentgateway_deployment.yaml renamed to pkg/agentgateway/agentgateway_deployment_http.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@ apiVersion: apps/v1
22
kind: Deployment
33
metadata:
44
creationTimestamp: null
5-
name: test-server
5+
name: test-http-server
66
namespace: default
77
spec:
88
selector:
99
matchLabels:
10-
app.kubernetes.io/instance: test-server
11-
app.kubernetes.io/name: test-server
10+
app.kubernetes.io/instance: test-http-server
11+
app.kubernetes.io/name: test-http-server
1212
strategy: {}
1313
template:
1414
metadata:
1515
creationTimestamp: null
1616
labels:
17-
app.kubernetes.io/instance: test-server
17+
app.kubernetes.io/instance: test-http-server
1818
app.kubernetes.io/managed-by: kmcp
19-
app.kubernetes.io/name: test-server
19+
app.kubernetes.io/name: test-http-server
2020
spec:
2121
containers:
2222
- command:
2323
- sh
2424
- -c
2525
- /agentbin/agentgateway -f /config/local.yaml
2626
image: docker.io/mcp/everything
27-
name: tool
27+
name: mcp-server
2828
resources: {}
2929
volumeMounts:
3030
- mountPath: /config
@@ -45,7 +45,7 @@ spec:
4545
name: binary
4646
volumes:
4747
- configMap:
48-
name: test-server
48+
name: test-http-server
4949
name: config
5050
- emptyDir: {}
5151
name: binary
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
creationTimestamp: null
5+
name: test-stdio-server
6+
namespace: default
7+
spec:
8+
selector:
9+
matchLabels:
10+
app.kubernetes.io/instance: test-stdio-server
11+
app.kubernetes.io/name: test-stdio-server
12+
strategy: {}
13+
template:
14+
metadata:
15+
creationTimestamp: null
16+
labels:
17+
app.kubernetes.io/instance: test-stdio-server
18+
app.kubernetes.io/managed-by: kmcp
19+
app.kubernetes.io/name: test-stdio-server
20+
spec:
21+
containers:
22+
- command:
23+
- sh
24+
- -c
25+
- /agentbin/agentgateway -f /config/local.yaml
26+
image: docker.io/mcp/everything
27+
name: mcp-server
28+
resources: {}
29+
volumeMounts:
30+
- mountPath: /config
31+
name: config
32+
- mountPath: /agentbin
33+
name: binary
34+
initContainers:
35+
- args:
36+
- -c
37+
- cp /usr/bin/agentgateway /agentbin/agentgateway
38+
command:
39+
- sh
40+
image: ttl.sh/h1751392143:24h
41+
name: copy-binary
42+
resources: {}
43+
volumeMounts:
44+
- mountPath: /agentbin
45+
name: binary
46+
volumes:
47+
- configMap:
48+
name: test-stdio-server
49+
name: config
50+
- emptyDir: {}
51+
name: binary
52+
status: {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
creationTimestamp: null
5+
name: test-http-server
6+
namespace: default
7+
spec:
8+
ports:
9+
- name: http
10+
port: 3001
11+
protocol: TCP
12+
targetPort: 3001
13+
selector:
14+
app.kubernetes.io/instance: test-http-server
15+
app.kubernetes.io/name: test-http-server
16+
status:
17+
loadBalancer: {}

pkg/agentgateway/agentgateway_service.yaml renamed to pkg/agentgateway/agentgateway_service_stdio.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
creationTimestamp: null
5-
name: test-server
5+
name: test-stdio-server
66
namespace: default
77
spec:
88
ports:
@@ -11,7 +11,7 @@ spec:
1111
protocol: TCP
1212
targetPort: 3000
1313
selector:
14-
app.kubernetes.io/instance: test-server
15-
app.kubernetes.io/name: test-server
14+
app.kubernetes.io/instance: test-stdio-server
15+
app.kubernetes.io/name: test-stdio-server
1616
status:
1717
loadBalancer: {}

0 commit comments

Comments
 (0)