返回市场
wildfly-mcp-服务器

wildfly-mcp-服务器

作者:wildfly-extras6 星标更新:2025-08-25

项目介绍

WildFly MCP 服务器

smithery 徽章 WildFly 的一个 MCP 服务器,用于与您的AI聊天机器人集成,以便通过自然语言与 WildFly 服务器进行交互。 此 MCP 服务器是一个 Java Quarkus 脂肪 JAR 应用程序,您可以在聊天机器人的 MCP 配置中对其进行配置。

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

你好,能否连接到 WildFly 服务器并获取日志文件的内容,分析它并检查错误?

使用 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"]
    }
  }
}
  • 对于 claude.ai,在 Fedora 中,将其添加到文件 ~/.config/Claude/claude_desktop_config.json 中。
  • 对于 MCPHost,添加到名为 mcp.json 的文件中,并调用:./mcphost_Linux_x86_64/mcphost --config [文件路径]/mcp.json --model ollama:llama3.1:8b

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

通过 Smithery 安装

要通过 Smithery 自动安装 WildFly MCP 服务器以供 Claude Desktop 使用:

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

管理员用户凭证

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

注意:当使用容器镜像时,可以使用环境变量 WILDFLY_MCP_SERVER_USER_NAMEWILDFLY_MCP_SERVER_USER_PASSWORD

{
  "mcpServers": {
    "wildfly": {
            "command": "java",
            "args": ["-Dorg.wildfly.user.name=chatbot-user",
                     "-Dorg.wildfly.user.password=chatbot-user",
                     "-jar",
                     "[仓库路径]/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=<主机名>-Dorg.wildfly.port=<端口> 来配置默认主机和端口。

配置 WildFly MCP SSE 服务器

WildFly MCP SSE 服务器 的访问通过 OIDC(OAuth2 '资源所有者密码凭据授予')进行保护。

在以下配置(来自 WildFly 聊天机器人),使用了一个名为 wildfly-mcp-server 的 keycloak 实例,其中包含一个名为 token-service 的客户端来验证用户。 WildFly 聊天机器人会提示您输入用户名和密码,然后使用这些信息从 keycloak 服务器检索令牌,从而允许访问 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到 keycloak 服务器实例的 URL,默认为 http://localhost:8180/realms/wildfly-mcp-server
quarkus.oidc.client-id客户端 ID,默认为 token-service
quarkus.oidc.credentials.secret客户端密钥,可选,默认为 secret

可用工具

getWildFlyStatus

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990

getJVMInfo

获取 JVM(Java 虚拟机)信息(版本、输入参数、启动时间、运行时间、消耗内存、消耗 CPU)作为 JSON 格式。Java 虚拟机是用于执行指定主机和端口参数上运行的 WildFly 服务器的虚拟机。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990

getWildFlyLogFileContent

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • numberOfLines:可选的日志文件行数。默认情况下,获取最后 200 行。使用 -1 获取所有行。

enableWildFlyLoggingCategory

启用指定主机和端口参数上运行的 WildFly 服务器的日志类别。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • loggingCategory:日志类别。可以是高级别类别(如 securitywebhttp)或特定日志器(如 io.undertow)。

disableWildFlyLoggingCategory

禁用指定主机和端口参数上运行的 WildFly 服务器的日志类别。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • loggingCategory:日志类别。可以是高级别类别(如 securitywebhttp)或特定日志器(如 io.undertow)。

getWildFlyPrometheusMetrics

获取指定主机和端口参数上运行的 WildFly 服务器的指标(以 Prometheus 格式)。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990

invokeWildFlyCLIOperation

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990

getWildFlyServerConfiguration

获取指定主机和端口参数上运行的 WildFly 服务器的服务器配置(以 JSON 格式)。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990

browseDeployment

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • name:可选的部署名称。默认为 ROOT.war。

getDeploymentFileContent

获取部署在指定主机和端口参数上运行的 WildFly 服务器中的文件内容。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • name:可选的部署名称。默认为 ROOT.war。
  • path:必需的部署内容路径。

deployWildFlyApplication

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • deploymentPath:WAR 文件或展开的应用程序目录的绝对路径。必需。
  • name:部署名称。可选,默认为 deploymentPath 的最后一部分。
  • runtime-name:部署的运行名称。可选,默认为 deploymentPath 的最后一部分。

undeployWildFlyApplication

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

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • name:要取消部署的部署名称。

shutdownServer

关闭正在运行的服务器。

输入

  • host:WildFly 服务器运行的主机名。可选,默认为 localhost
  • port:WildFly 服务器监听的端口。可选,默认为 9990
  • timeout:优雅超时。可选。

provisionWildFlyServerForDeployment

通过检查部署内容来配置 WildFly 服务器或 WildFly Bootable JAR。然后将部署部署到服务器,准备运行。

输入

  • deploymentPath:现有部署的绝对路径。
  • targetDirectory:非现有目录的绝对路径。请注意,父目录必须存在。
  • addOns:要启用的 Glow AddOns 列表(WildFly CLI、openAPI、web 控制台等)。可选。
  • serverVersion:WildFly 服务器版本。可选,默认为最新版本。
  • spaces:启用的 Glow 空间,用于发现孵化功能。可选。
  • bootableJAR:生成 WildFly Bootable JAR。可选。

getWildFlyProvisioningAddOns

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

输入

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

getWildFlyDocumentationURL

获取 WildFly 文档 URL

可用提示

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

wildFly-prometheus-metrics-chart

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

securityAudit

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

wildFly-resources-consumption

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

wildFly-deployment-errors

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

wildfly-server-status

WildFly 服务器,运行状态。

示例问题

确保先启动您的 WildFly 服务器。

健康和资源消耗

  • 你好,能否连接到 WildFly 服务器并获取服务器状态?
  • 你好,WildFly 服务器活动是否正常?
  • 你好,能否再次连接到 WildFly 服务器并给出状态?
  • 你好,能否连接到运行在 localhost 和端口 7777 上的 WildFly 服务器并获取服务器状态?

日志

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

指标

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

构建 WildFly MCP Quarkus 脂肪 JAR

确保使用 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