sophos-central-mcp-server 0.1.10 → 0.2.1

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 (83) hide show
  1. package/README.md +358 -116
  2. package/dist/client/sophos-client.d.ts +1 -1
  3. package/dist/client/sophos-client.d.ts.map +1 -1
  4. package/dist/index.js +31 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools/accounts.d.ts.map +1 -0
  7. package/dist/tools/accounts.js.map +1 -0
  8. package/dist/tools/admin-management.d.ts +14 -0
  9. package/dist/tools/admin-management.d.ts.map +1 -0
  10. package/dist/tools/admin-management.js +515 -0
  11. package/dist/tools/admin-management.js.map +1 -0
  12. package/dist/tools/alerts.d.ts +1 -1
  13. package/dist/tools/alerts.d.ts.map +1 -1
  14. package/dist/tools/alerts.js +45 -1
  15. package/dist/tools/alerts.js.map +1 -1
  16. package/dist/tools/business-automation.d.ts.map +1 -0
  17. package/dist/tools/business-automation.js.map +1 -0
  18. package/dist/tools/cases.d.ts +2 -1
  19. package/dist/tools/cases.d.ts.map +1 -1
  20. package/dist/tools/cases.js +69 -1
  21. package/dist/tools/cases.js.map +1 -1
  22. package/dist/tools/cloud-security.d.ts +11 -0
  23. package/dist/tools/cloud-security.d.ts.map +1 -0
  24. package/dist/tools/cloud-security.js +268 -0
  25. package/dist/tools/cloud-security.js.map +1 -0
  26. package/dist/tools/directory.d.ts +7 -1
  27. package/dist/tools/directory.d.ts.map +1 -1
  28. package/dist/tools/directory.js +656 -1
  29. package/dist/tools/directory.js.map +1 -1
  30. package/dist/tools/dns-protection.d.ts +11 -0
  31. package/dist/tools/dns-protection.d.ts.map +1 -0
  32. package/dist/tools/dns-protection.js +205 -0
  33. package/dist/tools/dns-protection.js.map +1 -0
  34. package/dist/tools/email.d.ts +22 -0
  35. package/dist/tools/email.d.ts.map +1 -0
  36. package/dist/tools/email.js +967 -0
  37. package/dist/tools/email.js.map +1 -0
  38. package/dist/tools/endpoint-migrations.d.ts +11 -0
  39. package/dist/tools/endpoint-migrations.d.ts.map +1 -0
  40. package/dist/tools/endpoint-migrations.js +334 -0
  41. package/dist/tools/endpoint-migrations.js.map +1 -0
  42. package/dist/tools/endpoint-settings.d.ts +12 -0
  43. package/dist/tools/endpoint-settings.d.ts.map +1 -0
  44. package/dist/tools/endpoint-settings.js +1183 -0
  45. package/dist/tools/endpoint-settings.js.map +1 -0
  46. package/dist/tools/endpoints.d.ts +8 -1
  47. package/dist/tools/endpoints.d.ts.map +1 -1
  48. package/dist/tools/endpoints.js +473 -1
  49. package/dist/tools/endpoints.js.map +1 -1
  50. package/dist/tools/firewall.d.ts +19 -0
  51. package/dist/tools/firewall.d.ts.map +1 -0
  52. package/dist/tools/firewall.js +747 -0
  53. package/dist/tools/firewall.js.map +1 -0
  54. package/dist/tools/health.d.ts +1 -0
  55. package/dist/tools/health.d.ts.map +1 -1
  56. package/dist/tools/health.js +1 -0
  57. package/dist/tools/health.js.map +1 -1
  58. package/dist/tools/licensing.d.ts.map +1 -0
  59. package/dist/tools/licensing.js.map +1 -0
  60. package/dist/tools/mobile.d.ts +26 -0
  61. package/dist/tools/mobile.d.ts.map +1 -0
  62. package/dist/tools/mobile.js +1425 -0
  63. package/dist/tools/mobile.js.map +1 -0
  64. package/dist/tools/partner.d.ts +18 -0
  65. package/dist/tools/partner.d.ts.map +1 -0
  66. package/dist/tools/partner.js +541 -0
  67. package/dist/tools/partner.js.map +1 -0
  68. package/dist/tools/policies.d.ts +2 -1
  69. package/dist/tools/policies.d.ts.map +1 -1
  70. package/dist/tools/policies.js +56 -1
  71. package/dist/tools/policies.js.map +1 -1
  72. package/dist/tools/user-activity.d.ts +9 -0
  73. package/dist/tools/user-activity.d.ts.map +1 -0
  74. package/dist/tools/user-activity.js +78 -0
  75. package/dist/tools/user-activity.js.map +1 -0
  76. package/dist/tools/wifi.d.ts +10 -0
  77. package/dist/tools/wifi.d.ts.map +1 -0
  78. package/dist/tools/wifi.js +125 -0
  79. package/dist/tools/wifi.js.map +1 -0
  80. package/dist/tools/xdr.d.ts.map +1 -1
  81. package/dist/tools/xdr.js +125 -0
  82. package/dist/tools/xdr.js.map +1 -1
  83. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Sophos Central MCP Server
2
2
 
3
- MCP (Model Context Protocol) server for interacting with Sophos Central APIs. Supports partner, organisation, and single-tenant credential types with automatic region routing.
3
+ MCP (Model Context Protocol) server for interacting with Sophos Central APIs. Supports partner, organisation, and single-tenant credential types with automatic region routing. **266 tools** covering 14 Sophos API namespaces.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -50,6 +50,7 @@ claude mcp add sophos-central \
50
50
  - **Token lifecycle**: Automatic OAuth2 token refresh before expiry
