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.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
86%
이름 품질
95%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'get_power_availability_timeline' name length outside 3-30 rangeget_power_availability_timeline에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,729토큰 (도구 정의)
~3.6 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.69%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

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

원격 엔드포인트

https://dchub.cloud/mcpstreamable-http
https://dchub.cloud/mcp/registrystreamable-http
https://dchub.cloud/mcp/claudestreamable-http
https://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"
    }
  }
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 11개
관측 실패버전이 기록되지 않음—
관측 실패버전이 기록되지 않음—