mcpField
J
Jarroba Tools · Logs

Jarroba Tools · Logs

ローカル
github.com/Invarato開発ツール03 日前に更新

Jarroba Tools · Logs について

Jarroba Tools · Logs は、コンテキストに収まらないログを調査するAI向けのローカル MCP サーバーです。ファイルパスからログを読み、傾向やパターン、スタックトレース、短縮した抜粋などを返します。

主な機能

  1. 01ファイルパスからログを直接分析
  2. 02傾向、新しいパターン、消えたイベントを検出
  3. 03重複メッセージをまとめ、まれな項目を特定
  4. 04スタックエラーを根本原因まで追跡
  5. 05文字数の上限に合わせてログを縮約
  6. 06ログ品質の確認と形式変換

活用シーン

  1. 01大規模なCI失敗ログの調査
  2. 02エラーパターンの発生や停止時期の特定
  3. 03例外をアプリケーションコードまで追跡
  4. 04AI向けに簡潔なログ抜粋を作成

MCP 対応

ローカルstdio経由で、読み取り専用のログツール12種類をMCPクライアントに提供します。サーバーはホストプロセスがアクセスできるファイルを読み、ログを貼り付けずに選別した結果を返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"invarato-jarroba-tools-logs": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp-logs"
],
"env": {
"JARROBA_MCP_DOMAINS": "<JARROBA_MCP_DOMAINS>"
}
}
}
}
起動コマンドnpx -y @jarroba/mcp-logs
設定が必要な環境変数
JARROBA_MCP_DOMAINSWhich tool domains to publish, comma-separated. Defaults to what this package is for. Valid: core, calc, diagram, kg, db, ai, logs, queue, project, tests, api, chip, chem, access, archsim, security, experiments, payroll. Fewer domains means less of your context window spent on tool definitions.

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

パッケージ
npm@jarroba/mcp-logs0.3.0

ツール

11

掲載時のツール一覧 · 3 日前に更新

パラメーター型必須説明
fromenumいいえファイルが 32 MB を超える場合に読み取る側start | end
pathstringいいえログファイルのパス。大きなログは 1 回のツール呼び出しに収まらないため、このパラメーターを使用してください。
textstringいいえログテキスト。`path` の代わりに指定できます。
formatenumいいえ自動検出せず、指定した形式を強制しますjson | logfmt | syslog5424 | syslog3164 | clf | combined | plain

詳細

@jarroba/mcp-logs

AI がコンテキストに収めきれないログを読み取れるようにする MCP サーバーです。

claude mcp add jarroba-logs -- npx -y @jarroba/mcp-logs
// Claude Desktop, Cursor, Cline, VS Code…
{ "mcpServers": { "jarroba-logs": { "command": "npx", "args": ["-y", "@jarroba/mcp-logs"] } } }

12 個のツール · コンテキスト使用量は 約 5.5k トークン · stdio で動作し、お使いのマシン上で実行 · アップロードは一切ありません。

これが必要な理由

AI 向けのログツールはどれも、貼り付けたテキストを受け取ります。本番環境や CI のログは数十 MB、場合によっては数百 MB にもなるため、貼り付けることはできません。しかも、知りたい箇所はたいてい、貼り付けようとしていた部分とは違います。

これらのツールにはファイルパスを指定します。サーバーは Node 上で動作するため、自身でファイルを開き、収まる分だけを返します。CI の失敗をデバッグするエージェントは、ログを読めなくても、ログについて質問できます。

ツール

