能用 Java8 开发 MCP(或 MCP Server),这才是 MCP 自由(Solon AI MCP)!

现在,用 Java 开发 MCP 的情况是:

框架JDK要求
mcp-sdk需要 jdk17+
spring-ai-mcp-server需要 jdk17 +
spring-ai-mcp-client需要 jdk17 +
langchain4j-mcp-client需要 jdk17+
solon-ai-mcp-serverjdk8 +
solon-ai-mcp-clientjdk8 +

之前在 mcp-sdk 仓库的 issue 与人交流时。曾有人说现在都 ia 时代了,怎么能还用 java8 呢?可是 MCP 是一个协议性的框架,应该更有普适性,应该照顾更广的市场需求。

市场的情况是,(尤其是我国)还有海量的 jdk8 服务器。所以,用 Java8 也能开发 MCP(或 MCP Server),这才是 MCP 自由!

Solon AI MCP(一个依赖包)

Java AI(智能体) 全场景应用开发框架(支持已知 AI 开发的各种能力。例如:LLM,Function Call,RAG,Embedding,Reranking,Flow,MCP Server,Mcp Client)。同时支持 java8,java11,java17,java21。

可与 Solon 集成使用,也可嵌入到 SpringBoot2、jFinal、Vert.x 等框架中使用。

Solon AI MCP Server 示例(支持多端点)

下面以一个查询天气的 Mcp 工具服务为例。

  • 组件方式构建(和 MVC 开发像)
@McpServerEndpoint(name="mcp-case1", sseEndpoint = "/case1/sse") 
public class McpServerTool {
    @ToolMapping(description = "查询天气预报")
    public String getWeather(@ToolParam(description = "城市位置") String location) {
        return "晴,14度";
    }
}
  • 原生 java 方式构建
McpServerEndpointProvider serverEndpoint = McpServerEndpointProvider.builder()
        .name("mcp-case2")
        .sseEndpoint("/case2/sse")
        .build();

serverEndpoint.addTool(new MethodToolProvider(new McpServerTool()));
serverEndpoint.postStart();

Solon AI MCP Client 示例

McpClientToolProvider clientToolProvider = McpClientToolProvider.builder()
                .apiUrl("http://localhost:8080/case1/sse")
                .build();

String rst = clientToolProvider.callToolAsText("getWeather", Map.of("location", "杭州"));
原创作者: noear 转载于: https://www.cnblogs.com/noear/p/18839265
### 使用 Java 开发 MCP Server 的相关信息 目前,MCP 协议主要支持多种编程语言的实现方式,其中包括 Node.js 和 Python 等主流技术栈。然而,在官方文档和社区资源中尚未发现针对 Java 实现的具体教程详细说明[^1]。尽管如此,基于 MCP 协议的核心理念和技术架构,仍然可以通过以下方法探索 Java 版本的 MCP Server 开发。 #### 1. **理解 MCP 协议基础** MCP(Model Context Protocol)是一种用于定义模型上下文交互的标准协议。无论使用哪种编程语言开发 MCP Server,都需要遵循其核心规范。具体来说,开发者需了解如何注册工具、处理请求以及返回响应等内容[^3]。 对于 Java 来说,虽然缺乏直接的支持库,但可以借鉴其他语言中的实现逻辑来完成类似的流程设计。例如,Python 中 `FastMCP` 类封装了大部分底层通信细节,使得创建服务变得简单快捷;而在 Java 中,则可能需要手动搭建这些功能模块。 #### 2. **选择合适的框架** 为了简化网络层操作并提高效率,建议选用成熟的 Web 框架作为支撑平台。Spring Boot 是一个非常流行的选择因为它不仅易于配置而且内置了大量的企业级特性比如RESTful API 支持等[^4]。 下面是一个简单的 Spring Boot 应用程序结构概览: ```java @SpringBootApplication public class McpServerApplication { public static void main(String[] args) { SpringApplication.run(McpServerApplication.class, args); } } ``` 接着可以在控制器类里定义具体的业务接口: ```java @RestController @RequestMapping("/tools") public class ToolController { @PostMapping("/calculate") public ResponseEntity<Double> calculate(@RequestBody String expression){ double result = new CalculatorService().evaluate(expression); return ResponseEntity.ok(result); } } ``` 这里假设存在名为 `CalculatorService` 的服务组件负责解析传入的数学表达式参数并执行相应的运算过程. #### 3. **实现自定义传输机制** 由于标准版规定采用 stdio 方式来进行消息传递,所以在实际部署过程中也许会遇到兼容性方面的问题。因此有必要考虑引入额外的消息队列者RPC调用来替代原有的方案从而满足更广泛的应用场景需求[^5]. 一种可行的办法就是利用 Apache Kafka 构建异步事件驱动型体系结构以便于更好地管理大规模并发连接情况下的数据流动状况。另外还可以尝试 gRPC 提供跨平台高性能远程过程呼叫的能力进一步增强系统的灵活性与扩展潜力。 --- ### 总结 综上所述,即便当前缺少专门面向 Java 用户群体推出的 ready-to-use 解决办法,但我们依然能够凭借现有资料加上一定的创新思维去克服难关达成目标。希望以上分享对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值