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.
Files changed (53) hide show
  1. unifi_network_mcp-0.5.2/README.md → unifi_network_mcp-0.5.3/PKG-INFO +18 -0
  2. unifi_network_mcp-0.5.2/PKG-INFO → unifi_network_mcp-0.5.3/README.md +2 -16
  3. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/_version.py +2 -2
  4. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/main.py +7 -0
  5. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/.gitignore +0 -0
  6. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/.well-known/mcp-server.json +0 -0
  7. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/LICENSE +0 -0
  8. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/pyproject.toml +0 -0
  9. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/bootstrap.py +0 -0
  10. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/config/config.yaml +0 -0
  11. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/jobs.py +0 -0
  12. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/client_manager.py +0 -0
  13. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/connection_manager.py +0 -0
  14. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/device_manager.py +0 -0
  15. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/event_manager.py +0 -0
  16. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/firewall_manager.py +0 -0
  17. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/hotspot_manager.py +0 -0
  18. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/network_manager.py +0 -0
  19. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/qos_manager.py +0 -0
  20. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/routing_manager.py +0 -0
  21. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/stats_manager.py +0 -0
  22. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/system_manager.py +0 -0
  23. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/traffic_route_manager.py +0 -0
  24. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/usergroup_manager.py +0 -0
  25. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/managers/vpn_manager.py +0 -0
  26. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/runtime.py +0 -0
  27. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/schemas.py +0 -0
  28. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tool_index.py +0 -0
  29. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/clients.py +0 -0
  30. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/config.py +0 -0
  31. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/devices.py +0 -0
  32. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/events.py +0 -0
  33. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/firewall.py +0 -0
  34. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/hotspot.py +0 -0
  35. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/network.py +0 -0
  36. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/port_forwards.py +0 -0
  37. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/qos.py +0 -0
  38. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/routing.py +0 -0
  39. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/stats.py +0 -0
  40. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/system.py +0 -0
  41. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/traffic_routes.py +0 -0
  42. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/usergroups.py +0 -0
  43. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools/vpn.py +0 -0
  44. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/tools_manifest.json +0 -0
  45. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/config_helpers.py +0 -0
  46. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/confirmation.py +0 -0
  47. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/diagnostics.py +0 -0
  48. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/lazy_tool_loader.py +0 -0
  49. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/meta_tools.py +0 -0
  50. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/permissions.py +0 -0
  51. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/utils/tool_loader.py +0 -0
  52. {unifi_network_mcp-0.5.2 → unifi_network_mcp-0.5.3}/src/validator_registry.py +0 -0
  53. {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.2'
32
- __version_tuple__ = version_tuple = (0, 5, 2)
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")