ashlr-stack-mcp 0.3.0 → 0.3.6

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
@@ -1,10 +1,10 @@
1
1
  # ashlr-stack-mcp
2
2
 
3
- > MCP server for [Ashlr Stack](https://stack.ashlr.ai). Exposes 19 tools and up to 3 resources so Claude Code / Cursor / Windsurf / Codex can provision every third-party service in a project with one call.
3
+ > MCP server for [Ashlr Stack](https://stack.ashlr.ai). Exposes 19 tools and up to 3 resources for inspecting and configuring supported services from MCP clients.
4
4
 
5
5
  ## What it does
6
6
 
7
- `stack` is a CLI. `ashlr-stack-mcp` is the same capabilities as MCP tools so your coding agent can drive Stack directly. Ask Claude "add Supabase to this project" and it calls `stack_add`, which walks OAuth, provisions the project, writes secrets through Phantom, and updates `.mcp.json` — all without leaving the chat.
7
+ `stack` is a CLI. `ashlr-stack-mcp` is the same capabilities as MCP tools so your coding agent can drive Stack directly. An agent can request `stack_add` for a supported provider; authentication, resource setup and configuration changes depend on the adapter and authorization. Inspect the result and any changes.
8
8
 
9
9
  ## Install
10
10
 
@@ -26,7 +26,7 @@ bun add -g ashlr-stack-mcp @ashlr/stack
26
26
  npm i -g ashlr-stack-mcp @ashlr/stack
27
27
  ```
28
28
 
29
- Every tool runs the `stack` CLI. The server resolves it in this order: the executable specified by `STACK_BIN`, the installed `@ashlr/stack` dependency's bin, then `stack` on PATH. If none is available, the server can still start and list tools, but calls fail with a CLI error. The npm 0.1.1 release runs on Bun, so Bun must be installed for that release.
29
+ Every tool runs the `stack` CLI. The server resolves it in this order: the executable specified by `STACK_BIN`, the installed `@ashlr/stack` dependency's bin, then `stack` on PATH. If none is available, the server can still start and list tools, but calls fail with a CLI error. The npm CLI and MCP packages in this release declare Node.js >= 20 and use Node entrypoints. Check your installed package manifests; source development uses Bun.
30
30
 
31
31
  ## Run from a local clone
32
32
 
package/dist/server.js CHANGED
@@ -14214,7 +14214,7 @@ function validateToolInput(tool, input) {
14214
14214
  const known = Object.keys(tool.inputSchema.properties);
14215
14215
  return `${tool.name}: unknown argument "${key}". ${known.length ? `Accepted: ${known.join(", ")}.` : "This tool takes no arguments."}`;
14216
14216
  }
14217
- if (value === undefined || value === null)
14217
+ if (value === undefined)
14218
14218
  continue;
14219
14219
  const actual = typeof value;
14220
14220
  if (spec.type === "number" ? !Number.isFinite(value) : actual !== spec.type) {
@@ -14879,4 +14879,17 @@ server.setRequestHandler(ReadResourceRequestSchema2, async (request) => {
14879
14879
  };
14880
14880
  });
14881
14881
  var transport = new StdioServerTransport;
14882
+ var shuttingDown = false;
14883
+ async function shutdown() {
14884
+ if (shuttingDown)
14885
+ return;
14886
+ shuttingDown = true;
14887
+ try {
14888
+ await server.close();
14889
+ } finally {
14890
+ process.exit(0);
14891
+ }
14892
+ }
14893
+ process.stdin.once("end", shutdown);
14894
+ process.stdin.once("close", shutdown);
14882
14895
  await server.connect(transport);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ashlr-stack-mcp",
3
- "version": "0.3.0",
3
+ "version": "0.3.6",
4
4
  "mcpName": "io.github.ashlrai/ashlr-stack",
5
5
  "description": "MCP server for Ashlr Stack. Exposes 19 tools and 3 resources so Claude Code / Cursor / Windsurf / Codex can provision every third-party service in a project with one call.",
6
6
  "license": "MIT",
@@ -44,14 +44,15 @@
44
44
  "node": ">=20"
45
45
  },
46
46
  "scripts": {
47
- "build": "bun build src/server.ts --outdir dist --target node --format esm && node -e \"const fs=require('fs');const f='dist/server.js';let c=fs.readFileSync(f,'utf8');if(c.startsWith('#!'))c=c.slice(c.indexOf('\\n')+1);fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);fs.chmodSync(f,0o755)\"",
47
+ "build": "NODE_ENV=production bun build src/server.ts --outdir dist --target node --format esm && node -e \"const fs=require('fs');const f='dist/server.js';let c=fs.readFileSync(f,'utf8');if(c.startsWith('#!'))c=c.slice(c.indexOf('\\n')+1);fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);fs.chmodSync(f,0o755)\"",
48
48
  "prepack": "bun run build",
49
+ "local-lane": "bun run src/local-lane.ts",
49
50
  "start": "bun run src/server.ts",
50
51
  "test": "bun test __tests__/",
51
52
  "typecheck": "bunx tsc --noEmit"
52
53
  },
53
54
  "dependencies": {
54
- "@ashlr/stack": "^0.3.0",
55
+ "@ashlr/stack": "^0.3.6",
55
56
  "@modelcontextprotocol/sdk": "^1.0.0"
56
57
  },
57
58
  "devDependencies": {