DC Hub — Data Center Site Selection & Colocation: Electricity, Power Grid, Gas, Fiber

Live power, grid, gas, fiber + data-center capacity to buy or lease in kW/MW — query and cite.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
86%
Calidad de los nombres
95%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'get_power_availability_timeline' name length outside 3-30 rangeen get_power_availability_timeline

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,729Tokens (definiciones de herramientas)
~3.6 KBTamaño de respuesta típico
Impacto significativo en la atención (3.69% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://dchub.cloud/mcp"
    }
  }
}

Puntos de conexión remotos

https://dchub.cloud/mcpstreamable-http
https://dchub.cloud/mcp/registrystreamable-http
https://dchub.cloud/mcp/claudestreamable-http
https://dchub.cloud/mcp/grokstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢execute_plan(intent, context, market, capacity_mw, iso, ...)

Answer a data-center infrastructure question that spans several topics in one call: markets and the Data Center Power Index (DCPI), grid power and headroom, interconnection queues, fiber, water and climate risk, tax incentives, and deals. Pass the user's question unchanged as intent. A rule-based planner (no AI model) picks the lookups, runs them and returns each step's result with a replay of how the answer was built. Use this first when a question has more than one part.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "intent": {
      "type": "string",
      "description": "The user's infrastructure question, passed through UNCHANGED. Examples: \"rank markets for a 200 MW AI campus\" · \"evaluate 100 MW power headroom for a GPU training cluster in PJM\" · \"compare Dallas vs Phoenix for a hyperscale campus\" · \"find 100 MW of buildable capacity near Ashburn\" · \"where do fiber density and grid headroom overlap in Atlanta\""
    },
    "context": {
      "description": "Optional structured hints AND step-arg overrides: {lat, lon, iso, market, capacity_mw, candidate_id, state, since} — user-supplied values beat minted ones. The typed top-level params below are merged into this and WIN on conflict."
    },
    "market": {
      "description": "Metro slug or name to pin the analysis to, e.g. \"ashburn\". Beats any market the planner would mint.",
      "type": "string"
    },
    "capacity_mw": {
      "description": "Target capacity in MW, e.g. 100.",
      "type": "number"
    },
    "iso": {
      "description": "ISO/RTO code to pin geography, e.g. \"PJM\", \"ERCOT\".",
      "type": "string"
    },
    "state": {
      "description": "US state code, e.g. \"VA\".",
      "type": "string"
    },
    "lat": {
      "description": "Latitude for a specific site.",
      "type": "number"
    },
    "lon": {
      "description": "Longitude for a specific site.",
      "type": "number"
    },
    "max_steps": {
      "description": "Max plan steps to execute, 1-8 (default 6)"
    },
    "max_fanout": {
      "description": "Max per-finalist fan-out calls for one step, 1-3 (default 2)"
    },
    "cohort": {
      "description": "Optional experiment tag for adoption/retention measurement, e.g. \"cohort.front_door\". Has NO effect on routing, planning, geography or results — it is recorded only. Put your user's question in `intent` and the tag HERE; never inside the intent string, which would break classification. Max 64 chars, [a-z0-9._-]; a malformed tag is ignored, never an error."
    }
  },
  "required": [
    "intent"
  ]
}
🟢get_grid_scoreboard

Live grid scoreboard: US grid operators (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE, BPA, TVA), Great Britain, European bidding zones, Taiwan, Japan, South Korea and Brazil, ranked side by side on each feed's latest published reading: renewable share (wind+solar+hydro), gas share, fuel mix in MW and demand, greenest first. Freshness differs by feed, so read each row's mix_age_hours before calling a reading current. No arguments. Answers "which grid is cleanest right now".

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢get_market_dcpi_rank(market_slug)

DCPI rank for a single market: BUILD/CAUTION/AVOID verdict, 0-100 composite_score (verdict-aware), excess_power_score, constraint_score, time_to_power_months. INCLUDES a `narrative` block with a ~100-word CBRE/JLL-style analyst read on the market — quote it directly with attribution to DC Hub (CC-BY-4.0). Use to answer "should I build here?" with structured reasoning + ready-to-cite prose across 300+ scored markets worldwide. Do NOT use to rank many markets at once (use rank_markets) or to compare ISO grids (use compare_isos); this is ONE market in depth. Keyless calls return a preview.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "market_slug": {
      "type": "string",
      "description": "Market slug (metro), e.g. northern-virginia, dallas, phoenix — valid slugs come from rank_markets / get_market_dcpi_rank"
    }
  },
  "required": [
    "market_slug"
  ]
}
🟢search_facilities(query, country, state, city, operator, ...)

