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.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWget_power_availability_timeline에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"mcp-server": {
"url": "https://dchub.cloud/mcp"
}
}
}원격 엔드포인트
https://dchub.cloud/mcpstreamable-httphttps://dchub.cloud/mcp/registrystreamable-httphttps://dchub.cloud/mcp/claudestreamable-httphttps://dchub.cloud/mcp/grokstreamable-http할 수 있는 일
도구 목록
도구 (11)
🟢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.
입력 스키마
{
"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".
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "Optional keyword to filter families/tools, e.g. \"site selection\", \"grid queue\", \"fiber\", \"deals\", \"market\"",
"type": "string"
}
}
}커뮤니티
증거