Skip to main content

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

Tool Type What it answers
describe_network read Domain networks, tiers, network attributes, categories, system layers
list_trace_configurations read Named trace configurations stored in the service
trace read Connected / upstream / downstream / subnetwork / isolation / shortest path / loops — returns a summary by asset group and type, not 100k raw elements
query_associations read Containment, attachment and connectivity associations for given features
query_subnetworks read Rows from the Subnetworks table (e.g. ISDIRTY = 1)
dirty_area_summary read Dirty areas grouped by Status, decoded into pending edits vs. real errors
network_moments read Whether topology is valid; when it was last enabled
job_status read Poll an async job
validate_network_topology write Only when UN_ALLOW_WRITES=true, and each call needs confirm=true
update_subnetwork write Same gating as above

Install

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

Configure

Variable Required Meaning
UN_FEATURE_SERVICE_URL yes https://host/server/rest/services/<Service>/FeatureServer
UN_PORTAL_URL for login auth Portal URL
UN_CLIENT_ID / UN_CLIENT_SECRET option A OAuth app (client credentials)
UN_USERNAME / UN_PASSWORD option B Portal login via generateToken (not for SAML-only portals)
UN_TOKEN option C Pre-issued token
UN_DEFAULT_VERSION no Default sde.DEFAULT
UN_ALLOW_WRITES no true registers the write tools
UN_MAX_IDS no Sample 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.

Release files for utility-network-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for utility-network-mcp 0.1.0
File Size Uploaded
utility_network_mcp-0.1.0.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for utility-network-mcp 0.1.0
File Interpreter ABI Platform
utility_network_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.3 kB

Release files / utility_network_mcp-0.1.0.tar.gz

Download URL utility_network_mcp-0.1.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e898c6f345c241e0e57038152a1d56e29a00ac539dd431161439a84ec35bb21a
BLAKE2b-256 checksum
How to use checksums
e54527f9e53b837d5958629e80ec20320dd8a333a5809e36d5cdd965b4df4f09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / utility_network_mcp-0.1.0-py3-none-any.whl

Download URL utility_network_mcp-0.1.0-py3-none-any.whl
Size 11.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21352b06268544441d763213a59c45de5aa0529a73e84703d81b0ae948e07ccc
BLAKE2b-256 checksum
How to use checksums
d477bb28b629f368d8d21be2e765b5c4ca1f71af5834c0b6da06bb5fa682809a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page