Search DC Hub's global data-center facility map (170+ countries; corroborated count pending) by text query, country, state, city, operator, or capacity range (min_capacity_mw, max_capacity_mw); limit and offset page through results. Returns each facility's name, provider, location and capacity. Use it for inventory lookups (which facilities match these filters); for a question that also needs power, fiber or risk context, use execute_plan. Keyless calls return a preview.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Free-text search over facility name/operator/location (mapped to the backend `q` param), e.g. \"hyperscale Ashburn\"",
      "type": "string"
    },
    "country": {
      "description": "ISO 3166-1 alpha-2 country code, e.g. US, GB, SG",
      "type": "string"
    },
    "state": {
      "description": "US state abbreviation or region, e.g. VA, TX",
      "type": "string"
    },
    "city": {
      "description": "City name to filter facilities, e.g. Ashburn, Dallas",
      "type": "string"
    },
    "operator": {
      "description": "Operator/provider company name, e.g. Equinix, Digital Realty",
      "type": "string"
    },
    "min_capacity_mw": {
      "description": "Minimum power capacity filter in megawatts (MW)",
      "type": "number"
    },
    "max_capacity_mw": {
      "description": "Maximum power capacity filter in megawatts (MW)",
      "type": "number"
    },
    "tier": {
      "description": "Uptime Institute tier filter (1-4)",
      "type": "integer",
      "minimum": 1,
      "maximum": 4
    },
    "limit": {
      "description": "Max results to return (1-500; default varies by tool)",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "description": "Pagination offset, 0-based (skip this many results)",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "mpp_pay": {
      "description": "Autonomous payment (Stripe MPP), step 1: set true to receive a signed per-call payment challenge (the challenge states the amount) for this call instead of the free preview. No money moves — a challenge is a price quote. Humans never set this, so it does not affect the normal free/trial funnel.",
      "type": "boolean"
    },
    "mpp_credential": {
      "description": "Autonomous payment (Stripe MPP), step 2: the Shared Payment Token you minted for challenges[0]. Set it here to pay that challenge for this single call and receive the full result — no API key, no subscription, no human. One payment covers one call.",
      "type": "string"
    }
  }
}
🟢get_power_availability_timeline(state, years, mw)

When power gets easier in one US state, year by year: new generation coming online (EIA-860M, kept separate as under construction, testing and planned), scheduled retirements, and interconnection-queue depth as congestion context (the queue has no delivery dates). cumulative_firm_signal_mw counts only under-construction and testing MW minus retirements. Arguments: state (required), years, mw. Supply-side signals, not a promise that a load can connect.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "description": "2-letter US state code (required), e.g. OH, GA, TX — the timeline grain; a state can span ISOs and the response reports ISO membership as context"
    },
    "years": {
      "description": "Window in years from now, 1-6 (default 5)",
      "type": "number"
    },
    "mw": {
      "description": "Optional target MW for CONTEXT ONLY — echoed back with an explicit note; never converted into an energize-by date, which this data cannot honestly state",
      "type": "number"
    }
  },
  "required": [
    "state"
  ]
}
🟢get_hosting_capacity(lat, lon, latitude, lng, longitude, ...)

Utility-published feeder hosting capacity: the MW a named distribution feeder can take, from utilities' own hosting-capacity maps (a named set of utilities in the Northeast, Mid-Atlantic and Midwest, not nationwide). Call with lat and lon (radius_km, default 25), with a utility or market for a whole territory, or with no arguments for the list of covered markets. Check capacity_type before quoting a number, and count distinct_feeders, not rows.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lat": {
      "description": "Latitude of the point to search around, decimal degrees. Must be paired with lon.",
      "type": "number"
    },
    "lon": {
      "description": "Longitude of the point to search around, decimal degrees. Must be paired with lat.",
      "type": "number"
    },
    "latitude": {
      "description": "Alias for lat — either name works",
      "type": "number"
    },
    "lng": {
      "description": "Alias for lon — either name works",
      "type": "number"
    },
    "longitude": {
      "description": "Alias for lon — either name works",
      "type": "number"
    },
    "radius_km": {
      "description": "Search radius in km around lat/lon (default 25, max 150). Ignored when utility/market is passed — that mode covers the utility's entire published extent.",
      "type": "number",
      "minimum": 1,
      "maximum": 150
    },
    "utility": {
      "description": "Utility or market name, case-insensitive substring — e.g. \"Ameren Illinois\", \"Con Edison\", \"Providence\". Searches that utility's whole published territory instead of a point radius. Call with NO arguments to list every covered utility.",
      "type": "string"
    },
    "market": {
      "description": "Alias for utility — either name works (e.g. \"Northern Virginia · Richmond\", \"New York City · Westchester\").",
      "type": "string"
    },
    "capacity_type": {
      "description": "Restrict to one published type: \"load\" (what a new data-center load can DRAW — the type that answers siting), \"gen\" (DER/generation EXPORT headroom — NOT available load), or \"bus_headroom\" (transmission bus MW). Omit to get all three reported separately.",
      "type": "string"
    },
    "min_mw": {
      "description": "Only return feeders whose published capacity is at or above this many MW.",
      "type": "number"
    },
    "limit": {
      "description": "Max results to return (1-500; default varies by tool)",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  }
}
🟢source_capacity(slug, market, state, min_mw, min_kw, ...)

