MCP服务器功能演示

该POC展示了如何在Kubernetes集群中部署和配置MCP服务器,支持流式HTTP功能,适用于开发环境中的API工具集成。

  • by Kuadrant
  • 本地部署
  • 更新于
在 GitHub 查看 kuadrant/kuadrant-mcp-poc

使用说明

象限-mcp-poc

引言:

该POC使用了 一切 MCP服务器,因为它具有流式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服务器吊舱正在运行。
   kubectl get pods -n mcp-server
  1. 创建网关命名空间:
    kubectl create ns mcp-gateway
  1. 在与网关相同的命名空间中创建秘密凭据-这些凭据将用于配置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. 在证书管理器命名空间中创建秘密凭据:

   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网关注意更新 kuadrant/gateway.yaml 使用您的根域创建文件。
    kubectl apply -f kuadrant/gateway.yaml
  1. 创建Lets加密群集颁发者和TlS策略:
  kubectl apply -f kuadrant/tls.yaml
**Note**: The cert can't be self signed. MCP clients dont accept self signed certs yet.
  1. 创建DNS策略:
   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. 创建Auth策略和API密钥机密:
   kubectl apply -f kuadrant/auth.yaml

MCP客户端

在这个例子中,我们使用Vscode Co-pilot作为我们的MCP客户端,因为它能够使用Streamable HTTP进行连接

  1. 将以下内容添加到您的VSCode settings.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服务器工具。使用以下命令在vscode中打开副驾驶 ⌃⌘I 在下拉菜单中点击代理。

  2. 在聊天类型中:

    add 500 and 500
  1. Vscode会询问您是否允许副驾驶从MCP服务器调用该工具,请确保您允许它。

  2. 聊天将输出答案,并显示其运行情况 add 来自MCP服务器

  3. 如果你在配置中省略了Auth标头,或者使用该工具多次快速询问聊天问题,部署的身份验证和速率限制策略将拒绝和限制请求。