mcpField
简
简单 MCP Server 示例 (Java + Spring Boot + Spring AI)

简单 MCP Server 示例 (Java + Spring Boot + Spring AI)

远程服务
github.com/oneinstepGO开发工具073 周前更新
代码仓库

关于 简单 MCP Server 示例 (Java + Spring Boot + Spring AI)

该项目演示如何使用 Spring AI 在 Java 和 Spring Boot 中构建通过 SSE 通信的 MCP 服务,并向 MCP 客户端提供天气、实用功能和 JSON 转换工具。

主要功能

  1. 01Java 与 Spring Boot 示例
  2. 02SSE 通信
  3. 03天气预报与警报
  4. 04回声、数学和时间戳工具
  5. 05JSON 转换为 Java 代码

适用场景

  1. 01查询指定地点的天气预报
  2. 02查看指定州的天气警报
  3. 03回声文本或进行简单计算
  4. 04将 JSON 字符串转换为 Java 类代码

MCP 相关

它通过 SSE 端点向 MCP 客户端提供天气、实用功能和 JSON 工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:8080/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

来自项目 README

简单 MCP Server 示例 (Java + Spring Boot + Spring AI)

项目目标

本项目旨在开发一个简单的模型上下文协议 (MCP) 服务器。此服务器将作为如何在 Java 和 Spring Boot 环境下构建 MCP 服务器的示例,使用 sse 进行通信。

技术栈

  • Java: JDK 21
  • Spring Boot: 3.3.12
  • Spring AI: spring-ai-starter-mcp-server-webflux 用于 MCP 服务器功能
  • 构建工具: Maven
  • 通信协议: sse

核心依赖


<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>io.modelcontextprotocol.sdk</groupId>
         <artifactId>mcp-bom</artifactId>
         <version>0.10.0</version>
         <type>pom</type>
         <scope>import</scope>
      </dependency>
   </dependencies>
</dependencyManagement>

<dependencies>
<!-- Spring Boot Starter -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>

<!-- Spring Boot Web Starter for SSE -->
<dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
      <version>${spring-ai.version}</version>
</dependency>

</dependencies>

关键组件

  1. MCP 服务器配置:

    • 设置 FastMCP 或等效的 Spring AI 组件来初始化 MCP 服务器。
    • 服务器通过 sse 进行通信。
  2. 示例工具 (Tools):

    • 实现了以下工具:
      • WeatherTool: 查询天气预报和天气警报
      • SimpleTool: 提供回声、简单数学和时间戳功能
      • JsonTool: 将 JSON 字符串转换为 Java 类代码,并根据 Java 类定义输出一个类型规范的示例 JSON 字符串
    • 工具的定义遵循 MCP 规范,使用 Java 类型提示和注解来自动生成工具定义。

项目结构

cem_mcp_server
  ├── src/main/java/com/example/mcpserver
  │   ├── config/                          # 配置类
  │   ├── McpServerApplication.java        # 主应用程序类
  │   └── tools/                           # 工具实现
  │       ├── WeatherTool.java             # 天气工具
  │       └── SimpleTool.java              # 简单工具
  │       ├── JsonTool.java                # JSON 工具
  ├── src/main/resources
  │   └── application.yml                  # 应用配置
  └── pom.xml                              # Maven 配置

编译和运行

使用 Maven 命令

mvn clean package spring-boot:run

测试和调试

服务器端点

  • 连接根端点: http://localhost:8080/sse - 连接MCP服务器

测试工具

可以使用支持 MCP 协议的客户端(如 Cursor 编辑器)连接到 MCP 服务器。服务器提供以下工具:

  1. 天气工具:

    • getWeatherForecastByLocation: 获取指定经纬度的天气预报
    • getAlerts: 获取指定州的天气警报
  2. 简单工具:

    • echoTool: 回声工具,返回输入的消息
    • simpleMathTool: 计算两个数字的和
    • timestampTool: 返回当前时间

与 Cursor 集成

在 Cursor 编辑器中,可以通过以下步骤连接到此 MCP 服务器:

  1. 项目下新增文件 .cursor/mcp.json。
    {
      "mcpServers": {
        "mcp-serve-demo": {
          "name": "本地 MCP 服务器",
          "url": "http://localhost:8080/sse",
          "enabled": true
        }
      }
    }
    
  2. 打开 Cursor 设置
  3. 找到 MCP 相关配置,刷新本MCP工具。
  4. 现在可以在 Cursor 中使用本服务器提供的工具
  5. 提问:
    • 纽约今天天气怎么样?
    • 请根据我给出的java类定义,输出一个示例json

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。