51
51
  - **Rate limit handling**: Retry with backoff on 429 responses
52
52
  - **Dual transport**: Streamable HTTP (for Claude Desktop / Claude Code) or stdio
53
+ - **Full API coverage**: 266 tools across endpoints, alerts, policies, firewalls, email, mobile, XDR, cases, SIEM, and more
53
54
 
54
55
  ## Prerequisites
55
56
 
@@ -85,166 +86,396 @@ TRANSPORT=http
85
86
 
86
87
  ## Tools
87
88
 
88
- ### Partner Sales & Advisory
89
+ ### Partner & Organisation (18 tools)
89
90
 
90
- > These tools are only available with **partner or organisation-level** credentials. They operate across all managed tenants in a single call.
91
+ > These tools are only available with **partner or organisation-level** credentials. They operate across all managed tenants.
91
92
 
92
93
  | Tool | Description |
93
94
  |------|-------------|
94
95
  | `sophos_list_tenants` | List all managed tenants with IDs, names, and data regions |
95
96
  | `sophos_list_account_health` | Bulk health scores for all tenants, ranked worst-first |
96
97
  | `sophos_partner_gap_analysis` | Security gap and upsell opportunity report across all tenants |
97
-
98
- #### `sophos_partner_gap_analysis` — detail
99
-
100
- Fetches account health for every managed tenant in parallel and distils the results into a compact, ranked list of security gaps — designed for partner sales and advisory conversations. A single call covers the entire managed estate.
101
-
102
- **Parameters**
103
-
104
- | Parameter | Type | Default | Description |
105
- |-----------|------|---------|-------------|
106
- | `protection_threshold` | integer (1–100) | `80` | Flag tenants whose protection score is below this percentage |
107
- | `flag_missing_server_protection` | boolean | `false` | Include tenants with no server protection enrolled as an upsell opportunity. Off by default to reduce noise for SMB-heavy partners |
108
- | `limit` | integer | all | Return only the top N tenants by gap count |
109
-
110
- **Gaps detected**
111
-
112
- | Gap type | Meaning |
113
- |----------|---------|
114
- | `no_products_enrolled` | No Sophos products enrolled or no endpoints reporting health data |
115
- | `low_computer_protection` | Computer protection score below the configured threshold |
116
- | `low_server_protection` | Server protection score below the configured threshold |
117
- | `tamper_protection_partial` | Tamper protection not enabled on all computers |
118
- | `tamper_protection_partial_servers` | Tamper protection not enabled on all servers |
119
- | `policy_non_compliance` | Computer policy compliance below 100% |
120
- | `policy_non_compliance_servers` | Server policy compliance below 100% |
121
- | `no_server_protection` | Server protection not enrolled (only when `flag_missing_server_protection=true`) |
122
-
123
- **Response shape**
124
-
125
- ```json
126
- {
127
- "summary": {
128
- "total_tenants": 137,
129
- "tenants_with_gaps": 42,
130
- "tenants_with_errors": 1,
131
- "tenants_no_issues": 94,
132
- "protection_threshold_used": 80,
133
- "gap_type_breakdown": [
134
- { "type": "tamper_protection_partial", "affected_tenants": 28 },
135
- { "type": "low_computer_protection", "affected_tenants": 14 }
136
- ]
137
- },
138
- "tenants_with_gaps": [
139
- {
140
- "tenant_id": "...",
141
- "tenant_name": "Acme Corp",
142
- "gap_count": 3,
143
- "gaps": [
144
- { "type": "low_computer_protection", "detail": "Computer protection at 62% (below 80% threshold)", "score": 62 },
145
- { "type": "tamper_protection_partial", "detail": "Tamper protection enabled on only 50% of computers", "score": 50 },
146
- { "type": "policy_non_compliance", "detail": "Computer policy compliance at 75%", "score": 75 }
147
- ]
148
- }
149
- ]
150
- }
151
- ```
152
-
153
- ### SOC Monitoring
98
+ | `sophos_create_tenant` | Create a new managed tenant |
99
+ | `sophos_get_managed_tenant` | Get managed tenant details |
100
+ | `sophos_list_partner_roles` | List partner-level roles |
101
+ | `sophos_get_partner_role` | Get partner role detail |
102
+ | `sophos_create_partner_role` | Create a partner role |
103
+ | `sophos_delete_partner_role` | Delete a partner role |
104
+ | `sophos_list_partner_permission_sets` | List available partner permission sets |
105
+ | `sophos_list_partner_admins` | List partner administrators |
106
+ | `sophos_get_partner_admin` | Get partner admin detail |
107
+ | `sophos_create_partner_admin` | Create a partner admin |
108
+ | `sophos_delete_partner_admin` | Delete a partner admin |
109
+ | `sophos_list_partner_admin_role_assignments` | List admin role assignments |
110
+ | `sophos_add_partner_admin_role_assignment` | Add role assignment to admin |
111
+ | `sophos_delete_partner_admin_role_assignment` | Remove role assignment |
112
+ | `sophos_get_billing_usage` | Get billing usage summary |
113
+
114
+ ### Alerts (4 tools)
154
115
 
155
116
  | Tool | Description |
156
117
  |------|-------------|
157
118
  | `sophos_list_alerts` | List alerts with severity/category/product/date filters |
158
119
  | `sophos_get_alert` | Get full alert detail with allowed actions |
159
120
  | `sophos_acknowledge_alert` | Mark an alert as reviewed |
