项目简介

本项目是一个基于 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 传输协议。

安装步骤

  1. 确保已安装 Java 24、Maven 和 Docker。
  2. 克隆仓库到本地。
  3. 在项目根目录打开终端。
  4. 运行 'docker-compose up -d' 启动所需的依赖服务(如 MariaDB, Redis)。
  5. 运行 'mvn clean install -DskipTests' 构建项目 JAR 包(此步骤会跳过测试,如果需要运行测试,请省略 '-DskipTests')。
  6. 运行 '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 客户端可以执行以下操作:

  1. 初始化连接: 客户端与服务器建立 MCP 连接。
  2. 声明能力: 客户端可以向服务器声明其支持的功能。
  3. 列出工具: 客户端发送 'list_tools' 请求,获取服务器暴露的所有工具列表及其描述和输入参数 Schema。例如,会看到 'getWeatherForecastByLocation' 和 'getAlerts' 等工具。
  4. 调用工具: LLM 根据用户指令和工具列表,构造 'call_tool' 请求,包含要调用的工具名称和参数(例如,调用 'getWeatherForecastByLocation' 并提供经纬度)。
  5. 接收结果: 服务器执行工具调用,将结果通过 JSON-RPC 响应返回给客户端。LLM 利用这些结果生成最终回复给用户。

请参考 'src/test/java/mb/oauth2authorizationserver/ai/' 包下的 MCP 客户端测试代码 ('CustomMcpClient.java', 'McpClientStdio.java', 'McpClientSse.java') 来理解 MCP 客户端如何与服务器交互。

信息

分类

AI与计算