想象一下:你的Java企业应用可以轻松被AI智能体调用,就像调用REST API一样简单。无需重写代码,无需学习复杂的AI框架。

现在可以了。Open Liberty 26.0.0.2-beta发布的MCP Server 1.0更新,让开发者用熟悉的@Tool注解就能将业务逻辑暴露给AI智能体。这可能是2026年Java企业开发最重要的新能力之一。

为什么MCP对你很重要

Model Context Protocol (MCP)是AI领域的”SQL”——一个开放标准,让AI应用能够访问外部数据源和工具。它由Anthropic推出,正在成为AI智能体的通用协议。

对技术决策者来说,这意味着:

  1. 降低AI集成成本:一套API对接多个AI平台,无需为每个平台单独开发
  2. 保护现有投资:现有Java应用无需重写,通过注解即可AI化
  3. 标准化架构:采用开放标准,避免厂商锁定

Open Liberty vs 官方SDK:复杂度对比

这是架构师最关心的:实现同样的MCP服务器,Open Liberty比官方Java SDK简单多少?

对比项官方MCP Java SDKOpen Liberty MCP Server
开发方式命令式编程声明式注解
代码量~200行/工具~5行/工具
学习曲线需要理解TransportProvider、CallToolResult等复杂概念JAX-RS开发者零学习成本
工具定义手动构建ToolSpecification对象@Tool注解自动生成
类型安全弱类型Map传递强类型Java方法签名
安全性需要手动实现@RolesAllowed等Jakarta Security注解直接支持
表1:实现复杂度对比

5行代码暴露AI工具

看看有多简单。这是一个完整的MCP工具:

@ApplicationScoped
public class WeatherTools {

    @Tool(name = "getWeather",
          title = "获取天气预报",
          description = "根据城市获取当前天气和未来预报")
    public String getForecast(
        @ToolArg(name = "city", description = "城市名称") String city,
        @ToolArg(name = "days", description = "预报天数") int days) {
        return weatherService.getForecast(city, days);
    }
}

就这样。AI智能体现在可以调用你的天气预报功能了。不需要编写MCP协议代码,不需要手动构建工具描述,注解自动完成一切

架构图:AI如何调用你的Java应用

以下架构展示了Open Liberty MCP Server如何让你的Java应用成为AI智能体的”手臂”:

sequenceDiagram
    participant User as 用户
    participant AI as AI智能体<br/>(Claude/ChatGPT)
    participant MCP as MCP Client
    participant Liberty as Open Liberty<br/>MCP Server
    participant Biz as 业务逻辑

    User->>AI: "帮我查询北京天气"
    AI->>MCP: discover tools
    MCP->>Liberty: GET /mcp
    Liberty-->>MCP: 返回工具列表<br/>(getWeather等)
    AI->>MCP: call tool: getForecast(city="北京", days=3)
    MCP->>Liberty: POST /mcp
    Liberty->>Biz: 调用业务逻辑
    Biz-->>Liberty: 返回结果
    Liberty-->>MCP: 返回天气数据
    MCP-->>AI: 解析结果
    AI-->>User: "北京未来3天天气..."

关键优势:你的业务逻辑完全不变,只是通过注解”暴露”了一个新的调用通道。

26.0.0.2-beta 三大更新

1. 基于角色的授权(RBAC)

企业级应用必须关注安全。Open Liberty MCP Server现在直接支持Jakarta Security注解

@ApplicationScoped
public class EnterpriseTools {

    // 只有Admin角色可以调用
    @RolesAllowed("Admin")
    @Tool(name = "deleteUser")
    public String deleteUser(@ToolArg(name = "userId") String id) {
        return userService.delete(id);
    }

    // Moderators和Admin都可以调用
    @RolesAllowed({"Moderator", "Admin"})
    @Tool(name = "moderateContent")
    public String moderateContent(@ToolArg(name = "contentId") String id) {
        return contentService.moderate(id);
    }

    // 所有人都可以调用(包括未认证用户)
    @PermitAll
    @Tool(name = "searchProducts")
    public String searchProducts(@ToolArg(name = "query") String query) {
        return productService.search(query);
    }
}

server.xml中配置用户和角色映射:

<featureManager>
    <feature>servlet-6.0</feature>
    <feature>cdi-4.0</feature>
    <feature>mcpServer-1.0</feature>
    <feature>appSecurity-5.0</feature>
    <feature>transportSecurity-1.0</feature>
