MCP服务器构建工具

一个基于Java的MCP服务器构建工具,用于为AI助手如Claude提供标准化数据接口。

  • by adimehtaa
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 adityamehta242/how-to-build-mcp-server-in-java

使用说明

如何用Java构建MCP服务器

使用Java构建模型上下文协议(MCP)服务器的综合指南。该项目演示了如何创建一个基于Java的MCP服务器,该服务器通过Claude等AI助手可以使用的工具提供演示数据。

目录

概述

该项目实现了一个基于Java的MCP(模型上下文协议)服务器,该服务器通过标准化的接口公开演示数据。服务器使用 io.modelcontextprotocol.sdk 库来处理MCP通信,并提供AI助手可以调用的工具来检索有关Java演示文稿的信息。

什么是MCP?

模型上下文协议(MCP)是一个开放标准,使AI助手能够安全地连接到外部数据源和工具。它为应用程序向AI系统公开其功能提供了一种标准化的方式。

先决条件

  • Java 21或更高版本 -此项目使用Java 21功能
  • Maven 3.6+ -用于依赖关系管理和构建
  • Node.js和npm -MCP检验员测试所需(可选)
  • 克劳德桌面 -用于将服务器连接到Claude(可选)

项目结构

how-to-build-mcp-server-in-java/
├── src/main/java/
│   └── dev/
│       ├── Main.java                    # Main server entry point
│       └── aditya/
│           ├── Presentation.java        # Data model for presentations
│           └── PresentationTools.java   # Business logic for managing presentations
├── pom.xml                             # Maven configuration
├── README.md                           # This documentation
└── .gitignore                         # Git ignore rules

入门指南

1.克隆存储库

git clone <your-repository-url>
cd how-to-build-mcp-server-in-java

2.建设项目

mvn clean compile

3.验证依赖关系

该项目使用以下关键依赖关系:

  • io.modelcontextprotocol.sdk:mcp -Java版MCP SDK
  • org.slf4j:slf4j-api 和 org.slf4j:slf4j-simple -日志记录

运行服务器

方法1:使用Maven

mvn exec:java -Dexec.mainClass="dev.Main"

方法2:直接使用Java

# First compile
mvn compile

# Then run
java -cp target/classes:target/dependency/* dev.Main

方法3:创建可执行JAR

mvn package
java -jar target/how-to-build-mcp-server-in-java-1.0-SNAPSHOT.jar

MCP检验员测试

MCP检查器是一个调试工具,允许您以交互方式测试MCP服务器。

1.安装MCP检查器

npm install -g @modelcontextprotocol/inspector

2.运行检查器

npx @modelcontextprotocol/inspector java -cp target/classes:$(mvn dependency:build-classpath -Dmdep.outputFile=/dev/stdout -q) dev.Main

或者,如果你有一个编译好的JAR:

npx @modelcontextprotocol/inspector java -jar target/how-to-build-mcp-server-in-java-1.0-SNAPSHOT.jar

3.使用检查器

  1. 检查器将在您的浏览器中打开
  2. 您将看到服务器功能和可用工具
  3. 您可以测试 get_presentations 点击该工具
  4. 检查器将显示来自服务器的JSON响应

与Claude Desktop连接

要将此MCP服务器与Claude Desktop一起使用,您需要在Claude的设置中对其进行配置。

1.找到Claude桌面配置

在 macOS 上:

~/Library/Application Support/Claude/claude_desktop_config.json

在Windows上:

%APPDATA%\Claude\claude_desktop_config.json

2.添加服务器配置

将Java MCP服务器添加到配置文件中:

{
  "mcpServers": {
    "java-presentations": {
      "command": "java",
      "args": [
        "-cp",
        "/path/to/your/project/target/classes:/path/to/your/project/target/dependency/*",
        "dev.Main"
      ],
      "cwd": "/path/to/your/project"
    }
  }
}

JAR文件的替代方案:

{
  "mcpServers": {
    "java-presentations": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/your/project/target/how-to-build-mcp-server-in-java-1.0-SNAPSHOT.jar"
      ]
    }
  }
}

3.重新启动克劳德桌面

保存配置后,重新启动Claude Desktop。现在,您应该可以向Claude询问演示文稿,它将使用您的Java MCP服务器来获取数据。

4.测试连接

试着问克劳德:

  • “有哪些可用的演示文稿?”
  • “显示2025年以来的所有Java演示文稿”
  • “列出演示文稿URL”

理解代码

主类

主类通过以下方式设置MCP服务器:

  • 传输层:使用stdio进行通信
  • 察看连接信息:定义服务器名称和版本
  • 能力:声明服务器可以做什么(工具、日志记录)
  • 工具注册:注册可用工具及其实现

演示文稿.java

一个简单的记录类,表示演示文稿,具有:

  • title:演示文稿标题
  • url:链接到演示文稿
  • year:发表演讲的年份

演示工具.java

包含用于管理演示文稿的业务逻辑:

  • 初始化示例演示数据
  • 提供检索演示文稿的方法
  • 支持按年过滤
  • 可以将演示文稿转换为不同的格式

可用工具

get_presences

描述:检索所有可用Java演示文稿的列表

参数:

  • operation (string):操作类型(当前未在实现中使用)

退货:包含标题、URL和年份信息的演示文稿列表

示例响应:

Presentation[title=Java 24 Launch - Live from JavaOne 2025, url=https://www.youtube.com/watch?v=mk_2MIWxLI0, year=2025]
Presentation[title=Java Turns 30 - Live from JavaOne 2025, url=https://www.youtube.com/watch?v=GwR7Gvi80Xo, year=2025]
...

定制

添加新工具

要向MCP服务器添加新工具,请执行以下操作:

  1. 定义工具模式 JSON格式
  2. 创建工具规格 包含名称、描述和模式
  3. 执行工具逻辑 在处理函数中
  4. 注册该工具 使用服务器构建器

例子:

var newToolSpec = new McpServerFeatures.SyncToolSpecification(
    new McpSchema.Tool("my_new_tool", "Description of what it does", schema),
    (exchange, arguments) -> {
        // Your tool implementation here
        return new McpSchema.CallToolResult(contents, false);
    }
);

修改数据

要更改演示文稿数据,请执行以下操作:

  1. 在中编辑构造函数 PresentationTools.java
  2. 添加、删除或修改 Presentation 物体
  3. 重建并重新启动服务器

添加资源或提示

MCP SDK还支持资源和提示。您可以使用服务器构建器添加这些:

.resources(resourceSpecification)
.prompts(promptSpecification)

故障排除

常见问题

  1. “未找到类”错误:确保所有依赖项都在类路径中
  2. 端口已在使用中:服务器使用stdio,因此不应发生端口冲突
  3. JSON解析错误:检查您的工具模式是否为有效的JSON
  4. 克劳德桌面未连接:验证配置文件路径和语法

调试日志记录

该项目使用SLF4J进行日志记录。要查看调试输出,您可以调整日志记录级别或添加更多日志语句。

依赖性问题

如果您遇到依赖关系解决问题:

mvn dependency:tree
mvn clean install -U

后续步骤

  • 添加具有复杂参数的更复杂的工具
  • 实现用于提供文件或数据的资源端点
  • 为常见的AI交互添加提示模板
  • 创建与外部API或数据库交互的工具
  • 添加身份验证和安全功能

贡献

欢迎通过以下方式为该项目做出贡献:

  • 添加新的示例工具
  • 改进文件
  • 修复错误或问题
  • 添加测试

资源