返回 MCP 目录
public公开dns本地运行

grafana-loki-mcp

一个基于FastMCP的服务器,支持通过Grafana API查询Loki日志系统,提供标签查询和结果格式化功能。

article

README

🚀 Grafana-Loki MCP 服务器

Grafana-Loki MCP 服务器是一个基于 FastMCP 的服务器,它允许用户通过 Grafana 对 Loki 日志进行查询操作,为日志管理和分析提供了便利。

🚀 快速开始

在使用 Grafana-Loki MCP 服务器之前,需要进行相应的配置。以下是 MCP 服务器的配置示例:

{
  "mcpServers": {
    "loki": {
      "command": "uvx",
      "args": [
        "grafana-loki-mcp",
        "-u",
        "GRAFANA_URL",
        "-k",
        "GRAFANA_API_KEY"
      ]
    }
  }
}
  • GRAFANA_URL:您的 Grafana 实例 URL。
  • GRAFANA_API_KEY:具备相应权限的 Grafana API 密钥。

✨ 主要特性

  • 日志查询:支持对 Loki 日志进行查询操作。
  • 标签与值获取:可以获取日志中的标签和对应的值。
  • 结果格式化:支持将查询结果格式化为文本、JSON 和 Markdown 三种形式。
  • 双协议支持:支持 stdioSSE 两种传输协议。

📦 安装指南

使用 pip 安装

pip install grafana-loki-mcp

开发环境安装

  1. 克隆仓库:
git clone https://github.com/tumf/grafana-loki-mcp.git
cd grafana-loki-mcp
  1. 安装依赖项:
pip install -r requirements.txt
  1. 运行测试:
python -m pytest tests/

💻 使用示例

基础用法

环境变量设置

export GRAFANA_URL="http://localhost:3000"
export GRAFANA_API_KEY="your_api_key_here"

命令行启动服务器

grafana-loki-mcp --config config.yaml

示例配置文件 config.yaml

mcpServers:
  loki:
    command: uvx
    args:
      - grafana-loki-mcp
      - -u
      - http://localhost:3000
      - -k
      - your_api_key_here

高级用法

示例代码

import asyncio
from pygql import client

async def main():
    # 初始化客户端
    cli = await client("http://localhost:8090")
    
    # 查询日志
    results = await cli.call(
        "query_loki",
        {
            "query": '{app="my-app"} |= "error"',
            "limit": 50,
            "max_per_line": 100,
            "start": "now-6h",
            "end": "now"
        }
    )
    
    # 格式化结果
    formatted = await cli.call(
        "format_loki_results",
        {
            "results": results,
            "format_type": "markdown",
            "max_per_line": 100
        }
    )
    
    print(formatted)

asyncio.run(main())

📚 详细文档

可用工具

查询日志 (query_loki)

{
    "query": "{app=\"my-app\"} |= \"error\"",
    "limit": 50,
    "max_per_line": 100,
    "start": "now-6h",
    "end": "now"
}

获取标签 (get_loki_labels)

{
    "query": "{__name__}"
}

格式化结果 (format_loki_results)

{
    "results": "...",
    "format_type": "markdown",
    "max_per_line": 100
}

开发相关

测试

运行测试套件:

pytest tests/ -v

代码规范

使用以下工具确保代码规范:

文档查看

查看 官方文档 了解详细信息。

📄 许可证

本项目遵循 MIT 许可证,具体内容请参见 LICENSE 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端