mcpField
L
Log Detective MCP

Log Detective MCP

ローカル
github.com/fedora-copr開発ツール11 週間前に更新

Log Detective MCP について

大きなログから抜粋やPythonトレースバックを抽出するエージェント向けのMCPサーバーです。Drain3で類似メッセージをクラスタリングし、ログ文字列、サーバー上のファイルパス、HTTP(S) URLを入力として扱います。

主な機能

  1. 01Drain3による類似ログメッセージの分類
  2. 02代表的なログ抜粋の抽出
  3. 03連鎖したPythonトレースバックの抽出
  4. 04正規表現による一致項目の除外
  5. 05前後の行をコンテキストとして追加
  6. 06圧縮ログと単一ファイルアーカイブの読み込み

活用シーン

  1. 01大きなログから代表的なメッセージを抽出
  2. 02デバッグ用にPython例外を取り出す
  3. 03分析前に定型的なログパターンを除外

MCP 対応

MCPクライアントに、ログ抜粋とPythonトレースバックの抽出ツールを提供します。`logdetective-mcp`または`python -m logdetective_mcp.main`で起動し、MCPクライアントに設定できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"fedora-copr-logdetective": {
"command": "uvx",
"args": [
"logdetective-mcp"
]
}
}
}
起動コマンドuvx logdetective-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypilogdetective-mcp0.6.1

ツール

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

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

詳細

Log Detective MCP

他のエージェントが Log Detective の中核的なログ分析ツールを利用できるようにする MCP サーバーです。

このサーバーは Drain3 アルゴリズムを使用してログメッセージをテンプレートにクラスタリングし、代表的なスニペットを抽出します。これにより、大きなログを後続の分析で扱いやすいサイズに縮小できます。

インストール

Python 3.11 以降が必要です。

pip install .

または、uv を使用します。

uv pip install .

使用方法

サーバーの起動
logdetective-mcp

または、直接実行します。

python -m logdetective_mcp.main
MCP クライアントの設定
Claude Code
claude mcp add logdetective -- logdetective-mcp
Claude Desktop

Claude Desktop の設定ファイルに追加します。

{
  "mcpServers": {
    "logdetective": {
      "command": "logdetective-mcp"
    }
  }
}

ツール

extract_log_snippets

Drain3 によるクラスタリングを使用して、代表的なログスニペットを抽出します。このツールはログを論理的なメッセージに分割し、類似するメッセージをクラスタリングして、各クラスタから代表的なスニペットを1つ返します。

ログの内容は、次の3つの方法で指定できます(いずれか1つを必ず使用してください)。

パラメーター型説明
log_textstr直接渡す生のログテキストです。
log_pathstrサーバーのファイルシステム上にあるログファイルのパスです。
log_urlstrログの内容を取得する HTTP(S) URL です。

オプションのパラメーター:

パラメーター型デフォルト説明
max_clustersint8抽出するスニペットの最大数です。
max_snippet_lenint2000スニペットごとの最大文字数です。
skip_patternslist[str]null正規表現パターンのリストです。いずれかのパターンに一致するチャンクは、クラスタリングの前に除外されます。
contextint0各スニペットの前後に含める行数です(0~50)。

それぞれ line_number(元のログ内の位置)と text(抽出したスニペットの内容)を持つ Snippet オブジェクトのリストを返します。

extract_python_tracebacks

連鎖した例外を含め、ログから Python のトレースバックを抽出します。

パラメーター型デフォルト説明
max_traceback_lenint2000抽出するトレースバックごとの最大文字数です。
skip_patternslist[str]null正規表現パターンのリストです。いずれかのパターンに一致するトレースバックは除外されます。
contextint0各トレースバックの前後に含める行数です(0~50)。

両方の抽出ツールで、context は grep の -C と同じ動作をします。指定した前後のログ行数が、取得可能な場合はそれぞれ含まれます。長さの上限は、抽出したスニペットまたはトレースバックに適用されます。コンテキスト行は追加されるため、返される text は上限を超える場合があります。コンテキストが有効な場合、line_number は返された最初の行を指します。0~50 の範囲外の値は拒否されます。

トレースバックが切り詰められる場合、max_traceback_len に余裕があれば、抽出ツールは先頭と末尾を残し、その間にマーカーを付けます。上限がそれより小さい場合は、先頭部分だけを残します。後続のコンテキストは元のトレースバックの後から始まり、省略された中間部分は復元されません。 ログ行が max_snippet_len によってチャンクに分割された場合、コンテキストを追加するときも、選択された各チャンクのテキストはそのまま保持されます。隣接する行が、分割前の長い行全体に置き換わることはありません。コンテキストの境界は、描画されるチャンクから省略された空行も含め、元のソース行に従います。

サイズ制限

ダウンロードしたすべての入力(log_url 経由)は、形式にかかわらず 100 MB に制限されます。ダウンロードはチャンク単位でストリーミングされ、制限を超えるとすぐに中止されます。

log_path 経由で読み込むアーカイブも、展開中に 100 MB の制限が適用されます。

圧縮ファイルのサポート

どちらのツールも、アーカイブされたログファイルを自動的に展開します。対応形式は次のとおりです。

  • 単一ファイルの圧縮形式: .gz、.bz2、.xz、.lzma
  • アーカイブ: .zip、.tar、.tar.gz、.tar.bz2、.tar.xz

形式はファイル拡張子(または URL のパス)から判定されます。アーカイブに含められるファイルは 1 つだけです。

Zip 爆弾対策として、次の制限を設けています。

  • 展開後のサイズは最大 100 MB
  • 圧縮率は最大 100:1
  • zip/tar ヘッダーに記載されたサイズを事前に確認
  • 再帰的な展開は行いません(入れ子のアーカイブは展開されません)

貢献

このリポジトリへのすべての変更は、pre-commit チェックとテストに合格する必要があります。

uv run pytest tests/

コメント

MCP は初めてですか?

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

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