使用说明
使用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 - 在中更新Keycloak客户端密码
-
注册天气api api密钥访问
- 首选https://www.weatherapi.com/注册一个帐户并创建一个api密钥以用于此演示
-
在deck/deck.yaml文件中更新请求转换器高级插件中的天气api密钥
- 更新中的天气api密钥
deck/deck.yaml在步骤8中注册天气api网站后,匹配您的apikey
- 更新中的天气api密钥
-
使用甲板应用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
测试设置
-
启动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
- 如果系统提示登录,凭据已经通过mcp/demo.json配置加载到keycloak中:
-
现在尝试单击左侧面板上的连接-看到它失败了,请检查开发工具以查看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客户端和用户定义
- 身份验证流程和安全设置