WildFly服务器管理工具

WildFly MCP服务器是一个Java Quarkus应用,允许通过自然语言与AI聊天机器人交互来管理和监控WildFly服务器。

  • by wildfly-extras
  • Java
  • 混合部署
  • 8 星标
  • 更新于
在 GitHub 查看 wildfly-extras/wildfly-mcp

使用说明

WildFly MCP服务器

一只野苍蝇 MCP服务器 与您的AI聊天机器人集成,以便使用自然语言与WildFly服务器进行交互。 这个MCP服务器是一个Java夸克脂肪罐应用程序,您可以在聊天机器人MCP配置中配置它。

此MCP服务器(AI术语中的工具)可帮助您使用自然语言对运行中的WildFly服务器进行故障排除。 您可以提出以下问题:

Hi, could you connect to the WildFly server and get the content of the log file, analyze it and check for errors?

使用jbang

jbang的,是使用WildFly MCP服务器的最简单方法。

  1. 安装 jbang的.

  2. 将WildFly MCP服务器配置添加到您的MCP客户端配置中,例如:

{
  "mcpServers": {
    "wildfly": {
            "command": "jbang",
            "args": ["-Dorg.wildfly.user.name=chatbot-user",
                     "-Dorg.wildfly.user.password=chatbot-user",
                     "org.wildfly.mcp:wildfly-mcp-server-stdio:1.0.0.Alpha3:runner"]
    }
  }
}
  • 对于 克劳德·艾,在Fedora上,将其添加到文件中 ~/.config/Claude/claude_desktop_config.json.

  • 对于 MCP主机,添加到名为的文件 mcp.json 并致电: ./mcphost_Linux_x86_64/mcphost --config [path to the file]/mcp.json --model ollama:llama3.1:8b

注意:请确保已添加一个用户,该用户将由MCP服务器用于对WildFly服务器进行身份验证。例如: $JBOSS_HOME/bin/add-user.sh -u chatbot-user -p chatbot-user

通过Smithery安装

通过以下方式自动安装克劳德桌面版WildFly MCP服务器 史密瑟里:

npx -y @smithery/cli install @wildfly-extras/wildfly-mcp-server --client claude

管理员用户凭据

您可以使用系统属性在tool shell命令中设置用于保护WildFly服务器的用户名和密码 -Dorg.wildfly.user.name=<user name> 和 -Dorg.wildfly.user.password=<user password>

注意:使用容器图像时, WILDFLY_MCP_SERVER_USER_NAME 和 WILDFLY_MCP_SERVER_USER_PASSWORD 可以使用env变量。

{
  "mcpServers": {
    "wildfly": {
            "command": "java",
            "args": ["-Dorg.wildfly.user.name=chatbot-user",
                     "-Dorg.wildfly.user.password=chatbot-user",
                     "-jar",
                     "[path to the repository]/wildfly-mcp-server/stdio/target/wildfly-mcp-server-stdio-runner.jar"]
    }
  }
}

注意:对于SSE服务器,您可以在启动服务器时设置相同的系统属性。

关于安全的说明

不建议允许聊天机器人完全访问您的WildFly服务器。虽然您可以调用任何WildFly管理操作, 这必须小心。特别是当聊天机器人连接到公共LLM时,不应暴露任何有感知的信息。

当聊天机器人与本地管理的模型交互时(例如:本地管理 ollama 默认模型),这不是问题。

无论如何,我们建议您从 WildFly RBAC 配置并定义一个名为的用户 chatbot-user 与角色 Monitor.

确保首先通过调用添加用户: $JBOSS_HOME/bin/add-user.sh -p chatbot-user -u chatbot-user

要启用RBAC,您可以使用WildFly CLI命令行并调用以下命令:

/core-service=management/access=authorization:write-attribute(name=provider,value=rbac)
reload
/core-service=management/access=authorization/role-mapping=Monitor:add
/core-service=management/access=authorization/role-mapping=Monitor/include=chatbot-user:add(name=chatbot-user,type=USER)