log_analyzeフォーマット、イベント数(40 行のスタックトレースも1 件として数えます)、レベル、時間範囲、根本原因を特定したエラー、最も頻度の高いパターンを返します。
log_trendsいつ始まったかを調べます。各パターンを総量ではなく、そのパターン自体と比較します。稼働中のサービスでは、午前 9 時にすべてが増加するため、それだけでは何も起きていないのと同じです。急増したもの、新たに現れたもの、そして現れなくなったものを返します。最後のものはどのカウンターにも現れず、悪い知らせであることがよくあります。
log_aroundある時点の前後に何が集中していたかを調べます。前に始まったものは原因の候補で、後に起きたものは通常、その結果です。相関関係は因果関係ではありません。両者を見分けるのは順序です。
log_distinguishイベント群とそれ以外を分ける特徴、つまり、その群で過剰に出現するフィールド=値の組み合わせを調べます。デフォルトではエラーを対象にします。300 件のエラーのうち 92% が version=2.4.1 で、残りでは 4% なら、問題を引き起こしたデプロイを、300 件のエラーを読むことなく特定できます。イベントごとに固有のフィールドは、識別には使えても区別には役立たないため、対象から除外されます。
log_patterns行をテンプレートにまとめます(Drain)。「connected to 10.0.0.1」と「connected to 10.0.0.7」は同じメッセージとして扱われます。通常、探していることが多い希少なパターンも返します。
log_reduce文字数の上限内に収まるようにログを絞り込み、エラーの完全なトレース、その前の時間枠、一度しか現れない項目を残します。繰り返しは [xN] にまとめられます。同じ行の繰り返しにコンテキストを費やさず、大きなログをモデルに渡すためのツールです。
log_stacktraceJava/JVM、Python、Node、Go、.NET、Rust、Ruby、PHP に対応しています。Caused by チェーン、根本原因、お使いのコードの最初のフレームを返します。指定がなければ、トレースから推測します。
log_lint何が起きたかではなく、ログが適切に書かれているかを確認します。出力されたシークレット、ファイルを埋め尽くす 1 行、タイムゾーンのないタイムスタンプ(2 台のマシン間の相関を取れなくなります)、逆行する時計、リクエスト ID の欠落を検出します。シークレットはマスクして返します。
log_convertJSON/logfmt/syslog 5424/CSV/OpenTelemetry/ECS 形式に変換します。変換によって失われる情報を事前に提示します。
log_rotationローテーション済みのログを時系列順に並べます。ローテーション番号は時間と逆順になり(app.log.3 は app.log.1 より古い)、アルファベット順では app.log.10 が app.log.9 より前になります。最初にこれを使わないと、ログを逆順に読むことになります。
log_profile_check
log_profile_suggest
チームのログ形式を記述する、再利用可能なプロファイルです。check は各エラーの正確なフィールドを返すため、モデルは 1 回の処理で自己修正できます。

エージェントに使わせる(Claude Code フック)

これらのツールを使えるエージェントでも、習慣で 300 MB のログを Read しようとします。hooks/big-log-read.mjs は、大きなログの Read を止める PreToolUse フックです(ファイル名:*.log、ローテーション済みの *.log.N[.gz]、*.jsonl、logs/ 以下のすべて。サイズ:2 MB。変更するには JT_BIG_LOG_BYTES を指定します)。代わりにパスを指定して log_analyze/log_reduce を呼び出すようエージェントに伝えます。それ以外の処理には影響しません。

{ "hooks": { "PreToolUse": [ { "matcher": "Read", "hooks": [
  { "type": "command", "command": "node /path/to/big-log-read.mjs" } ] } ] } }

実行しないこと

  • サーバーのタイムゾーンを推測することはありません。 ログには記録されておらず、推測すると、気づかないうちにタイムライン全体がずれてしまいます。log_profile_suggest はタイムゾーンを埋めず、そのことを伝えます。
  • ログにタイムスタンプがない場合、所要時間を伝えることはありません。 伝えられないと明示します。

プライバシーについて、そして率直な注意点

通信方式は stdio です。MCP ホストがこれをサブプロセスとして起動し、stdin/stdout を介して通信します。 エンドポイントもアカウントもテレメトリーもありません。初回は npx が npm からパッケージをお使いのマシンにダウンロードしますが、その後は外部に何も送信されません。

事前に知っておくべきことが 2 つあります。

  • これらのツールは、起動したプロセスが読み取れるものをすべて読み取ります。 それが目的です。200 MB のログから回答を得られるのはそのためであり、これらのツールは MCP ホストと同じ権限を持ちます。
  • ツールが返す内容は、モデルのコンテキストに含まれます。 悪意のあるテキストを含むログファイルは、Web ページと同様に間接的なプロンプトインジェクションの経路になります。このツールには、そのようなテキストを無害化する機能はありません。

すべてのツールは MCP の annotations を宣言しています。すべて readOnlyHint: true であり、回答は引数ではなくディスクから得られるため、すべて openWorldHint: true です。

詳細

Jarroba Tools の一部です。Web ツールと同じエンジンを使っているため、回答も同じです。すべての機能(90 個のツール、データベース、図表、テスト監査、SPARQL)をご希望の場合は、 @jarroba/mcp をご覧ください。

MIT ライセンスです。LICENSE をご覧ください。ソースコード:github.com/Invarato/jarroba-mcp。

コメント

MCP は初めてですか?

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

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