sophos-central-mcp-server 0.8.1 → 0.8.2
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 +10 -10
- package/dist/tools/cloud-security.d.ts +2 -1
- package/dist/tools/cloud-security.d.ts.map +1 -1
- package/dist/tools/cloud-security.js +59 -59
- package/dist/tools/cloud-security.js.map +1 -1
- package/dist/tools/mobile.d.ts.map +1 -1
- package/dist/tools/mobile.js +210 -105
- package/dist/tools/mobile.js.map +1 -1
- package/dist/tools/switch.js +1 -1
- package/dist/tools/switch.js.map +1 -1
- package/dist/tools/web-filtering.d.ts +34 -0
- package/dist/tools/web-filtering.d.ts.map +1 -1
- package/dist/tools/web-filtering.js +96 -26
- package/dist/tools/web-filtering.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -168,7 +168,7 @@ The script:
|
|
|
168
168
|
npm test
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
-
Builds, then runs the `node:test` suites in `test/` with `fetch` stubbed: the Fusion GraphQL transport (including the HTTP 200 with `errors` case), the QL builder, the reference-data cache, and the path-keyed retry for the intermittent case-write fault, the migration guard, the policy assignment and web profile writes (body shapes, refusals, target lookups and read-back) against an in-memory policy store, the no-retry rule for a POST or mutation after a 5xx, a registration check that lists all 311 tools over an in-memory transport and checks the descriptions for the measured warnings, the `SOPHOS_FUSION_GRAPHQL_URL` check, and the HTTP transport (Origin guard, bearer token, listen address, concurrent calls) run against an in-memory Sophos. Nothing in `npm test` reaches Sophos.
|
|
171
|
+
Builds, then runs the `node:test` suites in `test/` with `fetch` stubbed: the Fusion GraphQL transport (including the HTTP 200 with `errors` case), the QL builder, the reference-data cache, and the path-keyed retry for the intermittent case-write fault, the migration guard, the policy assignment and web profile writes (body shapes, refusals, target lookups and read-back) against an in-memory policy store, the no-retry rule for a POST or mutation after a 5xx, the read-modify-write and PATCH update tools, a registration check that lists all 311 tools over an in-memory transport and checks the descriptions for the measured warnings, the `SOPHOS_FUSION_GRAPHQL_URL` check, and the HTTP transport (Origin guard, bearer token, listen address, concurrent calls) run against an in-memory Sophos. Nothing in `npm test` reaches Sophos.
|
|
172
172
|
|
|
173
173
|
To exercise the Fusion tools against a live tenant, put credentials in `.env` (or export them) and run:
|
|
174
174
|
|
|
@@ -616,12 +616,12 @@ for about 3 minutes to cover that window.
|
|
|
616
616
|
| Tool | Description |
|
|
617
617
|
|------|-------------|
|
|
618
618
|
| `sophos_get_mobile_auto_enrollment` | Get auto-enrollment settings |
|
|
619
|
-
| `sophos_update_mobile_auto_enrollment` | Update auto-enrollment settings |
|
|
619
|
+
| `sophos_update_mobile_auto_enrollment` | Update auto-enrollment settings (keeps what you leave out) |
|
|
620
620
|
| `sophos_list_mobile_os` | List supported mobile OS platforms |
|
|
621
621
|
| `sophos_list_mobile_devices` | List mobile devices with filters |
|
|
622
622
|
| `sophos_get_mobile_device` | Get device detail |
|
|
623
|
-
| `sophos_create_mobile_device` |
|
|
624
|
-
| `sophos_update_mobile_device` | Update device properties |
|
|
623
|
+
| `sophos_create_mobile_device` | Create a mobile device |
|
|
624
|
+
| `sophos_update_mobile_device` | Update device properties (keeps what you leave out) |
|
|
625
625
|
| `sophos_delete_mobile_device` | Delete/unenroll a device |
|
|
626
626
|
| `sophos_list_mobile_device_properties` | Get device properties |
|
|
627
627
|
| `sophos_get_mobile_device_compliance` | Get compliance status |
|
|
@@ -632,7 +632,7 @@ for about 3 minutes to cover that window.
|
|
|
632
632
|
| `sophos_list_mobile_device_groups` | List device groups |
|
|
633
633
|
| `sophos_get_mobile_device_group` | Get device group detail |
|
|
634
634
|
| `sophos_create_mobile_device_group` | Create a device group |
|
|
635
|
-
| `sophos_update_mobile_device_group` | Update a device group |
|
|
635
|
+
| `sophos_update_mobile_device_group` | Update a device group (keeps what you leave out) |
|
|
636
636
|
| `sophos_delete_mobile_device_group` | Delete a device group |
|
|
637
637
|
| `sophos_sync_mobile_device` | Sync a device |
|
|
638
638
|
| `sophos_request_mobile_device_logs` | Request device logs |
|
|
@@ -645,7 +645,7 @@ for about 3 minutes to cover that window.
|
|
|
645
645
|
| `sophos_list_mobile_app_groups` | List app groups |
|
|
646
646
|
| `sophos_get_mobile_app_group` | Get app group detail |
|
|
647
647
|
| `sophos_create_mobile_app_group` | Create an app group |
|
|
648
|
-
| `sophos_update_mobile_app_group` |
|
|
648
|
+
| `sophos_update_mobile_app_group` | Rename an app group or replace its app list |
|
|
649
649
|
| `sophos_delete_mobile_app_group` | Delete an app group |
|
|
650
650
|
|
|
651
651
|
### DNS Protection (5 tools)
|
|
@@ -664,8 +664,8 @@ for about 3 minutes to cover that window.
|
|
|
664
664
|
|------|-------------|
|
|
665
665
|
| `sophos_list_cloud_security_profiles` | List cloud security profiles |
|
|
666
666
|
| `sophos_get_cloud_security_profile` | Get profile detail |
|
|
667
|
-
| `sophos_create_cloud_security_profile` | Create a
|
|
668
|
-
| `sophos_update_cloud_security_profile` |
|
|
667
|
+
| `sophos_create_cloud_security_profile` | Create a runtime detection profile or a new version of one |
|
|
668
|
+
| `sophos_update_cloud_security_profile` | Rename a profile |
|
|
669
669
|
| `sophos_delete_cloud_security_profile` | Delete a profile |
|
|
670
670
|
|
|
671
671
|
### Wi-Fi (3 tools)
|
|
@@ -703,14 +703,14 @@ for about 3 minutes to cover that window.
|
|
|
703
703
|
| `sophos_list_web_filtering_profiles` | List web filtering profiles |
|
|
704
704
|
| `sophos_get_web_filtering_profile` | Get a web filtering profile |
|
|
705
705
|
| `sophos_create_web_filtering_profile` | Create a web filtering profile |
|
|
706
|
-
| `sophos_update_web_filtering_profile` | Update
|
|
706
|
+
| `sophos_update_web_filtering_profile` | Update a web filtering profile (keeps what you leave out) |
|
|
707
707
|
| `sophos_delete_web_filtering_profile` | Delete a web filtering profile |
|
|
708
708
|
| `sophos_clone_web_filtering_profile` | Clone a web filtering profile |
|
|
709
709
|
| `sophos_get_web_filtering_metadata` | Get categories, groups, and presets |
|
|
710
710
|
| `sophos_list_site_lists` | List site lists |
|
|
711
711
|
| `sophos_get_site_list` | Get a site list |
|
|
712
712
|
| `sophos_create_site_list` | Create a site list |
|
|
713
|
-
| `sophos_update_site_list` | Update
|
|
713
|
+
| `sophos_update_site_list` | Update a site list (keeps what you leave out) |
|
|
714
714
|
| `sophos_delete_site_list` | Delete a site list |
|
|
715
715
|
| `sophos_clone_site_list` | Clone a site list |
|
|
716
716
|
| `sophos_list_sites` | List the sites in a site list |
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Tools: sophos_list_cloud_security_profiles, sophos_get_cloud_security_profile,
|
|
3
3
|
* sophos_create_cloud_security_profile, sophos_update_cloud_security_profile,
|
|
4
4
|
* sophos_delete_cloud_security_profile
|
|
5
|
-
* Interact with the Sophos Cloud Security API /cloud-security/v1/
|
|
5
|
+
* Interact with the Sophos Cloud Security API /cloud-security/v1/ (runtime detection
|
|
6
|
+
* profiles), shaped by its published spec 1.0.0
|
|
6
7
|
*/
|
|
7
8
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
9
|
import type { SophosClient } from "../client/sophos-client.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-security.d.ts","sourceRoot":"","sources":["../../src/tools/cloud-security.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloud-security.d.ts","sourceRoot":"","sources":["../../src/tools/cloud-security.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,cAAc,GAC7B,IAAI,CA6ON"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Tools: sophos_list_cloud_security_profiles, sophos_get_cloud_security_profile,
|
|
3
3
|
* sophos_create_cloud_security_profile, sophos_update_cloud_security_profile,
|
|
4
4
|
* sophos_delete_cloud_security_profile
|
|
5
|
-
* Interact with the Sophos Cloud Security API /cloud-security/v1/
|
|
5
|
+
* Interact with the Sophos Cloud Security API /cloud-security/v1/ (runtime detection
|
|
6
|
+
* profiles), shaped by its published spec 1.0.0
|
|
6
7
|
*/
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
import { jsonResult, withErrorHandling } from "./helpers.js";
|
|
@@ -83,25 +84,28 @@ Args:
|
|
|
83
84
|
// --- Create Cloud Security Profile ---
|
|
84
85
|
server.registerTool("sophos_create_cloud_security_profile", {
|
|
85
86
|
title: "Create Cloud Security Profile",
|
|
86
|
-
description: `Create a new
|
|
87
|
+
description: `Create a runtime detection profile, or a new version of an existing one (Cloud Security API).
|
|
88
|
+
|
|
89
|
+
content_version and settings are required. Pass profile_id to add a new
|
|
90
|
+
version to that profile instead of creating another. sophos_get_cloud_security_profile
|
|
91
|
+
shows an existing profile's contentVersion and settings to start from.
|
|
87
92
|
|
|
88
93
|
Args:
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
+
- content_version (string): Detection content version, for example "5.8.0.8".
|
|
95
|
+
- settings (object): Profile settings.
|
|
96
|
+
- name (string, optional): Profile name (1 to 50 characters).
|
|
97
|
+
- profile_description (string, optional): Profile description.
|
|
98
|
+
- profile_id (string, optional): Existing profile to add a version to.
|
|
99
|
+
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
The profile's id and version.`,
|
|
94
103
|
inputSchema: {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
.describe('Cloud provider (e.g. "aws", "azure", "gcp")'),
|
|
101
|
-
settings: z
|
|
102
|
-
.record(z.unknown())
|
|
103
|
-
.optional()
|
|
104
|
-
.describe("Profile-specific settings"),
|
|
104
|
+
content_version: z.string().describe('Detection content version, for example "5.8.0.8"'),
|
|
105
|
+
settings: z.record(z.unknown()).describe("Profile settings"),
|
|
106
|
+
name: z.string().min(1).max(50).optional().describe("Profile name"),
|
|
107
|
+
profile_description: z.string().optional().describe("Profile description"),
|
|
108
|
+
profile_id: z.string().uuid().optional().describe("Existing profile to add a version to"),
|
|
105
109
|
tenant_id: z
|
|
106
110
|
.string()
|
|
107
111
|
.uuid()
|
|
@@ -114,39 +118,35 @@ Args:
|
|
|
114
118
|
idempotentHint: false,
|
|
115
119
|
openWorldHint: true,
|
|
116
120
|
},
|
|
117
|
-
}, withErrorHandling(async ({
|
|
121
|
+
}, withErrorHandling(async ({ content_version, settings, name, profile_description, profile_id, tenant_id }) => {
|
|
118
122
|
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
119
|
-
const body = {
|
|
120
|
-
if (
|
|
121
|
-
body.
|
|
122
|
-
if (
|
|
123
|
-
body.
|
|
124
|
-
if (
|
|
125
|
-
body.
|
|
123
|
+
const body = { contentVersion: content_version, settings };
|
|
124
|
+
if (name !== undefined)
|
|
125
|
+
body.name = name;
|
|
126
|
+
if (profile_description !== undefined)
|
|
127
|
+
body.profileDescription = profile_description;
|
|
128
|
+
if (profile_id !== undefined)
|
|
129
|
+
body.profileId = profile_id;
|
|
126
130
|
const data = await client.tenantRequest(resolvedTenantId, "/cloud-security/v1/profiles", { method: "POST", body });
|
|
127
131
|
return jsonResult({ status: "created", profile: data });
|
|
128
132
|
}));
|
|
129
133
|
// --- Update Cloud Security Profile ---
|
|
130
134
|
server.registerTool("sophos_update_cloud_security_profile", {
|
|
131
|
-
title: "
|
|
132
|
-
description: `
|
|
135
|
+
title: "Rename Cloud Security Profile",
|
|
136
|
+
description: `Rename a runtime detection profile (Cloud Security API).
|
|
137
|
+
|
|
138
|
+
The API's update changes only the name; nothing else about the profile is
|
|
139
|
+
touched. To change settings, add a new version with
|
|
140
|
+
sophos_create_cloud_security_profile and profile_id. The name is read back
|
|
141
|
+
after the write.
|
|
133
142
|
|
|
134
143
|
Args:
|
|
135
|
-
- profile_id (string): The profile ID
|
|
136
|
-
- name (string):
|
|
137
|
-
- description (string, optional): Updated profile description.
|
|
138
|
-
- provider (string, optional): Cloud provider.
|
|
139
|
-
- settings (object, optional): Updated profile settings.
|
|
144
|
+
- profile_id (string): The profile ID.
|
|
145
|
+
- name (string): New profile name (1 to 50 characters).
|
|
140
146
|
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
141
147
|
inputSchema: {
|
|
142
|
-
profile_id: z.string().describe("Cloud security profile ID to
|
|
143
|
-
name: z.string().describe("
|
|
144
|
-
description: z.string().optional().describe("Updated profile description"),
|
|
145
|
-
provider: z.string().optional().describe("Cloud provider"),
|
|
146
|
-
settings: z
|
|
147
|
-
.record(z.unknown())
|
|
148
|
-
.optional()
|
|
149
|
-
.describe("Updated profile settings"),
|
|
148
|
+
profile_id: z.string().uuid().describe("Cloud security profile ID to rename"),
|
|
149
|
+
name: z.string().min(1).max(50).describe("New profile name"),
|
|
150
150
|
tenant_id: z
|
|
151
151
|
.string()
|
|
152
152
|
.uuid()
|
|
@@ -159,30 +159,31 @@ Args:
|
|
|
159
159
|
idempotentHint: true,
|
|
160
160
|
openWorldHint: true,
|
|
161
161
|
},
|
|
162
|
-
}, withErrorHandling(async ({ profile_id, name,
|
|
162
|
+
}, withErrorHandling(async ({ profile_id, name, tenant_id }) => {
|
|
163
163
|
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
164
|
+
const path = `/cloud-security/v1/profiles/${profile_id}`;
|
|
165
|
+
await client.tenantRequest(resolvedTenantId, path, { method: "PUT", params: { name } });
|
|
166
|
+
const profile = await client.tenantRequest(resolvedTenantId, path);
|
|
167
|
+
return jsonResult({
|
|
168
|
+
status: profile.name === name ? "renamed" : "not_renamed",
|
|
169
|
+
profile_id,
|
|
170
|
+
name_sent: name,
|
|
171
|
+
name_stored: profile.name ?? null,
|
|
172
|
+
});
|
|
173
173
|
}));
|
|
174
174
|
// --- Delete Cloud Security Profile ---
|
|
175
175
|
server.registerTool("sophos_delete_cloud_security_profile", {
|
|
176
176
|
title: "Delete Cloud Security Profile",
|
|
177
|
-
description: `Delete a
|
|
177
|
+
description: `Delete a runtime detection profile (Cloud Security API).
|
|
178
178
|
|
|
179
|
-
WARNING: This permanently removes the
|
|
179
|
+
WARNING: This permanently removes the profile. Sophos may skip a profile it
|
|
180
|
+
cannot delete; the result says whether this one was deleted or skipped.
|
|
180
181
|
|
|
181
182
|
Args:
|
|
182
183
|
- profile_id (string): The profile ID to delete.
|
|
183
184
|
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
184
185
|
inputSchema: {
|
|
185
|
-
profile_id: z.string().describe("Cloud security profile ID to delete"),
|
|
186
|
+
profile_id: z.string().uuid().describe("Cloud security profile ID to delete"),
|
|
186
187
|
tenant_id: z
|
|
187
188
|
.string()
|
|
188
189
|
.uuid()
|
|
@@ -197,12 +198,11 @@ Args:
|
|
|
197
198
|
},
|
|
198
199
|
}, withErrorHandling(async ({ profile_id, tenant_id }) => {
|
|
199
200
|
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
200
|
-
await client.tenantRequest(resolvedTenantId,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
profile_id,
|
|
204
|
-
message: `Cloud security profile ${profile_id} deleted
|
|
205
|
-
});
|
|
201
|
+
const data = await client.tenantRequest(resolvedTenantId, "/cloud-security/v1/profiles", { method: "DELETE", params: { profileIds: profile_id } });
|
|
202
|
+
const skipped = (data?.skippedProfiles ?? []).filter((s) => JSON.stringify(s).includes(profile_id));
|
|
203
|
+
return jsonResult(skipped.length
|
|
204
|
+
? { status: "skipped", profile_id, skipped }
|
|
205
|
+
: { status: "deleted", profile_id, message: `Cloud security profile ${profile_id} deleted.` });
|
|
206
206
|
}));
|
|
207
207
|
}
|
|
208
208
|
//# sourceMappingURL=cloud-security.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-security.js","sourceRoot":"","sources":["../../src/tools/cloud-security.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloud-security.js","sourceRoot":"","sources":["../../src/tools/cloud-security.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../src/tools/mobile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../src/tools/mobile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqCnE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,cAAc,GAC7B,IAAI,CAm/CN"}
|