mcpField
G
Grafana-Loki MCP Server

Grafana-Loki MCP Server

ローカル
github.com/tumf開発ツール2942 週間前に更新

Grafana-Loki MCP Server について

Grafana-Loki MCP Server は、FastMCP で構築された MCP サーバーで、Grafana API 経由で Loki のログを照会します。MCP クライアントからログを検索・確認したい開発者や運用担当者を対象としています。

主な機能

  1. 01Grafana API 経由で Loki ログを照会
  2. 02Loki のラベルとラベル値の取得
  3. 03text、JSON、markdown 形式での結果出力
  4. 04stdio と SSE のトランスポートプロトコル対応

活用シーン

  1. 01MCP クライアントからアプリケーションログを検索
  2. 02トラブルシューティング時にラベル別のログ値を確認
  3. 03ログ照会結果を読みやすい形式に整形

MCP 対応

本プロジェクトは MCP サーバーであり、query_loki、get_loki_labels、get_loki_label_values、format_loki_results のツールを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Grafana-Loki MCP サーバー

Test PyPI version codecov License: MIT

Grafana から Loki のログをクエリできる FastMCP サーバーです。

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 キー

機能

  • Grafana API を通じた Loki ログのクエリ
  • Loki のラベルとラベル値の取得
  • クエリ結果をさまざまな形式(テキスト、JSON、Markdown)で整形
  • stdio と SSE の両方のトランスポートプロトコルに対応

要件

  • Python 3.10+
  • FastMCP
  • Requests

インストール

pip を使用する場合
pip install grafana-loki-mcp
開発環境のセットアップ
  1. このリポジトリをクローンします
  2. uv を使用して依存関係をインストールします:
# Install uv
pip install uv

# Create and activate virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -e ".[dev]"

使用方法

環境変数

以下の環境変数を設定します:

  • GRAFANA_URL:Grafana インスタンスの URL
  • GRAFANA_API_KEY:適切な権限を持つ Grafana API キー
コマンドライン引数

これらの値はコマンドライン引数として指定することもできます:

grafana-loki-mcp -u https://your-grafana-instance.com -k your-api-key

追加オプション:

  • --transport:使用するトランスポートプロトコル(stdio または sse、デフォルト:stdio)
サーバーの実行
# Using environment variables
export GRAFANA_URL=https://your-grafana-instance.com
export GRAFANA_API_KEY=your-api-key
grafana-loki-mcp

# Using command line arguments
grafana-loki-mcp -u https://your-grafana-instance.com -k your-api-key

# Using SSE transport
grafana-loki-mcp --transport sse

開発

テスト

テストスイートを実行します:

pytest

カバレッジ付きで実行します:

pytest --cov=. --cov-report=term
リントとフォーマット
# Run ruff linter
ruff check .

# Run black formatter
black .

# Run type checking
mypy .

利用可能なツール

query_loki

Grafana を通じて Loki のログをクエリします。

パラメーター:

  • query:Loki のクエリ文字列
  • start:開始時刻(ISO 形式、Unix タイムスタンプ、または「now-1h」のような Grafana 形式の相対時刻。デフォルト:1 時間前)
  • end:終了時刻(ISO 形式、Unix タイムスタンプ、または「now」のような Grafana 形式の相対時刻。デフォルト:現在)
  • limit:返すログ行の最大数(デフォルト:100)
  • direction:クエリの方向(「forward」または「backward」、デフォルト:「backward」)
  • max_per_line:ログ行ごとの最大文字数(0 は無制限、デフォルト:100)
get_loki_labels

Loki からすべてのラベル名を取得します。

get_loki_label_values

Loki から特定のラベルの値を取得します。

パラメーター:

  • label:ラベル名
format_loki_results

Loki のクエリ結果を読みやすい形式に整形します。

パラメーター:

  • results:query_loki の Loki クエリ結果
  • format_type:出力形式(「text」、「json」、または「markdown」、デフォルト:「text」)
  • max_per_line:ログ行ごとの最大文字数(0 は無制限、デフォルト:0)

使用例

# Example client code
from mcp.client import Client

async with Client() as client:
    # Query Loki logs with max_per_line limit
    results = await client.call_tool(
        "query_loki",
        {
            "query": '{app="my-app"} |= "error"',
            "limit": 50,
            "max_per_line": 100,  # Limit log lines to 100 characters
            "start": "now-6h",    # Grafana-style relative time: 6 hours ago
            "end": "now"          # Current time
        }
    )

    # Format the results
    formatted = await client.call_tool(
        "format_loki_results",
        {
            "results": results,
            "format_type": "markdown",
            "max_per_line": 100  # Can also limit at formatting time
        }
    )

    print(formatted)

ライセンス

このプロジェクトは MIT ライセンスのもとで公開されています。詳細は LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。