简单Java MCP服务器
Java中的一个简单的模型上下文协议(MCP)服务器实现,它提供了计算两个数字的最大公除数(GCD)和最小公倍数(LCM)的数学工具。
特性
- GCD工具:使用欧几里德算法计算两个正整数的最大公除子
- LCM工具:使用公式LCM(a,b)=(a×b)/GCD(a,b)计算两个正整数的最小公倍数
- 错误处理:全面的输入验证和错误报告
- 日志记录:用于调试和监控的内置日志支持
先决条件
- Java 17或更高版本
- Maven 3.6或更高版本
项目结构
simple-java-mcp/
├── pom.xml # Maven configuration
├── README.md # This file
└── src/
└── main/
└── java/
└── com/
└── example/
└── mcp/
└── MathMcpServer.java # Main server implementation建设项目
- 克隆或导航到项目目录:
cd simple-java-mcp- 编译项目:
mvn clean compile- 打包应用程序:
mvn clean package这将在 target/ 目录: simple-java-mcp-1.0.0.jar
运行服务器
选项1:使用Maven
mvn exec:java -Dexec.mainClass="com.example.mcp.MathMcpServer"选项2:使用JAR文件
java -jar target/simple-java-mcp-1.0.0.jar服务器将通过STDIO(标准输入/输出)启动并监听MCP请求。
可用工具
1.GCD工具
- 名字:
gcd - 描述:计算两个正整数的最大公约数(GCD)
- 参数:
- a (integer):第一个正整数 - b (integer):第二个正整数
请求示例:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gcd",
"arguments": {
"a": 48,
"b": 18
}
}
}示例响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": {
"operation": "gcd",
"input_a": 48,
"input_b": 18,
"result": 6,
"explanation": "GCD of 48 and 18 is 6"
}
}
]
}
}2.LCM工具
- 名字:
lcm - 描述:计算两个正整数的最小公倍数(LCM)
- 参数:
- a (integer):第一个正整数 - b (integer):第二个正整数
请求示例:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "lcm",
"arguments": {
"a": 12,
"b": 8
}
}
}示例响应:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": {
"operation": "lcm",
"input_a": 12,
"input_b": 8,
"result": 24,
"explanation": "LCM of 12 and 8 is 24"
}
}
]
}
}测试服务器
您可以使用任何MCP客户端或通过STDIO直接发送JSON-RPC消息来测试服务器。
使用curl(用于测试目的):
# First, list available tools
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | java -jar target/simple-java-mcp-1.0.0.jar
# Test GCD calculation
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "gcd", "arguments": {"a": 48, "b": 18}}}' | java -jar target/simple-java-mcp-1.0.0.jar
# Test LCM calculation
echo '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "lcm", "arguments": {"a": 12, "b": 8}}}' | java -jar target/simple-java-mcp-1.0.0.jar错误处理
该服务器包括全面的错误处理功能,用于:
- 缺少参数
- 数字格式无效
- 非正整数
- 整数溢出(用于LCM计算)
错误响应示例:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": {
"error": "Both numbers must be positive integers"
}
}
],
"isError": true
}
}发展
添加新工具
要添加新的数学工具,请执行以下操作:
- 创建类似于以下内容的新工具注册方法
createGcdTool()或createLcmTool() - 在中注册该工具
main()方法使用server.addTool() - 通过适当的错误处理来实现工具逻辑
依赖项
该项目使用以下关键依赖关系:
- MCP Java SDK核心 (0.5.0):核心MCP协议实现
- 杰克逊数据绑定 (2.17.0):JSON处理
- SLF4J简单 (2.0.9):日志框架
许可证
该项目是作为Java中模型上下文协议的示例实现提供的。
贡献
请随时提交问题和增强请求!
