Quarkus MCP 服务器:首个支持可流式 HTTP 的 Java 服务器 SDK!

模型上下文协议(MCP)正在席卷开发者世界,随着其最新规范的更新:Streamable HTTP 支持现已到来!

我们很高兴地宣布,Quarkus MCP Server 是首个拥抱这一创新的 Java 版 MCP 服务器 SDK,让您可以比以往更轻松地构建、试验和部署 MCP 驱动的解决方案——无论您需要它们在哪里。

Quarkus MCP Server 1.2 现在支持 Streamable HTTP 以及 stdioSSE 传输。这为将您的 MCP 服务器连接到移动应用和云服务带来了新的可能性。尽管实现功能齐全,但像 Resumability and Redelivery 这样的高级功能计划在未来的版本中推出。

为什么 Streamable HTTP 很重要

Streamable HTTP 是 MCP 规范在客户端和服务器之间实现实时、高效和可扩展通信所采用的方法。它为新的集成和用户体验打开了大门,尤其适用于 SSE 或 stdio 等传统传输不理想的平台和设备。

现在,借助 Quarkus MCP Server,Java 开发者正处于这一演进的最前沿。无论您是构建 AI 助手、开发者工具还是下一代聊天机器人,Streamable HTTP 都为您提供了更广泛、更快速地触达用户的灵活性。

轻松升级

准备好尝试了吗?只需将您的 Maven 依赖项更新到最新的 Quarkus MCP Server SSE 传输

<dependency>
    <groupId>io.quarkiverse.mcp</groupId>
    <artifactId>quarkus-mcp-server-sse</artifactId>
    <version>1.2.0</version>
</dependency>

就是这样!您现在已经具备了从 Java MCP 服务器提供 Streamable HTTP 的能力。

想了解如何编写自己的 MCP 服务器吗?请查看我们之前的文章:《Introducing MCP Servers》。

Quarkus MCP Server:强大且简洁

Quarkus MCP Servers 项目》提供了一套现成的 MCP 服务器,均基于 Quarkus 构建。通过 1.0.0.CR4 版本,Streamable HTTP 支持已内置,无需额外配置。我们只需更新依赖项,即可准备就绪!

要启用 Streamable HTTP,只需使用 --sse 标志启动 Quarkus MCP Servers 中的任何服务器。

jbang jvminsight@mcp-java --sse

连接客户端

Streamable HTTP 的默认 URL 为

http://<your-ip>:8080/mcp/

(对于 SSE,请像以前一样使用 http://<your-ip>:8080/mcp/sse)。

虽然 Streamable HTTP 仍然是新的,但一些先驱客户端已经支持它。值得注意的是,开源 iOS 应用 ChatMCP(可在 TestFlight 上找到)以及 iOS App Store 上的非开源版本都可与 MCP 无缝协作,并支持甚至要求 Streamable HTTP。

这里是 ChatMCP 与 jvminsight 服务器协同工作的快速演示。

Kotlin:轻量且有趣

Quarkus 支持 Java 和 Kotlin,为您构建 MCP 服务器的方式提供了灵活性。想尝试一下吗?这是一个有趣的 Kotlin MCP 服务器示例,您可以使用 JBang 立即运行它。它从 https://picsum.photos/ 获取一张随机图片,并将其作为 base64 编码的图片返回,正如 MCP 规范所要求的那样。

///usr/bin/env jbang "$0" "$@" ; exit $?

//KOTLIN
//DEPS io.quarkus:quarkus-bom:${quarkus.version:3.20.0}@pom
//DEPS io.quarkiverse.mcp.servers:mcp-server-shared:1.0.0.CR4

import io.quarkiverse.mcp.server.*
import java.net.URL
import java.util.Base64.getEncoder
import kotlin.io.readBytes

class demo {

   @Tool(description = "Get a random picture")
   fun randomimage(@ToolArg(description = "seed for randomness") seed: String,
                   @ToolArg(description = "width", defaultValue = "300") width: Int,
                   @ToolArg(description = "height", defaultValue = "300") height : Int): ImageContent {

      val image = URL("https://picsum.photos/seed/$seed/$width/$height").readBytes()

      return ImageContent(
         getEncoder().encodeToString(image),
         "image/jpeg"
      )
   }
}

将此保存为 demo.kt 并使用以下命令运行:

jbang demo.kt --sse

您现在可以在 ChatMCP 或任何其他支持 Streamable HTTP 的 MCP 客户端中使用 randomimage 工具。就是这么简单——也是开始尝试的好方法!

结论

Streamable HTTP 是 MCP 生态系统的重要一步,Quarkus MCP Server 将 Java 开发者置于主导地位。无论您是构建工具、机器人还是全新的体验,现在都是深入探索和创造的绝佳时机。

我们迫不及待地想看到您的创作。尝试一下,分享您的反馈,并帮助塑造由 Quarkus 驱动的 MCP 的未来!

玩得开心!