DC Hub MCP
An MCP server providing data center energy, electricity, and power grid intelligence. It offers tools to query the Data Center Power Index (DCPI), access facility maps, grid data, M&A deals, and capacity listings for site selection and infrastructure planning.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://dchub.cloud/mcp/coreWhat its tools do
10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to dchub.cloud ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Query Data Center Power Index (DCPI) scores and verdicts
- Access global data center facility maps and grid data
- Search for data center capacity to buy or lease
- Retrieve M&A deal and investment tracking data
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- DC Hub Core 2.12.46
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 10 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
plan_and_answer — Plan and answer a multi-part question
Use this when a data-center question needs several kinds of data, e.g. "where could 200 MW land in Texas with fiber and short time to power?" or "compare Phoenix and Columbus for an AI campus". Pass the question unchanged as intent (query/question aliases accepted); optional hints (market, state, iso, lat, lon, capacity_mw). If intent is omitted, a US markets overview intent is used. A deterministic keyword planner (no language model) picks the lookups, runs them in order and returns each step with its own as_of and sources. Set dry_run to true to see the plan without running it. For a single lookup, the matching tool answers directly (evaluate_site, market_snapshot, grid_power). Returns headline step counts, one section per step, and an unavailable list for steps that could not run.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"iso": {
"type": "string",
"description": "Grid operator hint, for example ERCOT or PJM"
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, for example 39.04"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, for example -77.48"
},
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 3,
"description": "Alias for intent"
},
"state": {
"type": "string",
"description": "Two-letter US state hint, for example TX"
},
"intent": {
"type": "string",
"maxLength": 2000,
"minLength": 3,
"description": "The question in plain language, passed unchanged"
},
"market": {
"type": "string",
"description": "Market name or slug hint, for example phoenix"
},
"dry_run": {
"type": "boolean",
"description": "true returns the plan without running it; default false"
},
"question": {
"type": "string",
"maxLength": 2000,
"minLength": 3,
"description": "Alias for intent"
},
"capacity_mw": {
"type": "number",
"description": "Target load in megawatts, for example 200"
}
}
}{
"title": "Plan and answer a multi-part question",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}find_sites — Find candidate areas or markets
Use this when the user has no site yet and asks where to look, e.g. "areas in Ohio on 345 kV with gas within 8 km" or "which Texas markets could take 200 MW within 24 months?". mode areas (default) needs a geography (state, or lat and lon with radius_km) and returns search areas anchored on real substations with measured distances, plus applied_filters and constraint_coverage showing which filters ran. mode markets returns a market shortlist filtered by capacity_mw, region, state, iso and max_months. Results are search areas or markets, not parcels, listings or land for sale. Score one with evaluate_site.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"iso": {
"type": "string",
"description": "Grid operator filter for markets mode, for example ERCOT"
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, for example 39.04"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, for example -77.48"
},
"mode": {
"enum": [
"areas",
"markets"
],
"type": "string",
"description": "areas (default) or markets"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum results, default set by the source"
},
"state": {
"type": "string",
"description": "Two-letter US state, for example OH"
},
"region": {
"type": "string",
"description": "Region filter for markets mode, for example TX or us"
},
"radius_km": {
"type": "number",
"description": "Search radius around lat/lon in km, for example 60"
},
"max_gas_km": {
"type": "number",
"description": "Maximum distance to a gas pipeline in km (areas mode)"
},
"max_months": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum time to power in months (markets mode)"
},
"capacity_mw": {
"type": "number",
"description": "Target load in MW; filters markets mode, echoed only in areas mode"
},
"max_fiber_km": {
"type": "number",
"description": "Maximum distance to fiber in km (areas mode)"
},
"min_voltage_kv": {
"type": "number",
"description": "Minimum substation voltage in kV (areas mode), for example 345"
}
}
}{
"title": "Find candidate areas or markets",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}evaluate_site — Evaluate one site
Use this when the user has one candidate location and asks whether it suits a data center, e.g. "is 39.04,-77.48 good for 100 MW?". Pass lat and lon, or location as "lat,lon" or a market name (a market is read at its published centroid and the response says so). Returns a BUILD, CAUTION or AVOID verdict, a 0-100 composite over validated factors only, the limiting factor, and a coverage map of which factors were measured; unmeasured factors are listed in unavailable and never estimated. include adds factor sections: water, hazard, climate, fiber, tax, raw. At some access levels only the verdict, coverage and limiting factor are returned and scores are null. For 2 to 4 locations use compare_sites; for a whole market use market_snapshot.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, for example 39.04"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, for example -77.48"
},
"state": {
"type": "string",
"description": "Two-letter US state, improves water and tax lookups, for example VA"
},
"include": {
"type": "array",
"items": {
"enum": [
"water",
"hazard",
"climate",
"fiber",
"tax",
"raw"
],
"type": "string"
},
"maxItems": 6,
"description": "Optional factor sections to add"
},
"location": {
"type": "string",
"description": "Alternative to lat/lon: \"lat,lon\" or a market name or slug, for example \"39.04,-77.48\" or \"phoenix\""
},
"capacity_mw": {
"type": "number",
"description": "Target load in megawatts, echoed and passed to the raw section"
}
}
}{
"title": "Evaluate one site",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}compare_sites — Compare 2 to 4 sites or markets
Use this when the user wants 2 to 4 data center candidates side by side, coordinates or named markets, e.g. "39.04,-77.48 vs 33.45,-112.07 for 50 MW" or "Dallas vs Columbus". Pass locations as a list of "lat,lon" strings or market names. Coordinates return the same composite read for each site (verdict, coverage, limiting factor, and scores where available) and the winner with its rationale when the source provides one. Market names return each market scorecard (DCPI verdict and bands); no winner is computed for markets. capacity_mw is echoed and does not change scores. For one site use evaluate_site; to rank many markets use rank_markets.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"locations"
],
"properties": {
"locations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"maxItems": 4,
"minItems": 2,
"description": "2 to 4 candidates, each \"lat,lon\" or a market name, for example [\"39.04,-77.48\", \"33.45,-112.07\"]"
},
"capacity_mw": {
"type": "number",
"description": "Target load in megawatts, echoed per candidate"
}
}
}{
"title": "Compare 2 to 4 sites or markets",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}market_snapshot — Snapshot of one market
Use this when the user asks about one data-center market or metro, e.g. "how is Northern Virginia looking?" or "Phoenix power verdict". Pass market as a name or slug. detail scorecard (default) returns the DCPI verdict with excess-power and constraint scores and bands, time to power, and whether inputs are live or modeled (data_basis). detail brief adds a short market briefing (power, pipeline, operators, deals, news); detail full also adds market intelligence metrics. To rank several markets use rank_markets.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"detail": {
"enum": [
"scorecard",
"brief",
"full"
],
"type": "string",
"description": "scorecard (default), brief or full"
},
"market": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Market name or slug, for example \"phoenix\" or \"northern-virginia\""
}
}
}{
"title": "Snapshot of one market",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}rank_markets — Rank markets by one criterion
Use this when the user wants data center markets ranked by one criterion, e.g. "10 US markets that suit a 200 MW AI campus" or "markets with low power prices and at least 100 MW installed". criteria selects the sort: ai_ready (buildability for new load, the default), ai_capacity (AI compute capacity index), or a sort by power price, installed capacity, operator count, growth or overall score (see the criteria values). Optional region, limit and min_capacity_mw. Returns rank, market, the sort value, signal_tier (how much rests on live versus modeled inputs) and per-row as_of where the source provides it. Pass a market slug to market_snapshot for detail.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Number of markets, for example 10"
},
"region": {
"type": "string",
"description": "Region filter, for example us, TX or europe"
},
"criteria": {
"enum": [
"ai_ready",
"ai_capacity",
"cheapest_power",
"most_capacity",
"most_operators",
"fastest_growing",
"best_overall"
],
"type": "string",
"description": "Sort criterion; default ai_ready. The other values sort by power price, installed capacity, operator count, growth or overall score"
},
"min_capacity_mw": {
"type": "number",
"description": "Minimum installed capacity in MW"
}
}
}{
"title": "Rank markets by one criterion",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}grid_power — Grid power availability and cost
Use this when the user asks about grid power availability or electricity cost, e.g. "how much headroom does PJM have?", "time to power for 200 MW in ERCOT", "what is in the interconnection queue?" or "when does new generation land in Ohio?". Pass iso (one, or a comma list such as "PJM,ERCOT" to compare), market (resolved to its grid operator) or state (year-by-year supply timeline). Returns demand, fuel mix, excess-power and constraint scores, time to power and queue depth, each with as_of and source. include adds telemetry, prices, queue or timeline sections. Fuel mix typically lags demand by about a day.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"iso": {
"type": "string",
"description": "Grid operator, or a comma list to compare, for example \"PJM\" or \"PJM,ERCOT,CAISO\""
},
"state": {
"type": "string",
"description": "Two-letter US state for the supply timeline, for example OH"
},
"market": {
"type": "string",
"description": "Market name, resolved to its grid operator, for example \"dallas\""
},
"include": {
"type": "array",
"items": {
"enum": [
"telemetry",
"prices",
"queue",
"timeline"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional sections to add"
},
"capacity_mw": {
"type": "number",
"description": "Load in MW for the timeline section"
}
}
}{
"title": "Grid power availability and cost",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}fiber_connectivity — Fiber and peering connectivity
Use this when the user asks how well a site or metro is connected by fiber, e.g. "is this parcel fiber-ready?", "how many carriers can serve it?" or "internet exchanges near Ashburn". Pass lat and lon for a point read (near-net distance bucket, nearest carrier distance, carrier data coverage) or market for the metro profile (carriers and dark-fiber availability zones). include peering adds nearby exchange and network density for a point. If carrier_data_coverage is none_in_region, nothing was measured there; that is not the same as no fiber.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, for example 39.04"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, for example -77.48"
},
"market": {
"type": "string",
"description": "Market name for the metro profile, for example \"Dallas-Fort Worth\""
},
"include": {
"type": "array",
"items": {
"enum": [
"peering"
],
"type": "string"
},
"maxItems": 1,
"description": "Optional sections to add"
},
"radius_km": {
"type": "number",
"description": "Search radius for the point read in km, for example 50"
}
}
}{
"title": "Fiber and peering connectivity",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}facility_lookup — Find or profile data-center facilities
Use this when the user wants to find or profile existing data-center facilities, e.g. "who operates this facility and how big is it?" or "data centers in Arizona over 50 MW". Pass id (or an exact name) for one record, or filters (query, country, state, city, operator, min_capacity_mw) for a list. Records carry name, operator, location, capacity where disclosed, status and verification details. Facility data combines open map data, peering records and operator disclosures; see license. Deals and construction pipeline are not covered by this profile.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string",
"description": "Facility id or slug from a previous result"
},
"city": {
"type": "string",
"description": "City name"
},
"name": {
"type": "string",
"description": "Exact facility name, used when no id is known"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum records in a list, for example 10"
},
"query": {
"type": "string",
"description": "Free-text search, for example \"Ashburn\""
},
"state": {
"type": "string",
"description": "State or province code, for example AZ"
},
"country": {
"type": "string",
"description": "Country code, for example US"
},
"operator": {
"type": "string",
"description": "Operator name"
},
"min_capacity_mw": {
"type": "number",
"description": "Minimum capacity in MW"
}
}
}{
"title": "Find or profile data-center facilities",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_evidence — Citation and data freshness
Use this when you quote a DC Hub figure, or the user asks where a number comes from or how current it is. Pass subject (what is being cited, e.g. "Phoenix DCPI verdict CAUTION"), and optionally layer, as_of and source_url from an earlier result. Returns a citation line, the license for that data layer, and current health and last-update time for each data feed. Pass since (ISO date) to also list records changed since then. It does not look up new figures.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"as_of": {
"type": "string",
"description": "The as_of value from the result being cited"
},
"layer": {
"type": "string",
"description": "Data layer of the figure, for example dcpi, grid, fiber, facilities"
},
"since": {
"type": "string",
"description": "ISO date or time; lists changes after it, for example 2026-09-01"
},
"subject": {
"type": "string",
"description": "What is being cited, for example \"Phoenix DCPI verdict CAUTION\""
},
"source_url": {
"type": "string",
"description": "A source link from the result being cited, if any"
}
}
}{
"title": "Citation and data freshness",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-09: 1 of 1 checks answered
- 2026-11-10: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 497 ms
- 95th percentile latency
- 497 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 497 ms · metadata changed · 10 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http dc-hub-mcp-dchub https://dchub.cloud/mcp/coreCodex
codex mcp add dc-hub-mcp-dchub --url https://dchub.cloud/mcp/coreCursor
{
"mcpServers": {
"dc-hub-mcp-dchub": {
"url": "https://dchub.cloud/mcp/core"
}
}
}Cline
{
"mcpServers": {
"dc-hub-mcp-dchub": {
"type": "streamableHttp",
"url": "https://dchub.cloud/mcp/core",
"disabled": false
}
}
}VS Code
{
"servers": {
"dc-hub-mcp-dchub": {
"type": "http",
"url": "https://dchub.cloud/mcp/core"
}
}
}Gemini CLI
gemini mcp add --transport http dc-hub-mcp-dchub https://dchub.cloud/mcp/coreClaude Desktop
https://dchub.cloud/mcp/coreWindsurf
{
"mcpServers": {
"dc-hub-mcp-dchub": {
"serverUrl": "https://dchub.cloud/mcp/core"
}
}
}Let your agent find its tools
Find servers like DC Hub MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run DC Hub MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.