Back to MCP directory
publicPublicdnsLocal runtime

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client