WildFly 的一个 MCP 服务器,用于与您的AI聊天机器人集成,以便通过自然语言与 WildFly 服务器进行交互。
此 MCP 服务器是一个 Java Quarkus 脂肪 JAR 应用程序,您可以在聊天机器人的 MCP 配置中对其进行配置。
此 MCP 服务器(在 AI 终端中的工具)帮助您使用自然语言对正在运行的 WildFly 服务器进行故障排除。 您可以提出如下问题:
你好,能否连接到 WildFly 服务器并获取日志文件的内容,分析它并检查错误?
jbang 是使用 WildFly 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"]
}
}
}
~/.config/Claude/claude_desktop_config.json 中。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 自动安装 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_NAME 和 WILDFLY_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 角色的用户)访问服务器时不会被暴露。如果没有提供主机,则使用 localhost。如果没有提供端口,则使用 9990。
您可以使用系统属性 -Dorg.wildfly.host.name=<主机名> 和 -Dorg.wildfly.port=<端口> 来配置默认主机和端口。
对 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 协议规范 后发生变化。
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 |
获取指定主机和端口参数上运行的 WildFly 服务器的状态。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。获取 JVM(Java 虚拟机)信息(版本、输入参数、启动时间、运行时间、消耗内存、消耗 CPU)作为 JSON 格式。Java 虚拟机是用于执行指定主机和端口参数上运行的 WildFly 服务器的虚拟机。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。获取指定主机和端口参数上运行的 WildFly 服务器的日志文件内容。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。numberOfLines:可选的日志文件行数。默认情况下,获取最后 200 行。使用 -1 获取所有行。启用指定主机和端口参数上运行的 WildFly 服务器的日志类别。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。loggingCategory:日志类别。可以是高级别类别(如 security、web、http)或特定日志器(如 io.undertow)。禁用指定主机和端口参数上运行的 WildFly 服务器的日志类别。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。loggingCategory:日志类别。可以是高级别类别(如 security、web、http)或特定日志器(如 io.undertow)。获取指定主机和端口参数上运行的 WildFly 服务器的指标(以 Prometheus 格式)。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。在指定主机和端口参数上运行的 WildFly 服务器上调用单个 WildFly CLI 操作。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。获取指定主机和端口参数上运行的 WildFly 服务器的服务器配置(以 JSON 格式)。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。获取部署在指定主机和端口参数上运行的 WildFly 服务器中的所有文件路径。返回值为 JSON 格式。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。name:可选的部署名称。默认为 ROOT.war。获取部署在指定主机和端口参数上运行的 WildFly 服务器中的文件内容。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。name:可选的部署名称。默认为 ROOT.war。path:必需的部署内容路径。将应用程序部署到指定主机和端口参数上运行的 WildFly 服务器。如果存在同名的应用程序,则会被替换。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。deploymentPath:WAR 文件或展开的应用程序目录的绝对路径。必需。name:部署名称。可选,默认为 deploymentPath 的最后一部分。runtime-name:部署的运行名称。可选,默认为 deploymentPath 的最后一部分。从指定主机和端口参数上运行的 WildFly 服务器中取消部署应用程序。如果应用程序不存在,则返回错误。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。name:要取消部署的部署名称。关闭正在运行的服务器。
输入:
host:WildFly 服务器运行的主机名。可选,默认为 localhost。port:WildFly 服务器监听的端口。可选,默认为 9990。timeout:优雅超时。可选。通过检查部署内容来配置 WildFly 服务器或 WildFly Bootable JAR。然后将部署部署到服务器,准备运行。
输入:
deploymentPath:现有部署的绝对路径。targetDirectory:非现有目录的绝对路径。请注意,父目录必须存在。addOns:要启用的 Glow AddOns 列表(WildFly CLI、openAPI、web 控制台等)。可选。serverVersion:WildFly 服务器版本。可选,默认为最新版本。spaces:启用的 Glow 空间,用于发现孵化功能。可选。bootableJAR:生成 WildFly Bootable JAR。可选。列出可以添加到为提供的部署配置 WildFly 服务器的 WildFly 插件(额外的服务器功能,如 add-user.sh、jboss-cli.sh 命令行、openAPI 等)。
输入:
deploymentPath:现有部署的绝对路径。获取 WildFly 文档 URL
提示是预构建的复杂问题,可以从您的聊天机器人调用。
根据 WildFly Prometheus 指标构建表格和图表。
WildFly,安全审计。分析服务器日志文件以查找潜在攻击。
WildFly 和 JVM 资源消耗状态。分析消耗的资源。
WildFly 部署的应用程序,识别潜在错误。
WildFly 服务器,运行状态。
确保先启动您的 WildFly 服务器。
确保使用 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。