Search DC Hub Capacity Source for data-center capacity to buy or lease, by size (min_kw or min_mw) and location (region such as europe, or a country, state, market or location). Size is matched against what a listing can deliver: contiguous_kw, the largest contiguous block, and min_contract_kw, the smallest chunk the provider will contract. Also filters by delivery_type and available_by. Returns listing teasers; an introduction is requested with request_capacity_intro.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "description": "One listing: its slug or numeric id exactly as items[].slug / items[].id return it. Omit to browse teaser cards",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ]
    },
    "market": {
      "description": "Browse filter: market name as it appears on a listing, e.g. \"Dallas\"",
      "type": "string"
    },
    "state": {
      "description": "Browse filter: two-letter US state, e.g. \"TX\"",
      "type": "string"
    },
    "min_mw": {
      "description": "Browse filter: the size your human needs, in MW (min_kw is the same filter in kW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total.",
      "type": "number"
    },
    "min_kw": {
      "description": "Browse filter: the size your human needs, in kW (min_mw is the same filter in MW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total.",
      "type": "number"
    },
    "region": {
      "description": "Browse filter: comma-separated regions from north_america, latin_america, europe, asia_pacific and middle_east_africa; the aliases emea, apac, latam and americas also work, e.g. \"europe\" or \"emea, apac\"",
      "type": "string"
    },
    "location": {
      "description": "Browse filter: comma-separated free text matched against each listing's region, country, state and metro, e.g. \"Germany\" or \"Texas, Phoenix\"",
      "type": "string"
    },
    "delivery_type": {
      "description": "Browse filter: how the capacity is delivered: land, powered_shell, turnkey or colocation",
      "type": "string",
      "enum": [
        "land",
        "powered_shell",
        "turnkey",
        "colocation"
      ]
    },
    "available_by": {
      "description": "Browse filter: only listings available by this date, as YYYY-MM or YYYY-MM-DD",
      "type": "string"
    },
    "limit": {
      "description": "Max results to return (1-500; default varies by tool)",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  }
}
🟢get_changes(since, limit)

What changed in DC Hub since a timestamp: DCPI 7-day market movers, newly found facilities, and new M&A deals and news; keyed callers with saved sites also get per-site changes. Pass since as ISO-8601 or "24h" / "7d" (default 24h) and pass the response's generated_at back next time. Answers "what changed this week". Keyless calls return a preview.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "since": {
      "description": "Return changes since this ISO-8601 timestamp (YYYY-MM-DD or full datetime) or shorthand \"24h\"/\"7d\"; default 24h",
      "type": "string"
    },
    "limit": {
      "description": "Max results to return (1-500; default varies by tool)",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  }
}
🟢get_grid_intelligence(region_id, iso, region, market, mpp_pay, ...)

