mcpField
C
ClimateTraceKMP

ClimateTraceKMP

ローカル
github.com/joreilly科学・教育3453 日前に更新

ClimateTraceKMP について

ClimateTraceKMPは、Climate TRACEの気候排出データを複数のアプリ向けに表示するKotlin/Compose Multiplatformプロジェクトです。MCPサーバーと、国別データを問い合わせるKotlinエージェントも含みます。

主な機能

  1. 01国別の排出データ表示
  2. 02Android、iOS、デスクトップ、WebAssembly対応
  3. 03Compose Multiplatformの共有UI
  4. 04Kotlin Notebookのサンプル
  5. 05KoogとGoogle ADKのエージェント

活用シーン

  1. 01各アプリで排出データを閲覧
  2. 02AIエージェントで国別排出量を照会
  3. 03MCPクライアントから国別データのツールを利用

MCP 対応

mcp-serverモジュールは、国別の排出データをMCPツールとして公開します。付属のGoogle ADKエージェントはMCPクライアントとしてこのサーバーに接続します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

ClimateTraceKMP

kotlin-version

https://climatetrace.org/data の気候関連排出データを表示する Kotlin/Compose Multiplatform プロジェクトです。

以下で動作します。

  • iOS(SwiftUI + 共有 Compose Multiplatform UI)
  • Android
  • Desktop
  • Web(Wasm)
  • Kotlin Notebook
  • MCP サーバー
  • AI エージェント(Koog + Google ADK)

前述の iOS クライアントには、共有 Compose Multiplatform UI コードが含まれています。また、Country List 画面で SwiftUI または Compose コードを選択して使用できます(どちらの場合も、国を選択すると共有 Compose の排出量詳細画面に移動します)。

Screenshot 2024-04-29 at 21 13 54

関連記事:

プロジェクト構成

  • composeApp - 共有 Kotlin Multiplatform コード(データレイヤー、ビューモデル、Compose Multiplatform UI)と、Desktop および Web のエントリーポイント
  • androidApp - Android アプリ
  • iosApp - iOS アプリ(SwiftUI + 共有 Compose UI)
  • mcp-server - 排出データを MCP ツールとして公開する MCP サーバー(Kotlin MCP SDK を使用)
  • agents - Google の Agent Development Kit(ADK)を使用して構築された Kotlin ベースの AI エージェント。MCP クライアントとして mcp-server に接続します

特に、Ktor、Koin、kstore、Voyager、KoalaPlot、Koog を使用しています。

ビルドと実行

  • Android:Android Studio でプロジェクトを開くか、./gradlew :androidApp:installDebug を実行します
  • iOS:Xcode で iosApp/iosApp.xcodeproj を開いて実行します
  • Desktop:./gradlew :composeApp:run
  • Web(Wasm):./gradlew :composeApp:wasmJsBrowserDevelopmentRun
  • MCP サーバー:./gradlew :mcp-server:shadowJar(下記の「MCP サーバー」セクションを参照)
  • ADK エージェント Dev UI:./gradlew :agents:startDevUI(下記の「AI エージェント」セクションを参照。MCP サーバーの実行が必要です)
Android(Compose)
Screenshot_20260524_101722
iOS(SwiftUI/Compose)
Simulator Screenshot - iPhone 17 Pro - 2026-05-24 at 10 18 46
Desktop 向け Compose
Screenshot 2026-05-24 at 10 11 18 Screenshot 2026-05-24 at 10 12 37
Web 向け Compose(Wasm)
Screenshot 2026-05-24 at 10 10 29
Kotlin Notebook

ClimateTrace.ipynb を参照してください。

Screenshot 2023-12-14 at 20 33 45 ### MCP サーバー

mcp-server モジュールはKotlin MCP SDKを使用して、国ごとの排出量データを返す MCP ツールエンドポイントを公開します。このエンドポイントは、以下に示すように Claude Desktop に接続できます。このモジュールでは、同じ KMP 共有コードを使用しています。

Screenshot 2025-07-06 at 17 24 20

たとえば、MCP サーバーを Claude Desktop と連携するには、まず Gradle の shadowJar タスクを実行し、次に「Developer Settings」の「Edit Config」を選択して、以下のような設定を追加します(パスはご自身の環境に合わせて変更してください)。

{
  "mcpServers": {
    "climatetrace": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/ClimateTraceKMP/mcp-server/build/libs/serverAll.jar",
        "--stdio"
      ]
    }
  }
}
AI エージェント

アプリにはKoogを使用して構築されたエージェント画面があり、LLM ベースのエージェントを使って排出量データを問い合わせることができます。

agents モジュールには、Google のKotlin 用 Agent Development Kit(ADK)を使用して構築された Kotlin ベースのエージェントも含まれています。このエージェントは共有 KMP コードに直接依存するのではなく、MCP クライアントとして動作し、mcp-server モジュールに(Streamable HTTP トランスポートを介して)接続して、ツールとして排出量データを取得します。

実行するには、まず MCP サーバーを Streamable HTTP モードで起動し、次に ADK Dev UI を(別のターミナルで)起動します。

./gradlew :mcp-server:run --args="--streamable-http-server 8080"
./gradlew :agents:startDevUI

Dev UI は http://localhost:8081 で利用できます。local.properties にある gemini_api_key エントリー(Koog エージェントで使用するものと同じもの)が自動的に読み込まれます。または、GEMINI_API_KEY/GOOGLE_API_KEY 環境変数を設定してください。

コンソールから固定のプロンプトを指定してエージェントを一度実行する ./gradlew :agents:runAdkAgent タスクもあります。

UI テスト

Android クライアントと iOS クライアントで共有されるMaestroの UI テストフローがあり、CI によってエミュレーターとシミュレーター上で実行されます(例:maestro test -e APP_ID=dev.johnoreilly.climatetrace maestro/ClimateTraceKMP.flow)。

Kotlin Multiplatform/Compose/SwiftUI のサンプル一覧

コメント

MCP は初めてですか?

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

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