关于 ClimateTraceKMP
ClimateTraceKMP 是一个 Kotlin/Compose Multiplatform 项目,用于查看 Climate TRACE 的气候排放数据,支持多个应用目标。项目还包含 MCP 服务和可查询各国排放数据的 Kotlin Agent。
主要功能
- 01按国家查看排放数据
- 02支持 Android、iOS、桌面端和 WebAssembly
- 03共享 Compose Multiplatform UI
- 04Kotlin Notebook 示例
- 05Koog 和 Google ADK Agent
适用场景
- 01在不同应用目标中查看排放数据
- 02通过 AI Agent 查询各国排放数据
- 03让 MCP 客户端调用各国排放工具
MCP 相关
mcp-server 模块将各国排放数据作为 MCP 工具提供。项目内的 Google ADK Agent 作为 MCP 客户端连接该服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ClimateTraceKMP
用于展示 https://climatetrace.org/data 气候相关排放数据的 Kotlin/Compose Multiplatform 项目。
运行平台:
- iOS(SwiftUI + 共享的 Compose Multiplatform UI)
- Android
- 桌面端
- Web(Wasm)
- Kotlin Notebook
- MCP 服务
- AI Agent(Koog + Google ADK)
如上所述,iOS 客户端包含共享的 Compose Multiplatform UI 代码。它还提供了 Country List 屏幕的两种实现选项:SwiftUI 或 Compose(两种情况下,选择国家后都会导航至共享的 Compose 排放详情屏幕)。
相关文章:
- 在 Kotlin/Compose Multiplatform 项目中使用 Fleet 和 Amper
- Kotlin MCP 💜 Kotlin Multiplatform
- 使用 Koog 开发 Kotlin AI Agent 的初步探索
- 在 Kotlin 代码中使用 Google 的 Java Agent Development Kit
- 将基于 Kotlin 的远程 MCP 服务部署到 Google Cloud Run
- 使用 Jetpack Compose A2UI 和 Koog 渲染 AI Agent 生成的 UI
项目结构
composeApp- 共享的 Kotlin Multiplatform 代码(数据层、视图模型和 Compose Multiplatform UI),以及桌面端和 Web 入口点androidApp- Android 应用iosApp- iOS 应用(SwiftUI + 共享的 Compose UI)mcp-server- 将排放数据作为 MCP 工具公开的 MCP 服务(使用 Kotlin MCP SDK)agents- 使用 Google 的 Agent Development Kit(ADK)构建的 Kotlin AI Agent,它通过 MCP 客户端连接到mcp-server
此外还使用了 Ktor、Koin、kstore、Voyager、KoalaPlot 和 Koog 等技术。
构建和运行
- Android:在 Android Studio 中打开项目,或运行
./gradlew :androidApp:installDebug - iOS:在 Xcode 中打开
iosApp/iosApp.xcodeproj并运行 - 桌面端:
./gradlew :composeApp:run - Web(Wasm):
./gradlew :composeApp:wasmJsBrowserDevelopmentRun - MCP 服务:
./gradlew :mcp-server:shadowJar(见下文的 MCP Server 部分) - ADK Agent Dev UI:
./gradlew :agents:startDevUI(见下文的 AI Agents 部分;需要 MCP 服务正在运行)
Android(Compose)
iOS(SwiftUI/Compose)
Compose 桌面端
Compose Web(Wasm)
Kotlin Notebook
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 Agent
应用包含一个使用 Koog 构建的 Agent 页面,可通过基于大模型的 Agent 查询排放数据。
agents 模块还包含一个使用 Google 的 Agent Development Kit for Kotlin(ADK)构建的 Kotlin Agent。它不会直接依赖共享 KMP 代码,而是作为 MCP 客户端,通过 Streamable HTTP 传输连接到 mcp-server 模块,并将排放数据作为工具获取。
要运行它,请先以 Streamable HTTP 模式启动 MCP 服务,然后在单独的终端中启动 ADK Dev UI:
./gradlew :mcp-server:run --args="--streamable-http-server 8080"
./gradlew :agents:startDevUI
随后可通过 http://localhost:8081 访问 Dev UI。系统会自动读取 local.properties 中的 gemini_api_key 条目(与 Koog Agent 使用的条目相同);或者设置 GEMINI_API_KEY/GOOGLE_API_KEY 环境变量。
此外,还有一个 ./gradlew :agents:runAdkAgent 任务,可在控制台中使用固定提示词运行一次 Agent。
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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。