121
+ | `sophos_search_alerts` | Advanced search with structured filters and sorting |
122
+
123
+ ### Endpoints (18 tools)
124
+
125
+ | Tool | Description |
126
+ |------|-------------|
160
127
  | `sophos_list_endpoints` | List endpoints with health/OS/hostname/isolation filters |
161
128
  | `sophos_get_endpoint` | Get full endpoint detail |
162
129
  | `sophos_scan_endpoint` | Trigger an on-demand scan |
163
130
  | `sophos_isolate_endpoint` | Network-isolate a compromised endpoint |
164
131
  | `sophos_release_endpoint` | Release an endpoint from isolation |
165
- | `sophos_get_account_health` | Get tenant health check scores |
166
- | `sophos_list_users` | List directory users |
167
- | `sophos_list_admins` | List admin accounts and roles |
168
- | `sophos_list_roles` | List available admin roles |
132
+ | `sophos_delete_endpoint` | Delete a specific endpoint |
133
+ | `sophos_bulk_delete_endpoints` | Bulk delete multiple endpoints |
134
+ | `sophos_get_tamper_protection` | Get tamper protection status and password |
135
+ | `sophos_toggle_tamper_protection` | Enable/disable tamper protection |
136
+ | `sophos_get_adaptive_attack_protection` | Get adaptive attack protection status |
137
+ | `sophos_toggle_adaptive_attack_protection` | Enable/disable adaptive attack protection |
138
+ | `sophos_trigger_update_check` | Trigger a software update check |
139
+ | `sophos_request_forensic_logs` | Request forensic log upload |
140
+ | `sophos_get_forensic_log_status` | Get forensic log request status |
141
+ | `sophos_request_memory_dump` | Request memory dump from endpoint |
142
+ | `sophos_get_memory_dump_status` | Get memory dump request status |
143
+ | `sophos_bulk_isolate_endpoints` | Bulk isolate/release multiple endpoints |
144
+ | `sophos_get_endpoint_isolation_status` | Get endpoint isolation status |
145
+
146
+ ### Endpoint Settings (32 tools)
147
+
148
+ | Tool | Description |
149
+ |------|-------------|
150
+ | `sophos_list_installer_downloads` | List available installer packages |
151
+ | `sophos_get_installer_download` | Get specific installer download link |
152
+ | `sophos_list_blocked_addresses` | List blocked network addresses |
153
+ | `sophos_add_blocked_address` | Add a blocked network address |
154
+ | `sophos_delete_blocked_address` | Delete a blocked address |
155
+ | `sophos_list_local_sites` | List web control local site definitions |
156
+ | `sophos_add_local_site` | Add a local site for web control |
157
+ | `sophos_update_local_site` | Update a local site |
158
+ | `sophos_delete_local_site` | Delete a local site |
159
+ | `sophos_list_web_control_categories` | List web control categories |
160
+ | `sophos_get_tls_decryption_settings` | Get TLS decryption settings |
161
+ | `sophos_update_tls_decryption_settings` | Update TLS decryption settings |
162
+ | `sophos_get_global_tamper_protection` | Get global tamper protection settings |
163
+ | `sophos_update_global_tamper_protection` | Update global tamper protection |
164
+ | `sophos_list_detected_exploits` | List detected exploits |
165
+ | `sophos_get_detected_exploit` | Get exploit detail |
166
+ | `sophos_list_exploit_mitigation_categories` | List exploit mitigation categories |
167
+ | `sophos_get_exploit_mitigation_category` | Get category detail |
168
+ | `sophos_list_exploit_mitigation_apps` | List exploit mitigation applications |
169
+ | `sophos_get_exploit_mitigation_app` | Get application detail |
170
+ | `sophos_add_exploit_mitigation_app` | Add application to exploit mitigation |
171
+ | `sophos_update_exploit_mitigation_app` | Update exploit mitigation application |
172
+ | `sophos_list_ips_exclusions` | List IPS exclusions |
173
+ | `sophos_add_ips_exclusion` | Add IPS exclusion |
174
+ | `sophos_delete_ips_exclusion` | Delete IPS exclusion |
175
+ | `sophos_list_isolation_exclusions` | List isolation exclusions |
176
+ | `sophos_add_isolation_exclusion` | Add isolation exclusion |
177
+ | `sophos_delete_isolation_exclusion` | Delete isolation exclusion |
178
+ | `sophos_get_lockdown_settings` | Get server lockdown settings |
179
+ | `sophos_update_lockdown_settings` | Update server lockdown settings |
180
+ | `sophos_get_mtr_settings` | Get MDR/MTR settings |
181
+ | `sophos_update_mtr_settings` | Update MDR/MTR settings |
182
+
183
+ ### Endpoint Migrations (7 tools)
169
184
 
170
- ### Admin Automation
185
+ | Tool | Description |
186
+ |------|-------------|
187
+ | `sophos_list_migrations` | List endpoint migration jobs |
188
+ | `sophos_get_migration` | Get migration job details |
189
+ | `sophos_create_migration` | Create a new migration job |
190
+ | `sophos_delete_migration` | Delete a migration job |
191
+ | `sophos_list_migration_endpoints` | List endpoints in a migration |
192
+ | `sophos_list_recommended_packages` | List recommended software packages |
193
+ | `sophos_list_static_packages` | List static software packages |
194
+
195
+ ### Policies (6 tools)
171
196
 
172
197
  | Tool | Description |
173
198
  |------|-------------|
174
199
  | `sophos_list_policies` | List endpoint policies with optional type filter |
175
200
  | `sophos_get_policy` | Get full policy detail including all settings |
201
+ | `sophos_create_policy` | Create a new endpoint policy |
176
202
  | `sophos_clone_policy` | Clone an existing policy under a new name |
