Ashlr Stack

io.github.ashlraiPublished by GitHub account ashlraiv0.3.1Updated Nov 1, 2026

Provision and connect third-party dev services (Supabase, Vercel, and more) from your coding agent.

Overview

AI-generated overview

Local MCP server that lets a coding agent provision and inspect third-party dev services (Supabase, Vercel and others) in a project through the Stack CLI.

What you can do
  • Scaffold and provision services: initialize a project config, scan the repo for providers, add or remove services, import variables from an env file
  • Inspect the stack: list configured services, show resource and auth details, status, dependency graph, provider catalog and starter templates
  • Check secrets: show which declared secret names are present in the local Phantom vault and which are missing
  • Plan and apply: rank curated providers for a query, save a recipe, then apply it and report which secret names are present or missing
  • Maintain: list projects in the local registry, run health checks with optional fixes, forward a sync request, check for newer releases
When to use it
Useful when an agent works inside a project that wires up hosted services and you want it to add, inspect or repair that configuration without leaving the chat. Best for teams already using the Stack CLI and Phantom Secrets on their machine.
Requirements
Runs as a local stdio process via npx or a global npm install; Node.js 20 or later. The Stack CLI must be installed or resolvable (STACK_BIN, the @ashlr/stack dependency, or stack on PATH), otherwise tool calls fail. Provider operations may need Phantom and provider credentials configured separately. Start the server in the project directory or pass an absolute cwd.
Before you install
Tools write project files such as .stack.toml, run provider setup, and can remove service configuration and MCP entries; upstream resources are kept. Secret values are not stored by Stack, but the agent sees secret slot names and operations route through Phantom Secrets. Headless runs may leave secrets stored in the vault, and name presence is not proof of valid credentials. The README's install one-liner pipes a remote script into a shell.

Installation

In SourceWeft

  1. Open Ashlr Stack in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

ashlr-stack-mcp

MCP server for Ashlr Stack. Exposes 19 tools and up to 3 resources for inspecting and configuring supported services from MCP clients.

What it does

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.

Install

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):

bash
# macOS / Linuxcurl -fsSL stack.ashlr.ai/install.sh | bash
# Windows (PowerShell)irm https://stack.ashlr.ai/install.ps1 | iex

Or manually from the registry:

bash
bun add -g ashlr-stack-mcp @ashlr/stack# ornpm i -g ashlr-stack-mcp @ashlr/stack

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.

Run from a local clone

Install Bun and Node.js 20 or later, then install the workspace dependencies and build the CLI from the repository root:

bash
bun install --frozen-lockfile(cd packages/cli && bun run build)

The source server runs with Bun; the CLI build provides the workspace dependency's dist/index.js. Start the server from the project you want it to inspect, replacing the paths with absolute paths on your machine:

bash
cd /absolute/path/to/my-projectbun run /absolute/path/to/ashlr-stack/packages/mcp/src/server.ts

The server speaks MCP over stdin and stdout, so connect it to an MCP client rather than expecting an interactive prompt. Keep stdout reserved for the protocol. Provider operations may need Phantom and provider credentials configured separately.

Wire it into your agent

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):

json
{  "mcpServers": {    "ashlr-stack": {      "command": "ashlr-stack-mcp"    }  }}

For a local clone, after the installation and CLI build above, point the client at the source entry directly (with bun available on its PATH):

json
{  "mcpServers": {    "ashlr-stack": {      "command": "bun",      "args": ["run", "/absolute/path/to/ashlr-stack/packages/mcp/src/server.ts"]    }  }}

The client chooses the server's working directory; the absolute entry path does not set it. Configure the client to start the server in your project if supported, or pass cwd to project-scoped tool calls as described below.

Targeting a project (cwd)

Every tool runs stack in the server's working directory by default. When your client starts the server outside the project (Claude Desktop, a global Cursor or Windsurf config), pass the project's absolute path to a project-scoped tool:

json
{ "name": "stack_list", "arguments": { "json": true, "cwd": "/home/me/code/my-app" } }

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.

