Docs/Open data/MCP Server

MCP Server

Public MCP server: query InfraSure data, including governed annual wholesale pricing context, from Claude Desktop, Claude.ai, ChatGPT, Cursor, Windsurf, Zed via one shareable URL. 18 tools, anonymous, rate-limited.

InfraSure runs a public MCP (Model Context Protocol) server that exposes the platform's energy data — 15,500+ operating plants, 9,800+ interconnection-queue projects, 8,000+ active data centers, 32,799 wholesale pricing nodes, and 57K+ classified news articles — to any LLM client that speaks MCP. Plug one URL into Claude.ai, Claude Desktop, ChatGPT (Apps SDK), Cursor, Windsurf, or Zed and ask natural-language questions over the same data the website serves.

Public, anonymous, free. Rate-limited at 30 requests/minute per IP. No login or API key required.

Connection URL

text
https://www.infrasure.ai/api/mcp

Streamable HTTP transport per the MCP 2025-11-25 spec. Use the www. subdomain — the apex redirects 307 and some MCP clients don't follow redirects.

Three ways to connect

Claude.ai web (no install)

  1. Go to claude.ai → Settings → Connectors
  2. Click Add custom connector
  3. Paste the URL above

Claude Desktop

On newer builds: Settings → Developer (or Connectors) → Add MCP server → paste the URL.

For older builds, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{
  "mcpServers": {
    "infrasure": {
      "url": "https://www.infrasure.ai/api/mcp"
    }
  }
}

Then quit and re-open Claude Desktop fully (Cmd-Q on macOS).

Cursor / Windsurf / Zed

Each has its own MCP settings location, but the URL above is what you paste. Cursor caps tools at 40 per agent — this server publishes 18, well within the limit.

Tool catalog

Eighteen tools span entity lookups, annual wholesale pricing, search, news, comparison, methodology, and aggregation. Each response carries _meta.as_of and _meta.source attribution.

ToolWhat it does
search_plantsFilter operating plants by query, fuel, state, ISO, capacity, owner.
get_plantFull plant detail plus governed pricing context only when an accepted generator-to-node link exists.
get_projectFull JSONB blob for one queue project by slug.
search_projectsFilter queue projects by query, state, region, technology, status, MW, developer, queue year.
search_data_centersFilter production data centers by query, state, ISO/RTO, type, stage, operator, and known MW.
get_data_centerPublic facility detail plus a bounded same-market pricing-node spatial reference when available.
get_pricing_node_historyAnnual USD/MWh node history; source-backed by default, with modeled backfills available only by explicit opt-in.
search_newsSearch news articles by query, entity link, lane (COMMITMENT/CONSTRAINT/CONTEXT), event type, date.
get_news_extractedResolution-layer canonical facts (developer, EPC, PPA, milestones) for one entity.
find_by_extracted_factReverse-lookup: every entity where a fact has a specific value. The differentiator.
find_methodologyRank governed InfraSure analysis methods for a decision question.
get_methodologyLoad one selected methodology and its allowed/blocked claim contract.
search_live_evidenceSearch governed, dated ISO/RTO and federal current-state evidence.
compare_entitiesSide-by-side grid of 2–8 entities (plants and/or projects). Supports nested-field paths.
aggregateGROUP BY plants/projects on state/fuel/iso/tech/status/owner with count/sum/avg metrics.
nearby_plantsPlants near a given plant_id by Haversine distance, pre-computed.
plants_by_ownerPlants owned/operated by a company (substring across canonical_owner / utility / parent).
get_aggregate_news_statsPre-computed news distribution by category/state/fuel/source/owner.

Example prompts

Once connected, ask in plain language. The LLM picks the right tool(s) and renders the result.

  • “Find solar plants in Texas above 500 MW.”
  • “Who owns the largest plants in CAISO?”
  • “Show me NextEra Energy's biggest solar projects.”
  • “What battery projects in Texas are over 100 MW in the queue?”
  • “Find operating hyperscale data centers in Virginia and show their reported power.”
  • “Show the source-backed annual wholesale price history for the pricing reference near this data center.”
  • “Total solar capacity by state, top 10.”
  • “Compare Palo Verde Nuclear and Diablo Canyon.”
  • “Recent CONSTRAINT-lane news about wind projects.”
  • “Every project where the developer is Primergy Solar.”

Provenance

Every response carries source attribution. Where a fact comes from a single underlying source (a plant's EIA-reported capacity, a FERC-filed financial line), that source is named. Where a fact is resolved from multiple news articles (developer, EPC, PPA terms), the resolution carries an as_of date, confidence score, and counts of supporting + total articles. Downstream LLMs can cite back to the primary source — they don't need to invent attribution.

Pricing follows an additional relationship contract. Plants receive a pricing node only through an accepted generator-grain link; InfraSure does not infer one from a name or distance. A data-center node is a provisional same-market spatial reference within 5 km, not proof of utility service or settlement. Annual history is wholesale USD/MWh, not a live price, plant capture price, retail tariff, demand charge, utility bill, or contracted price. Source-backed values are the default; modeled years require explicit opt-in and remain labeled.

Discovery

A machine-readable server card lives at /.well-known/mcp/server-card.json for directory crawlers (PulseMCP, mcp.so) and clients that probe before connecting.

Send to a friend

Copy this verbatim:

text
Hey — there's a public MCP server with US energy-infrastructure data
(plants, queue projects, data centers, annual wholesale pricing, and news). Plug this URL
into any LLM client (Claude, ChatGPT, Cursor):

  https://www.infrasure.ai/api/mcp

In Claude.ai or Claude Desktop: Settings → Connectors →
Add custom connector → paste URL.

Then ask things like "find solar plants in Texas above 500 MW",
"who owns Palo Verde", or "show the source-backed annual wholesale
price history near this data center". Free, anonymous, 30 req/min per IP.

Limits + roadmap

  • 30 requests/minute per IP (sliding window). Heavy tools (compare_entities, aggregate) cost more rate-limit budget.
  • 429s carry standard X-RateLimit-* headers + a JSON-RPC error response.
  • Section-gating on get_plant / get_project to trim payload by section is on the roadmap. Today these return the full JSONB blob.
  • Pricing-node coordinates are reference points. Data-center proximity is bounded and same-market, but it is not a utility-service or electrical-connectivity assertion.
  • Per-tool API keys + OAuth 2.1 are deferred. Anonymous + rate limit is the v1 model.
  • A .mcpb Desktop Extension for one-click install is planned but not shipped yet.