177
203
  | `sophos_update_policy` | Update policy name, enabled state, priority, or settings |
204
+ | `sophos_delete_policy` | Delete a policy |
205
+
206
+ ### Endpoint Groups (7 tools)
207
+
208
+ | Tool | Description |
209
+ |------|-------------|
178
210
  | `sophos_list_endpoint_groups` | List endpoint groups |
179
- | `sophos_get_endpoint_group` | Get group detail with optional member endpoint list |
211
+ | `sophos_get_endpoint_group` | Get group detail with optional member list |
180
212
  | `sophos_create_endpoint_group` | Create a new endpoint group |
181
- | `sophos_update_endpoint_group` | Rename or update a group's description |
213
+ | `sophos_update_endpoint_group` | Rename or update a group |
182
214
  | `sophos_delete_endpoint_group` | Delete an endpoint group |
183
215
  | `sophos_add_endpoints_to_group` | Add endpoints to a group |
184
216
  | `sophos_remove_endpoint_from_group` | Remove an endpoint from a group |
217
+
218
+ ### Exclusions & Allow/Block Lists (9 tools)
219
+
220
+ | Tool | Description |
221
+ |------|-------------|
185
222
  | `sophos_list_exclusions` | List global scanning exclusions |
186
- | `sophos_add_exclusion` | Add a scanning exclusion (path, process, web, PUA, AMSI) |
223
+ | `sophos_add_exclusion` | Add a scanning exclusion |
187
224
  | `sophos_delete_exclusion` | Delete a scanning exclusion |
188
225
  | `sophos_list_allowed_items` | List globally allowed items |
189
- | `sophos_add_allowed_item` | Allow an item by SHA256, path, or certificate signer |
226
+ | `sophos_add_allowed_item` | Allow an item by SHA256, path, or certificate |
190
227
  | `sophos_delete_allowed_item` | Remove an allowed item |
191
228
  | `sophos_list_blocked_items` | List globally blocked items |
192
- | `sophos_add_blocked_item` | Block an item by SHA256, path, or certificate signer |
229
+ | `sophos_add_blocked_item` | Block an item by SHA256, path, or certificate |
193
230
  | `sophos_delete_blocked_item` | Remove a blocked item |
194
231
 
195
- ### Investigation
232
+ ### Account Health (3 tools)
196
233
 
197
- #### Cases
234
+ | Tool | Description |
235
+ |------|-------------|
236
+ | `sophos_get_account_health` | Get tenant health check scores |
237
+ | `sophos_list_account_health` | Bulk health scores for all tenants (partner/org only) |
238
+ | `sophos_partner_gap_analysis` | Gap analysis across all tenants (partner/org only) |
239
+
240
+ ### Directory Users & Groups (17 tools)
241
+
242
+ | Tool | Description |
243
+ |------|-------------|
244
+ | `sophos_list_users` | List directory users |
245
+ | `sophos_get_user` | Get user detail |
246
+ | `sophos_create_user` | Create a directory user |
247
+ | `sophos_update_user` | Update a user |
248
+ | `sophos_delete_user` | Delete a user |
249
+ | `sophos_list_user_groups` | List directory user groups |
250
+ | `sophos_get_user_group` | Get user group detail |
251
+ | `sophos_create_user_group` | Create a user group |
252
+ | `sophos_update_user_group` | Update a user group |
253
+ | `sophos_delete_user_group` | Delete a user group |
254
+ | `sophos_list_user_group_members` | List members of a user group |
255
+ | `sophos_add_users_to_group` | Add users to a group |
256
+ | `sophos_remove_user_from_group` | Remove a user from a group |
257
+ | `sophos_list_user_group_endpoints` | List endpoints in a user group |
258
+ | `sophos_list_user_group_policies` | List policies assigned to a user group |
259
+ | `sophos_list_admins` | List admin accounts and roles |
260
+ | `sophos_list_roles` | List available admin roles |
261
+
262
+ ### Admin Management (14 tools)
198
263
 
199
264
  | Tool | Description |
200
265
  |------|-------------|
201
- | `sophos_list_cases` | List investigation cases with pagination |
266
+ | `sophos_get_admin` | Get admin detail |
267
+ | `sophos_create_admin` | Create an admin account |
268
+ | `sophos_delete_admin` | Delete an admin account |
269
+ | `sophos_list_admin_role_assignments` | List admin's role assignments |
270
+ | `sophos_add_admin_role_assignment` | Add role assignment to admin |
271
+ | `sophos_delete_admin_role_assignment` | Remove role assignment |
272
+ | `sophos_get_admin_role_assignment` | Get specific role assignment |
273
+ | `sophos_create_role` | Create an admin role |
274
+ | `sophos_get_role` | Get role detail |
275
+ | `sophos_update_role` | Update a role |
276
+ | `sophos_delete_role` | Delete a role |
277
+ | `sophos_list_permission_sets` | List available permission sets |
278
+ | `sophos_list_admin_authenticators` | List admin's authenticators |
279
+ | `sophos_reset_admin_password` | Reset an admin's password |
280
+
281
+ ### Cases (9 tools)
282
+
283
+ | Tool | Description |
284
+ |------|-------------|
285
+ | `sophos_list_cases` | List investigation cases |
202
286
  | `sophos_get_case` | Get full case details |
203
- | `sophos_create_case` | Create a new self-managed investigation case |
204
- | `sophos_update_case` | Update case status, severity, assignee, or overview |
287
+ | `sophos_create_case` | Create a new investigation case |
288
+ | `sophos_update_case` | Update case status, severity, assignee |
289
+ | `sophos_delete_case` | Delete a case |
205
290
  | `sophos_list_case_detections` | List detections linked to a case |
