ashlr-stack-mcp 0.1.1 → 0.2.2
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/LICENSE +1 -1
- package/README.md +32 -11
- package/dist/server.js +14792 -0
- package/package.json +9 -5
- package/src/server.ts +0 -405
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ashlr-stack-mcp
|
|
2
2
|
|
|
3
|
-
> MCP server for [Ashlr Stack](https://stack.ashlr.ai). Exposes
|
|
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.
|
|
4
4
|
|
|
5
5
|
## What it does
|
|
6
6
|
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
11
|
-
One-liner
|
|
11
|
+
One-liner. It installs `stack`, plus `ashlr-stack-mcp` when it installs from npm or from source; when it installs the prebuilt `stack` binary from GitHub Releases, it prints how to add the MCP server (`npm i -g ashlr-stack-mcp`, or `npx -y ashlr-stack-mcp`):
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
# macOS / Linux
|
|
15
15
|
curl -fsSL stack.ashlr.ai/install.sh | bash
|
|
16
16
|
|
|
17
17
|
# Windows (PowerShell)
|
|
18
|
-
irm stack.ashlr.ai/install.ps1 | iex
|
|
18
|
+
irm https://stack.ashlr.ai/install.ps1 | iex
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Or manually from the registry:
|
|
@@ -26,9 +26,11 @@ 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, so install `@ashlr/stack` alongside this package (or set `STACK_BIN` to the CLI). Without it the server starts and lists its tools, but each call returns "Could not run the 'stack' CLI" with the fix. The npm 0.1.1 release runs on Bun, so Bun must be installed. In source 0.2.1 this package depends on `@ashlr/stack` and runs that dependency's `stack` bin; the order is `STACK_BIN`, then that bin, then `stack` on PATH.
|
|
30
|
+
|
|
29
31
|
## Wire it into your agent
|
|
30
32
|
|
|
31
|
-
Drop this into your project's `.mcp.json` (Claude Code, Cursor
|
|
33
|
+
Drop this into your project's `.mcp.json` (Claude Code, Cursor and Windsurf read this shape; Codex uses `codex mcp add ashlr-stack -- ashlr-stack-mcp`, which writes `~/.codex/config.toml`):
|
|
32
34
|
|
|
33
35
|
```json
|
|
34
36
|
{
|
|
@@ -47,23 +49,42 @@ If you installed from source (no global bin), point at the entry directly:
|
|
|
47
49
|
"mcpServers": {
|
|
48
50
|
"ashlr-stack": {
|
|
49
51
|
"command": "bun",
|
|
50
|
-
"args": ["run", "/absolute/path/to/ashlr-stack/packages/mcp/src/server.ts"]
|
|
52
|
+
"args": ["run", "/absolute/path/to/ashlr-stack/packages/mcp/src/server.ts"],
|
|
53
|
+
"env": { "STACK_BIN": "/absolute/path/to/ashlr-stack/packages/cli/src/index.ts" }
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
```
|
|
55
58
|
|
|
56
|
-
##
|
|
59
|
+
## Targeting a project (`cwd`)
|
|
60
|
+
|
|
61
|
+
Every tool runs `stack` in the server's working directory unless you pass `cwd`. When your client starts the server outside the project (Claude Desktop, a global Cursor or Windsurf config), pass the project's absolute path:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{ "name": "stack_list", "arguments": { "json": true, "cwd": "/home/me/code/my-app" } }
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`cwd` is accepted by the project-scoped tools, the ones that read or write `.stack.toml` or other project files: `stack_init`, `stack_import`, `stack_scan`, `stack_add`, `stack_remove`, `stack_list`, `stack_info`, `stack_status`, `stack_env_show`, `stack_env_diff`, `stack_doctor`, `stack_sync`, `stack_deps`, `stack_recommend` and `stack_apply`. It must be an absolute path to an existing directory; it is resolved with realpath, and a relative path, a missing path or a file returns an `isError` result without running anything. It grants nothing beyond what the server's own working directory already does. The global tools (`stack_providers`, `stack_projects_list`, `stack_templates_list`, `stack_upgrade`) refuse `cwd` instead of ignoring it. There is no environment-variable default; start the server in the project or pass `cwd`.
|
|
68
|
+
|
|
69
|
+
## Tools (19)
|
|
57
70
|
|
|
58
71
|
Provisioning: `stack_init`, `stack_add`, `stack_remove`, `stack_import`, `stack_scan`.
|
|
59
72
|
|
|
60
|
-
Inspection: `stack_list`, `stack_info`, `stack_providers`, `stack_deps`, `stack_doctor`.
|
|
73
|
+
Inspection: `stack_list`, `stack_info`, `stack_status`, `stack_providers`, `stack_templates_list`, `stack_deps`, `stack_doctor`. `stack_list`, `stack_providers`, `stack_deps`, `stack_templates_list` and `stack_projects_list` take `json: true` to return the CLI's `--json` object instead of human text.
|
|
74
|
+
|
|
75
|
+
Env: `stack_env_show`, `stack_env_diff`, `stack_sync`.
|
|
76
|
+
|
|
77
|
+
`stack_info` and `stack_env_show` take `json: true` to return `stack info --json` (`ashlr.stack.info/v1`) and `stack env show --json` (`ashlr.stack.env/v1`) instead of human text.
|
|
78
|
+
|
|
79
|
+
Planning: `stack_recommend`, `stack_apply`.
|
|
80
|
+
|
|
81
|
+
Project registry: `stack_projects_list` (`json: true` returns `stack projects list --json`), `stack_upgrade`.
|
|
61
82
|
|
|
62
|
-
|
|
83
|
+
Every tool rejects an argument name its input schema does not declare, and lists the accepted ones, rather than running without it. A blank string (`" "`) counts as missing for a required argument and is rejected for an optional one.
|
|
63
84
|
|
|
64
|
-
|
|
85
|
+
## Resources (up to 3)
|
|
65
86
|
|
|
66
|
-
|
|
87
|
+
Each is listed only when the file exists in the server's working directory (resources do not take `cwd`).
|
|
67
88
|
|
|
68
89
|
- `stack://current/.stack.toml`
|
|
69
90
|
- `stack://current/.stack.local.toml`
|
|
@@ -75,7 +96,7 @@ Full tool + resource reference: **[stack.ashlr.ai/docs/mcp](https://stack.ashlr.
|
|
|
75
96
|
|
|
76
97
|
## How secrets are handled
|
|
77
98
|
|
|
78
|
-
Stack never stores secret values. Every tool call routes through [Phantom Secrets](https://
|
|
99
|
+
Stack never stores secret values. Every tool call routes through [Phantom Secrets](https://phm.dev/secrets) on your machine. The agent only sees slot *names* (like `SUPABASE_URL`, `SUPABASE_ANON_KEY`) — never the values.
|
|
79
100
|
|
|
80
101
|
## Links
|
|
81
102
|
|