mcpField
L
LLM SSE MCP Demo

LLM SSE MCP Demo

ローカル
github.com/nlinhvuAI・エージェント1471 週間前に更新

LLM SSE MCP Demo について

Spring Boot を使い、SSE 対応の MCP サーバー、OAuth 2.0 認証、複数の LLM プロバイダーを組み合わせたデモです。MCP のツール検出や呼び出し、可観測性を学ぶ開発者向けです。

主な機能

  1. 01SSE による MCP 通信
  2. 02数学・日時ツール
  3. 03OAuth 2.0 認可サーバー
  4. 04複数 LLM プロバイダー対応チャット
  5. 05Prometheus、Tempo、Loki、Grafana による可観測性

活用シーン

  1. 01LLM による算術ツール呼び出しのテスト
  2. 02現在時刻の確認やアラーム設定
  3. 03MCP での 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

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

可観測性(Prometheus/メトリクス、Tempo/トレース、Loki/ログ、Grafana)を備えた LLM SSE MCP

このプロジェクトでは、リアルタイム通信に Server-Sent Events(SSE)を使用して、LLM クライアントと MCP(Model Context Protocol)サーバーを統合する方法を紹介します。OAuth 2.0 セキュリティ、さまざまな LLM モデルによるツール呼び出し機能、安全な認証サービスを紹介する、3 つの Spring Boot アプリケーションで構成されています。

プロジェクト構成

1. Authorization Server Demo (authorization-server-demo)

OAuth 2.0 認可サーバー機能を実装し、安全な認証および認可サービスを提供する Spring Boot アプリケーションです。

機能:

  • OAuth 2.0 認可サーバー: アクセストークンを発行し、検証します

ポート: 9000

2. SSE MCP Server Demo (sse-mcp-server-demo)

SSE エンドポイントを介して数学および日付/時刻のツールを公開する、MCP サーバーとして動作する Spring Boot アプリケーションです。

機能:

  • 数学ツール: 加算および乗算
  • 日時ツール: 現在時刻の取得およびアラームの設定
  • SSE 対応: Server-Sent Events によるリアルタイム通信
  • MCP プロトコル: ツールの検出と実行のための Model Context Protocol を実装

利用可能なツール:

  • sumNumbers(int, int) - 2 つの数値を加算します
  • multiplyNumbers(int, int) - 2 つの数値を乗算します
  • getCurrentDateTime() - ユーザーのタイムゾーンにおける現在の日付/時刻を取得します
  • setAlarm(String) - 指定された ISO-8601 時刻にアラームを設定します

ポート: 8080(デフォルト)

3. LLM MCP Client Demo (llm-mcp-client-demo)

MCP サーバーに接続し、複数の LLM プロバイダーに対応した対話型チャットインターフェースを提供する Spring Boot ウェブアプリケーションです。

機能:

  • 複数の LLM に対応: Anthropic Claude、OpenAI GPT、Google Gemini、Ollama
  • 対話型ウェブチャット: 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. Authorization Server を起動する
cd authorization-server-demo
./gradlew bootRun
3. MCP Server を起動する
cd sse-mcp-server-demo
./gradlew bootRun
4. LLM Client を起動する
cd llm-mcp-client-demo
./gradlew bootRun
5. チャットインターフェースにアクセスする

ブラウザーを開き、http://localhost:10101 にアクセスします。

6. Grafana にアクセスして Prometheus、Tempo、Loki を確認する

ブラウザーを開き、http://localhost:3000 にアクセスします。

データソース -> Prometheus -> Explore prometheus

データソース -> Tempo -> Explore tempo

データソース -> Loki -> Explore loki

使い方

  1. 上記の順序で両方のサービスを起動します
  2. ウェブインターフェース 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 - ウェブテンプレート
  • 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

開発

このプロジェクトでは、次の機能を紹介します。

  • Spring AI を使用した MCP プロトコルの実装
  • SSE ベースのリアルタイム通信
  • 複数プロバイダーの LLM 統合
  • ツールの呼び出しと検出
  • インタラクティブなウェブインターフェース
  • OAuth2 による MCP 認証
  • Spring Actuator と Micrometer(OpenTelemetry、Prometheus、Tempo、Loki、Grafana)によるオブザーバビリティ

このデモは、外部ツール機能を備えた、より複雑な LLM 搭載アプリケーションを構築するための基盤となります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。