SRE Portal MCP Server
使用说明
- 项目简介
- 该仓库实现了一个基于 MCP(Model Context Protocol)的后端服务,作为 LLM 客户端的上下文服务端,提供对 DNS、 portals、Alerts 等资源的托管与访问,并注册可被 LLM 调用的工具,以及针对 MCP 的流式 HTTP 与 STDIO 传输等多种通信方式。
- 主要功能点
- MCP 服务端核心能力:
- 资源托管与访问:暴露 DNS、Portal、Alerts 等资源以及相应的元数据与状态。
- 工具注册与执行:注册诸如 search_fqdns、list_portals、get_fqdn_details 等工具,LLM 客户端可通过 MCP 调用执行。
- MCP 传输与渲染:支持 Streamable HTTP 与 STDIO 两种传输,方便不同场景的集成和部署。
- 与 Kubernetes 的集成:
- 通过 Operator 监听与管理 CRD(Portal、DNS、DNSRecord、Alertmanager 等),并在本地/远端 Portal 场景中对数据进行聚合与暴露。
- 提供对远程 Portal 的健康检查与数据同步能力。
- 架构与部署:
- 将 MCP 服务挂载在 /mcp、/mcp/dns、/mcp/alerts 等路由供 MCP 客户端访问;在 Web 端可通过嵌入式或静态资源提供 UI。
- MCP 服务端核心能力:
- 安装步骤
- 构建与打包:在本地或 CI 环境中编译 Go 服务、打包为可执行二进制镜像。
- 部署方式:
- 将 MCP 服务以容器形式部署在 Kubernetes 集群中(与 Operator 一起部署的情形下,MCP 服务器作为后端服务暴露)。
- 如需本地调试,可使用提供的 main 程序开启 MCP 相关服务器(如 DNS/MCP 端口)。
- 服务器配置
- MCP 客户端需要的配置信息(JSON 格式描述,供参考理解,不作为代码块): { "server_name": "sreportal-dns-mcp", "command": ["/path/to/your/binary"], "args": ["--enable-mcp", "--mcp-transport", "streamable-http", "--web-bind-address", ":8090"] } 说明
- server_name: MCP 服务在客户端的标识名,用于区分不同 MCP 服务实例。
- command: 启动 MCP 服务的可执行二进制路径。
- args: 启动参数,包含传输类型、端口、以及是否启用 MCP 等选项。具体参数以仓库实现为准,示例中的选项应与实际部署保持一致。
- 注意:MCP 客户端(LLM/代理)本身不需要修改服务器端逻辑,客户端只需要通过上述配置知道如何连接并发起请求。
- 基本使用方法
- 客户端连接:通过 MCP 传输通道连接到 /mcp、/mcp/dns、/mcp/alerts 等端点,发送 JSON-RPC 请求,接收资源列表、端点信息、警报等数据。
- 功能使用:LLM 客户端可调用注册的工具(如 search_fqdns、get_fqdn_details、list_portals、list_alerts),获取结构化数据或文本形式的结果,用于上下文管理与决策支持。
- 运行与扩展:将 MCP 服务器与 Kubernetes Operator 的控制循环整合,支持多传输协议和并发请求,便于在复杂的云原生环境中扩展上下文能力。