mcpField
L
LLM SSE MCP Demo

LLM SSE MCP Demo

本地服务
github.com/nlinhvuAI 与智能体1471 周前更新

关于 LLM SSE MCP Demo

这是一个基于 Spring Boot 的 LLM 应用示例,整合 SSE MCP 服务、OAuth 2.0 身份验证和多个 LLM 提供方,适合开发者了解 MCP 工具发现、调用及可观测性。

主要功能

  1. 01基于 SSE 的 MCP 通信
  2. 02数学及日期时间工具
  3. 03OAuth 2.0 授权服务
  4. 04支持多个 LLM 提供方的聊天
  5. 05Prometheus、Tempo、Loki、Grafana 可观测性

适用场景

  1. 01测试 LLM 的算术工具调用
  2. 02查询当前时间或设置闹钟
  3. 03探索 MCP 中的 OAuth 2.0
  4. 04检查指标、跟踪和日志

MCP 相关

MCP 服务通过 SSE 向客户端提供数学及日期时间工具。示例客户端连接该服务、发现可用工具,并在聊天过程中调用它们。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"llm-sse-mcp-demo-2025": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
启动命令docker run -i --rm compose

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocicompose

工具

还没有获取到工具列表

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

详细介绍

LLM SSE MCP 可观测性(Prometheus/指标、Tempo/追踪、Loki/日志、Grafana)

本项目演示 LLM 客户端与 MCP(Model Context Protocol)服务之间的集成,并使用 Server-Sent Events(SSE)进行实时通信。项目由三个 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 端点提供数学和日期/时间工具。

功能:

  • 数学工具:加法和乘法运算
  • 日期时间工具:获取当前时间和设置闹钟
  • SSE 支持:通过 Server-Sent Events 进行实时通信
  • MCP 协议:实现 Model Context Protocol,以发现和执行工具

可用工具:

  • sumNumbers(int, int) - 将两个数字相加
  • multiplyNumbers(int, int) - 将两个数字相乘
  • getCurrentDateTime() - 获取用户所在时区的当前日期/时间
  • setAlarm(String) - 为指定的 ISO-8601 时间设置闹钟

端口: 8080(默认)

3. LLM MCP 客户端演示(llm-mcp-client-demo)

一个连接到 MCP 服务并通过多个 LLM 提供商提供交互式聊天界面的 Spring Boot Web 应用。

功能:

  • 支持多种 LLM:Anthropic Claude、OpenAI GPT、Google Gemini、Ollama
  • 交互式 Web 聊天:使用 Thymeleaf 实现实时聊天界面
  • MCP 集成:连接到 SSE MCP 服务以调用工具
  • 工具发现:自动发现并使用 MCP 服务提供的可用工具

支持的 LLM 模型:

  • Anthropic Claude:claude-sonnet-4-20250514
  • OpenAI:o4-mini-2025-04-16
  • Google Gemini:gemini-2.5-flash-preview-05-20
  • Ollama:qwen3:8b(本地)

端口: 10101

先决条件

  • Java 17 或更高版本
  • Gradle
  • 云端 LLM 提供商的 API 密钥(可选)
  • 本地安装 Ollama(用于本地模型)
  • Docker & Docker Compose

环境变量

对于 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. 启动 Prometheus、Tempo、Loki、Grafana
docker compose up -d
2. 启动授权服务
cd authorization-server-demo
./gradlew bootRun
3. 启动 MCP 服务
cd sse-mcp-server-demo
./gradlew bootRun
4. 启动 LLM 客户端
cd llm-mcp-client-demo
./gradlew bootRun
5. 访问聊天界面

打开浏览器并访问:http://localhost:10101

6. 访问 Grafana 并探索 Prometheus、Tempo、Loki

打开浏览器并访问:http://localhost:3000

Data sources -> Prometheus -> Explore prometheus

Data sources -> Tempo -> Explore tempo

Data sources -> Loki -> Explore loki

使用方法

  1. 按上述顺序启动两个服务
  2. 打开 Web 界面,访问 http://localhost:9090
  3. 发送消息,提出需要数学运算或时间查询的问题
  4. 观察 LLM 自动发现并使用可用工具

示例查询:

  • “5 乘以 4 再加 7 等于多少?”
  • “现在几点了?”
  • “将闹钟设置为 2025-01-01T10:00:00”

技术栈

  • Spring Boot 3.x
  • Spring Security OAuth2
  • Spring AI - LLM 集成框架
  • Model Context Protocol (MCP) - 工具发现与执行
  • Server-Sent Events (SSE) - 实时通信
  • Thymeleaf - Web 模板
  • Gradle - 构建系统

配置

所有应用都使用 YAML 配置文件:

  • 授权服务器配置位于 authorization-server-demo/src/main/resources/application.yml
  • MCP 服务配置位于 sse-mcp-server-demo/src/main/resources/application.yml
  • 大模型客户端配置位于 llm-mcp-client-demo/src/main/resources/application.yml

开发

该项目演示了:

  • 使用 Spring AI 实现 MCP 协议
  • 基于 SSE 的实时通信
  • 多供应商大模型集成
  • 工具调用与发现
  • 交互式 Web 界面
  • 使用 OAuth2 进行 MCP 授权
  • 使用 Spring Actuator 和 Micrometer(OpenTelemetry、Prometheus、Tempo、Loki、Grafana)进行可观测性监控

该演示为构建具备外部工具能力的更复杂的大模型应用提供了基础。

评论

支持 Markdown

第一次接触 MCP?

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

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