mcpField
S
Spring AI Example

Spring AI Example

本地服务
github.com/lucasdengcn开发工具083 周前更新

关于 Spring AI Example

Spring AI Example 展示使用 Spring AI 实现 MCP 服务端和客户端的模式,适合参考工具开发与 AI 提案应用的开发者。项目还包含 SSE、工具上下文和自定义结果转换示例。

主要功能

  1. 01实现 MCP 服务端与客户端
  2. 02支持 WebFlux 和 WebMvc SSE
  3. 03通过注解定义工具方法
  4. 04自定义工具结果转换器
  5. 05使用工具上下文和参数描述

适用场景

  1. 01参考 Spring AI 工具实现模式
  2. 02构建 AI 提案客户端示例
  3. 03学习 MCP 与 SSE 集成方式

MCP 相关

项目包含 MCP 服务端实现,以及用于 AI 提案的 MCP 客户端实现。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Spring AI 示例

项目概览

本项目展示了使用 Spring AI 工具的多种实现模式和最佳实践。项目由两个主要模块组成:

  • mcp-server:实现 Model Context Protocol(MCP)服务,支持 WebFlux 和 WebMvc SSE
  • proposal-agent:实现 MCP 客户端,用于生成 AI 驱动的提案

项目结构

.
├── mcp-server/           # MCP Server implementation
│   ├── src/             # Server source code
│   └── README.md        # Server documentation
├── proposal-agent/      # MCP Client implementation
│   ├── src/             # Client source code
│   └── README.md        # Client documentation
└── src/                 # Common source code
工具实现模式
将方法用作工具

Spring AI 支持通过使用 @Tool 注解,将方法用作工具。DateTimeTools 中的示例:

@Tool(name = "getCurrentDateTime", description = "Get the current date and time")
public String getCurrentDateTime() {
    return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString();
}
工具结果转换器

可以实现自定义结果转换器,以控制工具结果的格式。CustomToolCallResultConverter 中的示例:

@Tool(name = "getCustomer",
      description = "Retrieve customer information",
      resultConverter = CustomToolCallResultConverter.class)
public Customer getCustomer(String name, ToolContext context) {
    return new Customer(name, "[email protected]");
}
工具上下文

Spring AI 提供了 ToolContext 参数,可将其注入工具方法以访问上下文信息:

public Customer getCustomerByEmail(String email, ToolContext context) {
    log.info("Context: {}", context);
    return new Customer("Demo", email);
}
工具参数

可以使用 @ToolParam 注解为工具参数提供描述:

@Tool(name = "setAlarm")
public void setAlarm(@ToolParam(description = "Time in ISO-8601 format") String time) {
    // Implementation
}
配置

本项目使用 Spring Boot,并包含以下关键配置:

  • Ollama AI 模型集成
  • 使用 PGVector 的向量存储
  • 用于开发的 H2 数据库
  • 用于 Web 访问的 CORS 配置
  • MCP 服务实现
  • MCP 客户端实现
  • SSE 实现
SSE 实现

使用 SseEmitter 类实现 SSE(服务器发送事件),以便实时更新。

技术栈

  • Spring Boot
  • Spring AI
  • Ollama AI 模型
  • PGVector 向量存储
  • H2 数据库
  • CORS 配置
  • 用于实时更新的 SSE(服务器发送事件)

评论

支持 Markdown

第一次接触 MCP?

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

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