mcpField
Q
quarkus-mcp-server-example

quarkus-mcp-server-example

ローカル
github.com/anmiralles開発ツール065 週間前に更新

quarkus-mcp-server-example について

Quarkus で MCP サーバーを構築し、REST API 操作をツールとして公開するサンプルです。Java アプリケーションへの MCP 統合を学ぶ開発者向けで、Goose CLI から申請データにアクセスする方法を示します。

主な機能

  1. 01REST 操作を MCP ツールとして公開
  2. 02申請データの一覧表示と絞り込み
  3. 03ID による申請データの取得
  4. 04申請データの追加
  5. 05Quarkus と Java のサンプル

活用シーン

  1. 01Quarkus REST API の MCP ブリッジ構築
  2. 02Goose CLI から申請データを検索・追加

MCP 対応

Quarkus サーバーは、一覧表示、絞り込み、取得、追加などの申請 REST API 操作を MCP ツールとして公開します。Goose CLI がこのサーバーに接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

Quarkus MCP サーバーの例

Quarkus を使用して、REST API 操作を AI ツールとして公開する Model Context Protocol(MCP)サーバー の構築方法を示す包括的な例です。これにより、Goose CLI を使って、Claude のような大規模言語モデルが自然言語でアプリケーションのデータを操作できるようになります。

🎯 この例で紹介する内容

このプロジェクトでは、3 つの強力なテクノロジーの連携を紹介します。

  • Quarkus:モダンなアプリケーションを構築するための超高速かつ軽量な Java フレームワーク
  • MCP(Model Context Protocol):AI アシスタントをデータソースやツールに接続するためのオープンな標準
  • Goose CLI:MCP サーバーと連携できる、AI 搭載の開発アシスタント

📋 目次

🔗 MCP とは?

Model Context Protocol(MCP) は、AI アシスタントがさまざまなデータソースやツールに安全に接続し、連携できるようにするオープンな標準です。AI アシスタントごとにカスタム連携を構築する代わりに、MCP は以下のための汎用プロトコルを提供します。

  • ツールの検出:AI アシスタントが利用可能なツールを検出できます
  • ツールの実行:外部システムに対する操作を安全に実行します
  • データアクセス:さまざまなソースからデータを取得し、操作します
  • 標準化:1 つの実装で、MCP 対応のあらゆる AI アシスタントと連携できます
MCP のメリット
  • 相互運用性:MCP 対応のあらゆる AI アシスタントと連携できます
  • セキュリティ:外部リソースへのアクセスを制御できます
  • 拡張性:新しいツールや機能を簡単に追加できます
  • 標準化:AI アシスタントごとにカスタム連携を行う必要がありません

⚡ Quarkus とは?

Quarkus は、モダンなアプリケーション開発向けに設計された、Kubernetes ネイティブの Java フレームワークです。

  • 高速な起動:1 秒未満で起動します
  • 低メモリ使用量:コンテナ化された環境向けに最適化されています
  • 快適な開発体験:ライブリロード、統一された設定、優れたツールを提供します
  • クラウドネイティブ:Kubernetes、サーバーレス、マイクロサービス向けに構築されています
  • 標準ベース:使い慣れた Java 標準(JAX-RS、CDI、JPA)を使用します
MCP に適した Quarkus

Quarkus が MCP サーバーに最適な理由は次のとおりです。

  • 迅速な開発:ライブリロードによる素早いフィードバックループ
  • 軽量:ツールサーバーのリソース使用量を最小限に抑えます
  • ネイティブコンパイル:GraalVM による超高速な起動
  • 豊富なエコシステム:データベース、REST クライアントなどに対応する幅広いエクステンション

🦆 Goose とは?

Goose は、次のような機能で開発者を支援する、AI 搭載の開発アシスタント CLI です。

  • 自然言語インターフェース:平易な英語で開発環境を操作します
  • MCP 連携:MCP サーバーに接続して、外部のツールやデータにアクセスします
  • コンテキスト認識:プロジェクトの構造やコードベースを理解します
  • ツールの実行:コマンドの実行、ファイルの変更、API との連携が可能です
  • マルチモデル対応:Claude、GPT など、さまざまな LLM に対応しています
MCP と連携する Goose

MCP サーバーと組み合わせると、Goose は次のことができます。

  • 自然言語でデータベースにクエリを実行する
  • curl コマンドを手動で実行せずに REST API と連携する
  • 複数のツールを組み合わせて複雑な操作を実行する
  • アプリケーションデータに基づくインテリジェントな分析結果を提供する

🏗️ ソリューションのアーキテクチャ

┌─────────────────────────────────────────────────────────────────────────────┐
│                           MCP Integration Flow                               │
└─────────────────────────────────────────────────────────────────────────────┘

    ┌─────────────┐    MCP Protocol     ┌─────────────────┐    REST API    ┌──────────────┐
    │             │   (JSON-RPC over    │                 │   (HTTP/JSON)  │              │
    │    Goose    │◄───────────────────►│   Quarkus MCP   │◄──────────────►│   Quarkus    │
    │     CLI     │     STDIO/SSE)      │     Server      │                │ Applications │
    │             │                     │                 │                │      MS      │
    └─────────────┘                     └─────────────────┘                └──────────────┘
           │                                      │                               │
           │                                      │                               │
    ┌──────▼──────┐                        ┌─────▼─────┐                 ┌───────▼───────┐
    │             │                        │           │                 │               │
    │   Claude    │                        │ MCP Tools │                 │  PostgreSQL   │
    │     LLM     │                        │           │                 │   Database    │
    │             │                        │ • list    │                 │               │
    └─────────────┘                        │ • get     │                 └───────────────┘
                                           │ • filter  │
                                           │ • add     │
                                           └───────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                              Data Flow                                      │
