报告数据分析工具

MCP Uyuni Report Server 是一个用于查询和分析Uyuni报告数据库数据的工具,提供补丁管理和系统合规性洞察。

  • by jordimassaguerpla
  • PLpgSQL
  • 本地部署
  • 更新于
在 GitHub 查看 jordimassaguerpla/mcp-server-uyuni-report

使用说明

MCP Uyuni报表服务器

此MCP服务器提供查询和分析Uyuni报告数据库数据的工具,提供补丁管理和系统合规性的见解。

免责声明

这是一个“按原样”提供的开源项目,没有任何明示或暗示的保证。使用风险自负。有关完整详细信息,请参阅许可证部分。

可用工具

  • get_arrata_stats
  • get_filter_values
  • plot_errata_stats_时间序列

get_errata_stats

这是检索勘误表统计信息的主要工具。它可以提供单个汇总摘要或适合绘图的数据时间序列。

示例1:获取汇总摘要

“今年第一季度‘生产服务器’组织中所有‘关键’安全建议的勘误统计数据是什么?”

示例2:生成时间序列图

“向我展示从年初到现在我的‘sle’系统的安全勘误表的每周趋势。在图表上绘制平均补丁时间、补丁系统和创建的勘误表。”

筛选器示例

您可以使用各种过滤器来缩小查询范围。以下是每个过滤器的单独示例以及如何组合它们。

单个过滤器
  • 日期范围:
    • start_date:“2024年初以来发布的补丁的勘误统计数据是什么?”
    • end_date:“显示2023年7月1日之前发布的补丁的勘误表统计数据。”
  • 咨询性质:
    • advisory_type:“给我所有‘bugfix’公告的统计数据。”
    • advisory_name:“名称中带有‘kernel’的公告的统计数据是什么?”
    • cve:“查找与'CVE-2023-12345'相关的勘误表的统计信息。”
    • severity:“所有‘中等’严重程度勘误表的统计数据是什么?”
  • 系统属性:
    • hostname:“显示主机名中包含'db-server'的系统的勘误统计信息。”
    • os_family:“获取所有'rhel'系统的统计数据。”
    • organization“‘人力资源’组织的勘误统计数据是什么?”
    • system_group_name:“显示‘PCI合规性’系统组的统计数据。”
  • 输出格式:
    • granularity:“向我展示从年初到现在的所有勘误表的月度趋势。”
组合过滤器

可以组合过滤器来创建高度特定的查询。

  • 聚合示例:

    “与包含‘2024’的CVE相关的‘关键’安全补丁的汇总统计数据是什么,这些CVE会影响‘财务’组织中的‘sle’系统?”

  • 时间序列示例:

    “向我展示从年初到现在,‘Web服务器’组中系统的‘重要’安全勘误表的每周趋势。”

  • 复杂骨料示例:

    “对于过去6个月内发布的补丁,计算应用于‘工程’组织内‘文件服务器’组中的系统的以‘samba’命名的‘bugfix’公告的平均解决时间。”

get_filter_values

此辅助工具允许您发现中各种过滤器的可能值 get_errata_stats 工具。

示例1:发现可用组织

“我可以通过哪些组织进行筛选?”

示例2:搜索特定主机名

“显示包含“web服务器”的可用主机名。”

plot_errata_stats_timeseries

该工具直接生成时间序列数据的PNG图像,可以由有能力的客户端显示。

示例

“绘制一张'财务'组织去年所有安全勘误表的月度图表。”

使用MCP客户端运行

将此服务器与MCP客户端一起使用(例如 mcp-host, gemini-cli, openwebui等),您需要配置客户端以了解如何启动 mcp-server-uyuni-report 过程。这是通过创建一个 config.json 客户端配置目录中的文件。

此服务器需要自己的配置才能连接到数据库。这可以通过单独的配置文件(例如。, .env 或 config)包含环境变量。

配置

服务器是使用环境变量配置的。这些可以放置在文件中(例如。, config 或 .env)然后将其传递给 uv 或 docker 命令。

