gridprims

Use gridprims from your AI agent

The same tools run locally through an MCP server in a clone of the repository. It never touches the network and reads only the folders you allow.

Clone the repository, then add the server to your client. Replace /path/to/gridprims with your clone and /path/to/your/meter-files with a folder of meter files it may read.

Claude Code

terminal

claude mcp add gridprims -- node --permission --allow-fs-read=/path/to/gridprims --allow-fs-read=/path/to/your/meter-files /path/to/gridprims/mcp/server.mjs --allow-dir /path/to/your/meter-files

Claude Desktop

claude_desktop_config.json

{
  "mcpServers": {
    "gridprims": {
      "command": "node",
      "args": [
        "--permission",
        "--allow-fs-read=/path/to/gridprims",
        "--allow-fs-read=/path/to/your/meter-files",
        "/path/to/gridprims/mcp/server.mjs",
        "--allow-dir",
        "/path/to/your/meter-files"
      ]
    }
  }
}

VS Code

.vscode/mcp.json

{
  "servers": {
    "gridprims": {
      "type": "stdio",
      "command": "node",
      "args": [
        "--permission",
        "--allow-fs-read=/path/to/gridprims",
        "--allow-fs-read=/path/to/your/meter-files",
        "/path/to/gridprims/mcp/server.mjs",
        "--allow-dir",
        "/path/to/your/meter-files"
      ]
    }
  }
}

Cursor

~/.cursor/mcp.json

{
  "mcpServers": {
    "gridprims": {
      "command": "node",
      "args": [
        "--permission",
        "--allow-fs-read=/path/to/gridprims",
        "--allow-fs-read=/path/to/your/meter-files",
        "/path/to/gridprims/mcp/server.mjs",
        "--allow-dir",
        "/path/to/your/meter-files"
      ]
    }
  }
}

It offers six tools: search, describe, run, analyze a file, query public data, and prepare a problem report for you to send.

The data addresses

Every dataset version is a folder of plain files at a permanent address. There is no key and no account.

The data addresses
AddressWhat it holds
/data/<dataset>/current.jsonThe current version id, such as {"dataset": "eia-861", "version": "2026-10"}.
/data/<dataset>/<version>/manifest.jsonThe version's manifest: publisher, terms, credit, as-of and retrieved dates, the raw files with their SHA-256, and each table's columns, license, credits, changelog, shards, and download.
/data/<dataset>/<version>/<table>.csv.gzA table as gzip CSV: ISO dates, a point for decimals, and empty cells for missing values.
/data/<dataset>/<version>/<table>/<state>.binA table's rows for one state in the column shard format documented in docs/formats/column-shard.md.
/data/<dataset>/latest/<file>Redirects to the same file in the current version. Cite the permanent address, which never changes.

Data files are served to any origin without credentials, so a notebook or another website can read them directly.

const m = await (await fetch('https://gridprims.com/data/eia-861/latest/manifest.json')).json();
console.log(m.version, m.tables.map((t) => t.name));

The shard format and the manifest fields are documented in the repository, with a script that rebuilds every version from the publishers' own files.

Report a problem

Tell us what looks wrong. The report holds only what you see in the preview below. Nothing is sent until you press Send.

Exactly what will be sent