206
- | `sophos_get_case_mitre_summary` | Get MITRE ATT&CK tactic/technique breakdown for a case |
291
+ | `sophos_get_case_detection` | Get specific detection detail |
292
+ | `sophos_list_case_impacted_entities` | List impacted entities for a case |
293
+ | `sophos_get_case_mitre_summary` | Get MITRE ATT&CK breakdown for a case |
207
294
 
208
- #### Detections
295
+ ### Detections (6 tools)
209
296
 
210
297
  Async API — start a query, poll for completion, then fetch results.
211
298
 
212
299
  | Tool | Description |
213
300
  |------|-------------|
214
- | `sophos_run_detections_query` | Start an async query for individual XDR/EDR detections |
215
- | `sophos_get_detections_run` | Poll the status of a detections query run |
216
- | `sophos_get_detections_results` | Fetch results from a completed detections query |
217
- | `sophos_run_detection_groups_query` | Start an async query for grouped detections |
218
- | `sophos_get_detection_groups_run` | Poll the status of a detection groups query run |
219
- | `sophos_get_detection_groups_results` | Fetch results from a completed detection groups query |
301
+ | `sophos_run_detections_query` | Start async query for individual detections |
302
+ | `sophos_get_detections_run` | Poll detection query status |
303
+ | `sophos_get_detections_results` | Fetch completed detection query results |
304
+ | `sophos_run_detection_groups_query` | Start async query for grouped detections |
305
+ | `sophos_get_detection_groups_run` | Poll detection groups query status |
306
+ | `sophos_get_detection_groups_results` | Fetch completed detection groups results |
220
307
 
221
- #### SIEM Events
308
+ ### SIEM (2 tools)
222
309
 
223
310
  | Tool | Description |
224
311
  |------|-------------|
225
- | `sophos_list_siem_events` | Stream security events via cursor-based pagination (last 24h) |
226
- | `sophos_list_siem_alerts` | Stream security alerts via cursor-based pagination (last 24h) |
312
+ | `sophos_list_siem_events` | Stream security events (cursor-based, last 24h default) |
313
+ | `sophos_list_siem_alerts` | Stream security alerts (cursor-based, last 24h default) |
227
314
 
228
- #### XDR Data Lake
315
+ ### XDR Data Lake (9 tools)
229
316
 
230
- Async API — submit a SQL query against historical telemetry, poll for completion, then fetch results.
317
+ Async API — submit SQL queries against historical telemetry.
231
318
 
232
319
  | Tool | Description |
233
320
  |------|-------------|
234
- | `sophos_run_xdr_query` | Start an async SQL query against the Sophos Data Lake |
235
- | `sophos_get_xdr_query_run` | Poll the status of an XDR query run |
236
- | `sophos_get_xdr_query_results` | Fetch paginated results from a completed XDR query |
321
+ | `sophos_run_xdr_query` | Start async SQL query against the Data Lake |
322
+ | `sophos_get_xdr_query_run` | Poll XDR query run status |
323
+ | `sophos_get_xdr_query_results` | Fetch completed XDR query results |
324
+ | `sophos_list_xdr_query_runs` | List XDR query runs |
325
+ | `sophos_cancel_xdr_query_run` | Cancel a running XDR query |
326
+ | `sophos_list_xdr_query_categories` | List XDR query categories |
327
+ | `sophos_get_xdr_query_category` | Get XDR query category detail |
328
+ | `sophos_list_xdr_queries` | List saved XDR queries |
329
+ | `sophos_get_xdr_query` | Get saved XDR query detail |
237
330
 
238
- #### Live Discover
331
+ ### Live Discover (4 tools)
239
332
 
240
- Async API — run OSquery SQL on live endpoints in real time. Rate limited to 10 runs/minute, 500/day.
333
+ Async API — run OSquery SQL on live endpoints. Rate limited to 10 runs/minute, 500/day.
241
334
 
242
335
  | Tool | Description |
243
336
  |------|-------------|
244
337
  | `sophos_list_live_discover_queries` | List available saved OSquery queries |