└─────────────────────────────────────────────────────────────────────────────┘

1. User asks Goose: "Show me all applications from Spain"
                    ↓
2. Goose sends MCP request to discover available tools
                    ↓
3. MCP Server exposes tools: list_applications, get_applications_by_country, etc.
                    ↓
4. Goose calls get_applications_by_country("Spain") tool
                    ↓
5. MCP Server makes REST call to Applications MS
                    ↓
6. Applications MS queries PostgreSQL database
                    ↓
7. Results flow back through the chain to Goose
                    ↓
8. Goose presents results to user in natural language
コンポーネントの役割
コンポーネント目的テクノロジー
Goose CLIAI アシスタントのインターフェース、自然言語処理Go、LLM 連携
Quarkus MCP Serverプロトコルブリッジ、ツール定義Quarkus、MCP プロトコル
Quarkus Applications MSビジネスロジック、データ操作Quarkus、JAX-RS、Hibernate
PostgreSQLデータ永続化リレーショナルデータベース

前提条件

このサンプルを実行する前に、以下がインストールされていることを確認してください。

  • Java 21:Quarkus アプリケーションに必要です
  • Maven:Java プロジェクト用のビルドツールです
  • Podman/Docker:PostgreSQL データベース用のコンテナーランタイムです
  • Goose CLI:AI アシスタントツール(インストールガイド)
Goose のインストール
# Using Go (requires Go 1.21+)
go install github.com/square/goose@latest

# Or download binary from releases
# https://github.com/square/goose/releases

🚀 サンプルの実行

ステップ 1:プロジェクトをビルドする
mvn clean package
ステップ 2:PostgreSQL データベースを起動する
podman run -d --name db-server \
  -e POSTGRES_USER=test \
  -e POSTGRES_PASSWORD=test \
  -e POSTGRES_DB=applications \
  -p 5432:5432 \
  postgres:16
ステップ 3:Applications マイクロサービスを起動する
cd quarkus-applications-ms && mvn quarkus:dev

Applications サービスは http://localhost:8080 で起動します。

ステップ 4:(任意)サンプルデータを追加する
curl -i -X POST \
  -F "name=Angel" \
  -F "surname=Miralles" \
  -F "personalId=12345R" \
  -F "country=Spain" \
  http://localhost:8080/application.html

curl -i -X POST \
  -F "name=Juan" \
  -F "surname=Garcia" \
  -F "personalId=31234R" \
  -F "country=Spain" \
  http://localhost:8080/application.html
  
curl -i -X POST \
  -F "name=Pedro" \
  -F "surname=Rodriguez" \
  -F "personalId=54321R" \
  -F "country=Germany" \
  http://localhost:8080/application.html
ステップ 5:MCP サーバーとともに Goose を起動する
goose session --with-extension="java -jar quarkus-mcp-server/target/quarkus-mcp-server-1.0.0-SNAPSHOT.jar"

💡 使用例

MCP サーバーとともに Goose を起動すると、自然言語を使ってアプリケーションのデータを操作できます。

基本的なクエリ
> Show me all applications in the system
> List applications from Spain
> Get application with ID 1
フィルター付きクエリ
> Show me all applications from France with COMPLETED status
> List all STARTED applications
> Find applications from Germany
データ管理
> Add a new application for John Doe from USA with ID 67890
> Create an application for Maria Garcia from Mexico
利用可能な MCP ツール

MCP サーバーは、以下のツールを Goose に公開します。

ツール名説明パラメーター
list_applicationsすべてのアプリケーションを一覧表示しますなし
get_application_by_id指定したアプリケーションを取得しますid: Long
get_applications_by_country国で絞り込みますcountryName: String
get_applications_by_country_and_status国とステータスで絞り込みますcountryName: String、status: ApplicationStatus
add_application新しいアプリケーションを作成しますapplication: Application
アプリケーションのステータス値
  • STARTED
  • PREPROCESSED
  • PROCESSED
  • COMPLETED
  • CANCELED
  • ERROR

🔧 開発

開発モード
# Start applications service in dev mode (hot reload)
cd quarkus-applications-ms && mvn quarkus:dev

# Package MCP server for testing
cd quarkus-mcp-server && mvn package
プロジェクト構成
quarkus-mcp-server-example/
├── quarkus-applications-ms/           # REST API microservice
│   ├── src/main/java/me/amiralles/applications/
│   │   ├── boundary/ApplicationsResource.java    # REST endpoints
│   │   ├── entity/Application.java               # JPA entity
│   │   └── control/ApplicationExceptionMapper.java
│   └── src/main/resources/application.properties
├── quarkus-mcp-server/                # MCP server
│   ├── src/main/java/me/amiralles/mcp/
│   │   ├── McpApplicationsServer.java            # MCP tools definition
│   │   ├── client/ApplicationsClient.java        # REST client
│   │   └── model/Application.java                # Data models
│   └── src/test/java/
└── deployment/docker-compose/         # Monitoring stack

🔗 参考資料

📄 ライセンス

このプロジェクトは、教育目的のサンプルとして提供されています。

コメント

MCP は初めてですか?

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

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