Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 193 additions & 2 deletions cn/Zadig v4.3/21.开发者中心/04.工具和插件/29.mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permalink: /cn/Zadig v4.3/mcp-settings/
::: tip
- MCP Server 需要 Zadig 版本为 v4.2.0 或以上方可正常使用。
- API Token 可在 Zadig 平台的“账号设置”中获取。
- Zadig MCP 支持 `stdio` 和 `sse` 两种启动方式,可根据接入场景选择。
- Zadig MCP 支持 `stdio`、`sse` 和 `http` 三种启动方式,可根据接入场景选择。
:::

### stdio 启动方式
Expand Down Expand Up @@ -107,7 +107,7 @@ spec:
spec:
containers:
- name: zadig-mcp
image: koderover.tencentcloudcr.com/koderover-public/zadig-mcp:0.1.4
image: koderover.tencentcloudcr.com/koderover-public/zadig-mcp:0.1.6
imagePullPolicy: IfNotPresent
args:
- "-t"
Expand Down Expand Up @@ -269,6 +269,197 @@ https://your_domain/sse?token=your_token
![飞书 Aily 接入成功示例 1](../../../_images/aily_setting_success1.png)
![飞书 Aily 接入成功示例 2](../../../_images/aily_setting_success2.png)

### Streamable HTTP 启动方式

::: tip
- 请将示例中的 `https://your-zadig.com`、`https://mcp.your-company.com` 以及 `your-token` 替换为实际地址和 Token。
- 该模式适用于通过 Streamable HTTP 协议接入 Zadig MCP 服务的场景,需先单独启动或部署 MCP Server。
- Streamable HTTP 使用单一 HTTP Endpoint 暴露 MCP 服务,示例中默认路径为 `/http`。
:::

#### 适用场景

- 客户端支持 Streamable HTTP 协议,需要通过公网或内网 URL 访问 MCP Server。
- 希望通过标准 HTTP Endpoint 接入 MCP 服务,而不是使用 SSE 的 `/sse` 和 `/message` 两个 Endpoint。
- 需要将 MCP Server 统一部署在测试、办公或共享环境中,供多人复用。

#### 一次实践:在 Zadig 中部署 Streamable HTTP 服务

- 该方式适用于将 Zadig MCP Server 作为服务部署在 Zadig 环境中,并通过 Ingress 以 Streamable HTTP 方式对外提供访问能力。
- 部署前请确认 `3000` 端口未被占用。
- 请根据实际情况修改 `ZADIG_API_HOST`、`ingressClassName`、`name`、`namespace` 以及 Ingress 域名。
- 默认 HTTP Endpoint 为 `/http`,如需调整,请同步修改 `MCP_HTTP_ENDPOINT` 和 Ingress 路径。

##### 操作步骤

1. 在 Zadig 中创建一个 K8s 项目,例如:`mcp`。
2. 将下面的 K8s YAML 加入到服务配置并起名为 `zadig-mcp-http`,并按实际环境修改其中的关键参数。
3. 保存服务配置。
4. 将该服务加入环境中。
5. 查看 Pod 状态,确认服务是否成功启动。

##### 服务配置 YAML 示例

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: zadig-mcp-http-config
labels:
app: zadig-mcp-http
data:
ZADIG_API_HOST: "https://your-zadig.com"
MCP_TRANSPORT_TYPE: "http"
MCP_LISTEN_ADDR: "0.0.0.0:3000"
MCP_HTTP_ENDPOINT: "/http"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: zadig-mcp-http
labels:
app: zadig-mcp-http
spec:
replicas: 1
selector:
matchLabels:
app: zadig-mcp-http
template:
metadata:
labels:
app: zadig-mcp-http
spec:
containers:
- name: zadig-mcp
image: koderover.tencentcloudcr.com/koderover-public/zadig-mcp:0.1.6
imagePullPolicy: IfNotPresent
args:
- "-t"
- "$(MCP_TRANSPORT_TYPE)"
- "-a"
- "$(MCP_LISTEN_ADDR)"
ports:
- name: http
containerPort: 3000
protocol: TCP
env:
- name: ZADIG_API_HOST
valueFrom:
configMapKeyRef:
name: zadig-mcp-http-config
key: ZADIG_API_HOST
- name: MCP_TRANSPORT_TYPE
valueFrom:
configMapKeyRef:
name: zadig-mcp-http-config
key: MCP_TRANSPORT_TYPE
- name: MCP_LISTEN_ADDR
valueFrom:
configMapKeyRef:
name: zadig-mcp-http-config
key: MCP_LISTEN_ADDR
- name: MCP_HTTP_ENDPOINT
valueFrom:
configMapKeyRef:
name: zadig-mcp-http-config
key: MCP_HTTP_ENDPOINT
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 400m
memory: 1024Mi
readinessProbe:
tcpSocket:
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 3000
initialDelaySeconds: 10
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: zadig-mcp-http
labels:
app: zadig-mcp-http
spec:
selector:
app: zadig-mcp-http
ports:
- name: http
port: 3000
targetPort: 3000
protocol: TCP
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: zadig-mcp-http
namespace: your_namespace
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
nginx.ingress.kubernetes.io/service-upstream: "true"
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
spec:
ingressClassName: your_ingress_class_name
rules:
- host: your_domain.com
http:
paths:
- path: /http
pathType: Prefix
backend:
service:
name: zadig-mcp-http
port:
number: 3000
```

#### 客户端配置(MCP Client 侧)

基于 `Header` 鉴权方式,在支持 Streamable HTTP 的 MCP Client 中配置 HTTP Endpoint:

```json
{
"mcpServers": {
"zadig-mcp-http": {
"url": "https://your_domain.com/http",
"headers": {
"Authorization": "Bearer your-token"
}
}
}
}
```
##### 飞书 Aily 配置

基于 `token` URL 传参的鉴权方式,在飞书 Aily 中添加如下 URL:

```text
https://your_domain/http?token=your_token
```

下面以飞书 Aily 为例,说明如何通过远程 URL 接入 Zadig MCP Server:

1. 在飞书 Aily 中新增 MCP 服务。
2. 填写上面的 SSE 地址。
3. 保存配置后,验证连接是否成功。

![飞书 Aily 配置示例](../../../_images/aily_setting1.png)
![飞书 Aily 接入成功示例 1](../../../_images/aily_setting_success1.png)
![飞书 Aily 接入成功示例 2](../../../_images/aily_setting_success2.png)
## 升级或卸载

```bash
Expand Down