245
- | `sophos_run_live_discover_query` | Run a saved or ad hoc OSquery against live endpoints |
246
- | `sophos_get_live_discover_run` | Poll the status of a Live Discover query run |
247
- | `sophos_get_live_discover_results` | Fetch paginated results from a completed Live Discover run |
338
+ | `sophos_run_live_discover_query` | Run a saved or ad hoc query on live endpoints |
339
+ | `sophos_get_live_discover_run` | Poll Live Discover run status |
340
+ | `sophos_get_live_discover_results` | Fetch Live Discover results |
341
+
342
+ ### Firewall (19 tools)
343
+
344
+ | Tool | Description |
345
+ |------|-------------|
346
+ | `sophos_list_firewalls` | List managed firewalls |
347
+ | `sophos_get_firewall` | Get firewall detail |
348
+ | `sophos_update_firewall` | Update firewall properties |
349
+ | `sophos_delete_firewall` | Delete a firewall |
350
+ | `sophos_firewall_action` | Perform action (reboot, sync, upgrade check) |
351
+ | `sophos_check_firmware_upgrade` | Check for firmware upgrades |
352
+ | `sophos_start_firmware_upgrade` | Start a firmware upgrade |
353
+ | `sophos_cancel_firmware_upgrade` | Cancel a firmware upgrade |
354
+ | `sophos_list_firewall_groups` | List firewall groups |
355
+ | `sophos_get_firewall_group` | Get firewall group detail |
356
+ | `sophos_create_firewall_group` | Create a firewall group |
357
+ | `sophos_update_firewall_group` | Update a firewall group |
358
+ | `sophos_delete_firewall_group` | Delete a firewall group |
359
+ | `sophos_get_firewall_sync_status` | Get firewall sync status |
360
+ | `sophos_get_threat_feed_settings` | Get MDR threat feed settings |
361
+ | `sophos_update_threat_feed_settings` | Update threat feed settings |
362
+ | `sophos_list_threat_feed_indicators` | List threat feed indicators |
363
+ | `sophos_search_threat_feed_indicators` | Search threat feed indicators |
364
+ | `sophos_get_threat_feed_indicator` | Get specific threat indicator |
365
+
366
+ ### Email Protection (30 tools)
367
+
368
+ | Tool | Description |
369
+ |------|-------------|
370
+ | `sophos_search_quarantine` | Search quarantined emails |
371
+ | `sophos_preview_quarantine_message` | Preview quarantined email content |
372
+ | `sophos_get_quarantine_urls` | Get URLs in quarantined email |
373
+ | `sophos_get_quarantine_attachments` | Get quarantined email attachment info |
374
+ | `sophos_release_quarantine_message` | Release quarantined email to recipient |
375
+ | `sophos_delete_quarantine_message` | Permanently delete quarantined email |
376
+ | `sophos_strip_quarantine_attachments` | Strip attachments and release |
377
+ | `sophos_reattach_quarantine_attachments` | Reattach stripped attachments |
378
+ | `sophos_download_quarantine_attachment` | Download specific attachment |
379
+ | `sophos_search_post_delivery_quarantine` | Search post-delivery quarantine |
380
+ | `sophos_preview_post_delivery_message` | Preview post-delivery quarantined message |
381
+ | `sophos_get_post_delivery_attachments` | Get post-delivery attachment info |
382
+ | `sophos_release_post_delivery_message` | Release post-delivery message |
383
+ | `sophos_delete_post_delivery_message` | Delete post-delivery message |
384
+ | `sophos_download_post_delivery_attachment` | Download post-delivery attachment |
385
+ | `sophos_clawback_message` | Clawback/recall a delivered message |
386
+ | `sophos_get_clawback_status` | Get clawback action status |
387
+ | `sophos_list_mailboxes` | List mailboxes |
388
+ | `sophos_create_mailbox` | Create a mailbox |
389
+ | `sophos_bulk_create_mailboxes` | Bulk create mailboxes |
390
+ | `sophos_get_mailbox` | Get mailbox detail |
391
+ | `sophos_update_mailbox` | Update a mailbox |
392
+ | `sophos_delete_mailbox` | Delete a mailbox |
393
+ | `sophos_list_mailbox_aliases` | List mailbox aliases |
394
+ | `sophos_add_mailbox_alias` | Add a mailbox alias |
395
+ | `sophos_delete_mailbox_alias` | Delete a mailbox alias |
396
+ | `sophos_list_mailbox_delegates` | List mailbox delegates |
397
+ | `sophos_add_mailbox_delegate` | Add a mailbox delegate |
398
+ | `sophos_delete_mailbox_delegate` | Remove a mailbox delegate |
399
+ | `sophos_get_email_settings` | Get email protection settings |
400
+
401
+ ### Mobile Device Management (38 tools)
402
+
403
+ | Tool | Description |
404
+ |------|-------------|
405
+ | `sophos_get_mobile_auto_enrollment` | Get auto-enrollment settings |
406
+ | `sophos_update_mobile_auto_enrollment` | Update auto-enrollment settings |
407
+ | `sophos_list_mobile_os` | List supported mobile OS platforms |
408
+ | `sophos_list_mobile_devices` | List mobile devices with filters |
409
+ | `sophos_get_mobile_device` | Get device detail |
410
+ | `sophos_create_mobile_device` | Enroll a new mobile device |
411
+ | `sophos_update_mobile_device` | Update device properties |
412
+ | `sophos_delete_mobile_device` | Delete/unenroll a device |
413
+ | `sophos_list_mobile_device_properties` | Get device properties |
414
+ | `sophos_get_mobile_device_compliance` | Get compliance status |
415
+ | `sophos_get_mobile_device_scans` | Get scan results |
416
+ | `sophos_get_mobile_device_policies` | Get assigned policies |
417
+ | `sophos_get_mobile_device_apps` | Get installed apps |
418
+ | `sophos_get_mobile_device_location` | Get device location |
419
+ | `sophos_list_mobile_device_groups` | List device groups |
420
+ | `sophos_get_mobile_device_group` | Get device group detail |
421
+ | `sophos_create_mobile_device_group` | Create a device group |
422
+ | `sophos_update_mobile_device_group` | Update a device group |
423
+ | `sophos_delete_mobile_device_group` | Delete a device group |
424
+ | `sophos_sync_mobile_device` | Sync a device |
425
+ | `sophos_request_mobile_device_logs` | Request device logs |
426
+ | `sophos_scan_mobile_device` | Trigger device scan |
427
+ | `sophos_unenroll_mobile_device` | Unenroll a device |
428
+ | `sophos_send_mobile_device_message` | Send message to device |
429
+ | `sophos_locate_mobile_device` | Request device location update |
430
+ | `sophos_lock_mobile_device` | Lock device remotely |
431
+ | `sophos_wipe_mobile_device` | Wipe device remotely |
432
+ | `sophos_list_mobile_app_groups` | List app groups |
433
+ | `sophos_get_mobile_app_group` | Get app group detail |
434
+ | `sophos_create_mobile_app_group` | Create an app group |
435
+ | `sophos_update_mobile_app_group` | Update an app group |
436
+ | `sophos_delete_mobile_app_group` | Delete an app group |
437
+ | `sophos_list_mobile_policies` | List mobile policies |
438
+ | `sophos_get_mobile_policy` | Get mobile policy detail |
439
+ | `sophos_update_mobile_policy` | Update a mobile policy |
440
+ | `sophos_list_mobile_profiles` | List mobile profiles |
441
+ | `sophos_get_mobile_profile` | Get mobile profile detail |
442
+ | `sophos_update_mobile_profile` | Update a mobile profile |
443
+
444
+ ### DNS Protection (5 tools)
445
+
446
+ | Tool | Description |
447
+ |------|-------------|
448
+ | `sophos_list_dns_locations` | List DNS protection locations |
449
+ | `sophos_get_dns_location` | Get location detail |
450
+ | `sophos_create_dns_location` | Create a DNS location |
451
+ | `sophos_update_dns_location` | Update a DNS location |
452
+ | `sophos_delete_dns_location` | Delete a DNS location |
453
+
454
+ ### Cloud Security (6 tools)
455
+
456
+ | Tool | Description |
457
+ |------|-------------|
458
+ | `sophos_list_cloud_security_profiles` | List cloud security profiles |
459
+ | `sophos_get_cloud_security_profile` | Get profile detail |
460
+ | `sophos_create_cloud_security_profile` | Create a cloud security profile |
461
+ | `sophos_update_cloud_security_profile` | Update a profile |
462
+ | `sophos_delete_cloud_security_profile` | Delete a profile |
463
+ | `sophos_list_cloud_security_assets` | List cloud security assets |
464
+
465
+ ### Wi-Fi (3 tools)
466
+
467
+ | Tool | Description |
468
+ |------|-------------|
469
+ | `sophos_list_wifi_mac_filters` | List Wi-Fi MAC filtering entries |
470
+ | `sophos_add_wifi_mac_filter` | Add a MAC filter entry |
471
+ | `sophos_delete_wifi_mac_filter` | Delete a MAC filter entry |
472
+
473
+ ### User Activity (2 tools)
474
+
475
+ | Tool | Description |
476
+ |------|-------------|
477
+ | `sophos_create_attestation` | Create a user attestation/sign-off |
478
+ | `sophos_get_attestation` | Get attestation detail |
248
479
 
