西比拉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 to read log-content in compartment ``外露工具
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)*
许可证
麻省理工学院——见 许可证.