当用户使用 Monitor 如果使用角色,以下工具将失败:

  • enableWildFlyLoggingCategory 工具。

  • disableWildFlyLoggingCategory 工具。

此外,调用时不允许进行写操作 invokeWildFlyCLIOperation 工具。

关于敏感信息的说明

  • 当以下情况发生时,服务器配置文件中的任何敏感信息都不会被暴露 使用访问服务器 chatbot-user (实际上,任何具有 Monitor 角色)。

  • WildFly服务器不记录敏感信息。确保在WildFly服务器中运行的部署没有记录可能暴露的敏感信息。

默认WildFly服务器主机和端口

如果没有提供主机, localhost 使用。如果没有提供端口, 9990 使用。 您可以使用系统属性配置默认主机和端口 -Dorg.wildfly.host.name=<host name> 和 -Dorg.wildfly.port=<port>

配置WildFly MCP SSE服务器

访问 WildFly MCP SSE服务器 使用OIDC(OAuth2“资源所有者密码凭据授予”)进行保护。

在以下配置中(来自 WildFly聊天机器人),一个名为 wildfly-mcp-server 其中包含一个名为的客户端 token-service 用于对用户进行身份验证。 WildFly聊天机器人将提示您输入用户名和密码,然后用于从允许访问的密钥斗篷服务器检索令牌 发送到SSE MCP服务器。

{
  "mcpSSEServers": {
    "wildfly": {
            "url": "http://localhost:8081/mcp/sse"
            "providerUrl": "http://localhost:8180/realms/wildfly-mcp-server",
            "clientId": "token-service"
    }
  }
}

警告:一旦 授权规范草案 集成在 MCP协议规范.

SSE安全令牌配置

Keycloak服务器URL、客户端和可选密钥可以使用以下系统属性进行配置:

系统属性 描述
quarkus.oidc.auth-server-url 密钥斗篷服务器域的url,默认为 http://localhost:8180/realms/wildfly-mcp-server
quarkus.oidc.client-id 客户端id,默认为 token-service
quarkus.oidc.credentials.secret 客户端机密,可选,默认为 secret

可用工具

getWildFly 状态

获取在提供的主机和端口参数上运行的WildFly服务器的状态。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。

获取JVMInfo

获取JVM(Java VM)信息(版本、输入参数、启动时间、正常运行时间、消耗的内存、消耗的cpu) JSON格式。Java VM是用于执行在提供的主机和端口参数上运行的WildFly服务器的VM。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。

getWildFlyLogFile内容

获取在提供的主机和端口参数上运行的WildFly服务器的日志文件内容。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • numberOfLines:要检索的日志文件行数(可选)。默认情况下,将检索最后200行。使用 -1 获取所有线路。

enableWildFlyLogging类别

为在提供的主机和端口参数上运行的WildFly服务器启用日志记录类别。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • loggingCategory:日志记录类别。可以是高级类别(例如 security, web, http)或特定的记录器(io.undertow).

disableWildFlyLogging类别

禁用在提供的主机和端口参数上运行的WildFly服务器的日志记录类别。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • loggingCategory:日志记录类别。可以是高级类别(例如 security, web, http)或特定的记录器(io.undertow).

getWildFlyPrometheusMetrics

获取在提供的主机和端口参数上运行的WildFly服务器的指标(采用prometheus格式)。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。

调用WildFlyCLIOperation

在提供的主机和端口参数上运行的WildFly服务器上调用单个WildFly CLI操作。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。

getWildFlyServer配置

获取在提供的主机和端口参数上运行的WildFly服务器的JSON格式的服务器配置。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。

browser部署

获取在提供的主机和端口参数上运行的WildFly服务器中部署的部署中包含的所有文件路径。返回值为JSON格式。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • name:可选部署名称。默认情况下,使用ROOT.war。

getDeployment文件内容

