@subseam/mcp 0.4.13 → 0.4.15
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 -19
- package/dist/main.js +8 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ and the rest. It runs on your machine and talks to the subseam service over HTTP
|
|
|
13
13
|
|
|
14
14
|
- Node.js 22 or later, and npm.
|
|
15
15
|
- A GitHub account, and a subseam organization that someone has added you to.
|
|
16
|
-
- The subseam
|
|
16
|
+
- The subseam URL: `https://subseam.theconstructory.com`.
|
|
17
17
|
|
|
18
18
|
## 1. Sign in
|
|
19
19
|
|
|
@@ -23,27 +23,17 @@ owner your GitHub login so they can add you.
|
|
|
23
23
|
|
|
24
24
|
## 2. Get a token
|
|
25
25
|
|
|
26
|
-
The MCP server authenticates with a token tied to your account.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
1. In the browser where you signed in, open the developer tools, then Application (Storage in
|
|
30
|
-
Firefox) → Cookies → `https://subseam.theconstructory.com`, and copy the value of
|
|
31
|
-
`__Host-subseam_session`.
|
|
32
|
-
2. Run, pasting that value:
|
|
26
|
+
The MCP server authenticates with a token tied to your account. Open
|
|
27
|
+
<https://subseam.theconstructory.com/settings>, signed in as in step 1, name the token after the
|
|
28
|
+
machine it is for, and create it. The page shows the token once: copy it, then run
|
|
33
29
|
|
|
34
30
|
```
|
|
35
|
-
|
|
36
|
-
mkdir -p ~/.subseam && curl -s -X POST https://subseam.theconstructory.com/tokens \
|
|
37
|
-
-H "cookie: __Host-subseam_session=$S; subseam_csrf=$C" -H "x-csrf-token: $C" \
|
|
38
|
-
-H 'content-type: application/json' -d '{"label":"my-machine"}' \
|
|
39
|
-
| node -e 'let b="";process.stdin.on("data",d=>b+=d).on("end",()=>{let t;try{t=JSON.parse(b).token}catch{}if(typeof t==="string")process.stdout.write(t);else{console.error("subseam refused the token request: "+b);process.exit(1)}})' > ~/.subseam/token
|
|
40
|
-
chmod 600 ~/.subseam/token
|
|
31
|
+
mkdir -p ~/.subseam && umask 077 && printf '%s' '<the token>' > ~/.subseam/token
|
|
41
32
|
```
|
|
42
33
|
|
|
43
|
-
`~/.subseam/token` now holds one line starting `cpt_`.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
`SUBSEAM_TOKEN` environment variable instead of the file.
|
|
34
|
+
`~/.subseam/token` now holds one line starting `cpt_`. The server also accepts the token in the
|
|
35
|
+
`SUBSEAM_TOKEN` environment variable instead of the file. The same page lists your tokens and
|
|
36
|
+
revokes one you no longer use.
|
|
47
37
|
|
|
48
38
|
## 3. Install
|
|
49
39
|
|
|
@@ -57,7 +47,7 @@ npm install @subseam/mcp
|
|
|
57
47
|
For Claude Code:
|
|
58
48
|
|
|
59
49
|
```
|
|
60
|
-
claude mcp add-json --scope user subseam '{"command":"node","args":["'"$HOME"'/.subseam/mcp/node_modules/@subseam/mcp/dist/main.js"],"env":{"SUBSEAM_URL":"https://subseam.theconstructory.com
|
|
50
|
+
claude mcp add-json --scope user subseam '{"command":"node","args":["'"$HOME"'/.subseam/mcp/node_modules/@subseam/mcp/dist/main.js"],"env":{"SUBSEAM_URL":"https://subseam.theconstructory.com"}}'
|
|
61
51
|
```
|
|
62
52
|
|
|
63
53
|
`claude mcp list` should show `subseam ... Connected`. Any other MCP host: run
|
package/dist/main.js
CHANGED
|
@@ -24036,7 +24036,7 @@ function requireEnv(env, name, purpose) {
|
|
|
24036
24036
|
function loadConfig2(env = process.env, sources = realTokenSources()) {
|
|
24037
24037
|
return Object.freeze({
|
|
24038
24038
|
get url() {
|
|
24039
|
-
return requireEnv(env, "SUBSEAM_URL", "to reach the hosted service, e.g. https://subseam.theconstructory.com
|
|
24039
|
+
return requireEnv(env, "SUBSEAM_URL", "to reach the hosted service, e.g. https://subseam.theconstructory.com");
|
|
24040
24040
|
},
|
|
24041
24041
|
get tenantId() {
|
|
24042
24042
|
const value = env["SUBSEAM_TENANT"];
|
|
@@ -31053,8 +31053,13 @@ function renderObject(definitionId, r) {
|
|
|
31053
31053
|
} else if (r.bindings.length === 0) {
|
|
31054
31054
|
out2.push("Bindings: NONE \u2014 the current version is unbound, which admit never legitimately produces.");
|
|
31055
31055
|
} else {
|
|
31056
|
+
const counts = /* @__PURE__ */ new Map();
|
|
31057
|
+
for (const b of r.bindings) {
|
|
31058
|
+
const line = `${b.role}: ${b.repo} (${b.anchorGrain} grain), bound at ${b.boundAtCommit}`;
|
|
31059
|
+
counts.set(line, (counts.get(line) ?? 0) + 1);
|
|
31060
|
+
}
|
|
31056
31061
|
out2.push("Bindings (current version):");
|
|
31057
|
-
for (const
|
|
31062
|
+
for (const [line, n] of counts) out2.push(` \u2022 ${line}${n > 1 ? ` (\xD7${n})` : ""}`);
|
|
31058
31063
|
}
|
|
31059
31064
|
out2.push(r.draft === null ? "Draft (current version): none \u2014 the version has no subject binding, or canvas has published no version of its repo." : `Draft (current version):
|
|
31060
31065
|
${renderDraft(r.draft)}`);
|
|
@@ -48336,7 +48341,7 @@ var workReadTools = createWorkReadToolProviders({ capability: "work" });
|
|
|
48336
48341
|
var bundledProviders = [src_default2, src_default, tension_default, ...defineTools, ...decisionTools, ...captureTools, ...buildTools, secureTool, ...workTools, ...workReadTools];
|
|
48337
48342
|
|
|
48338
48343
|
// package.json
|
|
48339
|
-
var version2 = "0.4.
|
|
48344
|
+
var version2 = "0.4.15";
|
|
48340
48345
|
|
|
48341
48346
|
// src/server.ts
|
|
48342
48347
|
var SERVER_VERSION = version2;
|