Skip to main content

0.3.0 package and tool migration: Install industriagents-dnp3-mcp from npm (requires uv) or PyPI; the command remains dnp3-mcp. The advertised catalog now contains 5 tools. Older tool names in the examples below remain compatibility calls. See the architecture and canonical tool guide and release guide.

dnp3-python

Python MCP server for DNP3. Built with uv, mcp[cli] (FastMCP) and the pure-Python dnp3py stack, it exposes the dnp3-mcp CLI, which lets MCP-compatible clients read binary and analog inputs, operate binary outputs and poll event classes on DNP3 outstations over TCP. Responses include the outstation's IIN flags.

Controls are refused unless DNP3_WRITES_ENABLED=true. See Status and known limitations in the repository README.

Requirements

  • Python 3.11+
  • uv
  • TCP access to the outstation (or to a serial-to-TCP gateway). No native libraries are needed.

Quick Start

uv sync
DNP3_HOST=127.0.0.1 DNP3_PORT=20000 uv run dnp3-mcp

Set the connection settings in the real environment, in the env block of your MCP client config, or in dnp3-python/.env (see .env.example). That file is found next to the package source in a checkout, whatever directory the server is started from; a .env in the working directory or a parent is never read, and an installed package has no implicit .env. It may set only DNP3_* and POINT_MAP_FILE, never DNP3_WRITES_ENABLED, and real environment variables take precedence. Put the write switch in the real environment or in a file you pass explicitly with uv run dnp3-mcp --env-file PATH. See Configuration for every setting.

Tests and checks

uv sync --locked
uv run --locked ruff check .
uv run --locked ruff format --check .
uv run --locked pytest

The tests include end-to-end runs that start ../dnp3-mock-outstation with this project's interpreter and drive the dnp3-mcp console script over stdio. tests/interop (opendnp3 via yadnp3, Linux x86_64 only) runs with uv sync --locked --group interop and REQUIRE_OPENDNP3=1 uv run --locked --group interop pytest tests/interop.

Layout

dnp3-python/
├── README.md
├── pyproject.toml
├── uv.lock
├── .python-version
├── .env.example
├── src/dnp3_mcp
│   ├── __init__.py
│   ├── cli.py           # entry point: --env-file, or dnp3-python/.env (DNP3_* only, no gates)
│   ├── config.py        # environment parsing, read when the server is built
│   ├── server.py        # FastMCP wiring, envelope for argument errors, version
│   ├── tools.py         # the MCP tools and the point map
│   └── dnp3_master.py   # DNP3 master on dnp3py (TCP, own CROB encoding, guarded confirms)
└── tests/               # unit, protocol, stdio end-to-end; tests/interop needs yadnp3

Metadata

Release files for industriagents-dnp3-mcp 0.3.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 industriagents-dnp3-mcp 0.3.0
File Size Uploaded
industriagents_dnp3_mcp-0.3.0.tar.gz 110.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for industriagents-dnp3-mcp 0.3.0
File Interpreter ABI Platform
industriagents_dnp3_mcp-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 153.9 kB

Release files / industriagents_dnp3_mcp-0.3.0.tar.gz

Download URL industriagents_dnp3_mcp-0.3.0.tar.gz
Size 110.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d95d4cab2959659b62ceedc07534e6ebc3bd456da4ac0da90082b509e394d9b9
BLAKE2b-256 checksum
How to use checksums
8899fa0a4331159943515f9f6d7f57ccfbb179a0393fbe73cd192093665070e5
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 Oct 15, 2026.

Transparency log

Release files / industriagents_dnp3_mcp-0.3.0-py3-none-any.whl

Download URL industriagents_dnp3_mcp-0.3.0-py3-none-any.whl
Size 43.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06e501cd962defc53c577f3baab2dcfff8076b137f80ca156df54bad9aaed5d9
BLAKE2b-256 checksum
How to use checksums
52e755ae754095c239e107b3724301315ca7db8a6310b385345be31d41521d6f
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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.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