获取位于部署在WildFly服务器中的部署内的文件内容,该服务器在提供的主机和端口参数上运行。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • name:可选部署名称。默认情况下,使用ROOT.war。
  • path:部署内容的必需路径。

部署WildFlyApplication

将应用程序部署到在提供的主机和端口参数上运行的WildFly服务器。如果同名应用程序已存在,它将被替换。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • deploymentPath:WAR文件或分解应用程序目录的绝对路径。必修的。
  • name:部署名称。可选,默认为部署路径的最后一部分。
  • runtime-name:部署的运行时名称。可选,默认为部署路径的最后一部分。

取消部署WildFly应用程序

从在提供的主机和端口参数上运行的WildFly服务器上取消部署应用程序。如果应用程序不存在,则返回错误。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • name:要取消部署的部署的名称。

关闭服务器

关闭正在运行的服务器。

输入:

  • host:运行WildFly服务器的主机名。可选, localhost 默认情况下使用。
  • port:WildFly服务器正在侦听的端口。可选, 9990 默认情况下使用。
  • timeout:优雅的暂停。可选。

配置WildFlyServer用于部署

通过检查部署的内容来配置WildFly服务器或WildFly可引导JAR。然后将部署部署到准备运行的服务器上。

输入:

  • deploymentPath:指向现有部署的绝对路径。
  • targetDirectory:指向不存在目录的绝对路径。请注意,父目录必须存在。
  • addOns:要启用的Glow插件列表(WildFly CLI、openAPI、web控制台等)。可选。
  • serverVersion:WildFly服务器版本。可选,默认情况下使用最新版本。
  • spaces:启用的Glow空间用于发现孵化特征。可选。
  • bootableJAR:生成WildFly可引导JAR。可选。

getWildFlyProvisioning插件

列出为提供的部署配置WildFly服务器时可以添加的WildFly附加组件(额外的服务器功能,如add-user.sh、jboss-cli.sh命令行、openAPI等)。 输入:

  • deploymentPath:指向现有部署的绝对路径。

getWildFlyDocumentationURL

获取WildFly文档URL

可用提示

提示是预先构建的复杂问题,您可以从聊天机器人中调用。

wildFly普罗米修斯指标图

根据WildFly prometheus指标构建表格和图表。

安全审计

WildFly,安全审计。分析服务器日志文件中的潜在攻击。

野生蝇资源消耗

WildFly和JVM资源消耗状态。分析消耗的资源。

wildFly部署错误

WildFly部署的应用程序,识别潜在的错误。

wildfly服务器状态

WildFly服务器,运行状态。

向WildFly服务器提问的示例

请确保首先启动WildFly服务器。

健康和资源消耗

  • 你好,你能连接到WildFly服务器并获取服务器的状态吗?
  • 嗨,WildFly服务器活动正常吗?
  • 你好,你能再次连接到WildFly服务器并告诉我状态吗?
  • 你好,你能连接到运行在本地主机和端口7777上的WildFly服务器并获取服务器的状态吗?

日志记录

  • 你好,你能连接到在主机localhost和端口9990上运行的WildFly服务器,然后启用安全日志记录吗?
  • 嗨,你能连接到WildFly服务器并获取日志文件的内容,分析并检查错误吗?
  • 嗨,你能禁用安全日志吗?

指标

  • 你能检索WildFly服务器的指标吗?
  • 嗨,你能连接到WildFly服务器并检查可用内存和cpu使用情况吗?
  • 嗨,你能连接到WildFly服务器并检查它是否有足够的可用内存来运行吗?
  • 你好,你能连接到WildFly服务器并检查cpu使用率是否不太高吗?

构建WildFly MCP夸克超级罐

确保使用JDK21+。

mvn clean install

基于STDIO的mcp服务器jar是 stdio/target/wildfly-mcp-server-stdio-runner.jar. 基于SSE的mcp服务器jar是 sse/target/wildfly-mcp-server-sse-runner.jar.