systematics-mcp 1.1.0 → 1.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.
- package/README.md +9 -15
- package/dist/index.js +14 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,26 +4,20 @@ Claude Code MCP server for the [Systematics](https://app.dovito.com) platform by
|
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
7
|
-
### 1.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
{
|
|
13
|
-
"mcpServers": {
|
|
14
|
-
"systematics": {
|
|
15
|
-
"command": "npx",
|
|
16
|
-
"args": ["-y", "systematics-mcp"]
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
7
|
+
### 1. Install and Register
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g systematics-mcp
|
|
11
|
+
claude mcp add systematics --scope user -- systematics-mcp
|
|
20
12
|
```
|
|
21
13
|
|
|
14
|
+
Use `--scope user` for global access across all projects, or `--scope project` for a single project.
|
|
15
|
+
|
|
22
16
|
### 2. Authenticate
|
|
23
17
|
|
|
24
|
-
Restart Claude Code, then use `/mcp` to
|
|
18
|
+
Restart Claude Code, then use `/mcp` to verify Systematics shows as "Connected." The first time you use a Systematics tool, run the `authenticate` tool to sign in via your browser. Your token is saved locally at `~/.systematics/token` and reused automatically for 90 days.
|
|
25
19
|
|
|
26
|
-
That's it. No API keys, no repo access, no manual
|
|
20
|
+
That's it. No API keys, no repo access, no manual config files.
|
|
27
21
|
|
|
28
22
|
## How It Works
|
|
29
23
|
|
package/dist/index.js
CHANGED
|
@@ -161,7 +161,7 @@ server.tool("create_project", "Create a new project under a business", {
|
|
|
161
161
|
const client = getApi();
|
|
162
162
|
if (!client)
|
|
163
163
|
return authRequiredResponse();
|
|
164
|
-
const data = await client.post("/api/projects", params);
|
|
164
|
+
const data = await client.post("/api/admin/projects", params);
|
|
165
165
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
166
166
|
});
|
|
167
167
|
server.tool("update_project", "Update an existing project", {
|
|
@@ -177,7 +177,7 @@ server.tool("update_project", "Update an existing project", {
|
|
|
177
177
|
const client = getApi();
|
|
178
178
|
if (!client)
|
|
179
179
|
return authRequiredResponse();
|
|
180
|
-
const data = await client.patch(`/api/projects/${projectId}`, updates);
|
|
180
|
+
const data = await client.patch(`/api/admin/projects/${projectId}`, updates);
|
|
181
181
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
182
182
|
});
|
|
183
183
|
// ── Tasks ──────────────────────────────────────────────────────────────────
|
|
@@ -404,6 +404,18 @@ server.tool("update_deliverable", "Update a deliverable", {
|
|
|
404
404
|
const data = await client.patch(`/api/projects/${projectId}/deliverables/${deliverableId}`, updates);
|
|
405
405
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
406
406
|
});
|
|
407
|
+
// ── Project Members ───────────────────────────────────────────────────────
|
|
408
|
+
server.tool("add_project_member", "Add a user as a team member on a project", {
|
|
409
|
+
projectId: z.string().describe("Project UUID"),
|
|
410
|
+
userId: z.string().describe("User UUID to add"),
|
|
411
|
+
role: z.enum(["member", "lead"]).optional().describe("Member role (default: member)"),
|
|
412
|
+
}, async ({ projectId, userId, role }) => {
|
|
413
|
+
const client = getApi();
|
|
414
|
+
if (!client)
|
|
415
|
+
return authRequiredResponse();
|
|
416
|
+
const data = await client.post(`/api/projects/${projectId}/members`, { userId, role: role || "member" });
|
|
417
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
418
|
+
});
|
|
407
419
|
// ── Applications (Pipeline) ───────────────────────────────────────────────
|
|
408
420
|
server.tool("list_applications", "List all applications in the pipeline", {}, async () => {
|
|
409
421
|
const client = getApi();
|