unifi-network-mcp 0.5.2__tar.gz → 0.5.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unifi_network_mcp-0.5.2/README.md → unifi_network_mcp-0.5.3/PKG-INFO +18 -0
- unifi_network_mcp-0.5.2/PKG-INFO → unifi_network_mcp-0.5.3/README.md +2 -16
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/_version.py +2 -2
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/main.py +7 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/.gitignore +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/.well-known/mcp-server.json +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/LICENSE +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/pyproject.toml +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/bootstrap.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/config/config.yaml +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/jobs.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/client_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/connection_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/device_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/event_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/firewall_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/hotspot_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/network_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/qos_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/routing_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/stats_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/system_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/traffic_route_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/usergroup_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/vpn_manager.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/runtime.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/schemas.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tool_index.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/clients.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/config.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/devices.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/events.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/firewall.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/hotspot.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/network.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/port_forwards.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/qos.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/routing.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/stats.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/system.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/traffic_routes.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/usergroups.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/vpn.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools_manifest.json +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/config_helpers.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/confirmation.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/diagnostics.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/lazy_tool_loader.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/meta_tools.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/permissions.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/tool_loader.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/validator_registry.py +0 -0
- {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/validators.py +0 -0
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: unifi-network-mcp
|
|
3
|
+
Version: 0.5.3
|
|
4
|
+
Summary: Unifi Network MCP Server
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.13
|
|
7
|
+
Requires-Dist: aiohttp>=3.8.5
|
|
8
|
+
Requires-Dist: aiounifi>=88
|
|
9
|
+
Requires-Dist: jsonschema>=4.17.0
|
|
10
|
+
Requires-Dist: mcp[cli]>=1.23.0
|
|
11
|
+
Requires-Dist: omegaconf>=2.3.0
|
|
12
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
13
|
+
Requires-Dist: pyyaml>=6.0
|
|
14
|
+
Requires-Dist: typing-extensions>=4.4.0
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
1
17
|
# 📡 UniFi Network MCP Server
|
|
2
18
|
|
|
3
19
|
[![License][license-shield]](LICENSE)
|
|
@@ -747,6 +763,8 @@ These tools will give any LLM or agent configured to use them full access to you
|
|
|
747
763
|
|
|
748
764
|
The server includes a comprehensive permission system with **safe defaults**:
|
|
749
765
|
|
|
766
|
+
> **Permissions control tool visibility.** Tools with disabled permissions are **not registered** with the MCP server and will not appear in your client's tool list. If you're missing expected tools, check that the relevant permissions are enabled. All tools remain discoverable via `unifi_tool_index` regardless of permission settings — but disabled tools cannot be called. See [docs/permissions.md](docs/permissions.md) for full details.
|
|
767
|
+
|
|
750
768
|
**Disabled by Default (High-Risk):**
|
|
751
769
|
- Network creation/modification (`unifi_create_network`, `unifi_update_network`)
|
|
752
770
|
- Wireless configuration (`unifi_create_wlan`, `unifi_update_wlan`)
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: unifi-network-mcp
|
|
3
|
-
Version: 0.5.2
|
|
4
|
-
Summary: Unifi Network MCP Server
|
|
5
|
-
License-File: LICENSE
|
|
6
|
-
Requires-Python: >=3.13
|
|
7
|
-
Requires-Dist: aiohttp>=3.8.5
|
|
8
|
-
Requires-Dist: aiounifi>=88
|
|
9
|
-
Requires-Dist: jsonschema>=4.17.0
|
|
10
|
-
Requires-Dist: mcp[cli]>=1.23.0
|
|
11
|
-
Requires-Dist: omegaconf>=2.3.0
|
|
12
|
-
Requires-Dist: python-dotenv>=1.0.0
|
|
13
|
-
Requires-Dist: pyyaml>=6.0
|
|
14
|
-
Requires-Dist: typing-extensions>=4.4.0
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
|
|
17
1
|
# 📡 UniFi Network MCP Server
|
|
18
2
|
|
|
19
3
|
[![License][license-shield]](LICENSE)
|
|
@@ -763,6 +747,8 @@ These tools will give any LLM or agent configured to use them full access to you
|
|
|
763
747
|
|
|
764
748
|
The server includes a comprehensive permission system with **safe defaults**:
|
|
765
749
|
|
|
750
|
+
> **Permissions control tool visibility.** Tools with disabled permissions are **not registered** with the MCP server and will not appear in your client's tool list. If you're missing expected tools, check that the relevant permissions are enabled. All tools remain discoverable via `unifi_tool_index` regardless of permission settings — but disabled tools cannot be called. See [docs/permissions.md](docs/permissions.md) for full details.
|
|
751
|
+
|
|
766
752
|
**Disabled by Default (High-Risk):**
|
|
767
753
|
- Network creation/modification (`unifi_create_network`, `unifi_update_network`)
|
|
768
754
|
- Wireless configuration (`unifi_create_wlan`, `unifi_update_wlan`)
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.5.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 5,
|
|
31
|
+
__version__ = version = '0.5.3'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 5, 3)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -253,6 +253,13 @@ async def main_async():
|
|
|
253
253
|
logger.info(" Meta-tools: unifi_tool_index, unifi_execute, unifi_batch, unifi_batch_status")
|
|
254
254
|
logger.info(" Use unifi_execute to run any tool discovered via unifi_tool_index")
|
|
255
255
|
logger.info(" To load all tools directly: set UNIFI_TOOL_REGISTRATION_MODE=eager")
|
|
256
|
+
|
|
257
|
+
# Setup lazy loading interceptor so unifi_execute/unifi_batch can load tools on demand
|
|
258
|
+
setup_lazy_loading(server, _original_tool_decorator)
|
|
259
|
+
|
|
260
|
+
from src.utils.lazy_tool_loader import TOOL_MODULE_MAP
|
|
261
|
+
|
|
262
|
+
logger.info(f" On-demand loader ready - {len(TOOL_MODULE_MAP)} tools available via unifi_execute")
|
|
256
263
|
elif UNIFI_TOOL_REGISTRATION_MODE == "lazy":
|
|
257
264
|
logger.info("⚡ Tool registration mode: lazy")
|
|
258
265
|
logger.info(" Meta-tools: unifi_tool_index, unifi_execute, unifi_batch, unifi_batch_status, unifi_load_tools")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|