因果分析引擎

causality-mcp 是一个Rust工作区,提供本地MCP服务器和因果分析引擎,用于无仪器诊断,通过分析现有日志(本地文件或Docker容器)来识别根本原因和因果关系。

  • by j4flmao
  • Rust
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 j4flmao/causality-mcp

使用说明

因果关系mcp

causality-mcp 是一个Rust工作区,为Claude Desktop提供本地MCP服务器,以及其背后的摄入+因果分析引擎。

它是为“无检测”诊断而设计的:摄取您已经拥有的日志(本地文件或Docker容器),然后让Claude解释根本原因和因果关系。

存储库布局

  • crates/:Rust工作区板条箱(可重用库+MCP服务器二进制文件)
  • docs/:面向用户的指南和复制/粘贴提示包
  • docker/test-server/:Docker夹具和远程日志镜像容器配方
  • .github/:CI/CD发布工作流和GitHub模板
  • causality.toml:MCP服务器使用的默认配置

需求

  • Rust 1.94(固定通孔 rust-toolchain.toml)
  • Docker桌面(可选,但建议用于容器日志工作流)

添加到克劳德桌面(2种方式)

您可以通过从crates.io安装(推荐给最终用户)或运行本地构建的 .exe.

选项1:从crates.io安装

安装二进制文件:

cargo install causality-mcp-server

然后配置Claude Desktop以运行已安装的可执行文件:

{
  "mcpServers": {
    "causality-mcp": {
      "command": "causality-mcp",
      "args": [
        "--config",
        "D:\\\\path\\\\to\\\\causality.toml",
        "--log-level",
        "info"
      ],
      "env": {
        "LOG_CAUSALITY_DOCKER_CMD": "C:\\\\Program Files\\\\Docker\\\\Docker\\\\resources\\\\bin\\\\docker.exe"
      }
    }
  }
}

选项2:构建并运行 .exe

从源代码构建:

cargo build --release -p causality-mcp-server

Windows输出:

  • target/release/causality-mcp.exe

Claude桌面配置:

{
  "mcpServers": {
    "causality-mcp": {
      "command": "D:\\\\path\\\\to\\\\target\\\\release\\\\causality-mcp.exe",
      "args": [
        "--config",
        "D:\\\\path\\\\to\\\\causality.toml",
        "--log-level",
        "info"
      ],
      "env": {
        "LOG_CAUSALITY_DOCKER_CMD": "C:\\\\Program Files\\\\Docker\\\\Docker\\\\resources\\\\bin\\\\docker.exe"
      }
    }
  }
}

编辑后重新启动Claude Desktop claude_desktop_config.json.

MCP工具(当前)

MCP服务器目前记录了Docker优先工作流(计划/即将推出直接SSH摄入提示)。

工具:

  • discover_docker_logs
  • ingest_logs
    • 当地: source 通配符
    • Docker: docker_container + docker_path
  • find_root_cause
  • trace_request
  • correlate_services
  • export_timeline (markdown, csv, html)

例子

在容器中发现可能的日志文件:

{
  "name": "discover_docker_logs",
  "arguments": {
    "docker_container": "my-container",
    "roots": ["/var/log", "/app/logs", "/logs"],
    "limit": 200
  }
}

摄入集装箱日志:

{
  "name": "ingest_logs",
  "arguments": {
    "docker_container": "my-container",
    "docker_path": "/var/log/app/*.log",
    "format": "auto"
  }
}

摄取本地文件日志:

{
  "name": "ingest_logs",
  "arguments": {
    "source": "D:/logs/myapp/**/*.log",
    "format": "auto"
  }
}

查找根本原因:

{
  "name": "find_root_cause",
  "arguments": {
    "error_pattern": "error|exception|panic|failed|timeout|5\\\\d\\\\d",
    "window_secs": 300,
    "max_candidates": 10
  }
}

导出HTML时间线:

{
  "name": "export_timeline",
  "arguments": {
    "trace_id": "t2",
    "format": "html"
  }
}

远程服务器日志(Docker镜像)

如果你想分析远程服务器上的日志,而不想在该服务器上运行MCP服务器,请使用Docker“镜像”容器:

它连接到您的服务器并将所选日志文件镜像到 /var/log/remote 在容器内。然后你摄入 /var/log/remote/*.log 使用Docker工具。

这里没有记录直接SSH摄入工具(计划/即将推出)。

文档