249
480
  ### Tenant context
250
481
 
@@ -281,28 +512,39 @@ Per tool call: resolve tenant -> regional API host -> execute request
281
512
 
282
513
  ```
283
514
  src/
284
- ├── index.ts # Entry point, server bootstrap
285
- ├── config/config.ts # Environment config
286
- ├── auth/token-manager.ts # OAuth2 token lifecycle
515
+ ├── index.ts # Entry point, server bootstrap
516
+ ├── config/config.ts # Environment config
517
+ ├── auth/token-manager.ts # OAuth2 token lifecycle
287
518
  ├── client/
288
- │ ├── sophos-client.ts # HTTP client with region routing
289
- │ └── tenant-resolver.ts # Whoami + tenant cache
519
+ │ ├── sophos-client.ts # HTTP client with region routing
520
+ │ └── tenant-resolver.ts # Whoami + tenant cache
290
521
  ├── tools/
291
- │ ├── helpers.ts # Shared response formatting
292
- │ ├── tenants.ts # sophos_list_tenants
293
- │ ├── alerts.ts # sophos_list_alerts, get, acknowledge
294
- │ ├── endpoints.ts # sophos_list/get/scan/isolate/release
295
- │ ├── health.ts # sophos_get_account_health, sophos_list_account_health, sophos_partner_gap_analysis
296
- │ ├── directory.ts # sophos_list_users, list_admins, list_roles
297
- │ ├── policies.ts # sophos_list/get/clone/update_policy
298
- │ ├── groups.ts # sophos_list/get/create/update/delete_endpoint_group, add/remove endpoints
299
- │ ├── exclusions.ts # sophos_list/add/delete exclusions, allowed items, blocked items
300
- │ ├── cases.ts # sophos_list/get/create/update_case, list_case_detections, mitre_summary
301
- │ ├── detections.ts # sophos_run/get/results for detections and detection-groups
302
- │ ├── siem.ts # sophos_list_siem_events, sophos_list_siem_alerts
303
- │ ├── xdr.ts # sophos_run/get/results for XDR Data Lake queries
304
- │ └── live-discover.ts # sophos_list_queries, run/get/results for Live Discover
305
- └── types/sophos.ts # Sophos API response types
522
+ │ ├── helpers.ts # Shared response formatting
523
+ │ ├── tenants.ts # Tenant listing (partner/org only)
524
+ │ ├── partner.ts # Partner admin, roles, billing (partner/org only)
525
+ │ ├── alerts.ts # Alert list, get, acknowledge, search
526
+ │ ├── endpoints.ts # Endpoint CRUD, scan, isolate, tamper, forensics
527
+ │ ├── endpoint-settings.ts # Installer, web control, exploit mitigation, IPS, etc.
528
+ │ ├── endpoint-migrations.ts # Migration jobs, software packages
529
+ │ ├── health.ts # Account health, gap analysis
530
+ │ ├── directory.ts # Users, user groups, group membership
531
+ │ ├── admin-management.ts # Admin CRUD, roles, permission sets
532
+ │ ├── policies.ts # Policy CRUD, clone
533
+ │ ├── groups.ts # Endpoint group CRUD, membership
534
+ │ ├── exclusions.ts # Scanning exclusions, allowed/blocked items
535
+ │ ├── cases.ts # Investigation cases, detections, MITRE
536
+ │ ├── detections.ts # Detection queries (async)
537
+ │ ├── siem.ts # SIEM events and alerts
538
+ │ ├── xdr.ts # XDR Data Lake queries (async)
539
+ │ ├── live-discover.ts # Live Discover queries (async)
540
+ │ ├── firewall.ts # Firewall CRUD, firmware, groups, threat feed
541
+ │ ├── email.ts # Quarantine, mailboxes, message actions
542
+ │ ├── mobile.ts # Mobile devices, groups, actions, policies
543
+ │ ├── dns-protection.ts # DNS locations
544
+ │ ├── cloud-security.ts # Cloud security profiles, assets
545
+ │ ├── wifi.ts # Wi-Fi MAC filtering
546
+ │ └── user-activity.ts # User attestations
547
+ └── types/sophos.ts # Sophos API response types
306
548
  ```