</featureManager>

<basicRegistry id="basic" realm="BasicRealm">
    <user name="alice" password="{xor}KzosKy8="/>
    <user name="bob" password="{xor}KzosKy8="/>

    <group name="Admin">
        <member name="alice"/>
    </group>
    <group name="Moderator">
        <member name="bob"/>
    </group>
</basicRegistry>

2. _meta元数据字段

MCP协议保留_meta字段用于客户端和服务器交换元数据。这个功能开启了很多高级用例:

  • 成本追踪:在响应中返回API调用成本
  • 速率限制:告知客户端剩余配额
  • 缓存提示:优化客户端缓存策略
  • 审计日志:记录调用来源和上下文
@Tool(name = "expensiveOperation")
public ToolResponse expensiveOp(@ToolArg(name = "data") String data) {
    // 执行业务逻辑
    String result = doExpensiveWork(data);

    // 返回元数据
    Map<MetaKey, Object> _meta = new HashMap<>();
    _meta.put(MetaKey.from("com.example/cost"), 0.05);
    _meta.put(MetaKey.from("com.example/cacheable"), true);

    return new ToolResponse(false,
        List.of(new TextContent(result)),
        result,
        _meta);
}

3. UTF-8编码修复

之前的版本使用ISO-8859-1编码,无法正确处理中文等非拉丁字符。现在已修复为UTF-8,中文AI交互完全没问题。

快速开始(5分钟)

对于想快速验证的架构师,这是最小化配置:

Step 1: 配置pom.xml

<plugin>
    <groupId>io.openliberty.tools</groupId>
    <artifactId>liberty-maven-plugin</artifactId>
    <version>3.12.0</version>
    <configuration>
        <runtimeArtifact>
            <groupId>io.openliberty.beta</groupId>
            <artifactId>openliberty-runtime</artifactId>
            <version>26.0.0.2-beta</version>
            <type>zip</type>
        </runtimeArtifact>
    </configuration>
</plugin>

Step 2: 配置server.xml

<server>
    <featureManager>
        <feature>servlet-6.0</feature>
        <feature>cdi-4.0</feature>
        <feature>mcpServer-1.0</feature>
    </featureManager>

    <httpEndpoint id="defaultHttpEndpoint"
                  httpPort="9080"
                  httpsPort="9443"/>
</server>

Step 3: 创建工具类

@ApplicationScoped
public class MyTools {
    @Tool(name = "hello")
    public String hello(@ToolArg(name = "name") String name) {
        return "Hello, " + name + "!";
    }
}

启动服务器后,MCP端点就在http://localhost:9080/yourapp/mcp

为什么选择Open Liberty

对于技术决策者,Open Liberty MCP Server有独特优势:

考量因素Open Liberty其他方案
学习成本注解驱动,零学习曲线需要学习新框架/SDK
代码侵入性极低,只需添加注解高,需要重写或包装
企业级特性内置安全、监控、集群需要额外配置
标准化Jakarta EE标准,云原生可能存在厂商锁定
运维友好容器优化,MicroProfile支持依赖外部工具
Java版本Java 17+ (生产就绪)各不相同
表2:技术选型对比

常见问题

Q: 需要重写现有代码吗?

A: 不需要。只需在你的业务方法上添加@Tool注解即可。

Q: 支持哪些AI平台?

A: 任何支持MCP协议的AI客户端,包括Claude Desktop、各种AI Agent框架等。

Q: 生产环境可用吗?

A: 目前是Beta版本,建议先在测试环境验证。GA版本预计随Open Liberty 26.0.0.2发布。

Q: Java版本要求?

A: Java 17或更高版本。这是最低要求,推荐使用Java 21或Java 25以获得最佳性能。

下一步

对于想深入验证的团队:

  1. 下载Open Liberty 26.0.0.2 release
  2. 克隆示例项目
  3. 运行mvn liberty:dev启动服务器
  4. 使用AI客户端(如Claude Desktop)连接测试

对于决策者:这是一个验证MCP战略价值的低风险机会。零代码重写,只需添加注解,就能让你的企业应用接入AI智能体生态。

对于架构师:Open Liberty提供的是一条渐进式AI集成路径。从简单的工具暴露开始,逐步构建完整的AI能力层。


参考资源

有问题?在Open Liberty 邮件列表StackOverflow上提问。