MCP: add bizMonitor server, align ops/topology tools, harden CLI exec

- New packages/netx-bizmonitor-mcp: 8 read-only cutover/biz-state tools
  mirroring the netxops bizMonitor group.
- Align netx-mcp (15) and netx-topology-mcp (16) with backend HTTP
  contracts; surface partial batch failures as tool errors.
- CLI hard gate: single-line show/display only; exec job IDs, path
  containment, owner and ne:exec checks.
- Cisco IOSv collection: stable prompt/echo handling over CR.
- Remove legacy netx_api/mcp and mcp_server.py; add mcp.all.json;
  sync skills and docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
oliver 2026-10-16 18:52:05 +08:00
parent d8da7acb7d
commit 9085cac742
63 changed files with 3251 additions and 1092 deletions

View file

@ -410,6 +410,9 @@ class WebcrtServiceTests(unittest.TestCase):
"password": "p",
"hop_enabled": True,
"hop_vendor": "huawei",
"hop_host": "192.0.2.10",
"hop_username": "hop-user",
"hop_password": "test-only-hop-password",
"ip_address": "10.0.0.3",
"protocol": "ssh",
},
@ -479,6 +482,7 @@ class WebcrtServiceTests(unittest.TestCase):
self.assertTrue(
svc._webcrt_creds_ready(
{
"ip_address": "192.0.2.20",
"username": "ca-oper",
"password": "",
"hop_enabled": True,
@ -493,6 +497,7 @@ class WebcrtServiceTests(unittest.TestCase):
self.assertFalse(
svc._webcrt_creds_ready(
{
"ip_address": "192.0.2.20",
"username": "ca-oper",
"password": "",
"hop_enabled": True,
@ -507,6 +512,7 @@ class WebcrtServiceTests(unittest.TestCase):
self.assertFalse(
svc._webcrt_creds_ready(
{
"ip_address": "192.0.2.20",
"username": "u",
"password": "",
"protocol": "ssh",
@ -517,6 +523,7 @@ class WebcrtServiceTests(unittest.TestCase):
self.assertTrue(
svc._webcrt_creds_ready(
{
"ip_address": "192.0.2.20",
"username": "",
"password": "",
"protocol": "telnet",