Grid headroom and interconnection-queue brief for one grid: "can I get N MW in this ISO, and how long will it take?". region_id is one of PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE, or a US balancing authority (those return the live generation mix). Supply-side signals, not a promise that a load can connect. Full results need a paid DC Hub key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "region_id": {
      "description": "Grid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g. SOCO, DUK, AZPS, TVA), or the PJM Dominion zone region_id=\"PJM-DOM\" for live Ashburn / Northern Virginia zone load + real-time LMP (the world's #1 DC market, invisible in EIA)",
      "type": "string"
    },
    "iso": {
      "description": "Alias for region_id — the ISO/RTO or balancing-authority code",
      "type": "string"
    },
    "region": {
      "description": "Alias for region_id — the ISO/RTO or balancing-authority code",
      "type": "string"
    },
    "market": {
      "description": "Market NAME or metro slug instead of a grid code, e.g. \"Ashburn\", \"northern-virginia\", \"dallas\". Resolved to its ISO through the published DCPI market row before the brief is built; the answer carries a resolved_from block naming what it resolved to. Not an alias for region_id — \"Ashburn\" is not a grid code.",
      "type": "string"
    },
    "mpp_pay": {
      "description": "Autonomous payment (Stripe MPP), step 1: set true to receive a signed per-call payment challenge (the challenge states the amount) for this call instead of the free preview. No money moves — a challenge is a price quote. Humans never set this, so it does not affect the normal free/trial funnel.",
      "type": "boolean"
    },
    "mpp_credential": {
      "description": "Autonomous payment (Stripe MPP), step 2: the Shared Payment Token you minted for challenges[0]. Set it here to pay that challenge for this single call and receive the full result — no API key, no subscription, no human. One payment covers one call.",
      "type": "string"
    }
  },
  "anyOf": [
    {
      "properties": {
        "region_id": {}
      },
      "required": [
        "region_id"
      ]
    },
    {
      "properties": {
        "iso": {}
      },
      "required": [
        "iso"
      ]
    },
    {
      "properties": {
        "region": {}
      },
      "required": [
        "region"
      ]
    },
    {
      "properties": {
        "market": {}
      },
      "required": [
        "market"
      ]
    }
  ]
}
🟢analyze_site(candidate_id, lat, lon, location, latitude, ...)

Score one site for data-center suitability. Pass lat and lon, a candidate_id from get_refined_queue, or a market name as location; capacity_mw and state refine it. Returns a 0-100 score with power, gas, fiber, market and risk sub-scores and the nearby infrastructure behind them. Example: lat=33.45 lon=-112.07 capacity_mw=100 state=AZ. Full results need a paid DC Hub key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "candidate_id": {
      "description": "PREFERRED for queue survivors: a cand_… id from get_refined_queue — coordinates come from the FROZEN mint (lat/lon args are ignored; zero transcription drift; expired ids fail closed with candidate_expired). See dchub.cloud/docs/candidate-lifecycle",
      "type": "string"
    },
    "lat": {
      "description": "Site latitude in decimal degrees (-90 to 90; required unless candidate_id or location given), e.g. 33.45",
      "type": "number"
    },
    "lon": {
      "description": "Site longitude in decimal degrees (-180 to 180; required unless candidate_id or location given), e.g. -112.07",
      "type": "number"
    },
    "location": {
      "description": "Market NAME or metro slug instead of coordinates, e.g. \"ashburn\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so. This is a MARKET-level read, not the parcel you named — pass lat/lon for a specific site. Not an alias for lat/lon: a place name is not a coordinate.",
      "type": "string"
    },
    "latitude": {
      "description": "Alias for lat — either name works",
      "type": "number"
    },
    "lng": {
      "description": "Alias for lon — either name works",
      "type": "number"
    },
    "longitude": {
      "description": "Alias for lon — either name works",
      "type": "number"
    },
    "state": {
      "description": "US state abbreviation (optional) — improves the tax-incentive lookup, e.g. AZ",
      "type": "string"
    },
    "capacity_mw": {
      "description": "Target power load for the build in megawatts (MW), e.g. 100 (typical 50-500)",
      "type": "number"
    },
    "include_grid": {
      "description": "Include grid-headroom / substation analysis (default true)",
      "type": "boolean"
    },
    "include_risk": {
      "description": "Include water/drought/climate risk analysis (default true)",
      "type": "boolean"
    },
    "include_fiber": {
      "description": "Include fiber-connectivity analysis (default true)",
      "type": "boolean"
    },
    "mpp_pay": {
      "description": "Autonomous payment (Stripe MPP), step 1: set true to receive a signed per-call payment challenge (the challenge states the amount) for this call instead of the free preview. No money moves — a challenge is a price quote. Humans never set this, so it does not affect the normal free/trial funnel.",
      "type": "boolean"
    },
    "mpp_credential": {
      "description": "Autonomous payment (Stripe MPP), step 2: the Shared Payment Token you minted for challenges[0]. Set it here to pay that challenge for this single call and receive the full result — no API key, no subscription, no human. One payment covers one call.",
      "type": "string"
    }
  }
}
🟢discover_tools(query)

Browse DC Hub's full tool catalogue by family (facility, market, grid and power, gas, site geometry, fiber, deals and news, saved work, account), optionally filtered by query. This endpoint lists a Grok-sized subset; every other DC Hub tool can still be called by name.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Optional keyword to filter families/tools, e.g. \"site selection\", \"grid queue\", \"fiber\", \"deals\", \"market\"",
      "type": "string"
    }
  }
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas
observación fallidaversión no registrada—
observación fallidaversión no registrada—