@systemdox/mcp-server 0.1.48 → 0.1.50

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,19 @@ 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`, `get_team_setup`, `get_document_links`,
126
+ `trace_document_path`, `get_graph_stats`. Write: `create_check`,
127
+ `update_spec`, `report_decision`, `create_project_rule`,
128
+ `create_prompt_template`. Write tools require an API key with `editor`+ role.
127
129
 
128
130
  Skills (ADR-216): `publish_skill`, `list_skills`, `install_skill`. A Claude
129
131
  Code skill folder (`SKILL.md` plus its references and scripts) is published
@@ -140,6 +142,34 @@ npx -y @systemdox/mcp-server install-skill <name> [--version n] [--target dir] [
140
142
  Exit codes: `0` installed, `1` usage / no key / API error, `2` refused because
141
143
  files there were edited.
142
144
 
145
+ ### What every session is told (ADR-223)
146
+
147
+ Installing this server is enough for a computer to know what its team uses. When
148
+ a session connects, the server answers with `instructions`, which Claude Code puts
149
+ in the session's system prompt with no tool call:
150
+
151
+ - the workspace, and to call `get_context` before writing code;
152
+ - each skill your team put in the team setup, with when to use it;
153
+ - what this computer lacks. A missing or older skill is installed with
154
+ `install_skill`, which writes files and runs nothing. A file you edited is never
155
+ replaced, and a folder that did not come from SystemDox is left alone.
156
+
157
+ Hooks, MCP servers, team instructions and memory run or load by themselves, so they
158
+ still wait for you: `setup`, in your own terminal, below. An agent never answers its
159
+ prompts. So does a team skill that is not plain (anything in its frontmatter beyond a
160
+ name and a description, files outside its own folders, or a `!`-command) or that sits
161
+ outside the default space: a session is told its name and not to install it. A skill may
162
+ not hold `.claude-plugin/`, which would make it a plugin. The hosted server cannot see
163
+ your disk, so it says how to check.
164
+
165
+ **`get_team_setup`** (both servers, read-only) answers the same question in full:
166
+ every skill, hook command and MCP server, and on your own computer what is missing
167
+ and what to do. Use it with a client that does not surface `instructions`.
168
+
169
+ If this computer has no key, or SystemDox refuses it, the server still connects and
170
+ tells the session what to do. See the words a session gets in the console, under
171
+ **Docs › Team setup › What every session is told**.
172
+
143
173
  ### Team setup (ADR-217)
144
174
 
145
175
  Your workspace's Claude Code setup (hooks, MCP servers, agents, commands, the
@@ -172,8 +202,10 @@ One command sets up your computer, and the same command updates it:
172
202
  npx -y @systemdox/mcp-server setup [--project <name>] [--dir <checkout>] [--yes] [--overwrite]
173
203
  ```
174
204
 
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
205
+ - It first writes the SystemDox MCP server into your AI tool's config, without
206
+ your key: the key is stored once, in `~/.claude/systemdox/credentials.json`
207
+ (readable by you alone), and a key an earlier `setup` wrote into that config
208
+ is removed from it. Then, when your workspace has anything published, it checks that
177
209
  Claude Code is 2.1.316 or later (`claude update` otherwise) and shows you
178
210
  everything it will add: the marketplace entry for `~/.claude/settings.json`,
179
211
  the plugin with every hook command and every MCP server's command or URL
@@ -181,9 +213,7 @@ npx -y @systemdox/mcp-server setup [--project <name>] [--dir <checkout>] [--yes]
181
213
  its file count and folder, and the `autoMemoryDirectory` it will set. On an
182
214
  update it shows only what changed, with a line diff for hooks and
183
215
  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`
216
+ - Then, in this order: the team instructions into `~/.claude/systemdox/<workspace>/CLAUDE.md`
187
217
  (if you edited that file, it stops unless `--overwrite`); one marked import
188
218
  block into `~/.claude/CLAUDE.md`; one `extraKnownMarketplaces` entry,
189
219
  `systemdox-<workspace>`, into `~/.claude/settings.json` (nothing else in
@@ -255,6 +285,18 @@ Both read your key from `SYSTEMDOX_API_KEY`, then from
255
285
  alone). A key is never written into a settings file, a plugin entry or a
256
286
  command line.
257
287
 
288
+ ### `get_change` (ADR-218)
289
+
290
+ `get_change { repo, slug }` reads one change, a `specs/changes/<slug>/` folder
291
+ of a connected repository, as SystemDox last synced it from GitHub: each part
292
+ of its brief (decision, contract, behaviour, plan) and its release with its
293
+ state and pull request, the contract files, every scenario as
294
+ `id · state · title`, the plan and the release pull requests, then the change
295
+ as JSON. The last line is `The brief is passed` or
296
+ `The brief is not passed: <part> is <state>`: a build session calls it first
297
+ and stops on the second. A change the key may not read answers
298
+ `No such change <repo>/<slug>`, as one that does not exist.
299
+
258
300
  ### `get_context`
259
301
 
260
302
  The aggregator. It ranks checks, specs and docs against the task, then
@@ -293,7 +335,7 @@ node scripts/mcp-release-gate.mjs # from the monorepo root
293
335
  ```
294
336
 
295
337
  Entry points: `src/index.ts` (stdio), `src/http.ts` (hosted HTTP handler),
296
- `src/cli.ts` (`setup` command). Tool registration is shared via
338
+ `src/cli.ts` (`setup` command: `src/setup-mcp.ts`, then `src/setup-team.ts`). Tool registration is shared via
297
339
  `src/server.ts` (`createServer`). The hosted handler is deployed as a Lambda by
298
340
  the product-systemdox backend stack (`systemdox-backend-prod`), reached through
299
341
  the `*.mcp.systemdox.com` custom domain.