我的MCP服务器(Java版)
一个Java实现的模型上下文协议(MCP)服务器,为Claude Desktop提供示例工具。
特点/功能
这个MCP服务器提供了三个示例工具:
- 计算 - 执行基本的数学运算(加、减、乘、除)
- 反转文本 - 反转任何文本字符串
- 词数统计 - 分析文本并返回统计信息(字数、字符数、行数、句子数)
要求
- Java 17或更高版本
- Gradle 8.5 或更高版本(包含包装器)
安装
- 克隆或导航到项目目录:
cd /Users/steveo/projects/my-mcp-server-java- 使用 Gradle 构建项目:
./gradlew build这将在(指定位置)生成一个可执行的JAR文件 build/libs/my-mcp-server-1.0.0.jar
测试服务器
你可以通过直接运行服务器来测试它:
java -jar build/libs/my-mcp-server-1.0.0.jar服务器将启动并通过标准输入/输出等待JSON-RPC消息。
或者,您可以使用 Gradle 来运行它:
./gradlew runClaude桌面版的配置
要在Claude Desktop中使用此服务器,请将其添加到您的Claude配置文件中:
在 macOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上: %APPDATA%\Claude\claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"my-mcp-server-java": {
"command": "java",
"args": [
"-jar",
"/Users/steveo/projects/my-mcp-server-java/build/libs/my-mcp-server-1.0.0.jar"
]
}
}
}重要的将上述路径更新为您的实际安装位置。
添加配置后:
- 重启Claude桌面版
- 这些工具现在应该可以在Claude中使用了
- 试着让克劳德:
- “计算5加3” - “反转文本 hello world” - “分析这段文字的字数:The quick brown fox jumps over the lazy dog”
发展
项目结构
my-mcp-server-java/
├── build.gradle # Gradle build configuration
├── settings.gradle # Gradle settings
├── gradlew # Gradle wrapper script (Unix)
├── gradlew.bat # Gradle wrapper script (Windows)
├── gradle/
│ └── wrapper/ # Gradle wrapper files
└── src/
└── main/
└── java/
└── com/
└── example/
└── mcp/
├── MCPServer.java # Main server implementation
├── Tool.java # Tool interface
├── ToolRegistry.java # Tool management
├── TextContent.java # Response content wrapper
├── CalculateTool.java # Calculator tool
├── ReverseTextTool.java # Text reversal tool
└── WordCountTool.java # Word count tool添加新工具
要在您的服务器上添加新工具:
- 创建一个实现(某接口或抽象类)的新类
Tool接口 - 实现三个必需的方法:
- getName() - 返回工具名称 - getDefinition(ObjectMapper mapper) - 返回JSON工具定义 - execute(JsonNode arguments) - 执行工具逻辑
- 在(系统/平台中)注册该工具
MCPServer.registerTools()方法 - 重建项目:
./gradlew build - 重启Claude桌面应用以重新加载服务器
示例工具实现:
public class MyTool implements Tool {
@Override
public String getName() {
return "my_tool";
}
@Override
public JsonNode getDefinition(ObjectMapper mapper) {
ObjectNode tool = mapper.createObjectNode();
tool.put("name", "my_tool");
tool.put("description", "Description of what my tool does");
// Define input schema
ObjectNode inputSchema = mapper.createObjectNode();
inputSchema.put("type", "object");
// ... add properties
tool.set("inputSchema", inputSchema);
return tool;
}
@Override
public List execute(JsonNode arguments) throws Exception {
// Tool implementation
String result = "Tool result";
return Collections.singletonList(new TextContent(result));
}
}建筑
# Build the project
./gradlew build
# Run tests
./gradlew test
# Create JAR file
./gradlew shadowJar
# Clean build artifacts
./gradlew clean记录日志
服务器使用Java内置的日志记录功能(java.util.logging),默认情况下将日志记录到标准错误输出(stderr),以避免破坏通过标准输出(stdout)发送的JSON-RPC消息。您可以在Claude Desktop的开发者控制台或您的终端中查看日志。
实施说明
这是一个独立实现的版本,用于演示MCP协议,且不依赖于官方的Java SDK(该SDK可能尚未发布)。服务器:
- 使用JSON-RPC 2.0进行通信
- 实现了MCP协议规范
- 通过标准输入/输出进行通信
- 使用 Jackson 进行 JSON 处理
- 遵循与Python参考实现相同的架构
资源
许可证
这是一段示例代码,仅用于演示目的。
