OCI日志查询工具

一个用于查询Oracle Cloud Infrastructure (OCI)日志的FastMCP服务器,提供流量分析、传感器列表、基于国家的日志搜索、IP过滤和原始查询执行等功能,可直接从任何MCP兼容客户端(如Claude Desktop)使用。

  • by mamorett
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mamorett/sybilla-mcp

使用说明

西比拉mcp

用于查询Oracle云基础架构(OCI)日志的FastMCP服务器。提供用于流量分析、传感器列表、基于国家的日志搜索、基于IP的过滤和原始查询执行的工具——可以直接从任何兼容MCP的客户端(如Claude Desktop)使用。

安装

直接与 uvx (推荐)

不需要克隆。 uvx 一步安装并运行服务器:

uvx --from git+https://github.com/mamorett/sybilla-mcp sybilla-mcp

作为持久工具安装

uv tool install git+https://github.com/mamorett/sybilla-mcp
sybilla-mcp

从本地克隆运行

git clone https://github.com/mamorett/sybilla-mcp
cd sybilla-mcp
uv run sybilla_mcp.py

先决条件

OCI身份验证——以下之一:

  • 用户主体(默认): OCI配置文件位于 ~/.oci/config 持有有效证件。
  • 实例负责人: 计算实例/容器必须属于具有IAM策略的动态组,该IAM策略授予对目标日志资源的访问权限。不需要配置文件。

配置

必须在MCP客户端配置中设置以下环境变量(例如。 claude_desktop_config.json). 请勿使用 .env 文件。

变量 必填 描述
OCI_LOG_ID ✅ 要查询的特定OCI日志的OCID
OCI_LOG_GROUP_ID ✅ OCI日志组的OCID
OCI_COMPARTMENT_ID ✅ 隔间的OCID
OCI_AUTH_TYPE — user_principal (默认)或 instance_principal
OCI_CONFIG_FILE -- OCI配置的路径(默认: ~/.oci/config). 仅限用户主体。
OCI_CONFIG_PROFILE -- OCI配置文件名称(默认值: DEFAULT). 仅限用户主体。
OCI_REGION -- 覆盖OCI配置中的区域

与Claude Desktop集成

将以下块之一添加到您的 claude_desktop_config.json.

用户主体(默认--使用 ~/.oci/config)

{
  "mcpServers": {
    "sybilla-mcp": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/mamorett/sybilla-mcp",
        "sybilla-mcp"
      ],
      "env": {
        "OCI_LOG_ID": "ocid1.log.oc1...",
        "OCI_LOG_GROUP_ID": "ocid1.loggroup.oc1...",
        "OCI_COMPARTMENT_ID": "ocid1.compartment.oc1..."
      }
    }
  }
}

实例主体(OCI计算/OKE/云外壳)

{
  "mcpServers": {
    "sybilla-mcp": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/mamorett/sybilla-mcp",
        "sybilla-mcp"
      ],
      "env": {
        "OCI_AUTH_TYPE": "instance_principal",
        "OCI_LOG_ID": "ocid1.log.oc1...",
        "OCI_LOG_GROUP_ID": "ocid1.loggroup.oc1...",
        "OCI_COMPARTMENT_ID": "ocid1.compartment.oc1..."
      }
    }
  }
}

注: 实例必须属于 动态组 政策如下:

Allow dynamic-group <group-name> to read log-content in compartment <compartment-name>

外露工具

resolve_ocid

将计算实例或负载平衡器OCID解析为其人类可读的名称和关键属性。从OCID前缀中自动检测资源类型。

  • ocid --要解决的完整OCID(例如。 ocid1.instance.oc1... 或 ocid1.loadbalancer.oc1...).

退货 display_name, lifecycle_state,以及特定于资源的字段(形状、可用域、IP地址等)。

resolve_fqdn

将完全限定域名(FQDN)解析为其IP地址。

  • fqdn --要解析的FQDN,例如。 'google.com'.

退货 fqdn 和 ip_address.

get_traffic_analytics

从OCI日志返回聚合流量分析。

  • time_range (默认值: "24h") --回头看多远,例如。 '1h', '7d', '2w'.
  • group_by (默认值: "country") --尺寸: 'country', 'ip', 'status_code',或 'path'.
  • limit (默认值: 1000) --要考虑的最大原始日志条目数(硬上限:1000)。

search_logs_by_country

按单个国家筛选日志。

  • country --名称或两个字母的ISO代码,例如。 'US', 'Germany'.
  • time_range (默认值: "24h")
  • limit (默认值: 100)

search_logs_by_countries

一次过滤多个国家的日志。

  • countries --名称或ISO代码列表,例如。 ['US', 'DE', 'FR'].
  • time_range (默认值: "24h")
  • limit (默认值: 100)

search_logs_by_ip

按确切的IP地址或CIDR范围筛选日志。

  • ip_address (可选) --精确IP,例如。 '1.2.3.4'.
  • ip_range (可选) --CIDR范围,例如。 '10.0.0.0/8' (基于前缀的匹配)。
  • time_range (默认值: "24h")
  • limit (默认值: 100)

search_logs_raw

运行自由形式的OCI日志查询(类似SQL的语法)。

  • query_filter --查询片段,例如。 "| where data.status = '500' | sort by datetime desc".
  • time_range (默认值: "24h")
  • limit (默认值: 100)

list_sensors

返回在时间窗口内日志中找到的所有唯一传感器名称。

  • time_range (默认值: "24h") --回头看有多远。
  • limit (默认值: 1000) --要考虑的最大原始日志条目数(硬上限:1000)。

返回以下列表 {name, count} 按计数降序排列的对象,以及 total_sensors 和 total_entries.

search_logs_by_sensor

按特定传感器名称筛选日志(例如。 'ssh_22', 'cowrie').

  • sensor --要筛选的传感器名称。
  • time_range (默认值: "24h")
  • limit (默认值: 100)

许可证

麻省理工学院——见 许可证.