Skip to main content
Glama
GSA-TTS

mcp-server-eia

by GSA-TTS

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoIf set, the server runs over HTTP on this port (alternative to DATABRICKS_APP_PORT).
EIA_API_KEYYesYour free EIA API key from https://www.eia.gov/opendata/register.php
DATABRICKS_APP_PORTNoIf set, the server runs over HTTP on this port (alternative to PORT).

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

CapabilityDetails
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

NameDescription
eia_browse_routesA

Explore the EIA dataset tree, or fetch a leaf dataset's metadata.

Behavior depends on the node type at route:

  • Intermediate node -> returns {"type": "routes", "routes": [...]}, each item being a selectable child route id + name/description.

  • Leaf dataset -> returns {"type": "dataset", ...} with the available frequencies, facets (facet ids to filter on), valid data columns, and the startPeriod/endPeriod date coverage. Feed these into eia_get_data.

Start with route="" to discover datasets, then drill down. This is the primary discovery tool; call it before eia_get_data to learn the valid columns, facet ids, and frequency for a dataset.

eia_list_facetsA

List the facet ids you can filter a dataset by.

Returns {"route": ..., "facets": [{"id", "description"}, ...]}. Pass a facet id to eia_get_facet_options to enumerate its valid values, then use those values in the facets argument of eia_get_data.

eia_get_facet_optionsA

List the valid option values (ids) for one facet of a dataset.

Returns {"route", "facet_id", "total", "options": [...]}. Use the returned ids as values in the facets argument of eia_get_data, e.g. facets={"stateid": ["CA", "NY"]}.

eia_get_dataA

Query rows from an EIA dataset with filtering, sorting, and paging.

Returns a structured payload: { "route", "frequency", "description", "total": , "offset", "length", "returned": , "has_more": , "next_offset": <int | None>, "data": [ {row}, ... ], "warnings": [ ... ] # present only when relevant }

Workflow: use eia_browse_routes to find the route, its valid data_columns, frequencies, and facet ids; use eia_get_facet_options for valid facet values; then call this tool. If data columns are wrong the API may return empty rows, so verify columns against the metadata.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a clear role: browse_routes discovers datasets and metadata, list_facets enumerates facets, get_facet_options lists facet values, and get_data queries rows. There is minor overlap between browse_routes and list_facets since browse_routes already returns facet IDs, but the descriptions clarify when to use each.

Naming Consistency5/5

All tools follow the consistent eia_<verb>_<noun> pattern with snake_case. The verbs 'browse', 'list', and 'get' are used predictably across the set, making it easy to infer functionality from the name.

Tool Count5/5

With only 4 tools, the server is well-scoped for its purpose. Each tool addresses a distinct step in the EIA data access workflow: discovery, metadata, facet enumeration, and data retrieval, without unnecessary bloat.

Completeness4/5

The tool set covers the full workflow from discovering routes to fetching filtered data with paging. A minor gap is that there is no direct tool to list data columns or frequencies without calling browse_routes, but that metadata is returned in browse_routes, so it's workable.

Maintenance

ActivitySlowing
ResponsivenessNo issues