所需的环境变量

  • DB_USER:数据库连接的用户名。
  • DB_PASSWORD:数据库连接的密码。

可选环境变量

  • DB_HOSTNAME:数据库服务器主机名(默认值: localhost).
  • DB_PORT:数据库服务器端口(默认值: 5432).
  • DB_NAME:数据库名称(默认值: reportdb).
  • LOG_FILE:将写入日志的文件的路径(例如。, /var/log/mcp-uyuni-report.log).如果未设置,日志将写入标准错误。
  • LOG_LEVEL:应用程序的日志记录级别(例如。, DEBUG, INFO, WARNING).违约: INFO.

方法1:使用 uv (地方发展)

此方法使用以下命令直接在您的计算机上运行服务器 uv.

  1. 创建服务器配置文件 具有数据库连接所需的环境变量。例如,创建一个名为的文件 config 在项目根目录中:

    # File: /path/to/mcp-server-uyuni-report/config
    DB_USER="your_db_user"
    DB_PASSWORD="your_db_password"
    DB_HOSTNAME="localhost"
    DB_NAME="reportdb"
    LOG_LEVEL="DEBUG"
    
  2. 创建客户端 config.json 文件.此文件告诉MCP客户端如何使用 uv 以及在哪里可以找到服务器的配置文件。

    示例 config.json 为您的客户:

    {
      "mcpServers": {
        "mcp-server-uyuni-report": {
          "command": "uv",
          "args": [
            "run",
            "--env-file=/path/to/mcp-server-uyuni-report/config",
            "--directory",
            "/path/to/mcp-server-uyuni-report",
            "mcp-server-uyuni-report"
          ]
        }
      }
    }
    
    • 替换 /path/to/mcp-server-uyuni-report 带有此项目目录的绝对路径。

方法2:使用容器(Docker/Podman)

此方法在容器内运行服务器,这非常适合生产环境或隔离环境。设置类似,但客户端 config.json 将使用 docker 或 podman 运行服务器。

  1. 创建服务器配置文件 如所述 uv 上面的方法。

  2. 创建客户端 config.json 文件 它指示客户端启动一个容器。

    示例 config.json 为您的客户:

    {
      "mcpServers": {
        "mcp-server-uyuni-report": {
          "command": "docker",
          "args": [
            "run", "--rm", "-i",
            "--env-file", "/path/to/mcp-server-uyuni-report/config",
            "mcp-uyuni-report-server:latest"
          ]
        }
      }
    }
    
    • 这假设您已经构建了一个名为的Docker镜像 mcp-uyuni-report-server:latest.
    • 确保通往 --env-file 是正确的,并且可以从客户端运行的地方访问。

使用本地数据库

建议的工作流程是启动本地数据库并从reportdb转储导入数据。这样,MCP服务器就不需要直接访问reportdb数据库。

查看数据库

您可以启动postgresql服务器:

./start_uyuni_report_db.sh

导入数据

在您的uyuni服务器中运行:

podman exec -ti uyuni-server pg_dump --username USERNAME --dbname=reportdb --host=localhost --port=5432 | gzip > test_data.sql.gz

然后,将test_data.sql.gz复制到您的运行目录中

gunzip test_data.sql.gz

并加载数据

./insert_test_data.sh test_data.sql

反馈

我们很乐意收到您的来信!任何你想讨论或分享的想法,请在[https://github.com/uyuni-project/uyuni/discussions/10562](https://github.com/uyuni-project/uyuni/disc ussions/10562)

如果您遇到任何错误,请在以下网址打开新的错误报告[https://github.com/uyuni-project/mcp-server-uyuni/issues/new?type=bug](https://github.com/uyuni-project/mcp-server-uyuni/is 起诉/新?类型=错误)

提前感谢uyuni团队!

许可证

此项目根据Apache许可证2.0版获得许可。请参阅 许可证 文件以获取详细信息。