项目简介
本项目是一个基于 Spring Boot 3 和 Java 24 实现的 OAuth2 授权服务器,同时集成了 Spring AI 框架,提供了与 LLM 交互的能力,并通过 Model Context Protocol (MCP) 暴露特定的工具服务(如天气查询)。
主要功能点
- OAuth2 授权服务器:支持多种授权流程(如授权码、客户端凭证、刷新令牌),提供用户和客户端管理。
- AI 能力集成:通过 Spring AI 与 Ollama、DeepSeek、Gemma3 等本地或远程 AI 模型进行交互。
- 向量数据库支持:集成向量存储,支持 RAG (Retrieval Augmented Generation) 应用模式。
- MCP 工具服务:通过 MCP 协议暴露特定的外部功能作为“工具”,供兼容 MCP 的 LLM 客户端调用(例如,本项目中的天气查询工具)。
- 多种传输协议支持:支持 Stdio, SSE 等 MCP 传输协议。
安装步骤
- 确保已安装 Java 24、Maven 和 Docker。
- 克隆仓库到本地。
- 在项目根目录打开终端。
- 运行 'docker-compose up -d' 启动所需的依赖服务(如 MariaDB, Redis)。
- 运行 'mvn clean install -DskipTests' 构建项目 JAR 包(此步骤会跳过测试,如果需要运行测试,请省略 '-DskipTests')。
- 运行 'mvn spring-boot:run' 启动应用程序(或运行构建好的 JAR 包)。
服务器配置(供MCP客户端参考)
MCP 客户端需要知道如何连接到 MCP 服务器。本项目支持 Stdio 传输协议,允许客户端启动服务器进程并与其通信。以下是配置 MCP 客户端连接到此服务器的参考信息:
{ "server name": "Spring AI MCP 工具服务器", // 给服务器起一个易于识别的名称 "command": "java", // 启动服务器进程的命令 "args": [ "-Dspring.ai.mcp.server.stdio=true", // 配置 Spring AI MCP 使用 Stdio 传输 "-Dspring.main.web-application-type=none", // 在 StdIo 模式下禁用 Spring Boot Web 功能 "-Dlogging.pattern.console=", // 可选:简化控制台日志输出,便于 Stdio 通信 "-jar", // Java 命令参数:指定运行 JAR 文件 "path/to/your/oauth2-authorization-server-0.0.1.jar" // **重要:请替换为实际构建生成的 JAR 文件路径** ] }
将 'path/to/your/oauth2-authorization-server-0.0.1.jar' 替换为实际 JAR 包在你的文件系统中的路径。MCP 客户端会使用这些信息启动服务器进程并通过标准输入/输出进行通信。
基本使用方法(MCP部分)
一旦 MCP 服务器以后台进程(例如使用上述 Stdio 配置启动)运行,兼容 MCP 的 LLM 客户端可以执行以下操作:
- 初始化连接: 客户端与服务器建立 MCP 连接。
- 声明能力: 客户端可以向服务器声明其支持的功能。
- 列出工具: 客户端发送 'list_tools' 请求,获取服务器暴露的所有工具列表及其描述和输入参数 Schema。例如,会看到 'getWeatherForecastByLocation' 和 'getAlerts' 等工具。
- 调用工具: LLM 根据用户指令和工具列表,构造 'call_tool' 请求,包含要调用的工具名称和参数(例如,调用 'getWeatherForecastByLocation' 并提供经纬度)。
- 接收结果: 服务器执行工具调用,将结果通过 JSON-RPC 响应返回给客户端。LLM 利用这些结果生成最终回复给用户。
请参考 'src/test/java/mb/oauth2authorizationserver/ai/' 包下的 MCP 客户端测试代码 ('CustomMcpClient.java', 'McpClientStdio.java', 'McpClientSse.java') 来理解 MCP 客户端如何与服务器交互。
信息
分类
AI与计算