Loki MCP Server如何自然语言查询Claude Desktop日志?
摘要:MCP定位,技术栈,架构,项目结构,基础框架搭建,开发部署及常见问题 # Loki MCP Server - CLAUDE.md > Go 实现的 MCP Server,集成 Grafana Loki 日志查询。支持
MCP定位,技术栈,架构,项目结构,基础框架搭建,开发部署及常见问题
# Loki MCP Server - CLAUDE.md
> Go 实现的 MCP Server,集成 Grafana Loki 日志查询。支持 Claude Desktop / Claude Code / Cursor 等客户端通过自然语言查询日志。
---
## 一、项目概述
### 定位
将 Grafana Loki 的日志查询能力通过 MCP (Model Context Protocol) 暴露给 AI 助手,运维人员可以用自然语言代替 LogQL 查询日志。
### 技术栈
| 层 | 技术 | 版本 |
|---|------|------|
| 语言 | Go | 1.24+ |
| MCP SDK | github.com/mark3labs/mcp-go | v0.32.0 |
| 日志存储 | Grafana Loki | 2.9.0 |
| 日志采集 | Promtail | 2.9.0 |
| 可视化 | Grafana | latest |
| 容器化 | Docker + Compose | - |
### 核心能力(3 个 MCP Tool)
| Tool | 用途 | Loki API |
|------|------|----------|
| `loki_query` | 执行 LogQL 查询 | `/loki/api/v1/query_range` |
| `loki_label_names` | 获取所有标签名 | `/loki/api/v1/labels` |
| `loki_label_values` | 获取标签值列表 | `/loki/api/v1/label/{name}/values` |
---
## 二、架构设计
### 整体架构
```
┌─────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ AI Client │ │ Loki MCP Server │ │ Grafana │
│ (Claude Code/ │─────→│ :8080 │─────→│ Loki │
│ Desktop/ │ MCP │ │ HTTP │ :3100 │
│ Cursor) │ │ 3 种传输协议: │ │ │
└─────────────────┘ │ - stdio │ └──────────────┘
│ - SSE (/sse) │
│ - HTTP (/stream)│
│ │
│ /healthz (K8s) │
└──────────────────┘
```
### 三种传输协议(同端口共存)
| 协议 | 端点 | 场景 |
|------|------|------|
| stdio | 标准输入输出 | 本地 binary / Docker 集成,Claude Desktop 直接启动进程 |
| SSE | `/sse` + `/mcp` | Server-Sent Events,远程连接(旧协议) |
| Streamable HTTP | `/stream` | 新一代 MCP 远程协议(推荐) |
**设计要点**:通过 `http.ServeMux` 将 SSE 和 Streamable HTTP 注册到同一端口,stdio 作为后台 goroutine 并行运行。
