ClimateTraceKMP MCP
A Kotlin MCP server that gives an agent ClimateTrace greenhouse gas emissions data by country and year, along with population
- 347 ★ on the repository
- Last commit
- Apache-2.0
Minimal access
Why this level
- The server only reads open ClimateTrace data and writes nothing to disk or external services
Install
- Works in
Manual install
./gradlew :mcp-server:shadowJarBuilds mcp-server/build/libs/serverAll.jar; a JDK is required.
Access and checks
How we reviewMinimal accessThe tool runs nothing and makes no network calls.
- The server only reads open ClimateTrace data and writes nothing to disk or external services
This is third-party code. Review the repository files before installing.
What it does
The ClimateTraceKMP repository holds a Kotlin Multiplatform app with emissions data from climatetrace.org, and one of its modules is mcp-server. It is built on the Kotlin MCP SDK and gives an agent four tools: get-countries lists countries, get-country-asset-emissions and get-emissions return total emissions for countries by three-letter ISO codes for a given year, and get-population gives a country's population for per-capita calculations. The module uses the same shared code as the Android, iOS, desktop and web apps. The server is built with the gradle shadowJar task and run as java -jar serverAll.jar with the --stdio argument. That is how it is connected to Claude Desktop through Edit Config. Network modes exist too: --streamable-http-server and --sse-server with a port number, 8080 by default. The agents module beside it holds a sample agent on Google ADK that connects to the server as an MCP client over HTTP.
Who it is for. Climate analysts and researchers who ask Claude Desktop to compare country emissions, and Kotlin developers who want an example MCP server on shared code.
Good fit when
- You want to compare the emissions of Germany, France and Poland for one year and compute per-capita values
- An agent needs a list of countries with ISO codes to query data for them afterwards
- You develop with Kotlin Multiplatform and want an example MCP server that reuses the shared data layer
- For a demo you want to connect a local MCP server to Claude Desktop in five minutes
- An agent on Google ADK should get this data as tools over Streamable HTTP
Not a fit when
- You need emissions by individual assets and sectors: the tools return country totals
- A JDK cannot be installed and the project cannot be built with gradle: there is no ready package in a registry
- You need a permanent public service: the repository is built and run on your own
- A one-off export from climatetrace.org is enough for the project, no agent needed
Example request
Get Germany's and France's 2022 emissions from ClimateTrace along with their populations, then compute emissions per personMCP
- Transport
- stdio, http, sse
- Authentication
- not required
Limitations
- There is no ready package: build the server with the gradle mcp-server:shadowJar task and put the path to serverAll.jar into the client config.
- The repository description calls it a project for showing data. The MCP server is one module beside the Android, iOS, desktop and web apps.
- The server returns emission values as a list without explanatory labels, so pass country names and years to the agent explicitly in the request.
How to disable. Delete the climatetrace entry from mcpServers in the client config and restart Claude Desktop. The built serverAll.jar can be deleted together with the cloned repository.
FAQ
How do I connect ClimateTrace MCP to Claude Desktop?
Build the jar with ./gradlew :mcp-server:shadowJar, open Developer Settings, Edit Config and add a climatetrace server with the command java and the arguments -jar, the path to serverAll.jar and --stdio. After the app restarts the tools appear in the list.
What data does the server give?
A list of countries, total emissions by country for a chosen year and a country's population. Countries are given by three-letter ISO codes, and the emissions source, per the project description, is ClimateTrace from climatetrace.org.
Can I run the server over the network instead of stdio?
Yes. The --streamable-http-server argument with a port number starts Streamable HTTP and --sse-server starts SSE. The default port is 8080. Run through gradle with ./gradlew :mcp-server:run --args="--streamable-http-server 8080".
Are API keys required?
The server needs none, and the README lists no environment variables for it. The gemini_api_key is required only by the Google ADK sample agent and the app's agents screen.
What is the get-population tool for?
It returns a country's population by three-letter ISO code and is useful for per-capita emissions: request emissions with get-emissions first, then the population, and divide one by the other.
Discussion
No questions or reviews yet.
Related
MCP serversMCP server for Open-Meteo: 17 tools, a 16-day forecast, archive from 1940, air quality, marine data, floods and climate
An MCP server with a toolbox for global briefs: markets, SEC filings, conflict, climate and news from open sources
An MCP server from AntV for generating charts and diagrams: 25+ visualization types, from lines and bars to maps, mind maps and network graphs
MCP server that connects Claude Code and Codex to an open R or Python session in RStudio and Positron, where your data lives
An agent queries GreptimeDB metrics, logs and traces with SQL, TQL and RANGE, with write protection and data masking
Official Data Commons MCP server: an agent finds statistical indicators and pulls observations for countries, regions and cities.
README in short
The README presents the project as a Kotlin and Compose Multiplatform app for showing ClimateTrace data on iOS, Android, desktop, the web, in a Kotlin Notebook, as an MCP server and as AI agents. It then gives the module structure and build commands per platform. Separate sections cover the MCP server with a Claude Desktop config example, agents on Koog and ADK and Maestro UI tests.