Tools (19)

Provisioning: stack_init, stack_add, stack_remove, stack_import, stack_scan.

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.

Env: stack_env_show, stack_env_diff, stack_sync.

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.

Planning: stack_recommend, stack_apply.

Project registry: stack_projects_list (json: true returns stack projects list --json), stack_upgrade.

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.

Resources (up to 3)

Each is listed only when the file exists in the server's working directory (resources do not take cwd).

  • stack://current/.stack.toml
  • stack://current/.stack.local.toml
  • stack://current/.mcp.json

The agent can read these directly — no tool call needed — so it always knows the project state before acting.

Full tool + resource reference: stack.ashlr.ai/docs/mcp.

How secrets are handled

Stack never stores secret values. Every tool call routes through Phantom Secrets on your machine. The agent only sees slot names (like SUPABASE_URL, SUPABASE_ANON_KEY) — never the values.

Links

License

MIT. See LICENSE.

Source: packages/mcp/README.md at commit b105bf3

Tools

19

stack_init

Scaffold .stack.toml in the current directory; a selected template may also run provider setup.

Parameterscwdforcetemplate

stack_import

Import nonempty new variables from an .env file into Phantom and record detected services; existing vault names are left unchanged. Returns ashlr.stack.import/v1 JSON naming what was stored, skipped and wired (names only, never values).

ParameterscwdfromdryRun

stack_scan

Detect providers this repo uses by reading package.json / requirements.txt / config files.

Parameterscwdpathconfidence

stack_add

Run provider-specific service setup or attach an existing resource, then record returned secret slots and optional MCP configuration. Credentials and client/provider acceptance must be checked separately.

Parameterscwduseservicerequired

stack_remove

Remove local service configuration and its MCP entry, and attempt Phantom secret cleanup. Returns JSON (ashlr.stack.remove/v1); `secrets_kept` lists names Phantom left stored, which headless runs always do, for the user to remove with `phantom remove` in a terminal. Upstream resources are kept.

ParameterscwdservicerequiredkeepRemote

stack_list

List services configured in this stack.

Parameterscwdjson

stack_info

Inspect configured resource, auth kind, secret-name inventory and MCP metadata; attempt a healthcheck when the provider supports one.

Parameterscwdjsonservicerequired

stack_status

Show Phantom + services + config at a glance.

Parameterscwdjson

stack_env_show

Show which declared secrets are present in the Phantom vault (masked).

Parameterscwdjson

stack_env_diff

Report which declared secrets are missing from the Phantom vault.

Parameterscwdjson

stack_doctor

Inspect the configured-service health report. --fix attempts supported remediation; stored vault names can cause repairs to be skipped, and name presence is not credential validity.

Parametersallcwdfixjson

stack_sync

Forward a deployment-platform sync request to phantom sync; inspect the installed Phantom command support and result separately.

Parameterscwdplatformrequired

stack_providers

List the curated source provider catalog by category; inclusion does not attest complete provisioning or active credentials.

Parametersjsoncategory

stack_projects_list

List projects recorded in the local Stack registry; this is not a filesystem-wide discovery scan.

Parametersjson

stack_deps

Show the service dependency graph for the current stack.

Parameterscwdjson

stack_templates_list

List available starter stack templates and the services each one adds.

Parametersjson

stack_upgrade

Check npm for a newer @ashlr/stack release. Returns ashlr.stack.upgrade/v1 JSON (current, latest, status, install command); installs nothing.

Takes no parameters.

stack_recommend

Rank curated providers by query, returning JSON as text without LLM inference. save:true writes a Recipe for stack_apply.

Parameterskcwdsavequeryrequiredcategory

stack_apply

Apply a saved Recipe through provider setup, then report which declared secrets are in the Phantom vault and which are missing (names only; it never writes to the vault) and write webhook stubs. Inspect failures and skips. no_wire:true skips the vault check and stubs, not provider credential writes.

Parameterscwdno_wirerecipe_idrequired

Version history

1
  1. v0.3.1LatestNov 1, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts