关于 kuadrant-mcp-poc
kuadrant-mcp-poc 是在 Kubernetes 集群中部署 MCP 服务并通过 Kuadrant 配置网关的概念验证,面向搭建该环境的操作者。示例使用支持 Streamable HTTP 的 everything MCP server,并部署 TLS、DNS、认证和限流策略。
主要功能
- 01在 Kubernetes 部署 MCP 服务
- 02配置 Kuadrant 网关
- 03设置 TLS 与 DNS 策略
- 04配置 API Key 认证和限流
适用场景
- 01验证集群中的远程 MCP 服务
- 02为 MCP 服务配置 DNS 与 TLS
- 03限制并认证客户端请求
MCP 相关
该项目将 everything MCP server 部署为可通过 Streamable HTTP 访问的 MCP 服务,并示范客户端连接及调用工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
kuadrant-mcp-poc
简介:
此 POC 使用了 everything MCP 服务,因为它支持 Streamable-HTTP。
前提条件
- K8s 集群
- 已安装 Kuadrant,更多信息请参阅 Kuadrant 文档
设置环境变量
export QUAY_USERNAME=xxxx # Quay username
export KUADRANT_AWS_ACCESS_KEY_ID=xxxx # AWS Key ID with access to manage the DNS Zone ID below
export KUADRANT_AWS_SECRET_ACCESS_KEY=xxxx # AWS Secret Access Key with access to manage the DNS Zone ID below
安装
- 使用你的根域名更新
mcp-server/mcp-server-everything.yaml文件。
1. Install the MCP Server in your K8s cluster.
```sh
kubectl apply -f mcp-server/mcp-server-everything.yaml
- 确保 MCP everything 服务 Pod 正在运行。
kubectl get pods -n mcp-server
- 创建网关命名空间:
kubectl create ns mcp-gateway
- 在与 Gateway 相同的命名空间中创建凭据密钥——这些凭据将用于配置 DNS:
kubectl -n mcp-gateway create secret generic aws-credentials \
--type=kuadrant.io/aws \
--from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \
--from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
- 在 cert-manager 命名空间中创建凭据密钥:
kubectl -n cert-manager create secret generic aws-credentials \
--type=kuadrant.io/aws \
--from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \
--from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
- 创建 Kuadrant Gateway。注意:使用你的根域名更新
kuadrant/gateway.yaml文件。
kubectl apply -f kuadrant/gateway.yaml
- 创建 Lets encrypt Cluster issuer 和 TlS Policy:
kubectl apply -f kuadrant/tls.yaml
**注意**:证书不能是自签名证书。目前 MCP 客户端不接受自签名证书。
- 创建 DNSPolicy:
kubectl apply -f kuadrant/dns.yaml
- 一分钟后,测试 MCP 服务是否有响应
curl -v -X POST "https://api.KUADRANT_ZONE_ROOT_DOMAIN_GOES_HERE/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"resources": {},
"tools": {},
"prompts": {}
},
"clientInfo": {
"name": "test-curl-client",
"version": "1.0"
}
},
"id": 1
}'
- 创建速率限制策略:
kubectl apply -f kuadrant/rlp.yaml
- 创建身份验证策略和 API Key 密钥:
kubectl apply -f kuadrant/auth.yaml
MCP 客户端
本示例使用 Vscode Co pilot 作为 MCP 客户端,因为它支持通过 Streamable HTTP 连接。
- 将以下内容添加到你的 VSCode setting.json 中。更多信息请参阅官方 VSCode MCP 文档
"mcp": {
"servers": {
"my-mcp-server": {
"type": "http",
"url": "https://KUADRANT_ZONE_ROOT_DOMAIN_GOES_HERE/mcp",
"headers": {
"Authorization": "APIKEY IAMALICE"
}
}
}
},
-
现在客户端应该可以使用此服务,你也应该能够使用 MCP 服务的工具。使用
⌃⌘I在 vscode 中打开 co pilot,并在下拉菜单中点击 agent。 -
在聊天中输入:
add 500 and 500
-
Vscode 会询问你是否允许 Co pilot 调用 MCP 服务中的工具,请确认允许。
-
聊天会输出答案,并显示它运行了 MCP 服务中的
add。 -
如果你在配置中省略 Auth header,或者过快地多次使用该工具向聊天提问,已部署的身份验证和速率限制策略将拒绝并限制请求。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。