ClimateTraceKMP について
ClimateTraceKMPは、Climate TRACEの気候排出データを複数のアプリ向けに表示するKotlin/Compose Multiplatformプロジェクトです。MCPサーバーと、国別データを問い合わせるKotlinエージェントも含みます。
主な機能
- 01国別の排出データ表示
- 02Android、iOS、デスクトップ、WebAssembly対応
- 03Compose Multiplatformの共有UI
- 04Kotlin Notebookのサンプル
- 05KoogとGoogle ADKのエージェント
活用シーン
- 01各アプリで排出データを閲覧
- 02AIエージェントで国別排出量を照会
- 03MCPクライアントから国別データのツールを利用
MCP 対応
mcp-serverモジュールは、国別の排出データをMCPツールとして公開します。付属のGoogle ADKエージェントはMCPクライアントとしてこのサーバーに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ClimateTraceKMP
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 の排出量詳細画面に移動します)。
関連記事:
- Kotlin/Compose Multiplatform プロジェクトで Fleet と Amper を使用する
- Kotlin MCP 💜 Kotlin Multiplatform
- Kotlin ベースの AI エージェント開発における Koog の初期検討
- Kotlin コードから Google の Java 向け Agent Development Kit を使用する
- Kotlin ベースのリモート MCP サーバーを Google Cloud Run にデプロイする
- Jetpack Compose A2UI と Koog を使用して AI エージェントが生成した UI を描画する
プロジェクト構成
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)
iOS(SwiftUI/Compose)
Desktop 向け Compose
Web 向け Compose(Wasm)
Kotlin Notebook
ClimateTrace.ipynb を参照してください。
mcp-server モジュールはKotlin MCP SDKを使用して、国ごとの排出量データを返す MCP ツールエンドポイントを公開します。このエンドポイントは、以下に示すように Claude Desktop に接続できます。このモジュールでは、同じ KMP 共有コードを使用しています。
たとえば、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 のサンプル一覧
- PeopleInSpace (https://github.com/joreilly/PeopleInSpace)
- GalwayBus (https://github.com/joreilly/GalwayBus)
- Confetti (https://github.com/joreilly/Confetti)
- BikeShare (https://github.com/joreilly/BikeShare)
- FantasyPremierLeague (https://github.com/joreilly/FantasyPremierLeague)
- ClimateTrace (https://github.com/joreilly/ClimateTraceKMP)
- GeminiKMP (https://github.com/joreilly/GeminiKMP)
- MortyComposeKMM (https://github.com/joreilly/MortyComposeKMM)
- StarWars (https://github.com/joreilly/StarWars)
- WordMasterKMP (https://github.com/joreilly/WordMasterKMP)
- Chip-8 (https://github.com/joreilly/chip-8)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。