@usex/mikrotik-mcp 3.6.0 → 3.8.0
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.
- package/README.md +7 -7
- package/dist/cli.js +2303 -1914
- package/dist/index.js +2299 -1910
- package/package.json +1 -1
- package/schemas/README.md +1 -1
- package/schemas/config.schema.json +44 -3
- package/schemas/tool-catalog.json +356 -3
- package/schemas/tools/add_dhcp_client.json +33 -0
- package/schemas/tools/force_cloud_update.json +7 -0
- package/schemas/tools/get_dhcp_client.json +13 -0
- package/schemas/tools/get_ip_cloud.json +7 -0
- package/schemas/tools/list_dhcp_clients.json +12 -0
- package/schemas/tools/remove_dhcp_client.json +12 -0
- package/schemas/tools/renew_dhcp_client.json +17 -0
- package/schemas/tools/set_dhcp_client.json +24 -0
- package/schemas/tools/set_ip_cloud.json +16 -0
- package/schemas/tools/set_ip_cloud_advanced.json +13 -0
- package/schemas/tools/test_ssh_from_device.json +28 -0
- package/schemas/tools/test_ssh_to_device.json +7 -0
- package/schemas/tools/test_ssh_to_host.json +38 -0
package/package.json
CHANGED
package/schemas/README.md
CHANGED
|
@@ -7,7 +7,7 @@ edit by hand — regenerate instead.
|
|
|
7
7
|
| File | Contents |
|
|
8
8
|
| -------------------- | ------------------------------------------------------------------------------------------ |
|
|
9
9
|
| `config.schema.json` | The runtime configuration object (env vars / CLI flags). |
|
|
10
|
-
| `tool-catalog.json` | Every one of the
|
|
10
|
+
| `tool-catalog.json` | Every one of the 706 tools: `name`, `risk`, `title`, `description`, and input JSON Schema. |
|
|
11
11
|
| `tools/<name>.json` | The input JSON Schema for a single tool. |
|
|
12
12
|
|
|
13
13
|
`risk` is derived from the MCP tool annotations:
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"enabled": false,
|
|
162
162
|
"host": "0.0.0.0",
|
|
163
163
|
"port": 9090,
|
|
164
|
-
"dbPath": "
|
|
164
|
+
"dbPath": "/Users/alimaster/.mikrotik-mcp/events.db",
|
|
165
165
|
"maxEvents": 100000,
|
|
166
166
|
"captureBody": true,
|
|
167
167
|
"redactInput": false,
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"maximum": 9007199254740991
|
|
185
185
|
},
|
|
186
186
|
"dbPath": {
|
|
187
|
-
"default": "
|
|
187
|
+
"default": "/Users/alimaster/.mikrotik-mcp/events.db",
|
|
188
188
|
"type": "string"
|
|
189
189
|
},
|
|
190
190
|
"maxEvents": {
|
|
@@ -227,10 +227,51 @@
|
|
|
227
227
|
"default": false,
|
|
228
228
|
"type": "boolean"
|
|
229
229
|
},
|
|
230
|
+
"tools": {
|
|
231
|
+
"default": {
|
|
232
|
+
"enabledModules": [],
|
|
233
|
+
"disabledModules": [],
|
|
234
|
+
"enabledGroups": [],
|
|
235
|
+
"disabledGroups": []
|
|
236
|
+
},
|
|
237
|
+
"type": "object",
|
|
238
|
+
"properties": {
|
|
239
|
+
"enabledModules": {
|
|
240
|
+
"default": [],
|
|
241
|
+
"type": "array",
|
|
242
|
+
"items": {
|
|
243
|
+
"type": "string"
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"disabledModules": {
|
|
247
|
+
"default": [],
|
|
248
|
+
"type": "array",
|
|
249
|
+
"items": {
|
|
250
|
+
"type": "string"
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
"enabledGroups": {
|
|
254
|
+
"default": [],
|
|
255
|
+
"type": "array",
|
|
256
|
+
"items": {
|
|
257
|
+
"type": "string"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"disabledGroups": {
|
|
261
|
+
"default": [],
|
|
262
|
+
"type": "array",
|
|
263
|
+
"items": {
|
|
264
|
+
"type": "string"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"required": ["enabledModules", "disabledModules", "enabledGroups", "disabledGroups"],
|
|
269
|
+
"additionalProperties": false
|
|
270
|
+
},
|
|
230
271
|
"backupDir": {
|
|
231
272
|
"type": "string"
|
|
232
273
|
}
|
|
233
274
|
},
|
|
234
|
-
"required": ["devices", "defaultDevice", "mcp", "dashboard", "readOnly"],
|
|
275
|
+
"required": ["devices", "defaultDevice", "mcp", "dashboard", "readOnly", "tools"],
|
|
235
276
|
"additionalProperties": false
|
|
236
277
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"generated": "by scripts/gen-schemas.ts — do not edit by hand",
|
|
5
|
-
"toolCount":
|
|
5
|
+
"toolCount": 706,
|
|
6
6
|
"tools": [
|
|
7
7
|
{
|
|
8
8
|
"name": "list_interfaces",
|
|
@@ -2942,6 +2942,175 @@
|
|
|
2942
2942
|
"additionalProperties": false
|
|
2943
2943
|
}
|
|
2944
2944
|
},
|
|
2945
|
+
{
|
|
2946
|
+
"name": "list_dhcp_clients",
|
|
2947
|
+
"title": "List DHCP Clients",
|
|
2948
|
+
"risk": "read",
|
|
2949
|
+
"annotations": {
|
|
2950
|
+
"readOnlyHint": true,
|
|
2951
|
+
"idempotentHint": true,
|
|
2952
|
+
"openWorldHint": false
|
|
2953
|
+
},
|
|
2954
|
+
"description": "Lists IPv4 DHCP clients (`/ip dhcp-client print`) — each interface configured to obtain its address/gateway/DNS from an upstream DHCP server (typically a WAN port). Shows the bound address, status, and whether a default route / peer DNS is used. Optional `interface_filter`. For one client's detail use get_dhcp_client; to add one use add_dhcp_client.",
|
|
2955
|
+
"inputSchema": {
|
|
2956
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2957
|
+
"type": "object",
|
|
2958
|
+
"properties": {
|
|
2959
|
+
"interface_filter": {
|
|
2960
|
+
"description": "Substring match on interface",
|
|
2961
|
+
"type": "string"
|
|
2962
|
+
}
|
|
2963
|
+
},
|
|
2964
|
+
"additionalProperties": false
|
|
2965
|
+
}
|
|
2966
|
+
},
|
|
2967
|
+
{
|
|
2968
|
+
"name": "get_dhcp_client",
|
|
2969
|
+
"title": "Get DHCP Client Detail",
|
|
2970
|
+
"risk": "read",
|
|
2971
|
+
"annotations": {
|
|
2972
|
+
"readOnlyHint": true,
|
|
2973
|
+
"idempotentHint": true,
|
|
2974
|
+
"openWorldHint": false
|
|
2975
|
+
},
|
|
2976
|
+
"description": "Full detail for the DHCP client on an interface (`/ip dhcp-client print detail where interface=...`) — bound address, gateway, lease time, status, and options. Use list_dhcp_clients to find interfaces. Returns the detail block or a not-found message.",
|
|
2977
|
+
"inputSchema": {
|
|
2978
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2979
|
+
"type": "object",
|
|
2980
|
+
"properties": {
|
|
2981
|
+
"interface": {
|
|
2982
|
+
"type": "string",
|
|
2983
|
+
"description": "Interface name, e.g. 'ether1'"
|
|
2984
|
+
}
|
|
2985
|
+
},
|
|
2986
|
+
"required": ["interface"],
|
|
2987
|
+
"additionalProperties": false
|
|
2988
|
+
}
|
|
2989
|
+
},
|
|
2990
|
+
{
|
|
2991
|
+
"name": "add_dhcp_client",
|
|
2992
|
+
"title": "Add DHCP Client",
|
|
2993
|
+
"risk": "write",
|
|
2994
|
+
"annotations": {
|
|
2995
|
+
"destructiveHint": false,
|
|
2996
|
+
"openWorldHint": false
|
|
2997
|
+
},
|
|
2998
|
+
"description": "Adds an IPv4 DHCP client on an interface (`/ip dhcp-client add`) so it obtains an address from an upstream DHCP server — the usual way to configure a WAN port. `add_default_route` installs the received gateway; `use_peer_dns`/`use_peer_ntp` adopt the server's DNS/NTP. Returns the created client's detail.",
|
|
2999
|
+
"inputSchema": {
|
|
3000
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3001
|
+
"type": "object",
|
|
3002
|
+
"properties": {
|
|
3003
|
+
"interface": {
|
|
3004
|
+
"type": "string",
|
|
3005
|
+
"description": "Interface to run the DHCP client on, e.g. 'ether1'"
|
|
3006
|
+
},
|
|
3007
|
+
"add_default_route": {
|
|
3008
|
+
"default": true,
|
|
3009
|
+
"description": "Install the received default gateway",
|
|
3010
|
+
"type": "boolean"
|
|
3011
|
+
},
|
|
3012
|
+
"use_peer_dns": {
|
|
3013
|
+
"default": true,
|
|
3014
|
+
"type": "boolean"
|
|
3015
|
+
},
|
|
3016
|
+
"use_peer_ntp": {
|
|
3017
|
+
"default": true,
|
|
3018
|
+
"type": "boolean"
|
|
3019
|
+
},
|
|
3020
|
+
"disabled": {
|
|
3021
|
+
"default": false,
|
|
3022
|
+
"type": "boolean"
|
|
3023
|
+
},
|
|
3024
|
+
"comment": {
|
|
3025
|
+
"type": "string"
|
|
3026
|
+
}
|
|
3027
|
+
},
|
|
3028
|
+
"required": ["interface", "add_default_route", "use_peer_dns", "use_peer_ntp", "disabled"],
|
|
3029
|
+
"additionalProperties": false
|
|
3030
|
+
}
|
|
3031
|
+
},
|
|
3032
|
+
{
|
|
3033
|
+
"name": "set_dhcp_client",
|
|
3034
|
+
"title": "Update DHCP Client",
|
|
3035
|
+
"risk": "write-idempotent",
|
|
3036
|
+
"annotations": {
|
|
3037
|
+
"destructiveHint": false,
|
|
3038
|
+
"idempotentHint": true,
|
|
3039
|
+
"openWorldHint": false
|
|
3040
|
+
},
|
|
3041
|
+
"description": "Updates the DHCP client on an interface (`/ip dhcp-client set [find interface=...]`) — toggle `add_default_route`, `use_peer_dns`, `use_peer_ntp`, or `disabled`. No-ops if nothing is supplied. Returns the updated detail.",
|
|
3042
|
+
"inputSchema": {
|
|
3043
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3044
|
+
"type": "object",
|
|
3045
|
+
"properties": {
|
|
3046
|
+
"interface": {
|
|
3047
|
+
"type": "string"
|
|
3048
|
+
},
|
|
3049
|
+
"add_default_route": {
|
|
3050
|
+
"type": "boolean"
|
|
3051
|
+
},
|
|
3052
|
+
"use_peer_dns": {
|
|
3053
|
+
"type": "boolean"
|
|
3054
|
+
},
|
|
3055
|
+
"use_peer_ntp": {
|
|
3056
|
+
"type": "boolean"
|
|
3057
|
+
},
|
|
3058
|
+
"disabled": {
|
|
3059
|
+
"type": "boolean"
|
|
3060
|
+
}
|
|
3061
|
+
},
|
|
3062
|
+
"required": ["interface"],
|
|
3063
|
+
"additionalProperties": false
|
|
3064
|
+
}
|
|
3065
|
+
},
|
|
3066
|
+
{
|
|
3067
|
+
"name": "renew_dhcp_client",
|
|
3068
|
+
"title": "Renew / Release DHCP Lease",
|
|
3069
|
+
"risk": "write",
|
|
3070
|
+
"annotations": {
|
|
3071
|
+
"destructiveHint": false,
|
|
3072
|
+
"openWorldHint": false
|
|
3073
|
+
},
|
|
3074
|
+
"description": "Renews or releases the DHCP lease on an interface (`/ip dhcp-client renew|release`). `release=true` drops the current lease; otherwise it renews — use to re-pull WAN settings after an upstream change. Returns the client status afterward.",
|
|
3075
|
+
"inputSchema": {
|
|
3076
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3077
|
+
"type": "object",
|
|
3078
|
+
"properties": {
|
|
3079
|
+
"interface": {
|
|
3080
|
+
"type": "string"
|
|
3081
|
+
},
|
|
3082
|
+
"release": {
|
|
3083
|
+
"default": false,
|
|
3084
|
+
"description": "true = release the lease; false = renew",
|
|
3085
|
+
"type": "boolean"
|
|
3086
|
+
}
|
|
3087
|
+
},
|
|
3088
|
+
"required": ["interface", "release"],
|
|
3089
|
+
"additionalProperties": false
|
|
3090
|
+
}
|
|
3091
|
+
},
|
|
3092
|
+
{
|
|
3093
|
+
"name": "remove_dhcp_client",
|
|
3094
|
+
"title": "Remove DHCP Client",
|
|
3095
|
+
"risk": "destructive",
|
|
3096
|
+
"annotations": {
|
|
3097
|
+
"destructiveHint": true,
|
|
3098
|
+
"idempotentHint": true,
|
|
3099
|
+
"openWorldHint": false
|
|
3100
|
+
},
|
|
3101
|
+
"description": "Removes the DHCP client from an interface (`/ip dhcp-client remove [find interface=...]`) — the interface stops obtaining an address from DHCP (set a static address separately if needed). Confirms removal or reports not-found.",
|
|
3102
|
+
"inputSchema": {
|
|
3103
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3104
|
+
"type": "object",
|
|
3105
|
+
"properties": {
|
|
3106
|
+
"interface": {
|
|
3107
|
+
"type": "string"
|
|
3108
|
+
}
|
|
3109
|
+
},
|
|
3110
|
+
"required": ["interface"],
|
|
3111
|
+
"additionalProperties": false
|
|
3112
|
+
}
|
|
3113
|
+
},
|
|
2945
3114
|
{
|
|
2946
3115
|
"name": "build_guest_hotspot",
|
|
2947
3116
|
"title": "Build Guest Hotspot (Captive Portal)",
|
|
@@ -10989,7 +11158,7 @@
|
|
|
10989
11158
|
"idempotentHint": true,
|
|
10990
11159
|
"openWorldHint": false
|
|
10991
11160
|
},
|
|
10992
|
-
"description": "Updates one or more attributes of a router management service (`/ip service set`) — port number, allowed source subnets (`address`, comma-separated CIDRs), TLS certificate name, or enabled/disabled state (`disabled: true/false`). Accepts a service name such as `ssh`, `winbox`, `api`, or `api-ssl`. To toggle only the enabled state use `enable_ip_service` or `disable_ip_service` instead. Returns updated service detail on success.",
|
|
11161
|
+
"description": "Updates one or more attributes of a router management service (`/ip service set`) — port number, allowed source subnets (`address`, comma-separated CIDRs), TLS certificate name, or enabled/disabled state (`disabled: true/false`). Accepts a service name such as `ssh`, `winbox`, `api`, or `api-ssl`. Note: two services cannot share a port — if the chosen port is already used by another service the device rejects it (list_ip_services shows current ports). To toggle only the enabled state use `enable_ip_service` or `disable_ip_service` instead. Returns updated service detail on success.",
|
|
10993
11162
|
"inputSchema": {
|
|
10994
11163
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
10995
11164
|
"type": "object",
|
|
@@ -11067,6 +11236,88 @@
|
|
|
11067
11236
|
"additionalProperties": false
|
|
11068
11237
|
}
|
|
11069
11238
|
},
|
|
11239
|
+
{
|
|
11240
|
+
"name": "get_ip_cloud",
|
|
11241
|
+
"title": "Get IP Cloud (DDNS) Status",
|
|
11242
|
+
"risk": "read",
|
|
11243
|
+
"annotations": {
|
|
11244
|
+
"readOnlyHint": true,
|
|
11245
|
+
"idempotentHint": true,
|
|
11246
|
+
"openWorldHint": false
|
|
11247
|
+
},
|
|
11248
|
+
"description": "Reads the RouterOS cloud DDNS status (`/ip cloud print`) — whether `ddns-enabled` is on, the assigned `dns-name` (`<serial>.sn.mynetname.net`), the detected public IPv4/IPv6 address, the last `update-time`, and the service `status`/warnings. Use this to find the router's stable cloud hostname or check why DDNS isn't updating. To change it use set_ip_cloud; to push an update now use force_cloud_update. Returns the full cloud status block.",
|
|
11249
|
+
"inputSchema": {
|
|
11250
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
11251
|
+
"type": "object",
|
|
11252
|
+
"properties": {},
|
|
11253
|
+
"additionalProperties": false
|
|
11254
|
+
}
|
|
11255
|
+
},
|
|
11256
|
+
{
|
|
11257
|
+
"name": "set_ip_cloud",
|
|
11258
|
+
"title": "Configure IP Cloud (DDNS)",
|
|
11259
|
+
"risk": "write-idempotent",
|
|
11260
|
+
"annotations": {
|
|
11261
|
+
"destructiveHint": false,
|
|
11262
|
+
"idempotentHint": true,
|
|
11263
|
+
"openWorldHint": false
|
|
11264
|
+
},
|
|
11265
|
+
"description": "Configures RouterOS cloud DDNS (`/ip cloud set`). Enable/disable the dynamic DNS name with `ddns_enabled`, optionally also sync the router clock from the cloud with `update_time`. When enabled the router registers a `<serial>.sn.mynetname.net` name that follows its public IP. To read the resulting name/status use get_ip_cloud; to force an immediate refresh use force_cloud_update; for the local-vs-public address behaviour use set_ip_cloud_advanced. Returns the updated cloud status.",
|
|
11266
|
+
"inputSchema": {
|
|
11267
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
11268
|
+
"type": "object",
|
|
11269
|
+
"properties": {
|
|
11270
|
+
"ddns_enabled": {
|
|
11271
|
+
"description": "Enable (true) or disable (false) the DDNS name",
|
|
11272
|
+
"type": "boolean"
|
|
11273
|
+
},
|
|
11274
|
+
"update_time": {
|
|
11275
|
+
"description": "Also sync the router clock from the cloud",
|
|
11276
|
+
"type": "boolean"
|
|
11277
|
+
}
|
|
11278
|
+
},
|
|
11279
|
+
"additionalProperties": false
|
|
11280
|
+
}
|
|
11281
|
+
},
|
|
11282
|
+
{
|
|
11283
|
+
"name": "force_cloud_update",
|
|
11284
|
+
"title": "Force IP Cloud DDNS Update",
|
|
11285
|
+
"risk": "write",
|
|
11286
|
+
"annotations": {
|
|
11287
|
+
"destructiveHint": false,
|
|
11288
|
+
"openWorldHint": false
|
|
11289
|
+
},
|
|
11290
|
+
"description": "Forces an immediate cloud DDNS refresh (`/ip cloud force-update`) — pushes the router's current public IP to the cloud now instead of waiting for the next scheduled update. Use after a WAN IP change or to test connectivity to the cloud service. Requires DDNS to be enabled (see set_ip_cloud). Returns the cloud status after the update.",
|
|
11291
|
+
"inputSchema": {
|
|
11292
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
11293
|
+
"type": "object",
|
|
11294
|
+
"properties": {},
|
|
11295
|
+
"additionalProperties": false
|
|
11296
|
+
}
|
|
11297
|
+
},
|
|
11298
|
+
{
|
|
11299
|
+
"name": "set_ip_cloud_advanced",
|
|
11300
|
+
"title": "Set IP Cloud Advanced Options",
|
|
11301
|
+
"risk": "write-idempotent",
|
|
11302
|
+
"annotations": {
|
|
11303
|
+
"destructiveHint": false,
|
|
11304
|
+
"idempotentHint": true,
|
|
11305
|
+
"openWorldHint": false
|
|
11306
|
+
},
|
|
11307
|
+
"description": "Sets advanced cloud options (`/ip cloud advanced set`). `use_local_address=true` makes the cloud DDNS publish the router's LOCAL address instead of the detected public one (useful behind a private WAN / when you reach the router over a VPN). For the main DDNS toggle use set_ip_cloud. Returns the updated cloud status.",
|
|
11308
|
+
"inputSchema": {
|
|
11309
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
11310
|
+
"type": "object",
|
|
11311
|
+
"properties": {
|
|
11312
|
+
"use_local_address": {
|
|
11313
|
+
"type": "boolean",
|
|
11314
|
+
"description": "Publish the local address (true) instead of the public address (false)"
|
|
11315
|
+
}
|
|
11316
|
+
},
|
|
11317
|
+
"required": ["use_local_address"],
|
|
11318
|
+
"additionalProperties": false
|
|
11319
|
+
}
|
|
11320
|
+
},
|
|
11070
11321
|
{
|
|
11071
11322
|
"name": "add_dot1x_server",
|
|
11072
11323
|
"title": "Add 802.1X Server (Authenticator) Entry",
|
|
@@ -17299,6 +17550,108 @@
|
|
|
17299
17550
|
"additionalProperties": false
|
|
17300
17551
|
}
|
|
17301
17552
|
},
|
|
17553
|
+
{
|
|
17554
|
+
"name": "test_ssh_to_device",
|
|
17555
|
+
"title": "Test SSH to a Configured Device (from the MCP host)",
|
|
17556
|
+
"risk": "read",
|
|
17557
|
+
"annotations": {
|
|
17558
|
+
"readOnlyHint": true,
|
|
17559
|
+
"idempotentHint": true,
|
|
17560
|
+
"openWorldHint": false
|
|
17561
|
+
},
|
|
17562
|
+
"description": "Tests the SSH connection FROM THE MACHINE RUNNING THIS MCP SERVER to a CONFIGURED device, using that device's stored host/port/credentials. Use this to diagnose why a saved device is not responding — it confirms whether the MCP host can reach the device's SSH port AND authenticate, and reports the connect latency and identity. Targets the selected/default device (the `device` selector). NOTE: this opens a real SSH connection from the MCP host, not through the usual command channel, and is SSH-only (a MAC-Telnet device has no SSH). To test an UNSAVED host with ad-hoc credentials use test_ssh_to_host; to test SSH OUTBOUND from a router use test_ssh_from_device. Returns OK/failed with the reason.",
|
|
17563
|
+
"inputSchema": {
|
|
17564
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
17565
|
+
"type": "object",
|
|
17566
|
+
"properties": {},
|
|
17567
|
+
"additionalProperties": false
|
|
17568
|
+
}
|
|
17569
|
+
},
|
|
17570
|
+
{
|
|
17571
|
+
"name": "test_ssh_to_host",
|
|
17572
|
+
"title": "Test SSH to Any Host (from the MCP host)",
|
|
17573
|
+
"risk": "read",
|
|
17574
|
+
"annotations": {
|
|
17575
|
+
"readOnlyHint": true,
|
|
17576
|
+
"idempotentHint": true,
|
|
17577
|
+
"openWorldHint": false
|
|
17578
|
+
},
|
|
17579
|
+
"description": "Tests an SSH connection FROM THE MACHINE RUNNING THIS MCP SERVER to an ARBITRARY host:port with the supplied credentials — a pre-flight check BEFORE adding a device to the config, or to verify reachability/credentials for any SSH host. Confirms TCP reachability AND authentication and reports the connect latency. Provide a `password` and/or a private-key path (`key_path`). NOTE: this opens a real SSH connection from the MCP host. For a device that is ALREADY configured use test_ssh_to_device; to test SSH outbound FROM a router use test_ssh_from_device. Returns OK/failed with the reason.",
|
|
17580
|
+
"inputSchema": {
|
|
17581
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
17582
|
+
"type": "object",
|
|
17583
|
+
"properties": {
|
|
17584
|
+
"host": {
|
|
17585
|
+
"type": "string",
|
|
17586
|
+
"description": "Target IP or hostname"
|
|
17587
|
+
},
|
|
17588
|
+
"port": {
|
|
17589
|
+
"default": 22,
|
|
17590
|
+
"type": "integer",
|
|
17591
|
+
"minimum": 1,
|
|
17592
|
+
"maximum": 65535
|
|
17593
|
+
},
|
|
17594
|
+
"username": {
|
|
17595
|
+
"type": "string"
|
|
17596
|
+
},
|
|
17597
|
+
"password": {
|
|
17598
|
+
"description": "Password auth (omit if using a key)",
|
|
17599
|
+
"type": "string"
|
|
17600
|
+
},
|
|
17601
|
+
"key_path": {
|
|
17602
|
+
"description": "Path (on the MCP host) to a private key file",
|
|
17603
|
+
"type": "string"
|
|
17604
|
+
},
|
|
17605
|
+
"key_passphrase": {
|
|
17606
|
+
"type": "string"
|
|
17607
|
+
},
|
|
17608
|
+
"command": {
|
|
17609
|
+
"default": "/system identity print",
|
|
17610
|
+
"description": "Command to run once connected (a harmless RouterOS read by default)",
|
|
17611
|
+
"type": "string"
|
|
17612
|
+
}
|
|
17613
|
+
},
|
|
17614
|
+
"required": ["host", "port", "username", "command"],
|
|
17615
|
+
"additionalProperties": false
|
|
17616
|
+
}
|
|
17617
|
+
},
|
|
17618
|
+
{
|
|
17619
|
+
"name": "test_ssh_from_device",
|
|
17620
|
+
"title": "Test SSH Outbound From a RouterOS Device",
|
|
17621
|
+
"risk": "write",
|
|
17622
|
+
"annotations": {
|
|
17623
|
+
"destructiveHint": false,
|
|
17624
|
+
"openWorldHint": false
|
|
17625
|
+
},
|
|
17626
|
+
"description": "Tests SSH OUTBOUND FROM a RouterOS device to a remote host using the device's OWN SSH client (`/system ssh-exec`) — i.e. the connection is made BY the router, not by the MCP host. Use this to check whether a router can reach and log into another host over SSH (e.g. a jump path or another router). The router's user must be able to authenticate to the target NON-interactively (a stored key on the router) — a password-only target will prompt and time out. Runs the test `command` on the remote and returns its output. To test the MCP HOST's connection to a device instead, use test_ssh_to_device (configured) or test_ssh_to_host (ad-hoc). Returns the remote command output or the device's error.",
|
|
17627
|
+
"inputSchema": {
|
|
17628
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
17629
|
+
"type": "object",
|
|
17630
|
+
"properties": {
|
|
17631
|
+
"host": {
|
|
17632
|
+
"type": "string",
|
|
17633
|
+
"description": "Remote host the ROUTER should SSH to"
|
|
17634
|
+
},
|
|
17635
|
+
"port": {
|
|
17636
|
+
"default": 22,
|
|
17637
|
+
"type": "integer",
|
|
17638
|
+
"minimum": 1,
|
|
17639
|
+
"maximum": 65535
|
|
17640
|
+
},
|
|
17641
|
+
"user": {
|
|
17642
|
+
"type": "string",
|
|
17643
|
+
"description": "Username on the remote host"
|
|
17644
|
+
},
|
|
17645
|
+
"command": {
|
|
17646
|
+
"default": "/system identity print",
|
|
17647
|
+
"description": "Command to run on the remote host as the connectivity test",
|
|
17648
|
+
"type": "string"
|
|
17649
|
+
}
|
|
17650
|
+
},
|
|
17651
|
+
"required": ["host", "port", "user", "command"],
|
|
17652
|
+
"additionalProperties": false
|
|
17653
|
+
}
|
|
17654
|
+
},
|
|
17302
17655
|
{
|
|
17303
17656
|
"name": "list_neighbors",
|
|
17304
17657
|
"title": "List Discovered Neighbor Devices (MNDP/CDP/LLDP)",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "add_dhcp_client",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"interface": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"description": "Interface to run the DHCP client on, e.g. 'ether1'"
|
|
9
|
+
},
|
|
10
|
+
"add_default_route": {
|
|
11
|
+
"default": true,
|
|
12
|
+
"description": "Install the received default gateway",
|
|
13
|
+
"type": "boolean"
|
|
14
|
+
},
|
|
15
|
+
"use_peer_dns": {
|
|
16
|
+
"default": true,
|
|
17
|
+
"type": "boolean"
|
|
18
|
+
},
|
|
19
|
+
"use_peer_ntp": {
|
|
20
|
+
"default": true,
|
|
21
|
+
"type": "boolean"
|
|
22
|
+
},
|
|
23
|
+
"disabled": {
|
|
24
|
+
"default": false,
|
|
25
|
+
"type": "boolean"
|
|
26
|
+
},
|
|
27
|
+
"comment": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": ["interface", "add_default_route", "use_peer_dns", "use_peer_ntp", "disabled"],
|
|
32
|
+
"additionalProperties": false
|
|
33
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "get_dhcp_client",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"interface": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"description": "Interface name, e.g. 'ether1'"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": ["interface"],
|
|
12
|
+
"additionalProperties": false
|
|
13
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "list_dhcp_clients",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"interface_filter": {
|
|
7
|
+
"description": "Substring match on interface",
|
|
8
|
+
"type": "string"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"additionalProperties": false
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "renew_dhcp_client",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"interface": {
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"release": {
|
|
10
|
+
"default": false,
|
|
11
|
+
"description": "true = release the lease; false = renew",
|
|
12
|
+
"type": "boolean"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": ["interface", "release"],
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "set_dhcp_client",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"interface": {
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"add_default_route": {
|
|
10
|
+
"type": "boolean"
|
|
11
|
+
},
|
|
12
|
+
"use_peer_dns": {
|
|
13
|
+
"type": "boolean"
|
|
14
|
+
},
|
|
15
|
+
"use_peer_ntp": {
|
|
16
|
+
"type": "boolean"
|
|
17
|
+
},
|
|
18
|
+
"disabled": {
|
|
19
|
+
"type": "boolean"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": ["interface"],
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "set_ip_cloud",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"ddns_enabled": {
|
|
7
|
+
"description": "Enable (true) or disable (false) the DDNS name",
|
|
8
|
+
"type": "boolean"
|
|
9
|
+
},
|
|
10
|
+
"update_time": {
|
|
11
|
+
"description": "Also sync the router clock from the cloud",
|
|
12
|
+
"type": "boolean"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": false
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "set_ip_cloud_advanced",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"use_local_address": {
|
|
7
|
+
"type": "boolean",
|
|
8
|
+
"description": "Publish the local address (true) instead of the public address (false)"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": ["use_local_address"],
|
|
12
|
+
"additionalProperties": false
|
|
13
|
+
}
|