@systemdox/mcp-server 0.1.47 → 0.1.49

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 CHANGED
@@ -113,17 +113,18 @@ npx @systemdox/mcp-server setup
113
113
 
114
114
  | Variable | Required | Default | Purpose |
115
115
  |----------|----------|---------|---------|
116
- | `SYSTEMDOX_API_KEY` | yes | — | Your SystemDox API key |
116
+ | `SYSTEMDOX_API_KEY` | no | the key in `~/.claude/systemdox/credentials.json` | Your SystemDox API key. `setup` stores it in `~/.claude/systemdox/credentials.json` and nowhere else, so the server reads it there when this is not set |
117
+ | `SYSTEMDOX_WORKSPACE` | no | — | The workspace whose key to read when `credentials.json` holds several |
117
118
  | `SYSTEMDOX_API_URL` | no | `https://api.puglieseweb.com/systemdox` | REST API base URL |
118
119
  | `SYSTEMDOX_CACHE_TTL` | no | `300` | Response cache TTL (seconds) |
119
120
 
120
121
  ## Tools
121
122
 
122
123
  Read: `get_checks`, `get_specs`, `get_docs`, `get_tech_stack`,
123
- `get_planning_context`, `get_plan_board`, `get_context`, `get_project_rules`,
124
- `get_prompt_templates`. Write: `create_check`, `update_spec`,
125
- `report_decision`, `create_project_rule`, `create_prompt_template`. Write tools
126
- require an API key with `editor`+ role.
124
+ `get_planning_context`, `get_plan_board`, `get_change`, `get_context`,
125
+ `get_project_rules`, `get_prompt_templates`. Write: `create_check`,
126
+ `update_spec`, `report_decision`, `create_project_rule`,
127
+ `create_prompt_template`. Write tools require an API key with `editor`+ role.
127
128
 
128
129
  Skills (ADR-216): `publish_skill`, `list_skills`, `install_skill`. A Claude
129
130
  Code skill folder (`SKILL.md` plus its references and scripts) is published
@@ -172,8 +173,10 @@ One command sets up your computer, and the same command updates it:
172
173
  npx -y @systemdox/mcp-server setup [--project <name>] [--dir <checkout>] [--yes] [--overwrite]
173
174
  ```
174
175
 
175
- - It first writes the SystemDox MCP server into your AI tool's config, as it
176
- always has. Then, when your workspace has anything published, it checks that
176
+ - It first writes the SystemDox MCP server into your AI tool's config, without
177
+ your key: the key is stored once, in `~/.claude/systemdox/credentials.json`
178
+ (readable by you alone), and a key an earlier `setup` wrote into that config
179
+ is removed from it. Then, when your workspace has anything published, it checks that
177
180
  Claude Code is 2.1.316 or later (`claude update` otherwise) and shows you
178
181
  everything it will add: the marketplace entry for `~/.claude/settings.json`,
179
182
  the plugin with every hook command and every MCP server's command or URL
@@ -181,9 +184,7 @@ npx -y @systemdox/mcp-server setup [--project <name>] [--dir <checkout>] [--yes]
181
184
  its file count and folder, and the `autoMemoryDirectory` it will set. On an
182
185
  update it shows only what changed, with a line diff for hooks and
183
186
  instructions. Nothing changes until you answer `y`.
184
- - Then, in this order: your key goes into
185
- `~/.claude/systemdox/credentials.json` (readable by you alone, and nowhere
186
- else); the team instructions into `~/.claude/systemdox/<workspace>/CLAUDE.md`
187
+ - Then, in this order: the team instructions into `~/.claude/systemdox/<workspace>/CLAUDE.md`
187
188
  (if you edited that file, it stops unless `--overwrite`); one marked import
188
189
  block into `~/.claude/CLAUDE.md`; one `extraKnownMarketplaces` entry,
189
190
  `systemdox-<workspace>`, into `~/.claude/settings.json` (nothing else in
@@ -255,6 +256,18 @@ Both read your key from `SYSTEMDOX_API_KEY`, then from
255
256
  alone). A key is never written into a settings file, a plugin entry or a
256
257
  command line.
257
258
 
259
+ ### `get_change` (ADR-218)
260
+
261
+ `get_change { repo, slug }` reads one change, a `specs/changes/<slug>/` folder
262
+ of a connected repository, as SystemDox last synced it from GitHub: each part
263
+ of its brief (decision, contract, behaviour, plan) and its release with its
264
+ state and pull request, the contract files, every scenario as
265
+ `id · state · title`, the plan and the release pull requests, then the change
266
+ as JSON. The last line is `The brief is passed` or
267
+ `The brief is not passed: <part> is <state>`: a build session calls it first
268
+ and stops on the second. A change the key may not read answers
269
+ `No such change <repo>/<slug>`, as one that does not exist.
270
+
258
271
  ### `get_context`
259
272
 
260
273
  The aggregator. It ranks checks, specs and docs against the task, then
@@ -293,7 +306,7 @@ node scripts/mcp-release-gate.mjs # from the monorepo root
293
306
  ```
294
307
 
295
308
  Entry points: `src/index.ts` (stdio), `src/http.ts` (hosted HTTP handler),
296
- `src/cli.ts` (`setup` command). Tool registration is shared via
309
+ `src/cli.ts` (`setup` command: `src/setup-mcp.ts`, then `src/setup-team.ts`). Tool registration is shared via
297
310
  `src/server.ts` (`createServer`). The hosted handler is deployed as a Lambda by
298
311
  the product-systemdox backend stack (`systemdox-backend-prod`), reached through
299
312
  the `*.mcp.systemdox.com` custom domain.