mcpField
K
kuadrant-mcp-poc

kuadrant-mcp-poc

本地服务
github.com/Kuadrant云与基础设施070 周前更新

关于 kuadrant-mcp-poc

kuadrant-mcp-poc 是在 Kubernetes 集群中部署 MCP 服务并通过 Kuadrant 配置网关的概念验证,面向搭建该环境的操作者。示例使用支持 Streamable HTTP 的 everything MCP server,并部署 TLS、DNS、认证和限流策略。

主要功能

  1. 01在 Kubernetes 部署 MCP 服务
  2. 02配置 Kuadrant 网关
  3. 03设置 TLS 与 DNS 策略
  4. 04配置 API Key 认证和限流

适用场景

  1. 01验证集群中的远程 MCP 服务
  2. 02为 MCP 服务配置 DNS 与 TLS
  3. 03限制并认证客户端请求

MCP 相关

该项目将 everything MCP server 部署为可通过 Streamable HTTP 访问的 MCP 服务,并示范客户端连接及调用工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kuadrant-mcp-poc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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

安装

  1. 使用你的根域名更新 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
  1. 确保 MCP everything 服务 Pod 正在运行。
   kubectl get pods -n mcp-server
  1. 创建网关命名空间:
    kubectl create ns mcp-gateway
  1. 在与 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
  1. 在 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
  1. 创建 Kuadrant Gateway。注意:使用你的根域名更新 kuadrant/gateway.yaml 文件。
    kubectl apply -f kuadrant/gateway.yaml
  1. 创建 Lets encrypt Cluster issuer 和 TlS Policy:
  kubectl apply -f kuadrant/tls.yaml
**注意**:证书不能是自签名证书。目前 MCP 客户端不接受自签名证书。
  1. 创建 DNSPolicy:
   kubectl apply -f kuadrant/dns.yaml
  1. 一分钟后,测试 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
          }'
  1. 创建速率限制策略:
    kubectl apply -f kuadrant/rlp.yaml
  1. 创建身份验证策略和 API Key 密钥:
   kubectl apply -f kuadrant/auth.yaml
MCP 客户端

本示例使用 Vscode Co pilot 作为 MCP 客户端,因为它支持通过 Streamable HTTP 连接。

  1. 将以下内容添加到你的 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"
        }
      }
    }
  },
  1. 现在客户端应该可以使用此服务,你也应该能够使用 MCP 服务的工具。使用 ⌃⌘I 在 vscode 中打开 co pilot,并在下拉菜单中点击 agent。

  2. 在聊天中输入:

    add 500 and 500
  1. Vscode 会询问你是否允许 Co pilot 调用 MCP 服务中的工具,请确认允许。

  2. 聊天会输出答案,并显示它运行了 MCP 服务中的 add。

  3. 如果你在配置中省略 Auth header,或者过快地多次使用该工具向聊天提问,已部署的身份验证和速率限制策略将拒绝并限制请求。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。