New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

utility-network-mcp

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

utility-network-mcp

MCP server for the Esri ArcGIS Utility Network: trace, subnetworks, dirty areas and associations over the UtilityNetworkServer REST API

pipPyPI
Version
0.2.0
Weekly downloads
194
Maintainers
1
Created

utility-network-mcp

An MCP server that lets AI assistants (Claude Desktop, Claude Code, VS Code, Cursor, and others) work with an Esri ArcGIS Utility Network published on ArcGIS Enterprise — run traces, find dirty subnetworks, summarise errors, and inspect associations through the UtilityNetworkServer REST API.

Not affiliated with or endorsed by Esri. ArcGIS and ArcGIS Utility Network are trademarks of Esri.

Tools

ToolTypeWhat it answers
describe_networkreadDomain networks, tiers, network attributes, categories, system layers
list_trace_configurationsreadNamed trace configurations stored in the service
tracereadConnected / upstream / downstream / subnetwork / isolation / shortest path / loops — returns a summary by asset group and type (names added when the service exposes them), not 100k raw elements
query_associationsreadContainment, attachment and connectivity associations for given features
query_subnetworksreadRows from the Subnetworks table; ISDIRTY holds clean / dirty / invalid (check the stored codes on your service before filtering on a number)
dirty_area_summaryreadDirty areas grouped by Status, decoded, with whether Validate will evaluate each and the next action (error-only rows such as 8 and 40 need a feature edit, not another validate)
find_featuresreadLook up a feature by asset ID (for example CB-1042); returns globalId, layer and asset group / type names to feed trace. Field set by UN_ASSET_ID_FIELD (default ASSETID)
network_momentsreadWhether topology is valid; when it was last enabled
job_statusreadPoll an async job
validate_network_topologywriteOnly when UN_ALLOW_WRITES=true, and each call needs confirm=true
update_subnetworkwriteSame gating as above

Install

pip install utility-network-mcp      # or: uvx utility-network-mcp
utility-network-mcp --selftest        # offline checks

Configure

VariableRequiredMeaning
UN_FEATURE_SERVICE_URLyeshttps://host/server/rest/services/<Service>/FeatureServer
UN_PORTAL_URLfor login authPortal URL
UN_CLIENT_ID / UN_CLIENT_SECREToption AOAuth app (client credentials)
UN_USERNAME / UN_PASSWORDoption BPortal login via generateToken (not for SAML-only portals)
UN_TOKENoption CPre-issued token
UN_DEFAULT_VERSIONnoDefault sde.DEFAULT
UN_ALLOW_WRITESnotrue registers the write tools
UN_MAX_IDSnoSample globalIds per group in summaries (default 25)

Claude Desktop / Claude Code

{
  "mcpServers": {
    "utility-network": {
      "command": "uvx",
      "args": ["utility-network-mcp"],
      "env": {
        "UN_FEATURE_SERVICE_URL": "https://gis.example.com/server/rest/services/Electric/FeatureServer",
        "UN_PORTAL_URL": "https://gis.example.com/portal",
        "UN_CLIENT_ID": "...",
        "UN_CLIENT_SECRET": "..."
      }
    }
  }
}

Requirements and licensing

  • ArcGIS Enterprise with the utility network published as a feature service with the Utility Network capability (enterprise deployment; file/mobile geodatabase networks have no REST API).
  • Read tools (query, trace) don't need the ArcGIS Advanced Editing user type extension. The write tools do.

Safety

Read-only by default. Write tools need both the server switch and an explicit per-call confirmation, so the agent must ask a human first. Use an account scoped to the one service; never the utility network owner account.

Design notes

See the companion skill's references/mcp/03-building-a-utility-network-mcp-server.md in this repository for the design, REST shapes, auth patterns and pitfalls.

Keywords

arcgis

FAQs

Related posts