RMI Utility Transition Hub — MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tablesA | List all tables with their column names and types. Call this first to understand what data is available before querying. |
| preview_tableA | Show the first few rows of a table to understand its structure. Use this after list_tables to see what the actual data looks like. |
| list_utilitiesA | List utilities, optionally filtered by two-letter state code (e.g. 'CO', 'TX'). Returns utility and parent names, EIA/FERC1 IDs, RMI utility type, and — when
a state is given — the capacity that utility owns in that state (MW), largest
first. |
| get_emissions_trendA | Get yearly CO2 emissions and 1.5°C pathway comparison for a utility. Returns historical CO2 (MMT), emissions implied by the utility's stated targets, its IRP projection, and RMI's 1.5°C benchmark — plus generation (TWh) and emissions intensity (metric tons/MWh).
|
| get_generation_mixA | Get electricity generation breakdown by technology for a utility. Shows capacity (GW), net generation (TWh), capacity factor, and CO2 emissions (MMT) by RMI technology group (Coal, Gas, Wind, Solar, Nuclear, Hydro, Storage, ...). By default this covers only generation the utility OWNS. The underlying table also carries non-owned energy_source rows — wholesale power purchases, net exchanges, wheeled power, energy efficiency, demand response, and negative transmission losses. Those are supply, not generation, and summing them together with owned output overstates the fleet and mixes in negative rows. Set include_purchases=True to get them as separate rows, split by the energy_source and owned_energy_source columns. The search is case-insensitive and supports partial names. Optionally filter to a single year; defaults to all years (2005-2024). |
| get_climate_alignmentA | Compare a utility's emissions to RMI's 1.5°C pathway, year by year. Adds a gap column (CO2 minus the 1.5°C benchmark: positive = above the pathway) and a status label. Historical years use reported CO2; future years fall back to the utility's stated target, then its IRP projection.
|
| query_dataA | Run a read-only SQL query against the database. DuckDB SQL syntax. Call list_tables() first to see available tables and columns. One SELECT statement per call (a leading WITH ... CTE is fine). There is no single join key across all tables: utility_id_eia — utility_information, utility_state_map, operations_emissions_by_tech / _by_fuel, reliability utility_id_ferc1 — utility_information, customers_sales, revenue_by_tech, assets_earnings_investments, debt_equity_returns, net_plant_balance respondent_id — expenditure_bills_burden, housing_units_income only emissions_targets has NO id column; join it on utility_name_irp / parent_name. utility_name and parent_name appear in most tables directly. Two traps worth knowing:
emissions_targets holds separate 'owned' and 'delivered' row sets —
filter owned_delivered or you double-count.
operations_emissions_by_tech mixes owned generation with purchased
power, exchanges, EE/DR, and negative transmission losses —
filter Example: SELECT utility_name_irp, year, emissions_co2_historical, emissions_co2_1point5c FROM emissions_targets WHERE year >= 2015 AND owned_delivered = 'delivered' ORDER BY emissions_co2_historical DESC LIMIT 20 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| decarbonization_assessment | Assess a utility's decarbonization progress against the 1.5°C pathway. |
| state_landscape | Overview of utility emissions and clean energy progress in a state. |
| investment_risk_profile | Assess a utility's financial exposure to fossil fuel assets. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| data_dictionary | Overview of the RMI Utility Transition Hub datasets and key columns. |
| methodology | RMI's methodology document: data sources, assumptions, and calculations. |
| data_dictionary_full | Full data dictionary: definitions, units, sources, and methodology for every field. |
TDQS
Scored across 7 tools
list_tables, preview_table, list_utilities, and get_generation_mix are clearly distinct, but get_emissions_trend and get_climate_alignment both promise yearly CO2 emissions versus a 1.5°C pathway. The detailed descriptions help, but an agent could easily pick the wrong one.
Most tools follow a get_/list_ + noun pattern, which is predictable. preview_table and query_data deviate slightly, but they still read naturally and fit the overall exploration-oriented convention.
Seven tools is well-scoped for a domain-specific utility data hub. Each tool has a clear role, and the count is neither bloated nor too thin.
The surface covers data discovery, table preview, utility lookup, standard analytical queries, and raw SQL for arbitrary exploration. There are no obvious dead ends for a read-only analysis server.