使用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代理插件
先决条件
- Docker&Docker编写 安装
- 我联系帐户 已配置控制平面
- 甲板CLI 已安装(
brew install deck或从Kong下载) - mkcert 对于HTTPS证书(
brew install mkcert nss) - 天气API关键 来自weatherapi.com(MCP天气服务)
- MCP检查员 (可选,用于测试MCP集成)
快速开始
- 启动MCP检查器
cd /gh/inspector
npm start- 为可通过https访问的keycloak生成证书-这是启动keycloak所必需的:
cd ./certs
brew install mkcert nss
mkcert -install
mkcert localhost- 更新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------ 编辑
docker-compose.yaml并使用您的管理员详细信息更新keycloak环境变量,或者保持原样:
environment:
KEYCLOAK_ADMIN: changeme
KEYCLOAK_ADMIN_PASSWORD: changeme- 更新配置
- 在中更新Keycloak客户端密码 deck/mcp_oauth.yaml 在mcp/demo.json的626行和633行匹配你的Keycloak领域,或者保持原样:
# In the ai-mcp-oauth2 plugin config:
client_id: changeme
client_secret: changeme- 注册天气api api密钥访问
- 首选https://www.weatherapi.com/注册一个帐户并创建一个api密钥以用于此演示
- 在deck/deck.yaml文件中更新请求转换器高级插件中的天气api密钥
- 更新中的天气api密钥 deck/deck.yaml 在步骤8中注册天气api网站后,匹配您的apikey
- 使用甲板应用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://.api.konghq.com --konnect-token $YOUR_KONNECT_TOKEN --konnect-control-plane-name $CP_NAME
测试设置
- 启动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
- 首选
localhost:6274并选择:
- 运输类型: Streamable HTTP - 网址: http://localhost:8000/weather - 连接类型: Via Proxy
- 将步骤1中的代理令牌粘贴到MCP检查器的GUI->配置->代理会话令牌中。或者,只需使用链接
MCP_PROXY_AUTH_TOKEN提供直接在配置中加载令牌
- 首选
Open Auth Settings
- 跑吧
guided oauth flow或quick oauth flow您应该看到从keycloak检索到一个成功令牌,这证明Oauth流正在工作
- 如果系统提示登录,凭据已经通过mcp/demo.json配置加载到keycloak中: - 用户:john - 密码:doe
- 现在尝试单击左侧面板上的连接-看到它失败了,请检查开发工具以查看401错误,或查看kong日志。如果AI MCP Oauth插件配置正确,它将引导您登录Keycloak。
- 通过mcp/demo.json配置将这些凭据加载到演示域中登录:
- 用户:john - 密码:doe
- 如果成功,你应该看到
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客户端和用户定义
- 身份验证流程和安全设置
