网关OAuth2集成服务

通过Docker Compose和deck工具实现Kong Gateway与MCP OAuth2的集成,提供API网关和身份验证服务。

  • by eugenetan01
  • 本地部署
  • 更新于
在 GitHub 查看 eugenetan01/kong-mcp-oauth-demo

使用说明

使用MCP(模型上下文协议)设置Kong网关

本要点演示了如何使用Docker Compose和deck(Kong的声明性配置工具)启动带有MCP OAuth2集成的Kong Gateway。

架构概述

此设置包括:

  • 香港门户3.12:连接到Konnect(控制平面)
  • 钥匙锁:MCP的OAuth2/OIDC身份验证服务器
  • MCP代理服务:Weather API与OAuth2保护的集成
  • AI MCP插件:用于AI助手集成的OAuth2和MCP代理插件

先决条件

  1. Docker&Docker编写 安装
  2. 我联系帐户 已配置控制平面
  3. 甲板CLI 已安装(brew install deck 或从Kong下载)
  4. mkcert 对于HTTPS证书(brew install mkcert nss)
  5. 天气API关键 来自weatherapi.com(MCP天气服务)
  6. MCP检查员 (可选,用于测试MCP集成)

快速开始

  1. 启动MCP检查器

    cd /gh/inspector
    npm start
    
  2. 为可通过https访问的keycloak生成证书-这是启动keycloak所必需的:

    cd ./certs
    brew install mkcert nss
    mkcert -install
    mkcert localhost
    
  3. 更新Konnect配置

    • 编辑 docker-compose.yaml 并使用您的Konnect详细信息更新Kong环境变量:
    KONG_CLUSTER_CONTROL_PLANE: YOUR_CONTROL_PLANE_ENDPOINT
    KONG_CLUSTER_SERVER_NAME: YOUR_CONTROL_PLANE_SERVER_NAME
    KONG_CLUSTER_TELEMETRY_ENDPOINT: YOUR_TELEMETRY_ENDPOINT
    KONG_CLUSTER_TELEMETRY_SERVER_NAME: YOUR_TELEMETRY_SERVER_NAME
    KONG_CLUSTER_CERT: |
      -----BEGIN CERTIFICATE-----
      YOUR_CLUSTER_CERTIFICATE
      -----END CERTIFICATE-----
    KONG_CLUSTER_CERT_KEY: |
      -----BEGIN PRIVATE KEY-----
      YOUR_PRIVATE_KEY
      -----END PRIVATE KEY-----
    
  4. 编辑 docker-compose.yaml 并使用您的管理员详细信息更新keycloak环境变量,或者保持原样:

    environment:
      KEYCLOAK_ADMIN: changeme
      KEYCLOAK_ADMIN_PASSWORD: changeme
    
  5. 更新配置

    • 在中更新Keycloak客户端密码 deck/mcp_oauth.yaml 在mcp/demo.json的626行和633行匹配你的Keycloak领域,或者保持原样:
    # In the ai-mcp-oauth2 plugin config:
    client_id: changeme
    client_secret: changeme
    
  6. 注册天气api api密钥访问

    • 首选https://www.weatherapi.com/注册一个帐户并创建一个api密钥以用于此演示
  7. 在deck/deck.yaml文件中更新请求转换器高级插件中的天气api密钥

    • 更新中的天气api密钥 deck/deck.yaml 在步骤8中注册天气api网站后,匹配您的apikey
  8. 使用甲板应用Kong配置

    # Navigate to deck configuration directory
    cd deck
    
    # Change line 7 of deck/deck.yaml to point to your control plane
    
    # Apply configuration to Kong Konnect
    deck gateway sync deck.yaml --konnect-addr https://<changeme>.api.konghq.com --konnect-token $YOUR_KONNECT_TOKEN --konnect-control-plane-name $CP_NAME
    
    

测试设置

  1. 启动mcp检查器时,从终端获取代理令牌,如下所示:

    Starting MCP inspector...
    ⚙️ Proxy server listening on localhost:6277
    🔑 Session token: xxx
    Use this token to authenticate requests or set DANGEROUSLY_OMIT_AUTH=true to disable auth
    
    🚀 MCP Inspector is up and running at:
    http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=xxx
    
    
  2. 首选 localhost:6274 并选择:

    • 运输类型: Streamable HTTP
    • 网址: http://localhost:8000/weather
    • 连接类型: Via Proxy
  3. 将步骤1中的代理令牌粘贴到MCP检查器的GUI->配置->代理会话令牌中。或者,只需使用链接 MCP_PROXY_AUTH_TOKEN 提供直接在配置中加载令牌

  4. 首选 Open Auth Settings

  5. 跑吧 guided oauth flow 或 quick oauth flow 您应该看到从keycloak检索到一个成功令牌,这证明Oauth流正在工作

    • 如果系统提示登录,凭据已经通过mcp/demo.json配置加载到keycloak中:
      • 用户:john
      • 密码:doe
  6. 现在尝试单击左侧面板上的连接-看到它失败了,请检查开发工具以查看401错误,或查看kong日志。如果AI MCP Oauth插件配置正确,它将引导您登录Keycloak。

  7. 通过mcp/demo.json配置将这些凭据加载到演示域中登录:

    • 用户:john
    • 密码:doe
  8. 如果成功,你应该看到 Connected 并能够访问MCP服务器中的工具

配置文件

docker-compose.yaml

  • 定义Kong Gateway和Keycloak容器
  • Kong Gateway已连接到Konnect控制平面(需要更新凭据)
  • 带有SSL证书和演示域导入的Keycloak
  • 最少的设置-不需要额外的依赖关系

deck/mcp_oauth.yaml

  • MCP的Kong声明性配置
  • 具有OAuth2保护的Weather API服务
  • AI MCP OAuth2和代理插件
  • MCP检查器的CORS配置
  • 基于标签的部署(mcpdemo)

mcp/demo.json

  • Keycloak领域配置
  • OAuth客户端和用户定义
  • 身份验证流程和安全设置