Quarkus MCP 服务器:首个支持可流式 HTTP 的 Java 服务器 SDK!
模型上下文协议(MCP)正在席卷开发者世界,随着其最新规范的更新:Streamable HTTP 支持现已到来!
我们很高兴地宣布,Quarkus MCP Server 是首个拥抱这一创新的 Java 版 MCP 服务器 SDK,让您可以比以往更轻松地构建、试验和部署 MCP 驱动的解决方案——无论您需要它们在哪里。
Quarkus MCP Server 1.2 现在支持 Streamable HTTP 以及 stdio
和 SSE
传输。这为将您的 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
工具。就是这么简单——也是开始尝试的好方法!