307
549
 
308
550
  ## Security
@@ -6,7 +6,7 @@ import type { TokenManager } from "../auth/token-manager.js";
6
6
  import type { TenantResolver } from "./tenant-resolver.js";
7
7
  export interface RequestOptions {
8
8
  /** HTTP method */
9
- method?: "GET" | "POST" | "PATCH" | "DELETE";
9
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
10
10
  /** Query parameters */
11
11
  params?: Record<string, string>;
12
12
  /** JSON request body */
@@ -1 +1 @@
1
- {"version":3,"file":"sophos-client.d.ts","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;gBADd,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc;IAGxC;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;YAiCC,gBAAgB;IAwE9B,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"sophos-client.d.ts","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;gBADd,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc;IAGxC;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;YAiCC,gBAAgB;IAwE9B,OAAO,CAAC,KAAK;CAGd"}
package/dist/index.js CHANGED
@@ -28,6 +28,17 @@ import { registerDetectionTools } from "./tools/detections.js";
28
28
  import { registerSiemTools } from "./tools/siem.js";
29
29
  import { registerXdrTools } from "./tools/xdr.js";
30
30
  import { registerLiveDiscoverTools } from "./tools/live-discover.js";
31
+ import { registerAdminManagementTools } from "./tools/admin-management.js";
32
+ import { registerEndpointMigrationTools } from "./tools/endpoint-migrations.js";
33
+ import { registerEndpointSettingsTools } from "./tools/endpoint-settings.js";
34
+ import { registerFirewallTools } from "./tools/firewall.js";
35
+ import { registerEmailTools } from "./tools/email.js";
36
+ import { registerDnsProtectionTools } from "./tools/dns-protection.js";
37
+ import { registerCloudSecurityTools } from "./tools/cloud-security.js";
38
+ import { registerWifiTools } from "./tools/wifi.js";
39
+ import { registerUserActivityTools } from "./tools/user-activity.js";
40
+ import { registerPartnerTools } from "./tools/partner.js";
41
+ import { registerMobileTools } from "./tools/mobile.js";
31
42
  async function main() {
32
43
  // Load and validate config
33
44
  const config = loadConfig();
@@ -46,13 +57,14 @@ async function main() {
46
57
  // Create the MCP server
47
58
  const server = new McpServer({
48
59
  name: "sophos-central-mcp-server",
49
- version: "0.1.10",
60
+ version: "0.2.1",
50
61
  });
51
62
  // Register tools based on identity type
52
63
  console.error(`[sophos-mcp] Registering tools for ${identity.idType} caller...`);
53
- // Tenant listing only available for partner/org callers
64
+ // Partner/org-only tools
54
65
  if (identity.idType !== "tenant") {
55
66
  registerTenantTools(server, tenantResolver);
67
+ registerPartnerTools(server, sophosClient, tenantResolver);
56
68
  }
57
69
  // Phase 1: Tenant-scoped SOC monitoring tools
58
70
  registerAlertTools(server, sophosClient, tenantResolver);
@@ -69,6 +81,23 @@ async function main() {
69
81
  registerSiemTools(server, sophosClient, tenantResolver);
70
82
  registerXdrTools(server, sophosClient, tenantResolver);
71
83
  registerLiveDiscoverTools(server, sophosClient, tenantResolver);
84
+ // Phase 4: Endpoint migration and software package tools
85
+ registerEndpointMigrationTools(server, sophosClient, tenantResolver);
86
+ // Phase 5: Endpoint settings tools
87
+ registerEndpointSettingsTools(server, sophosClient, tenantResolver);
88
+ // Phase 6: Firewall management tools
89
+ registerFirewallTools(server, sophosClient, tenantResolver);
90
+ // Phase 7: Admin management and directory user/group tools
91
+ registerAdminManagementTools(server, sophosClient, tenantResolver);
92
+ // Phase 8: Email protection tools
93
+ registerEmailTools(server, sophosClient, tenantResolver);
94
+ // Phase 9: DNS, cloud security, Wi-Fi, licensing, accounts, user activity
95
+ registerDnsProtectionTools(server, sophosClient, tenantResolver);
96
+ registerCloudSecurityTools(server, sophosClient, tenantResolver);
97
+ registerWifiTools(server, sophosClient, tenantResolver);
98
+ registerUserActivityTools(server, sophosClient, tenantResolver);
99
+ // Phase 10: Mobile device management tools
100
+ registerMobileTools(server, sophosClient, tenantResolver);
72
101
  console.error("[sophos-mcp] All tools registered.");
73
102
  // Start transport
74
103
  if (config.transport === "http") {