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 设置后端端点、认证信息、超时等参数

服务器信息