Ops MCP Server
使用说明(Markdown格式)
项目简介
Ops MCP Server 是一个基于 MCP 的后端服务,设计目标是以统一的 MCP 接口向大型语言模型客户端提供运营数据、操作工具和提示模板等上下文信息。它集成了 Kubernetes 事件、Prometheus 指标、Elasticsearch 日志、Jaeger 跟踪,以及 SOPS 标准化操作流程等模块,具备模块化开关、文档端点以及多协议传输能力。
主要功能点
- 模块化数据源与工具
- SOPS 模块:执行和列出标准运维流程,以及参数管理
- Events 模块:获取和列出 Kubernetes 事件
- Metrics 模块:列出和查询 Prometheus 指标(即时与区间查询)
- Logs 模块:在 Elasticsearch 中查询日志、列出索引、执行原生查询
- Traces 模块:从 Jaeger 获取服务、操作、跟踪等信息,并支持 OpenTelemetry 转换
- 多传输协议
- 标准输出模式(stdio)
- 服务器端事件推送模式(SSE)
- API 与文档
- /mcp:核心 MCP 服务入口
- /mcp/sse:SSE 会话入口
- /mcp/message:消息通道
- /mcp/healthz:健康检查
- /mcp/docs:工具/模块文档信息
- 安全与运维
- 可选的服务端令牌认证
- YAML/环境变量驱动的模块配置
- 运行时指标收集(Prometheus 指标暴露)与系统资源监控
安装步骤
- 直接从源码编译
- 安装 Go 语言环境(推荐1.20及以上版本)
- 执行 make build 进行构建
- 运行 ./bin/ops-mcp-server,按需要传入启动参数
- Docker 部署(示例)
- 拉取镜像 shaowenchen/ops-mcp-server:latest
- 以 SSE 模式启动并开启所需模块,例如 sops、events、metrics、logs、traces
- 对外暴露 80 端口,必要时改为生产环境端口
服务器配置
以下为 MCP 客户端可使用的示例配置(JSON 格式,描述服务器启动所需的命令与参数;客户端不需要此配置出现在其代码中,仅用于指导连接方式):
{ "server_name": "ops-mcp-server", "command": "./ops-mcp-server", "args": [ "--mode=sse", "--uri=/mcp", "--host=0.0.0.0", "--port=80", "--enable-sops", "--enable-events", "--enable-metrics", "--enable-logs", "--enable-traces" ], "notes": "在生产环境中应根据实际网络与安全策略调整主机、端口、令牌等参数。以上示例开启所有模块,使用 SSE 传输模式暴露 MCP 接口。" }
说明:
- server_name 为服务器实例的名称
- command 为服务器可执行文件路径
- args 为服务器启动的命令参数列表
- notes 提供额外的配置与安全注意事项
基本使用方法
- 启动后访问健康与文档
- 健康:GET http://<服务器地址>:<端口>/mcp/healthz
- 文档:GET http://<服务器地址>:<端口>/mcp/docs
- 使用 MCP 客户端与服务器对话
- 通过 SSE 或标准 JSON-RPC 接口获取资源、执行工具、渲染 Prompt 模板等上下文信息
- 参考服务端提供的工具列表与文档信息,了解可调用的 Tools 及其参数
- 安全性
- 如配置了服务器令牌,则需要在请求头中携带 Authorization: Bearer <token>
- 未配置服务器令牌时,行为为公开
- 模块开关和环境配置
- 通过配置文件或环境变量控制各模块开启与对后端服务的连接参数(SOPS、Events、Metrics、Logs、Traces)
- 服务器端可通过 YAML/ENV 设置后端端点、认证信息、超时等参数