sophos-central-mcp-server 0.1.9 → 0.2.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.
Files changed (89) hide show
  1. package/README.md +404 -60
  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 +37 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools/accounts.d.ts +10 -0
  7. package/dist/tools/accounts.d.ts.map +1 -0
  8. package/dist/tools/accounts.js +133 -0
  9. package/dist/tools/accounts.js.map +1 -0
  10. package/dist/tools/admin-management.d.ts +14 -0
  11. package/dist/tools/admin-management.d.ts.map +1 -0
  12. package/dist/tools/admin-management.js +515 -0
  13. package/dist/tools/admin-management.js.map +1 -0
  14. package/dist/tools/alerts.d.ts +1 -1
  15. package/dist/tools/alerts.d.ts.map +1 -1
  16. package/dist/tools/alerts.js +45 -1
  17. package/dist/tools/alerts.js.map +1 -1
  18. package/dist/tools/business-automation.d.ts +9 -0
  19. package/dist/tools/business-automation.d.ts.map +1 -0
  20. package/dist/tools/business-automation.js +107 -0
  21. package/dist/tools/business-automation.js.map +1 -0
  22. package/dist/tools/cases.d.ts +2 -1
  23. package/dist/tools/cases.d.ts.map +1 -1
  24. package/dist/tools/cases.js +69 -1
  25. package/dist/tools/cases.js.map +1 -1
  26. package/dist/tools/cloud-security.d.ts +11 -0
  27. package/dist/tools/cloud-security.d.ts.map +1 -0
  28. package/dist/tools/cloud-security.js +268 -0
  29. package/dist/tools/cloud-security.js.map +1 -0
  30. package/dist/tools/directory.d.ts +7 -1
  31. package/dist/tools/directory.d.ts.map +1 -1
  32. package/dist/tools/directory.js +714 -1
  33. package/dist/tools/directory.js.map +1 -1
  34. package/dist/tools/dns-protection.d.ts +11 -0
  35. package/dist/tools/dns-protection.d.ts.map +1 -0
  36. package/dist/tools/dns-protection.js +205 -0
  37. package/dist/tools/dns-protection.js.map +1 -0
  38. package/dist/tools/email.d.ts +22 -0
  39. package/dist/tools/email.d.ts.map +1 -0
  40. package/dist/tools/email.js +967 -0
  41. package/dist/tools/email.js.map +1 -0
  42. package/dist/tools/endpoint-migrations.d.ts +11 -0
  43. package/dist/tools/endpoint-migrations.d.ts.map +1 -0
  44. package/dist/tools/endpoint-migrations.js +330 -0
  45. package/dist/tools/endpoint-migrations.js.map +1 -0
  46. package/dist/tools/endpoint-settings.d.ts +12 -0
  47. package/dist/tools/endpoint-settings.d.ts.map +1 -0
  48. package/dist/tools/endpoint-settings.js +1361 -0
  49. package/dist/tools/endpoint-settings.js.map +1 -0
  50. package/dist/tools/endpoints.d.ts +8 -1
  51. package/dist/tools/endpoints.d.ts.map +1 -1
  52. package/dist/tools/endpoints.js +473 -1
  53. package/dist/tools/endpoints.js.map +1 -1
  54. package/dist/tools/firewall.d.ts +19 -0
  55. package/dist/tools/firewall.d.ts.map +1 -0
  56. package/dist/tools/firewall.js +747 -0
  57. package/dist/tools/firewall.js.map +1 -0
  58. package/dist/tools/health.d.ts +1 -1
  59. package/dist/tools/health.d.ts.map +1 -1
  60. package/dist/tools/health.js +268 -2
  61. package/dist/tools/health.js.map +1 -1
  62. package/dist/tools/licensing.d.ts +9 -0
  63. package/dist/tools/licensing.d.ts.map +1 -0
  64. package/dist/tools/licensing.js +63 -0
  65. package/dist/tools/licensing.js.map +1 -0
  66. package/dist/tools/mobile.d.ts +26 -0
  67. package/dist/tools/mobile.d.ts.map +1 -0
  68. package/dist/tools/mobile.js +1425 -0
  69. package/dist/tools/mobile.js.map +1 -0
  70. package/dist/tools/partner.d.ts +18 -0
  71. package/dist/tools/partner.d.ts.map +1 -0
  72. package/dist/tools/partner.js +589 -0
  73. package/dist/tools/partner.js.map +1 -0
  74. package/dist/tools/policies.d.ts +2 -1
  75. package/dist/tools/policies.d.ts.map +1 -1
  76. package/dist/tools/policies.js +56 -1
  77. package/dist/tools/policies.js.map +1 -1
  78. package/dist/tools/user-activity.d.ts +9 -0
  79. package/dist/tools/user-activity.d.ts.map +1 -0
  80. package/dist/tools/user-activity.js +78 -0
  81. package/dist/tools/user-activity.js.map +1 -0
  82. package/dist/tools/wifi.d.ts +10 -0
  83. package/dist/tools/wifi.d.ts.map +1 -0
  84. package/dist/tools/wifi.js +125 -0
  85. package/dist/tools/wifi.js.map +1 -0
  86. package/dist/tools/xdr.d.ts.map +1 -1
  87. package/dist/tools/xdr.js +125 -0
  88. package/dist/tools/xdr.js.map +1 -1
  89. 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. **286 tools** covering 16 Sophos API namespaces.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -45,10 +45,12 @@ claude mcp add sophos-central \
