纯Java实现STDIO通信的MCP Server与客户端验证
在 MCP 协议中通过 STDIO(标准输入/输出)通信 是一种进程间通信(IPC)方式,服务器与客户端通过标准输入(stdin)和标准输出(stdout)交换数据。
关于STDIO 详细介绍以及如何基于Spring Boot项目实现 STDIO 的MCP服务器 以及如何调用和验证服务器可以参考:
基于Spring Boot实现STDIO通信的MCP Server与验证
Spring Boot 实现MCP Server相对来说更为简单,本篇介绍在不使用Spring Boot的状况下,如何实现实现 STDIO 的MCP服务器以及调用验证。
实例说明
本篇和Spring Boot篇类似,实现一个简单加法的 Tool。
简单起见,仅演示MCP的Tool的功能,为了更简单,该工具实现的功能只是一个简单的加法运算。
在实际的应用中,大模型已经具备了加法等功能,MCP的Tool的功能是为了补全不具备的功能,比如实时查询天气预报,获取内容数据等。
- 开发工具: VS Code
项目创建
创建一个mcp-pure-java 的项目目录,增加一个 pom.xml 文件,然后创建 src 及相关的子目录,创建完成的项目结构如下:
依赖导入
这里主要导入的是io.modelcontextprotocol.sdk.mcp
<dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp</artifactId></dependency>
目前的最新版本是0.9.0, 使用dependencyManagement进行管理。
<dependencyManagement><dependencies><dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp-bom</artifactId><version>0.9.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
创建服务器文件
这里添加一个Main 的类,该类有一个主入口main() 方法,简单起见,该演示所有的代码都放在主函数体中。
代码实现服务器的步骤主要有:
- 创建服务传输程序
- 创建一个工具
- 创建同步服务器
完整的代码如下所示:
/*** Description:* Author: XM* Date: 2025-05-03*/
package com.osxm.ai.mcp.purejava;import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol