具有可观测性的LLM SSE MCP(普罗米修斯/度量、时间/轨迹、洛基/日志、格拉法纳)
该项目演示了使用服务器发送事件(SSE)进行实时通信的LLM客户端和MCP(模型上下文协议)服务器之间的集成。它由三个Spring Boot应用程序组成,展示了OAuth 2.0安全性、各种LLM模型的工具调用功能和安全身份验证服务。
项目结构
1.授权服务器演示(authorization-server-demo)
一个实现OAuth 2.0授权服务器功能的Spring Boot应用程序,提供安全的身份验证和授权服务。
特征:
- OAuth 2.0授权服务器:发放访问令牌并验证它们
端口: 9000
2.SSE MCP服务器演示(sse-mcp-server-demo)
一个充当MCP服务器的Spring Boot应用程序,通过SSE端点公开数学和日期/时间工具。
特征:
- 数学工具:加法和乘法运算
- DateTime工具:当前时间检索和报警设置
- SSE支持:通过服务器发送事件进行实时通信
- MCP协议:实现用于工具发现和执行的模型上下文协议
可用工具:
sumNumbers(int, int)-将两个数字相加multiplyNumbers(int, int)-将两个数字相乘getCurrentDateTime()-获取用户时区中的当前日期/时间setAlarm(String)-为指定的ISO-8601时间设置警报
端口: 8080(默认)
3.LLM MCP客户端演示(llm-mcp-client-demo)
一个Spring Boot web应用程序,连接到MCP服务器,并提供与多个LLM提供商的交互式聊天界面。
特征:
- 多种LLM支持:拟人克劳德、OpenAI GPT、谷歌双子座、Ollama
- 交互式网络聊天:使用Thymeleaf的实时聊天界面
- MCP集成:连接到SSE MCP服务器进行工具调用
- 工具发现:自动发现并使用MCP服务器中的可用工具
支持的LLM型号:
- 人物克劳德:claude-sonnet-4-20250514
- OpenAI:o4-mini-2025-04-16
- 谷歌双子座:双生-2.5激光预览-05-20
- 奥拉马:qwen3:8b(本地)
端口: 10101
先决条件
- Java 17或更高版本
- Gradle
- 云LLM提供程序的API密钥(可选)
- Ollama本地安装(适用于本地型号)
- Docker&Docker编写
环境变量
对于LLM客户端,为云提供商设置以下环境变量:
export ANTHROPIC_API_KEY=your_anthropic_key
export OPENAI_API_KEY=your_openai_key
export GOOGLE_PROJECT_ID=your_google_project_id
export GOOGLE_ZONE=your_google_zone快速开始
1.启动普罗米修斯、天波、洛基、格拉法纳
docker compose up -d2.启动授权服务器
cd authorization-server-demo
./gradlew bootRun3.启动MCP服务器
cd sse-mcp-server-demo
./gradlew bootRun4.启动LLM客户端
cd llm-mcp-client-demo
./gradlew bootRun5.访问聊天界面
打开浏览器并导航到: http://localhost:10101
6.进入格拉法纳,探索普罗米修斯、天宝、洛基
打开浏览器并导航到: http://localhost:3000
Data sources->Prometheus->Exploreprometheus
Data sources->Tempo->Exploretempo
Data sources->Loki->Exploreloki
用法
- 启动这两项服务 按照上述顺序
- 打开web界面 在
http://localhost:9090 - 发送消息 需要数学运算或时间查询
- 观看LLM 自动发现和使用可用工具
示例查询:
- “5乘以4加7等于多少?”
- “现在几点了?”
- “设置2025-01-01T10:00:00的闹钟”
技术栈
- 弹簧靴3.x
- Spring Security OAuth2
- 春季AI -LLM集成框架
- 模型上下文协议(MCP) -工具发现和执行
- 服务器发送事件(SSE) -实时通信
- 百里香叶 -Web模板
- Gradle -构建系统
配置
所有应用程序都使用YAML配置文件:
- 中的授权服务器配置
authorization-server-demo/src/main/resources/application.yml - MCP服务器配置
sse-mcp-server-demo/src/main/resources/application.yml - LLM客户端配置
llm-mcp-client-demo/src/main/resources/application.yml
发展
该项目展示了:
- MCP协议实现 使用Spring AI
- 基于SSE的实时通信
- 多提供商LLM集成
- 工具调用和发现
- 交互式Web界面
- 使用OAuth2的MCP授权
- 使用弹簧执行器和千分尺进行观察(OpenTetry、普罗米修斯、Tempo、洛基、格拉法纳)
此演示为构建具有外部工具功能的更复杂的LLM驱动应用程序奠定了基础。
