@magicsword-io/magicsword-mcp 0.1.0 → 0.1.3
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 +275 -23
- package/dist/client-setup.js +119 -0
- package/dist/client-setup.js.map +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/configure.js +81 -99
- package/dist/configure.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/policy-rules.js +82 -0
- package/dist/policy-rules.js.map +1 -0
- package/dist/tools/flip_to_enforcing.js +11 -1
- package/dist/tools/flip_to_enforcing.js.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list_events.js +16 -8
- package/dist/tools/list_events.js.map +1 -1
- package/dist/tools/list_intel_sources.js +30 -0
- package/dist/tools/list_intel_sources.js.map +1 -0
- package/dist/tools/manage_policy_intel_sources.js +30 -5
- package/dist/tools/manage_policy_intel_sources.js.map +1 -1
- package/dist/tools/manage_policy_rules.js +39 -9
- package/dist/tools/manage_policy_rules.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -14,48 +14,149 @@ the user's machine, holds an `msk_…` API key, and speaks MCP over stdio.
|
|
|
14
14
|
> the server returns a clear "this MagicSword org needs the Enterprise plan
|
|
15
15
|
> to use MCP" message; nothing else works until the org is upgraded.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Quick start
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Requires **Node.js 22+**, an installed MCP client, and a MagicSword Enterprise
|
|
20
|
+
API key from **Magic Portal → Settings → API Keys**.
|
|
21
|
+
|
|
22
|
+
**Recommended: install and connect your client in one command.** Setup prompts
|
|
23
|
+
for your key privately and lets you choose Claude Desktop, Codex, Claude Code,
|
|
24
|
+
or Cursor:
|
|
20
25
|
|
|
21
26
|
```sh
|
|
22
|
-
npm install -g @magicsword-io/magicsword-mcp
|
|
27
|
+
npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure
|
|
23
28
|
```
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
Registry can discover this server as
|
|
27
|
-
`io.github.magicsword-io/magicsword-mcp`. Homebrew, winget, and curl packaging
|
|
28
|
-
can follow if demand justifies maintaining signed platform artifacts.
|
|
30
|
+
Already know your client? Run the matching one-liner:
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
| Client | Install and configure |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Claude Desktop | `npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client claude-desktop` |
|
|
35
|
+
| Cursor | `npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client cursor` |
|
|
36
|
+
| Claude Code | `npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client claude-code` |
|
|
37
|
+
| OpenAI Codex | `npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client codex` |
|
|
38
|
+
|
|
39
|
+
Prefer your client's own registration command? After saving your key locally,
|
|
40
|
+
these also work without a global server install:
|
|
31
41
|
|
|
32
42
|
```sh
|
|
33
|
-
magicsword-mcp
|
|
43
|
+
codex mcp add magicsword --env MAGICSWORD_BASE_URL=https://www.magicsword.io -- npx -y @magicsword-io/magicsword-mcp
|
|
44
|
+
claude mcp add --scope user --transport stdio magicsword --env MAGICSWORD_BASE_URL=https://www.magicsword.io -- npx -y @magicsword-io/magicsword-mcp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
These are also a fallback when automatic registration cannot launch a client's
|
|
48
|
+
CLI on Windows. Desktop launch still requires Node/npx to be available to that
|
|
49
|
+
client; the recommended setup uses absolute paths instead.
|
|
50
|
+
|
|
51
|
+
### Install buttons: Cursor and VS Code
|
|
52
|
+
|
|
53
|
+
**First save your API key locally** (once per machine):
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
npm install -g @magicsword-io/magicsword-mcp && magicsword-mcp configure --client manual
|
|
34
57
|
```
|
|
35
58
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
59
|
+
Then click your client's button and approve its installation prompt:
|
|
60
|
+
|
|
61
|
+
[](https://cursor.com/en/install-mcp?name=magicsword&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBtYWdpY3N3b3JkLWlvL21hZ2ljc3dvcmQtbWNwIl0sImVudiI6eyJNQUdJQ1NXT1JEX0JBU0VfVVJMIjoiaHR0cHM6Ly93d3cubWFnaWNzd29yZC5pbyJ9fQ%3D%3D)
|
|
62
|
+
[](https://vscode.dev/redirect/mcp/install?name=magicsword&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40magicsword-io%2Fmagicsword-mcp%22%5D%2C%22env%22%3A%7B%22MAGICSWORD_BASE_URL%22%3A%22https%3A%2F%2Fwww.magicsword.io%22%7D%7D)
|
|
63
|
+
[](https://insiders.vscode.dev/redirect/mcp/install?name=magicsword&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40magicsword-io%2Fmagicsword-mcp%22%5D%2C%22env%22%3A%7B%22MAGICSWORD_BASE_URL%22%3A%22https%3A%2F%2Fwww.magicsword.io%22%7D%7D&quality=insiders)
|
|
40
64
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
These buttons register a local `npx` server pointing at production. They contain
|
|
66
|
+
no API key; the server reads `~/.magicsword/mcp.json`. They require `npx` on the
|
|
67
|
+
client's PATH. If a desktop app cannot find Node or npx, use the recommended
|
|
68
|
+
setup above for absolute launch paths, or copy the absolute `command` and
|
|
69
|
+
`args` printed by `configure --client manual` into its configuration.
|
|
44
70
|
|
|
45
|
-
|
|
71
|
+
### Manual JSON fallback
|
|
72
|
+
|
|
73
|
+
After saving your key above, merge this entry into Claude Desktop's
|
|
74
|
+
`claude_desktop_config.json` or Cursor's `~/.cursor/mcp.json`, preserving your
|
|
75
|
+
other servers:
|
|
46
76
|
|
|
47
77
|
```json
|
|
48
78
|
{
|
|
49
79
|
"mcpServers": {
|
|
50
80
|
"magicsword": {
|
|
51
|
-
"command": "
|
|
81
|
+
"command": "npx",
|
|
82
|
+
"args": [
|
|
83
|
+
"-y",
|
|
84
|
+
"@magicsword-io/magicsword-mcp"
|
|
85
|
+
],
|
|
86
|
+
"env": {
|
|
87
|
+
"MAGICSWORD_BASE_URL": "https://www.magicsword.io"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
For **VS Code / Insiders**, run **MCP: Open User Configuration** and merge this
|
|
95
|
+
configuration (VS Code uses `servers`, not `mcpServers`):
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"servers": {
|
|
100
|
+
"magicsword": {
|
|
101
|
+
"type": "stdio",
|
|
102
|
+
"command": "npx",
|
|
103
|
+
"args": [
|
|
104
|
+
"-y",
|
|
105
|
+
"@magicsword-io/magicsword-mcp"
|
|
106
|
+
],
|
|
107
|
+
"env": {
|
|
108
|
+
"MAGICSWORD_BASE_URL": "https://www.magicsword.io"
|
|
109
|
+
}
|
|
52
110
|
}
|
|
53
111
|
}
|
|
54
112
|
}
|
|
55
113
|
```
|
|
56
114
|
|
|
57
|
-
Restart
|
|
58
|
-
|
|
115
|
+
Restart your client or start a new session, then ask it to call `whoami` and
|
|
116
|
+
`list_endpoints`. Both must succeed to verify authentication and read access.
|
|
117
|
+
|
|
118
|
+
The official MCP Registry identifier is
|
|
119
|
+
`io.github.magicsword-io/magicsword-mcp`. Client-specific details follow below.
|
|
120
|
+
|
|
121
|
+
## Configure
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
magicsword-mcp configure
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Setup asks for an API key with hidden input (mint one in **Magic Portal →
|
|
128
|
+
Settings → API Keys**) and which client to connect: Claude Desktop, Codex,
|
|
129
|
+
Claude Code, Cursor, or manual configuration. It saves the key only in
|
|
130
|
+
`~/.magicsword/mcp.json` (mode 600). The Portal defaults to
|
|
131
|
+
`https://www.magicsword.io`, replacing any saved preview origin. A custom
|
|
132
|
+
origin requires an explicit `--base-url` option.
|
|
133
|
+
|
|
134
|
+
Setup registers the selected client at its standard user-level location,
|
|
135
|
+
preserves other servers and settings, and creates a private backup of existing
|
|
136
|
+
client configuration. It updates an existing `magicsword` entry for JSON clients
|
|
137
|
+
and Codex. Claude Code requires that name to be available; use its own MCP
|
|
138
|
+
commands to remove an old registration before retrying. Codex and Claude Code
|
|
139
|
+
registration require their respective CLIs to be installed.
|
|
140
|
+
|
|
141
|
+
To choose a client directly, or reuse a saved key without prompting:
|
|
142
|
+
|
|
143
|
+
```sh
|
|
144
|
+
magicsword-mcp configure --client codex
|
|
145
|
+
magicsword-mcp configure --non-interactive --client claude-desktop
|
|
146
|
+
magicsword-mcp configure --client cursor --client-config /path/to/mcp.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
The launch entry uses absolute Node and installed server paths so desktop apps
|
|
150
|
+
can start it without inheriting your terminal's PATH. Re-run setup if you move
|
|
151
|
+
your Node installation or install the package under a different Node version.
|
|
152
|
+
Manual setup prints a credential-free launch entry for other local stdio MCP
|
|
153
|
+
clients. Unattended setup without `--client` writes only the MagicSword file.
|
|
154
|
+
|
|
155
|
+
Restart the selected client or start a new session to load `magicsword` and its
|
|
156
|
+
22 tools. Ask it to call `whoami` and then `list_endpoints` to verify access;
|
|
157
|
+
discovery alone does not verify API-key scopes. Claude Desktop logs are at
|
|
158
|
+
`~/Library/Logs/Claude/mcp*.log` on macOS. Browser-only clients require a remote
|
|
159
|
+
MCP transport; this package provides a local stdio server.
|
|
59
160
|
|
|
60
161
|
If you need a per-client override instead of `~/.magicsword/mcp.json`, set
|
|
61
162
|
`MAGICSWORD_API_KEY` and optionally `MAGICSWORD_BASE_URL` in that MCP host's
|
|
@@ -70,13 +171,14 @@ environment. Keep API keys out of shared config snippets and screenshots.
|
|
|
70
171
|
| `show_endpoint` | Fetches one endpoint with OS, policy, compliance, upgrade, heartbeat, and AMSI details. |
|
|
71
172
|
| `list_agent_releases` | Lists available agent versions and per-platform latest releases. |
|
|
72
173
|
| `find_alerts` | Searches alerts by severity / ack state / since / hostname / MITRE technique. |
|
|
73
|
-
| `list_events` |
|
|
174
|
+
| `list_events` | Searches Investigate events by name, filename, path, hash, publisher, computer, or package family, with type/status/policy/endpoint/time filters. |
|
|
74
175
|
| `triage_alert` | Fetches one alert directly with triggering events, metadata, and file context; optionally acknowledges or dismisses it. |
|
|
75
176
|
| `list_policies` | Lists policies with current version + mode. |
|
|
76
177
|
| `show_policy` | Shows one policy by id. |
|
|
77
178
|
| `manage_policy_rules` | Lists rules or adds explicit / event-derived rules to a policy by id or name. Avoid explicit flat hash rules for Windows WDAC. |
|
|
78
179
|
| `apply_policy_to_endpoints` | Resolves endpoints and previews a policy assignment; `confirm=true` applies it after approval. |
|
|
79
180
|
| `flip_to_enforcing` | Two-step preview/confirm flip with a server-issued one-time confirm token. Safety-critical. |
|
|
181
|
+
| `list_intel_sources` | Discovers enabled global and organization-owned intel sources and IDs, with platform and pagination filters. |
|
|
80
182
|
| `list_customer_intel_feeds` | Lists private intel feeds or feed items. |
|
|
81
183
|
| `manage_customer_intel_feed` | Creates or updates feeds; deletion requires a preview followed by `confirm=true`. |
|
|
82
184
|
| `manage_customer_intel_item` | Edits feed items; deletion requires a preview followed by `confirm=true`. |
|
|
@@ -97,6 +199,67 @@ marked read-only and idempotent; enforcement, deletion, policy assignment,
|
|
|
97
199
|
rule changes, and agent upgrades are marked destructive so MCP clients can
|
|
98
200
|
apply appropriate confirmation UX.
|
|
99
201
|
|
|
202
|
+
## Adding and listing policy rules
|
|
203
|
+
|
|
204
|
+
`manage_policy_rules` accepts **one** input source per add: `rules` for explicit
|
|
205
|
+
rules, or `event_ids` for rules derived from telemetry. Each accepts 1–100 items.
|
|
206
|
+
Use `policy_id`, or `policy_name` with an optional `platform` to resolve a name.
|
|
207
|
+
The policy must already exist; ambiguous names require an ID or platform.
|
|
208
|
+
|
|
209
|
+
For example, to block the filenames from issue #5 on a Windows blocklist policy:
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"action": "add",
|
|
214
|
+
"policy_name": "Workstations",
|
|
215
|
+
"platform": "windows",
|
|
216
|
+
"rules": [
|
|
217
|
+
{ "type": "filename", "value": "rustdesk.exe", "status": "blocked" },
|
|
218
|
+
{ "type": "filename", "value": "mshta.exe", "status": "blocked" },
|
|
219
|
+
{ "type": "filename", "value": "wscript.exe", "status": "blocked" }
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Explicit rules use `type` and `value`, with optional `status` (defaults to
|
|
225
|
+
`blocked`). Unknown rule fields are rejected; `rule_type` / `file_name` are not
|
|
226
|
+
substitutes. Filename and path values must be non-empty strings or supported
|
|
227
|
+
value objects. Publisher values require `publisherName` (or `publisher`) and a
|
|
228
|
+
valid `tbsHash` (or `tbs_hash` / `certificate_thumbprint`). Optional rule metadata
|
|
229
|
+
includes `name`, `mode`, version bounds, signer/file-attribute references,
|
|
230
|
+
`package_version`, and `target_platforms`. The Portal validates whether a rule
|
|
231
|
+
can be enforced on the resolved policy's platform. Flat Windows WDAC hashes
|
|
232
|
+
remain unsupported; use telemetry-derived rules or private intelligence feeds.
|
|
233
|
+
|
|
234
|
+
For telemetry, use `event_ids` with top-level `status` (defaults to `allowed`)
|
|
235
|
+
and an optional `type` override. Top-level `status` and `type` cannot be used
|
|
236
|
+
with explicit `rules`; set those fields on each rule instead.
|
|
237
|
+
|
|
238
|
+
Adds preserve existing rules and intelligence-source links. Matching customer
|
|
239
|
+
rules with a different status are updated; rules already at the requested status
|
|
240
|
+
are reported as unchanged duplicates. Feed-owned rules retain their provenance;
|
|
241
|
+
unsupported conflicts with a feed rule return an API error. The tool reports
|
|
242
|
+
the Portal's actual `added_count`, `updated_count`, and `duplicate_count`, and retains its version
|
|
243
|
+
information in structured output. An unchanged duplicate batch reports “No
|
|
244
|
+
changes needed.” Unexplained zero changes or malformed responses are errors:
|
|
245
|
+
inspect the current rules/version before retrying because the request may have
|
|
246
|
+
created a version. Writes are never retried automatically.
|
|
247
|
+
For event-derived batches, a count total smaller than the number of unique
|
|
248
|
+
requested events is also an error: some events may not have produced rules.
|
|
249
|
+
Successful changes and version details remain available in structured output.
|
|
250
|
+
|
|
251
|
+
To verify the current version's stored rules:
|
|
252
|
+
|
|
253
|
+
```json
|
|
254
|
+
{ "action": "list", "policy_id": "<policy UUID>", "limit": 500, "offset": 0 }
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
List requires an ID and `policies:read`. It returns stored customer rules and
|
|
258
|
+
materialized feed rules for the current version, with `total`, `limit`, and
|
|
259
|
+
`offset`. The default page size is 100, maximum 500; increase `offset` until all
|
|
260
|
+
`total` rows have been read. An empty page does not describe other versions or
|
|
261
|
+
indicators that have not been materialized into this version.
|
|
262
|
+
|
|
100
263
|
## Example transcript
|
|
101
264
|
|
|
102
265
|
```
|
|
@@ -122,6 +285,52 @@ Claude: [calls manage_policy_rules action=add policy_name=Workstations event_ids
|
|
|
122
285
|
→ Created a new policy version with 5 allowed rules.
|
|
123
286
|
```
|
|
124
287
|
|
|
288
|
+
## Investigate events and attach intelligence
|
|
289
|
+
|
|
290
|
+
Ask “Show audited filename events for image.png from the last week.” The agent
|
|
291
|
+
calls `list_events` with `type=filename`, `status=audited`, `file_name=image.png`,
|
|
292
|
+
and `hours=168`. `file_name` is an exact, case-sensitive match, including literal
|
|
293
|
+
punctuation. For broader discovery, `q` searches the same seven fields as Portal
|
|
294
|
+
Investigate: name, filename, path, hash, publisher, computer, and package family.
|
|
295
|
+
It is a case-insensitive literal substring search accepting up to 120 characters,
|
|
296
|
+
including Unicode, quotes, commas, parentheses, and Windows backslashes. `%`, `_`,
|
|
297
|
+
and `*` are literal characters; wildcard and field-query syntax are not supported.
|
|
298
|
+
Control characters are rejected. A blank query applies no text filter.
|
|
299
|
+
Filters combine, so `type=filename` selects filename events rather than all event
|
|
300
|
+
types that happen to include a filename. Omit `type` to search across event types.
|
|
301
|
+
|
|
302
|
+
For example, “Find events from publisher Contoso, Inc. (R&D)” uses
|
|
303
|
+
`list_events q="Contoso, Inc. (R&D)"`. To block a file found in those results,
|
|
304
|
+
review the returned IDs and rule context, choose the intended rule type, and call
|
|
305
|
+
`manage_policy_rules action=add policy_id=... event_ids=["<selected-event-id>"]
|
|
306
|
+
status=blocked type=filename`. Search does not change policies or automatically
|
|
307
|
+
block every match. Searching a publisher does not imply blocking that publisher;
|
|
308
|
+
the selected rule type determines what is blocked. Event IDs can also derive
|
|
309
|
+
other supported rules when appropriate, subject to Portal platform validation.
|
|
310
|
+
|
|
311
|
+
The default window is 24 hours with statuses `audited,blocked`; use `since` for
|
|
312
|
+
an explicit lower bound. The window uses the last observation time, falling back
|
|
313
|
+
to creation time. Results include file paths, publishers, hashes, computers,
|
|
314
|
+
occurrence counts, rule context, and pagination. Use `limit` and `offset` for
|
|
315
|
+
additional pages. This is normalized event data rather than a raw event log.
|
|
316
|
+
|
|
317
|
+
For “Attach LOLDrivers intel to my Windows policy”, the workflow is:
|
|
318
|
+
|
|
319
|
+
1. `list_policies platform=windows` identifies the policy name and ID.
|
|
320
|
+
2. `list_intel_sources platform=windows` returns available source names and IDs.
|
|
321
|
+
It defaults to enabled sources; use `is_enabled=false` to inspect disabled ones.
|
|
322
|
+
Use `limit` (up to 100) and `offset` to discover additional pages.
|
|
323
|
+
3. `manage_policy_intel_sources action=list policy_id=...` shows current attachments.
|
|
324
|
+
4. After identifying the intended policy and sources, use
|
|
325
|
+
`manage_policy_intel_sources action=attach policy_id=... source_ids=[...]`.
|
|
326
|
+
The result reports new attachments and sources already attached separately.
|
|
327
|
+
5. List the policy attachments again to verify the result.
|
|
328
|
+
|
|
329
|
+
Source discovery requires `intel:read`, policy discovery/attachment listing
|
|
330
|
+
requires `policies:read`, and attachment requires `policies:write`. Source
|
|
331
|
+
visibility does not guarantee premium entitlement; the API checks it when attaching.
|
|
332
|
+
Attachments create a policy version and take effect as endpoints receive it.
|
|
333
|
+
|
|
125
334
|
## Configuration sources, in order of precedence
|
|
126
335
|
|
|
127
336
|
1. `MAGICSWORD_API_KEY` / `MAGICSWORD_BASE_URL` env vars (set by the MCP host).
|
|
@@ -138,6 +347,17 @@ are retried; write actions are never retried automatically.
|
|
|
138
347
|
- **`flip_to_enforcing` is two-step.** The first call returns a server preview
|
|
139
348
|
and one-time confirmation token; you must show the preview to a human and
|
|
140
349
|
pass the token back to commit. Tokens are short-lived and single-use.
|
|
350
|
+
This is **not MFA or server-verified human approval**: the same API key can
|
|
351
|
+
perform both calls. The MCP host must obtain human approval before committing.
|
|
352
|
+
A commit response must confirm success for the requested policy and identify
|
|
353
|
+
its new version; otherwise use `show_policy` to verify the outcome before retrying.
|
|
354
|
+
Success confirms the server policy version change. Endpoint enforcement takes
|
|
355
|
+
effect through check-in; this response does not confirm endpoint delivery.
|
|
356
|
+
- **Intel attachments use enabled sources in batches of at most 60.** Capture
|
|
357
|
+
requests share the API key creator's rate budget with the Portal UI. A 429
|
|
358
|
+
response includes retry guidance; wait before submitting another batch.
|
|
359
|
+
Attachment summaries report newly attached and already-attached counts
|
|
360
|
+
separately. Invalid or incomplete counts require listing attachments before retrying.
|
|
141
361
|
- **Fleet changes and deletion are explicit.** Endpoint upgrades, policy
|
|
142
362
|
assignments, and private-intel deletion return a no-op preview unless the
|
|
143
363
|
approved follow-up call includes `confirm=true`.
|
|
@@ -165,9 +385,41 @@ npm run release:verify
|
|
|
165
385
|
node dist/index.js --version
|
|
166
386
|
```
|
|
167
387
|
|
|
168
|
-
Tests validate `--help`, `--version`,
|
|
388
|
+
Tests validate `--help`, `--version`, production-default migration, private client
|
|
389
|
+
registration, preservation and rollback, configure validation, secret redaction,
|
|
169
390
|
modern and legacy MCP startup, focused mutation confirmation, retry and timeout
|
|
170
391
|
semantics, response-size bounds, malformed responses, write non-retry behavior,
|
|
171
|
-
|
|
392
|
+
all 22 tools' HTTP contracts and confirmation flows over modern and legacy
|
|
393
|
+
stdio, explicit filename round trips, invalid rule shapes, ambiguous inputs,
|
|
394
|
+
actual mutation counts, and npm pack
|
|
395
|
+
contents. `test:package` installs a production-only tarball and
|
|
172
396
|
checks the installed CLI and MCP tool discovery; `release:verify` checks all
|
|
173
397
|
release metadata. See `docs/RELEASING.md` for npm and MCP Registry releases.
|
|
398
|
+
|
|
399
|
+
An opt-in live policy test is also available after `npm run build`:
|
|
400
|
+
|
|
401
|
+
```sh
|
|
402
|
+
MAGICSWORD_LIVE_TEST=1 MAGICSWORD_TEST_POLICY_ID="<disposable-policy-uuid>" node scripts/live-policy-rules.mjs
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Use your private saved credentials or `MAGICSWORD_API_KEY`; do not put keys in
|
|
406
|
+
commands or shared logs. This test **writes policy versions** and requires a
|
|
407
|
+
disposable, unassigned Windows audit policy named with the prefix
|
|
408
|
+
`MCP issue 5 disposable verification`, seeded with more than 1,000 baseline rules
|
|
409
|
+
with at least one attached intelligence source, and no existing `rustdesk.exe`,
|
|
410
|
+
`mshta.exe`, or `wscript.exe` customer rules.
|
|
411
|
+
It verifies append behavior, pagination, intelligence-source preservation,
|
|
412
|
+
repeat adds, status updates, invalid inputs, and event-derived filenames when
|
|
413
|
+
suitable telemetry exists. It also exercises discovery and read tools through
|
|
414
|
+
stdio. It prints assertion names/counts only. Remove the disposable policy and
|
|
415
|
+
its versions after inspection; the test does not create or delete the fixture.
|
|
416
|
+
Set `MAGICSWORD_TEST_PROTOCOL=legacy` to exercise the legacy live transport.
|
|
417
|
+
|
|
418
|
+
With the same disposable policy and opt-in environment, run
|
|
419
|
+
`node scripts/live-demo-tools.mjs` to check assignment, upgrade, and enforcement
|
|
420
|
+
previews, all three platforms' installer instructions, and a disabled temporary
|
|
421
|
+
feed's create/update/upsert/list/item-delete/attach/detach/feed-delete flows.
|
|
422
|
+
The feed is removed in `finally`; the policy fixture still requires manual
|
|
423
|
+
cleanup. These checks never commit endpoint assignments, upgrades, or enforcement.
|
|
424
|
+
Actual endpoint commands, enrollment tokens, and alert acknowledgements/dismissals
|
|
425
|
+
are covered by the local HTTP fixtures.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { homedir, platform } from 'node:os';
|
|
4
|
+
import { dirname, join, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { spawnSync } from 'node:child_process';
|
|
7
|
+
export const CLIENTS = ['claude-desktop', 'codex', 'claude-code', 'cursor', 'manual'];
|
|
8
|
+
export function serverDefinition(credentialPath, baseUrl) {
|
|
9
|
+
return {
|
|
10
|
+
command: process.execPath,
|
|
11
|
+
args: [fileURLToPath(new URL('./index.js', import.meta.url))],
|
|
12
|
+
env: { MAGICSWORD_CONFIG: resolve(credentialPath), MAGICSWORD_BASE_URL: baseUrl },
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function clientConfigPath(client) {
|
|
16
|
+
if (client === 'cursor')
|
|
17
|
+
return join(homedir(), '.cursor', 'mcp.json');
|
|
18
|
+
if (client === 'codex')
|
|
19
|
+
return join(process.env.CODEX_HOME ?? join(homedir(), '.codex'), 'config.toml');
|
|
20
|
+
if (client === 'claude-code')
|
|
21
|
+
return process.env.CLAUDE_CONFIG_DIR ? join(process.env.CLAUDE_CONFIG_DIR, '.claude.json') : join(homedir(), '.claude.json');
|
|
22
|
+
if (platform() === 'darwin')
|
|
23
|
+
return join(homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
24
|
+
if (platform() === 'win32')
|
|
25
|
+
return join(process.env.APPDATA ?? join(homedir(), 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json');
|
|
26
|
+
return join(homedir(), '.config', 'Claude', 'claude_desktop_config.json');
|
|
27
|
+
}
|
|
28
|
+
export function atomicPrivateWrite(target, contents) {
|
|
29
|
+
mkdirSync(dirname(target), { recursive: true, mode: 0o700 });
|
|
30
|
+
const temporary = `${target}.${randomUUID()}.tmp`;
|
|
31
|
+
try {
|
|
32
|
+
writeFileSync(temporary, contents, { encoding: 'utf8', flag: 'wx', mode: 0o600 });
|
|
33
|
+
renameSync(temporary, target);
|
|
34
|
+
if (platform() !== 'win32')
|
|
35
|
+
chmodSync(target, 0o600);
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
rmSync(temporary, { force: true });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function object(value) {
|
|
42
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
43
|
+
}
|
|
44
|
+
function existingFile(target) {
|
|
45
|
+
if (!existsSync(target))
|
|
46
|
+
return undefined;
|
|
47
|
+
if (!lstatSync(target).isFile())
|
|
48
|
+
throw new Error('Client configuration must be a regular file.');
|
|
49
|
+
return readFileSync(target, 'utf8');
|
|
50
|
+
}
|
|
51
|
+
function backup(target, contents) {
|
|
52
|
+
if (contents !== undefined)
|
|
53
|
+
atomicPrivateWrite(`${target}.magicsword-backup.${randomUUID()}`, contents);
|
|
54
|
+
}
|
|
55
|
+
export function registerClient(client, definition, customPath) {
|
|
56
|
+
if (client === 'manual')
|
|
57
|
+
return undefined;
|
|
58
|
+
const target = customPath ? resolve(customPath) : clientConfigPath(client);
|
|
59
|
+
const old = existingFile(target);
|
|
60
|
+
let claudeConfig;
|
|
61
|
+
if (client === 'claude-code' && old !== undefined) {
|
|
62
|
+
let parsed;
|
|
63
|
+
try {
|
|
64
|
+
parsed = JSON.parse(old);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
throw new Error('Client configuration contains invalid JSON; no client settings were changed.');
|
|
68
|
+
}
|
|
69
|
+
if (!object(parsed) || (parsed.mcpServers !== undefined && !object(parsed.mcpServers))) {
|
|
70
|
+
throw new Error('Client configuration must contain an object with an optional mcpServers object.');
|
|
71
|
+
}
|
|
72
|
+
claudeConfig = parsed;
|
|
73
|
+
}
|
|
74
|
+
if (client === 'claude-desktop' || client === 'cursor') {
|
|
75
|
+
let parsed;
|
|
76
|
+
try {
|
|
77
|
+
parsed = old === undefined ? {} : JSON.parse(old);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
throw new Error('Client configuration contains invalid JSON; no client settings were changed.');
|
|
81
|
+
}
|
|
82
|
+
if (!object(parsed) || (parsed.mcpServers !== undefined && !object(parsed.mcpServers))) {
|
|
83
|
+
throw new Error('Client configuration must contain an object with an optional mcpServers object.');
|
|
84
|
+
}
|
|
85
|
+
backup(target, old);
|
|
86
|
+
atomicPrivateWrite(target, `${JSON.stringify({ ...parsed, mcpServers: { ...(parsed.mcpServers ?? {}), magicsword: definition } }, null, 2)}\n`);
|
|
87
|
+
return target;
|
|
88
|
+
}
|
|
89
|
+
backup(target, old);
|
|
90
|
+
const envArgs = Object.entries(definition.env).flatMap(([key, value]) => ['--env', `${key}=${value}`]);
|
|
91
|
+
const cli = client === 'codex' ? 'codex' : 'claude';
|
|
92
|
+
const args = client === 'codex'
|
|
93
|
+
? ['mcp', 'add', 'magicsword', ...envArgs, '--', definition.command, ...definition.args]
|
|
94
|
+
: ['mcp', 'add', '--scope', 'user', '--transport', 'stdio', 'magicsword', ...envArgs, '--', definition.command, ...definition.args];
|
|
95
|
+
// Never forward CLI output: it can contain existing configuration or secrets.
|
|
96
|
+
const result = spawnSync(cli, args, { encoding: 'utf8', timeout: 30_000, windowsHide: true, maxBuffer: 1024 * 1024 });
|
|
97
|
+
if (result.status !== 0) {
|
|
98
|
+
if (old !== undefined)
|
|
99
|
+
atomicPrivateWrite(target, old);
|
|
100
|
+
else
|
|
101
|
+
rmSync(target, { force: true });
|
|
102
|
+
throw new Error(`Could not register with ${client}. Ensure its CLI is installed and the magicsword name is available, then retry. Existing client settings were restored.`);
|
|
103
|
+
}
|
|
104
|
+
if (client === 'claude-code' && claudeConfig) {
|
|
105
|
+
// Preserve unrelated fields that the CLI may otherwise discard during migration.
|
|
106
|
+
try {
|
|
107
|
+
const updated = JSON.parse(readFileSync(target, 'utf8'));
|
|
108
|
+
if (!object(updated) || !object(updated.mcpServers) || !object(updated.mcpServers.magicsword))
|
|
109
|
+
throw new Error('Invalid CLI registration.');
|
|
110
|
+
atomicPrivateWrite(target, `${JSON.stringify({ ...updated, ...claudeConfig, mcpServers: { ...(claudeConfig.mcpServers ?? {}), magicsword: updated.mcpServers.magicsword } }, null, 2)}\n`);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
atomicPrivateWrite(target, old);
|
|
114
|
+
throw new Error('Could not verify Claude Code registration; existing client settings were restored.');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return target;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=client-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-setup.js","sourceRoot":"","sources":["../src/client-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|