45
45
 
46
46
  - **Universal caller support**: Works with partner, organisation, and tenant-level API credentials
47
47
  - **Multi-tenant**: Partner/org callers can query across all managed tenants
48
+ - **Partner gap analysis**: Single-call sales opportunity report across all managed tenants — fetches health data in parallel and returns a compact ranked list of security gaps per customer
48
49
  - **Auto region routing**: Discovers tenant data regions via `/whoami/v1` and routes requests to the correct regional API host
49
50
  - **Token lifecycle**: Automatic OAuth2 token refresh before expiry
50
51
  - **Rate limit handling**: Retry with backoff on 429 responses
51
52
  - **Dual transport**: Streamable HTTP (for Claude Desktop / Claude Code) or stdio
53
+ - **Full API coverage**: 286 tools across endpoints, alerts, policies, firewalls, email, mobile, XDR, cases, SIEM, and more
52
54
 
53
55
  ## Prerequisites
54
56
 
@@ -84,103 +86,431 @@ TRANSPORT=http
84
86
 
85
87
  ## Tools
86
88
 
87
- ### SOC Monitoring
89
+ ### Partner & Organisation (19 tools)
90
+
91
+ > These tools are only available with **partner or organisation-level** credentials. They operate across all managed tenants.
92
+
93
+ | Tool | Description |
94
+ |------|-------------|
95
+ | `sophos_list_tenants` | List all managed tenants with IDs, names, and data regions |
96
+ | `sophos_list_account_health` | Bulk health scores for all tenants, ranked worst-first |
97
+ | `sophos_partner_gap_analysis` | Security gap and upsell opportunity report across all tenants |
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
+ | `sophos_list_billing_usage_by_tenant` | Per-tenant billing breakdown |
114
+
115
+ #### Business Automation (partner only)
116
+
117
+ | Tool | Description |
118
+ |------|-------------|
119
+ | `sophos_list_quotes` | List partner quotes |
120
+ | `sophos_get_quote` | Get quote detail |
121
+ | `sophos_get_partner_level` | Get current partner level/tier |
122
+
123
+ ### Alerts (4 tools)
88
124
 
89
125
  | Tool | Description |
90
126
  |------|-------------|
91
- | `sophos_list_tenants` | List managed tenants (partner/org only) |
92
- | `sophos_list_account_health` | Bulk health scores across all tenants, ranked worst-first (partner/org only) |
93
127
  | `sophos_list_alerts` | List alerts with severity/category/product/date filters |
94
128
  | `sophos_get_alert` | Get full alert detail with allowed actions |
95
129
  | `sophos_acknowledge_alert` | Mark an alert as reviewed |
130
+ | `sophos_search_alerts` | Advanced search with structured filters and sorting |
131
+
132
+ ### Endpoints (18 tools)
133
+
134
+ | Tool | Description |
135
+ |------|-------------|
96
136
  | `sophos_list_endpoints` | List endpoints with health/OS/hostname/isolation filters |
97
137
  | `sophos_get_endpoint` | Get full endpoint detail |
98
138
  | `sophos_scan_endpoint` | Trigger an on-demand scan |
99
139
  | `sophos_isolate_endpoint` | Network-isolate a compromised endpoint |
100
140
  | `sophos_release_endpoint` | Release an endpoint from isolation |
101
- | `sophos_get_account_health` | Get tenant health check scores |
102
- | `sophos_list_users` | List directory users |
103
- | `sophos_list_admins` | List admin accounts and roles |
104
- | `sophos_list_roles` | List available admin roles |
141
+ | `sophos_delete_endpoint` | Delete a specific endpoint |
142
+ | `sophos_bulk_delete_endpoints` | Bulk delete multiple endpoints |
143
+ | `sophos_get_tamper_protection` | Get tamper protection status and password |
144
+ | `sophos_toggle_tamper_protection` | Enable/disable tamper protection |
145
+ | `sophos_get_adaptive_attack_protection` | Get adaptive attack protection status |
146
+ | `sophos_toggle_adaptive_attack_protection` | Enable/disable adaptive attack protection |
147
+ | `sophos_trigger_update_check` | Trigger a software update check |
148
+ | `sophos_request_forensic_logs` | Request forensic log upload |
149
+ | `sophos_get_forensic_log_status` | Get forensic log request status |
150
+ | `sophos_request_memory_dump` | Request memory dump from endpoint |
151
+ | `sophos_get_memory_dump_status` | Get memory dump request status |
152
+ | `sophos_bulk_isolate_endpoints` | Bulk isolate/release multiple endpoints |
153
+ | `sophos_get_endpoint_isolation_status` | Get endpoint isolation status |
154
+
155
+ ### Endpoint Settings (38 tools)
105
156
 
106
- ### Admin Automation
157
+ | Tool | Description |
158
+ |------|-------------|
159
+ | `sophos_list_installer_downloads` | List available installer packages |
160
+ | `sophos_get_installer_download` | Get specific installer download link |
161
+ | `sophos_list_blocked_addresses` | List blocked network addresses |
162
+ | `sophos_add_blocked_address` | Add a blocked network address |
163
+ | `sophos_delete_blocked_address` | Delete a blocked address |
164
+ | `sophos_list_local_sites` | List web control local site definitions |
165
+ | `sophos_add_local_site` | Add a local site for web control |
166
+ | `sophos_update_local_site` | Update a local site |
167
+ | `sophos_delete_local_site` | Delete a local site |
168
+ | `sophos_list_web_control_categories` | List web control categories |
169
+ | `sophos_get_tls_decryption_settings` | Get TLS decryption settings |
170
+ | `sophos_update_tls_decryption_settings` | Update TLS decryption settings |
171
+ | `sophos_get_global_tamper_protection` | Get global tamper protection settings |
172
+ | `sophos_update_global_tamper_protection` | Update global tamper protection |
173
+ | `sophos_list_detected_exploits` | List detected exploits |
174
+ | `sophos_get_detected_exploit` | Get exploit detail |
175
+ | `sophos_list_exploit_mitigation_categories` | List exploit mitigation categories |
176
+ | `sophos_get_exploit_mitigation_category` | Get category detail |
177
+ | `sophos_list_exploit_mitigation_apps` | List exploit mitigation applications |
178
+ | `sophos_get_exploit_mitigation_app` | Get application detail |
179
+ | `sophos_add_exploit_mitigation_app` | Add application to exploit mitigation |
180
+ | `sophos_update_exploit_mitigation_app` | Update exploit mitigation application |
181
+ | `sophos_list_ips_exclusions` | List IPS exclusions |
182
+ | `sophos_add_ips_exclusion` | Add IPS exclusion |
183
+ | `sophos_delete_ips_exclusion` | Delete IPS exclusion |
184
+ | `sophos_list_isolation_exclusions` | List isolation exclusions |
185
+ | `sophos_add_isolation_exclusion` | Add isolation exclusion |
186
+ | `sophos_delete_isolation_exclusion` | Delete isolation exclusion |
187
+ | `sophos_get_peripheral_settings` | Get peripheral control settings |
188
+ | `sophos_update_peripheral_settings` | Update peripheral control settings |
189
+ | `sophos_get_event_journal_settings` | Get event journal settings |
190
+ | `sophos_update_event_journal_settings` | Update event journal settings |
191
+ | `sophos_get_update_management_settings` | Get update management settings |
192
+ | `sophos_update_update_management_settings` | Update update management settings |
193
+ | `sophos_get_lockdown_settings` | Get server lockdown settings |
194
+ | `sophos_update_lockdown_settings` | Update server lockdown settings |
195
+ | `sophos_get_mtr_settings` | Get MDR/MTR settings |
196
+ | `sophos_update_mtr_settings` | Update MDR/MTR settings |
197
+
198
+ ### Endpoint Migrations (7 tools)
199
+
200
+ | Tool | Description |
201
+ |------|-------------|
202
+ | `sophos_list_migrations` | List endpoint migration jobs |
203
+ | `sophos_get_migration` | Get migration job details |
204
+ | `sophos_create_migration` | Create a new migration job |
205
+ | `sophos_delete_migration` | Delete a migration job |
206
+ | `sophos_list_migration_endpoints` | List endpoints in a migration |
207
+ | `sophos_list_recommended_packages` | List recommended software packages |
208
+ | `sophos_list_static_packages` | List static software packages |
209
+
210
+ ### Policies (6 tools)
107
211
 
108
212
  | Tool | Description |
109
213
  |------|-------------|
110
214
  | `sophos_list_policies` | List endpoint policies with optional type filter |
111
215
  | `sophos_get_policy` | Get full policy detail including all settings |
216
+ | `sophos_create_policy` | Create a new endpoint policy |
112
217
  | `sophos_clone_policy` | Clone an existing policy under a new name |
113
218
  | `sophos_update_policy` | Update policy name, enabled state, priority, or settings |
219
+ | `sophos_delete_policy` | Delete a policy |
220
+
221
+ ### Endpoint Groups (7 tools)
222
+
223
+ | Tool | Description |
224
+ |------|-------------|
114
225
  | `sophos_list_endpoint_groups` | List endpoint groups |
115
- | `sophos_get_endpoint_group` | Get group detail with optional member endpoint list |
226
+ | `sophos_get_endpoint_group` | Get group detail with optional member list |
116
227
  | `sophos_create_endpoint_group` | Create a new endpoint group |
117
- | `sophos_update_endpoint_group` | Rename or update a group's description |
228
+ | `sophos_update_endpoint_group` | Rename or update a group |
118
229
  | `sophos_delete_endpoint_group` | Delete an endpoint group |
119
230
  | `sophos_add_endpoints_to_group` | Add endpoints to a group |
120
231
  | `sophos_remove_endpoint_from_group` | Remove an endpoint from a group |
232
+
233
+ ### Exclusions & Allow/Block Lists (9 tools)
234
+
235
+ | Tool | Description |
236
+ |------|-------------|
121
237
  | `sophos_list_exclusions` | List global scanning exclusions |
122
- | `sophos_add_exclusion` | Add a scanning exclusion (path, process, web, PUA, AMSI) |
238
+ | `sophos_add_exclusion` | Add a scanning exclusion |
123
239
  | `sophos_delete_exclusion` | Delete a scanning exclusion |
124
240
  | `sophos_list_allowed_items` | List globally allowed items |
125
- | `sophos_add_allowed_item` | Allow an item by SHA256, path, or certificate signer |
241
+ | `sophos_add_allowed_item` | Allow an item by SHA256, path, or certificate |
126
242
  | `sophos_delete_allowed_item` | Remove an allowed item |
127
243
  | `sophos_list_blocked_items` | List globally blocked items |
128
- | `sophos_add_blocked_item` | Block an item by SHA256, path, or certificate signer |
244
+ | `sophos_add_blocked_item` | Block an item by SHA256, path, or certificate |
129
245
  | `sophos_delete_blocked_item` | Remove a blocked item |
130
246
 
131
- ### Investigation
247
+ ### Account Health (6 tools)
132
248
 
133
- #### Cases
249
+ | Tool | Description |
250
+ |------|-------------|
251
+ | `sophos_get_account_health` | Get tenant health check scores |
252
+ | `sophos_get_regional_health_scores` | Get health scores by region |
253
+ | `sophos_get_historical_health_scores` | Get historical health score trends |
254
+ | `sophos_snooze_health_check` | Snooze a health check finding |
255
+ | `sophos_list_account_health` | Bulk health scores for all tenants (partner/org only) |
256
+ | `sophos_partner_gap_analysis` | Gap analysis across all tenants (partner/org only) |
257
+
258
+ ### Directory Users & Groups (18 tools)
134
259
 
135
260
  | Tool | Description |
136
261
  |------|-------------|
137
- | `sophos_list_cases` | List investigation cases with pagination |
262
+ | `sophos_list_users` | List directory users |
263
+ | `sophos_get_user` | Get user detail |
264
+ | `sophos_create_user` | Create a directory user |
265
+ | `sophos_update_user` | Update a user |
266
+ | `sophos_delete_user` | Delete a user |
267
+ | `sophos_list_user_endpoints` | List endpoints for a user |
268
+ | `sophos_list_user_groups` | List directory user groups |
269
+ | `sophos_get_user_group` | Get user group detail |
270
+ | `sophos_create_user_group` | Create a user group |
271
+ | `sophos_update_user_group` | Update a user group |
272
+ | `sophos_delete_user_group` | Delete a user group |
273
+ | `sophos_list_user_group_members` | List members of a user group |
274
+ | `sophos_add_users_to_group` | Add users to a group |
275
+ | `sophos_remove_user_from_group` | Remove a user from a group |
276
+ | `sophos_list_user_group_endpoints` | List endpoints in a user group |
277
+ | `sophos_list_user_group_policies` | List policies assigned to a user group |
278
+ | `sophos_list_admins` | List admin accounts and roles |
279
+ | `sophos_list_roles` | List available admin roles |
280
+
281
+ ### Admin Management (14 tools)
282
+
283
+ | Tool | Description |
284
+ |------|-------------|
285
+ | `sophos_get_admin` | Get admin detail |
286
+ | `sophos_create_admin` | Create an admin account |
287
+ | `sophos_delete_admin` | Delete an admin account |
288
+ | `sophos_list_admin_role_assignments` | List admin's role assignments |
289
+ | `sophos_add_admin_role_assignment` | Add role assignment to admin |
290
+ | `sophos_delete_admin_role_assignment` | Remove role assignment |
291
+ | `sophos_get_admin_role_assignment` | Get specific role assignment |
292
+ | `sophos_create_role` | Create an admin role |
293
+ | `sophos_get_role` | Get role detail |
294
+ | `sophos_update_role` | Update a role |
295
+ | `sophos_delete_role` | Delete a role |
296
+ | `sophos_list_permission_sets` | List available permission sets |
297
+ | `sophos_list_admin_authenticators` | List admin's authenticators |
298
+ | `sophos_reset_admin_password` | Reset an admin's password |
299
+
300
+ ### Cases (9 tools)
301
+
302
+ | Tool | Description |
303
+ |------|-------------|
304
+ | `sophos_list_cases` | List investigation cases |
138
305
  | `sophos_get_case` | Get full case details |
139
- | `sophos_create_case` | Create a new self-managed investigation case |
140
- | `sophos_update_case` | Update case status, severity, assignee, or overview |
306
+ | `sophos_create_case` | Create a new investigation case |
307
+ | `sophos_update_case` | Update case status, severity, assignee |
308
+ | `sophos_delete_case` | Delete a case |
141
309
  | `sophos_list_case_detections` | List detections linked to a case |
142
- | `sophos_get_case_mitre_summary` | Get MITRE ATT&CK tactic/technique breakdown for a case |
310
+ | `sophos_get_case_detection` | Get specific detection detail |
311
+ | `sophos_list_case_impacted_entities` | List impacted entities for a case |
312
+ | `sophos_get_case_mitre_summary` | Get MITRE ATT&CK breakdown for a case |
143
313
 
144
- #### Detections
314
+ ### Detections (6 tools)
145
315
 
146
316
  Async API — start a query, poll for completion, then fetch results.
147
317
 
148
318
  | Tool | Description |
149
319
  |------|-------------|
150
- | `sophos_run_detections_query` | Start an async query for individual XDR/EDR detections |
151
- | `sophos_get_detections_run` | Poll the status of a detections query run |
152
- | `sophos_get_detections_results` | Fetch results from a completed detections query |
153
- | `sophos_run_detection_groups_query` | Start an async query for grouped detections |
154
- | `sophos_get_detection_groups_run` | Poll the status of a detection groups query run |
155
- | `sophos_get_detection_groups_results` | Fetch results from a completed detection groups query |
320
+ | `sophos_run_detections_query` | Start async query for individual detections |
321
+ | `sophos_get_detections_run` | Poll detection query status |
322
+ | `sophos_get_detections_results` | Fetch completed detection query results |
323
+ | `sophos_run_detection_groups_query` | Start async query for grouped detections |
324
+ | `sophos_get_detection_groups_run` | Poll detection groups query status |
325
+ | `sophos_get_detection_groups_results` | Fetch completed detection groups results |
156
326
 
157
- #### SIEM Events
327
+ ### SIEM (2 tools)
158
328
 
159
329
  | Tool | Description |
160
330
  |------|-------------|
161
- | `sophos_list_siem_events` | Stream security events via cursor-based pagination (last 24h) |
162
- | `sophos_list_siem_alerts` | Stream security alerts via cursor-based pagination (last 24h) |
331
+ | `sophos_list_siem_events` | Stream security events (cursor-based, last 24h default) |
332
+ | `sophos_list_siem_alerts` | Stream security alerts (cursor-based, last 24h default) |
163
333
 
164
- #### XDR Data Lake
334
+ ### XDR Data Lake (9 tools)
165
335
 
166
- Async API — submit a SQL query against historical telemetry, poll for completion, then fetch results.
336
+ Async API — submit SQL queries against historical telemetry.
167
337
 
168
338
  | Tool | Description |
169
339
  |------|-------------|
170
- | `sophos_run_xdr_query` | Start an async SQL query against the Sophos Data Lake |
171
- | `sophos_get_xdr_query_run` | Poll the status of an XDR query run |
172
- | `sophos_get_xdr_query_results` | Fetch paginated results from a completed XDR query |
340
+ | `sophos_run_xdr_query` | Start async SQL query against the Data Lake |
341
+ | `sophos_get_xdr_query_run` | Poll XDR query run status |
342
+ | `sophos_get_xdr_query_results` | Fetch completed XDR query results |
343
+ | `sophos_list_xdr_query_runs` | List XDR query runs |
344
+ | `sophos_cancel_xdr_query_run` | Cancel a running XDR query |
345
+ | `sophos_list_xdr_query_categories` | List XDR query categories |
346
+ | `sophos_get_xdr_query_category` | Get XDR query category detail |
347
+ | `sophos_list_xdr_queries` | List saved XDR queries |
348
+ | `sophos_get_xdr_query` | Get saved XDR query detail |
173
349
 
174
- #### Live Discover
350
+ ### Live Discover (4 tools)
175
351
 
176
- Async API — run OSquery SQL on live endpoints in real time. Rate limited to 10 runs/minute, 500/day.
352
+ Async API — run OSquery SQL on live endpoints. Rate limited to 10 runs/minute, 500/day.
177
353
 
178
354
  | Tool | Description |
179
355
  |------|-------------|
180
356
  | `sophos_list_live_discover_queries` | List available saved OSquery queries |
181
- | `sophos_run_live_discover_query` | Run a saved or ad hoc OSquery against live endpoints |
182
- | `sophos_get_live_discover_run` | Poll the status of a Live Discover query run |
183
- | `sophos_get_live_discover_results` | Fetch paginated results from a completed Live Discover run |
357
+ | `sophos_run_live_discover_query` | Run a saved or ad hoc query on live endpoints |
358
+ | `sophos_get_live_discover_run` | Poll Live Discover run status |
359
+ | `sophos_get_live_discover_results` | Fetch Live Discover results |
360
+
361
+ ### Firewall (19 tools)
362
+
363
+ | Tool | Description |
364
+ |------|-------------|
365
+ | `sophos_list_firewalls` | List managed firewalls |
366
+ | `sophos_get_firewall` | Get firewall detail |
367
+ | `sophos_update_firewall` | Update firewall properties |
368
+ | `sophos_delete_firewall` | Delete a firewall |
369
+ | `sophos_firewall_action` | Perform action (reboot, sync, upgrade check) |
370
+ | `sophos_check_firmware_upgrade` | Check for firmware upgrades |
371
+ | `sophos_start_firmware_upgrade` | Start a firmware upgrade |
372
+ | `sophos_cancel_firmware_upgrade` | Cancel a firmware upgrade |
373
+ | `sophos_list_firewall_groups` | List firewall groups |
374
+ | `sophos_get_firewall_group` | Get firewall group detail |
375
+ | `sophos_create_firewall_group` | Create a firewall group |
376
+ | `sophos_update_firewall_group` | Update a firewall group |
377
+ | `sophos_delete_firewall_group` | Delete a firewall group |
378
+ | `sophos_get_firewall_sync_status` | Get firewall sync status |
379
+ | `sophos_get_threat_feed_settings` | Get MDR threat feed settings |
380
+ | `sophos_update_threat_feed_settings` | Update threat feed settings |
381
+ | `sophos_list_threat_feed_indicators` | List threat feed indicators |
382
+ | `sophos_search_threat_feed_indicators` | Search threat feed indicators |
383
+ | `sophos_get_threat_feed_indicator` | Get specific threat indicator |
384
+
385
+ ### Email Protection (30 tools)
386
+
387
+ | Tool | Description |
388
+ |------|-------------|
389
+ | `sophos_search_quarantine` | Search quarantined emails |
390
+ | `sophos_preview_quarantine_message` | Preview quarantined email content |
391
+ | `sophos_get_quarantine_urls` | Get URLs in quarantined email |
392
+ | `sophos_get_quarantine_attachments` | Get quarantined email attachment info |
393
+ | `sophos_release_quarantine_message` | Release quarantined email to recipient |
394
+ | `sophos_delete_quarantine_message` | Permanently delete quarantined email |
395
+ | `sophos_strip_quarantine_attachments` | Strip attachments and release |
396
+ | `sophos_reattach_quarantine_attachments` | Reattach stripped attachments |
397
+ | `sophos_download_quarantine_attachment` | Download specific attachment |
398
+ | `sophos_search_post_delivery_quarantine` | Search post-delivery quarantine |
399
+ | `sophos_preview_post_delivery_message` | Preview post-delivery quarantined message |
400
+ | `sophos_get_post_delivery_attachments` | Get post-delivery attachment info |
401
+ | `sophos_release_post_delivery_message` | Release post-delivery message |
402
+ | `sophos_delete_post_delivery_message` | Delete post-delivery message |
403
+ | `sophos_download_post_delivery_attachment` | Download post-delivery attachment |
404
+ | `sophos_clawback_message` | Clawback/recall a delivered message |
405
+ | `sophos_get_clawback_status` | Get clawback action status |
406
+ | `sophos_list_mailboxes` | List mailboxes |
407
+ | `sophos_create_mailbox` | Create a mailbox |
408
+ | `sophos_bulk_create_mailboxes` | Bulk create mailboxes |
409
+ | `sophos_get_mailbox` | Get mailbox detail |
410
+ | `sophos_update_mailbox` | Update a mailbox |
411
+ | `sophos_delete_mailbox` | Delete a mailbox |
412
+ | `sophos_list_mailbox_aliases` | List mailbox aliases |
413
+ | `sophos_add_mailbox_alias` | Add a mailbox alias |
414
+ | `sophos_delete_mailbox_alias` | Delete a mailbox alias |
415
+ | `sophos_list_mailbox_delegates` | List mailbox delegates |
416
+ | `sophos_add_mailbox_delegate` | Add a mailbox delegate |
417
+ | `sophos_delete_mailbox_delegate` | Remove a mailbox delegate |
418
+ | `sophos_get_email_settings` | Get email protection settings |
419
+
420
+ ### Mobile Device Management (38 tools)
421
+
422
+ | Tool | Description |
423
+ |------|-------------|
424
+ | `sophos_get_mobile_auto_enrollment` | Get auto-enrollment settings |
425
+ | `sophos_update_mobile_auto_enrollment` | Update auto-enrollment settings |
426
+ | `sophos_list_mobile_os` | List supported mobile OS platforms |
427
+ | `sophos_list_mobile_devices` | List mobile devices with filters |
428
+ | `sophos_get_mobile_device` | Get device detail |
429
+ | `sophos_create_mobile_device` | Enroll a new mobile device |
430
+ | `sophos_update_mobile_device` | Update device properties |
431
+ | `sophos_delete_mobile_device` | Delete/unenroll a device |
432
+ | `sophos_list_mobile_device_properties` | Get device properties |
433
+ | `sophos_get_mobile_device_compliance` | Get compliance status |
434
+ | `sophos_get_mobile_device_scans` | Get scan results |
435
+ | `sophos_get_mobile_device_policies` | Get assigned policies |
436
+ | `sophos_get_mobile_device_apps` | Get installed apps |
437
+ | `sophos_get_mobile_device_location` | Get device location |
438
+ | `sophos_list_mobile_device_groups` | List device groups |
439
+ | `sophos_get_mobile_device_group` | Get device group detail |
440
+ | `sophos_create_mobile_device_group` | Create a device group |
441
+ | `sophos_update_mobile_device_group` | Update a device group |
442
+ | `sophos_delete_mobile_device_group` | Delete a device group |
443
+ | `sophos_sync_mobile_device` | Sync a device |
444
+ | `sophos_request_mobile_device_logs` | Request device logs |
445
+ | `sophos_scan_mobile_device` | Trigger device scan |
446
+ | `sophos_unenroll_mobile_device` | Unenroll a device |
447
+ | `sophos_send_mobile_device_message` | Send message to device |
448
+ | `sophos_locate_mobile_device` | Request device location update |
449
+ | `sophos_lock_mobile_device` | Lock device remotely |
450
+ | `sophos_wipe_mobile_device` | Wipe device remotely |
451
+ | `sophos_list_mobile_app_groups` | List app groups |
452
+ | `sophos_get_mobile_app_group` | Get app group detail |
453
+ | `sophos_create_mobile_app_group` | Create an app group |
454
+ | `sophos_update_mobile_app_group` | Update an app group |
455
+ | `sophos_delete_mobile_app_group` | Delete an app group |
456
+ | `sophos_list_mobile_policies` | List mobile policies |
457
+ | `sophos_get_mobile_policy` | Get mobile policy detail |
458
+ | `sophos_update_mobile_policy` | Update a mobile policy |
459
+ | `sophos_list_mobile_profiles` | List mobile profiles |
460
+ | `sophos_get_mobile_profile` | Get mobile profile detail |
461
+ | `sophos_update_mobile_profile` | Update a mobile profile |
462
+
463
+ ### DNS Protection (5 tools)
464
+
465
+ | Tool | Description |
466
+ |------|-------------|
467
+ | `sophos_list_dns_locations` | List DNS protection locations |
468
+ | `sophos_get_dns_location` | Get location detail |
469
+ | `sophos_create_dns_location` | Create a DNS location |
470
+ | `sophos_update_dns_location` | Update a DNS location |
471
+ | `sophos_delete_dns_location` | Delete a DNS location |
472
+
473
+ ### Cloud Security (6 tools)
474
+
475
+ | Tool | Description |
476
+ |------|-------------|
477
+ | `sophos_list_cloud_security_profiles` | List cloud security profiles |
478
+ | `sophos_get_cloud_security_profile` | Get profile detail |
479
+ | `sophos_create_cloud_security_profile` | Create a cloud security profile |
480
+ | `sophos_update_cloud_security_profile` | Update a profile |
481
+ | `sophos_delete_cloud_security_profile` | Delete a profile |
482
+ | `sophos_list_cloud_security_assets` | List cloud security assets |
483
+
484
+ ### Wi-Fi (3 tools)
485
+
486
+ | Tool | Description |
487
+ |------|-------------|
488
+ | `sophos_list_wifi_mac_filters` | List Wi-Fi MAC filtering entries |
489
+ | `sophos_add_wifi_mac_filter` | Add a MAC filter entry |
490
+ | `sophos_delete_wifi_mac_filter` | Delete a MAC filter entry |
491
+
492
+ ### Licensing (2 tools)
493
+
494
+ | Tool | Description |
495
+ |------|-------------|
496
+ | `sophos_list_licenses` | List software licenses |
497
+ | `sophos_list_firewall_licenses` | List firewall licenses |
498
+
499
+ ### API Accounts (4 tools)
500
+
501
+ | Tool | Description |
502
+ |------|-------------|
503
+ | `sophos_list_api_credentials` | List API access credentials |
504
+ | `sophos_create_api_credential` | Create an API credential |
505
+ | `sophos_get_api_credential` | Get credential detail |
506
+ | `sophos_delete_api_credential` | Delete an API credential |
507
+
508
+ ### User Activity (2 tools)
509
+
510
+ | Tool | Description |
511
+ |------|-------------|
512
+ | `sophos_create_attestation` | Create a user attestation/sign-off |
513
+ | `sophos_get_attestation` | Get attestation detail |
184
514
 
185
515
  ### Tenant context
186
516
 
@@ -217,28 +547,42 @@ Per tool call: resolve tenant -> regional API host -> execute request
217
547
 
218
548
  ```
219
549
  src/
220
- ├── index.ts # Entry point, server bootstrap
221
- ├── config/config.ts # Environment config
222
- ├── auth/token-manager.ts # OAuth2 token lifecycle
550
+ ├── index.ts # Entry point, server bootstrap
551
+ ├── config/config.ts # Environment config
552
+ ├── auth/token-manager.ts # OAuth2 token lifecycle
223
553
  ├── client/
224
- │ ├── sophos-client.ts # HTTP client with region routing
225
- │ └── tenant-resolver.ts # Whoami + tenant cache
554
+ │ ├── sophos-client.ts # HTTP client with region routing
555
+ │ └── tenant-resolver.ts # Whoami + tenant cache
226
556
  ├── tools/
227
- │ ├── helpers.ts # Shared response formatting
228
- │ ├── tenants.ts # sophos_list_tenants, sophos_list_account_health
229
- │ ├── alerts.ts # sophos_list_alerts, get, acknowledge
230
- │ ├── endpoints.ts # sophos_list/get/scan/isolate/release
231
- │ ├── health.ts # sophos_get_account_health
232
- │ ├── directory.ts # sophos_list_users, list_admins, list_roles
233
- │ ├── policies.ts # sophos_list/get/clone/update_policy
234
- │ ├── groups.ts # sophos_list/get/create/update/delete_endpoint_group, add/remove endpoints
235
- │ ├── exclusions.ts # sophos_list/add/delete exclusions, allowed items, blocked items
236
- │ ├── cases.ts # sophos_list/get/create/update_case, list_case_detections, mitre_summary
237
- │ ├── detections.ts # sophos_run/get/results for detections and detection-groups
238
- │ ├── siem.ts # sophos_list_siem_events, sophos_list_siem_alerts
239
- │ ├── xdr.ts # sophos_run/get/results for XDR Data Lake queries
240
- │ └── live-discover.ts # sophos_list_queries, run/get/results for Live Discover
241
- └── types/sophos.ts # Sophos API response types
557
+ │ ├── helpers.ts # Shared response formatting
558
+ │ ├── tenants.ts # Tenant listing (partner/org only)
559
+ │ ├── partner.ts # Partner admin, roles, billing (partner/org only)
560
+ │ ├── business-automation.ts # Quotes, partner level (partner/org only)
561
+ │ ├── alerts.ts # Alert list, get, acknowledge, search
562
+ │ ├── endpoints.ts # Endpoint CRUD, scan, isolate, tamper, forensics
563
+ │ ├── endpoint-settings.ts # Installer, web control, exploit mitigation, IPS, etc.
564
+ │ ├── endpoint-migrations.ts # Migration jobs, software packages
565
+ │ ├── health.ts # Account health, gap analysis
566
+ │ ├── directory.ts # Users, user groups, group membership
567
+ │ ├── admin-management.ts # Admin CRUD, roles, permission sets
568
+ │ ├── policies.ts # Policy CRUD, clone
569
+ │ ├── groups.ts # Endpoint group CRUD, membership
570
+ │ ├── exclusions.ts # Scanning exclusions, allowed/blocked items
571
+ │ ├── cases.ts # Investigation cases, detections, MITRE
572
+ │ ├── detections.ts # Detection queries (async)
573
+ │ ├── siem.ts # SIEM events and alerts
574
+ │ ├── xdr.ts # XDR Data Lake queries (async)
575
+ │ ├── live-discover.ts # Live Discover queries (async)
576
+ │ ├── firewall.ts # Firewall CRUD, firmware, groups, threat feed
577
+ │ ├── email.ts # Quarantine, mailboxes, message actions
578
+ │ ├── mobile.ts # Mobile devices, groups, actions, policies
579
+ │ ├── dns-protection.ts # DNS locations
580
+ │ ├── cloud-security.ts # Cloud security profiles, assets
581
+ │ ├── wifi.ts # Wi-Fi MAC filtering
582
+ │ ├── licensing.ts # License management
583
+ │ ├── accounts.ts # API credential management
584
+ │ └── user-activity.ts # User attestations
585
+ └── types/sophos.ts # Sophos API response types
242
586
  ```
243
587
 
244
588
  ## 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,20 @@ 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 { registerLicensingTools } from "./tools/licensing.js";
40
+ import { registerAccountTools } from "./tools/accounts.js";
41
+ import { registerUserActivityTools } from "./tools/user-activity.js";
42
+ import { registerPartnerTools } from "./tools/partner.js";
43
+ import { registerBusinessAutomationTools } from "./tools/business-automation.js";
44
+ import { registerMobileTools } from "./tools/mobile.js";
31
45
  async function main() {
32
46
  // Load and validate config
33
47
  const config = loadConfig();
@@ -46,13 +60,15 @@ async function main() {
46
60
  // Create the MCP server
47
61
  const server = new McpServer({
48
62
  name: "sophos-central-mcp-server",
49
- version: "0.1.9",
63
+ version: "0.2.0",
50
64
  });
51
65
  // Register tools based on identity type
52
66
  console.error(`[sophos-mcp] Registering tools for ${identity.idType} caller...`);
53
- // Tenant listing only available for partner/org callers
67
+ // Partner/org-only tools
54
68
  if (identity.idType !== "tenant") {
55
69
  registerTenantTools(server, tenantResolver);
70
+ registerPartnerTools(server, sophosClient, tenantResolver);
71
+ registerBusinessAutomationTools(server, sophosClient, tenantResolver);
56
72
  }
57
73
  // Phase 1: Tenant-scoped SOC monitoring tools
58
74
  registerAlertTools(server, sophosClient, tenantResolver);
@@ -69,6 +85,25 @@ async function main() {
69
85
  registerSiemTools(server, sophosClient, tenantResolver);
70
86
  registerXdrTools(server, sophosClient, tenantResolver);
71
87
  registerLiveDiscoverTools(server, sophosClient, tenantResolver);
88
+ // Phase 4: Endpoint migration and software package tools
89
+ registerEndpointMigrationTools(server, sophosClient, tenantResolver);
90
+ // Phase 5: Endpoint settings tools
91
+ registerEndpointSettingsTools(server, sophosClient, tenantResolver);
92
+ // Phase 6: Firewall management tools
93
+ registerFirewallTools(server, sophosClient, tenantResolver);
94
+ // Phase 7: Admin management and directory user/group tools
95
+ registerAdminManagementTools(server, sophosClient, tenantResolver);
96
+ // Phase 8: Email protection tools
97
+ registerEmailTools(server, sophosClient, tenantResolver);
98
+ // Phase 9: DNS, cloud security, Wi-Fi, licensing, accounts, user activity
99
+ registerDnsProtectionTools(server, sophosClient, tenantResolver);
100
+ registerCloudSecurityTools(server, sophosClient, tenantResolver);
101
+ registerWifiTools(server, sophosClient, tenantResolver);
102
+ registerLicensingTools(server, sophosClient, tenantResolver);
103
+ registerAccountTools(server, sophosClient, tenantResolver);
104
+ registerUserActivityTools(server, sophosClient, tenantResolver);
105
+ // Phase 10: Mobile device management tools
106
+ registerMobileTools(server, sophosClient, tenantResolver);
72
107
  console.error("[sophos-mcp] All tools registered.");
73
108
  // Start transport
74
109
  if (config.transport === "http") {