Skip to main content

WAC510 MCP

A local FastMCP server for one NETGEAR WAC510 access point. It talks directly to the stock firmware's local HTTPS interface and keeps one asynchronous connection pool open for efficient calls.

The WAC510 protocol is undocumented. This implementation was validated against production firmware V9.9.6.8.

The server targets one AP per process. It does not use NETGEAR Insight, SSH, or SNMP.

Requirements

  • Python 3.14.7
  • uv
  • A WAC510 reachable through its local management URL

Expected startup failures are rendered as concise Rich panels with corrective guidance. Unexpected programming errors retain their tracebacks.

Install the locked environment:

uv sync

After the first PyPI release, run the server without cloning the repository:

uvx wac510-mcp

Run

Start the local OAuth-protected HTTP server:

uv run wac510-mcp

Connect your MCP client to:

http://127.0.0.1:8000/mcp

The MCP client's OAuth flow opens a page titled WAC510 MCP. Enter the access point URL, username, password, and optional connection settings. The server verifies that the device is a WAC510 before authorization completes.

Example URL-based MCP configuration:

{
  "mcpServers": {
    "wac510": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

The server always hides FastMCP's startup banner. No environment variable or launch flag is required.

Stored settings

Settings are saved under the platform's user configuration directory. On Linux, the default location is:

~/.config/wac510-mcp/

settings.enc contains the encrypted AP configuration. settings.key contains its local encryption key. Both files use owner-only permissions, and the password is never rendered back into the setup page. OAuth clients and access tokens remain in memory; after a server restart, the MCP client authenticates again and the page reuses the saved settings.

TLS verification defaults to off because the AP normally uses a self-signed certificate. The setup page can enable verification or specify a private CA bundle.

Safety

Read tools run immediately. Configuration writes require confirm=true. Disruptive operations require the exact tokens returned in their tool descriptions:

  • REBOOT
  • RESTORE_CONFIGURATION
  • UPGRADE_FIRMWARE
  • FACTORY_RESET

The raw tools make the server maximally capable. They expose the AP's private JSON protocol, so inspect a read payload before applying it.

For example, read an arbitrary firmware field with raw_query:

{
  "payload": {
    "system": {
      "basicSettings": {
        "apName": ""
      }
    }
  }
}

Pass the returned hierarchy with changed leaf values to apply_configuration first without confirmation. Review its redacted preview, then repeat the call with confirm=true.

Tools

  • list_capabilities and list_endpoints describe the reverse-engineered surface.
  • device_info, list_clients, radio_status, and traffic_statistics provide common reads.
  • query_capabilities reads any selection of 18 management domains with bounded concurrency.
  • raw_query accepts any /socketCommunication read selector.
  • apply_configuration applies arbitrary configuration after a preview and confirmation.
  • raw_request calls any discovered JSON endpoint with endpoint-specific confirmation.
  • download_file and upload_file support logs, configuration, packet captures, ACL files, restore, and firmware files.
  • reboot and factory_reset require exact confirmation tokens.

Development

uv run pytest
uv run mypy src tests

The live test suite is read-only and opt-in. Its environment variables exist only for automated testing; normal users configure the server through OAuth:

WAC510_LIVE_TEST=1 uv run pytest tests/test_live_readonly.py -q

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wac510_mcp-0.1.0.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wac510_mcp-0.1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file wac510_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: wac510_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for wac510_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d9fe4f367eebf2a27b15eb46659c765477992519aedf07ea215d11618facadce
MD5 fa0904fa29b6c030c38f97a4c8843fbc
BLAKE2b-256 5680b9540a7c9609358dbea405b1f7acb9c0ebbd3085d7b031c355713d7cc129

See more details on using hashes here.

Provenance

The following attestation bundles were made for wac510_mcp-0.1.0.tar.gz:

Publisher: release.yml on skyline69/wac510-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wac510_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: wac510_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for wac510_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c3d2f3a4babb9dcd8b78ab09f25e1cf37091856400614f1001699e15f1ce76cd
MD5 5146b01cd681561f6eec15a282dac503
BLAKE2b-256 8ea2fd2cf774481b38d5662e44f7f0125cfbb08f24e9139eba098f2f9cb99599

See more details on using hashes here.

Provenance

The following attestation bundles were made for wac510_mcp-0.1.0-py3-none-any.whl:

Publisher: release.yml on skyline69/wac510-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

This release

0.1.0 This release

2 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