climatetracekmp
Kotlin/Compose Multiplatform project to show climate related emission data from https://climatetrace.org/data. Built for the Model Context Protocol to enhance A
Documentation
ClimateTraceKMP
Kotlin/Compose Multiplatform project to show climate related emission data from https://climatetrace.org/data.
Running on
- iOS (SwiftUI + shared Compose Multiplatform UI)
- Android
- Desktop
- Web (Wasm)
- Kotlin Notebook
- MCP Server
- AI Agents (Koog + Google ADK)
The iOS client as mentioned includes shared Compose Multiplatform UI code. It also includes option to use either SwiftUI or Compose code for the Country List screen (in both cases selecting a country will navigate to shared Compose emissions details screen).
Related posts:
- Kotlin MCP ๐ Kotlin Multiplatform
- Initial exploration of using Koog for developing Kotlin based AI agents
- Using Google's Agent Development Kit for Java from Kotlin code
Project structure
- `composeApp` - shared Kotlin Multiplatform code (data layer, view models and Compose Multiplatform UI) along with desktop and web entry points
- `androidApp` - Android app
- `iosApp` - iOS app (SwiftUI + shared Compose UI)
- `mcp-server` - MCP server that exposes emissions data as MCP tools (using the Kotlin MCP SDK)
- `agents` - Kotlin based AI agent built using Google's Agent Development Kit (ADK), which connects to `mcp-server` as an MCP client
Uses, amongst other things, Ktor, Koin, kstore, Voyager, KoalaPlot and Koog.
Building and running
- Android: open the project in Android Studio, or run `./gradlew :androidApp:installDebug`
- iOS: open `iosApp/iosApp.xcodeproj` in Xcode and run
- Desktop: `./gradlew :composeApp:run`
- Web (Wasm): `./gradlew :composeApp:wasmJsBrowserDevelopmentRun`
- MCP server: `./gradlew :mcp-server:shadowJar` (see MCP Server section below)
- ADK agent Dev UI: `./gradlew :agents:startDevUI` (see AI Agents section below; requires the MCP server to be running)
Android (Compose)
iOS (SwiftUI/Compose)
Compose for Desktop
Compose for Web (Wasm)
Kotlin Notebook
MCP Server
The `mcp-server` module uses the Kotlin MCP SDK to expose an MCP tools endpoint (returning per country emission data) that
can for example be plugged in to Claude Desktop as shown below. That module uses same KMP shared code.
To integrate the MCP server with Claude Desktop for example you need to firstly run gradle `shadowJar` task and then select "Edit Config" under Developer Settings and add something
like the following (update with your path)
{
"mcpServers": {
"climatetrace": {
"command": "java",
"args": [
"-jar",
"/path/to/ClimateTraceKMP/mcp-server/build/libs/serverAll.jar",
"--stdio"
]
}
}
}AI Agents
The app includes an Agents screen, built using Koog, that allows querying emissions data using an LLM based agent.
The `agents` module also includes a Kotlin based agent built using Google's Agent Development Kit for Kotlin (ADK). Rather than
depending on the shared KMP code directly, it acts as an MCP client and connects to the `mcp-server` module (over the Streamable HTTP transport) to fetch emissions data as tools.
To run it, first start the MCP server in Streamable HTTP mode, then the ADK Dev UI (in a separate terminal):
./gradlew :mcp-server:run --args="--streamable-http-server 8080"
./gradlew :agents:startDevUIThe Dev UI is then available at http://localhost:8081. A `gemini_api_key` entry in `local.properties` (the same one used by the Koog agent) is picked up automatically; alternatively set a `GEMINI_API_KEY`/`GOOGLE_API_KEY` environment variable.
There's also a `./gradlew :agents:runAdkAgent` task that runs the agent once against a fixed prompt from the console.
Full set of Kotlin Multiplatform/Compose/SwiftUI samples
- 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)
Frequently asked questions
What is climatetracekmp?
climatetracekmp is Kotlin/Compose Multiplatform project to show climate related emission data from https://climatetrace.org/data. Built for the Model Context Protocol to enhance A
How do I install climatetracekmp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is climatetracekmp open source?
Yes โ it is hosted on GitHub at https://github.com/joreilly/ClimateTraceKMP and has 301 stars.
Related MCP tools
Kotlin Multiplatform sample with SwiftUI, Jetpack Compose, Compose for Wear, Compose for Desktop, and Compose for Web clients along with Ktor backend.
Fantasy Premier League Kotlin/Compose Multiplatform sample for the Model Context Protocol. Enhance AI assistants with powerful integrations.
The official Kotlin SDK for Model Context Protocol servers and clients. Maintained in collaboration with JetBrains Trusted by 1100+ developers.
MCP server for Apple Developer Documentation - Search iOS/macOS/SwiftUI/UIKit docs, WWDC videos, Swift/Objective-C APIs & code examples in Claude, Cursor & A...
Model Context Protocol Server for Mobile Automation and Scraping (iOS, Android, Emulators, Simulators and Real Devices) TypeScript-based implementation.
MCP server for fetch web page content using Playwright headless browser. TypeScript-based implementation. Trusted by 800+ developers.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP