Ashlr Stack

io.github.ashlrai由 GitHub 账号 ashlrai 发布v0.3.1更新于 Nov 1, 2026

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

概览

AI 生成的概览

本地 MCP 服务器,让编码助手通过 Stack CLI 在项目中开通并检查 Supabase、Vercel 等第三方开发服务。

可以做什么
  • 初始化与开通服务:生成项目配置、扫描仓库识别所用服务商、添加或移除服务、从 env 文件导入变量
  • 检查技术栈:列出已配置服务、查看资源与认证信息、整体状态、依赖图、服务商目录与模板
  • 核对密钥:显示哪些声明的密钥名已存在于本机 Phantom 保险库、哪些缺失
  • 规划与执行:按查询排序推荐服务商、保存 Recipe 后应用,并报告密钥名是否存在
  • 维护:列出本地注册表中的项目、运行健康检查并可尝试修复、转发同步请求、检查新版本
适用场景
适合在需要接入托管服务的项目里使用,让助手不离开对话就能添加、查看或修复这些配置。最适合已在本机使用 Stack CLI 和 Phantom Secrets 的团队。
运行要求
以本地 stdio 进程运行,可通过 npx 或全局 npm 安装;需要 Node.js 20 或更高版本。必须已安装或可解析 Stack CLI(STACK_BIN、@ashlr/stack 依赖或 PATH 中的 stack),否则工具调用会失败。服务商操作可能需另行配置 Phantom 与服务商凭据。需在项目目录启动服务器或传入绝对路径 cwd。
安装前请注意
工具会写入 .stack.toml 等项目文件、执行服务商设置,并可移除服务配置与 MCP 条目;上游资源会保留。Stack 不保存密钥值,但助手可见密钥槽名称,操作经由 Phantom Secrets。无交互运行时可能把密钥留在保险库中,且名称存在并不代表凭据有效。README 的安装一行命令会把远程脚本直接交给 shell 执行。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Ashlr Stack,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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.

来源:packages/mcp/README.md,提交 b105bf3

工具

19

stack_init

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

输入参数cwdforcetemplate

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

输入参数cwdfromdryRun

stack_scan

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

输入参数cwdpathconfidence

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.

输入参数cwduseservice必填

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.

输入参数cwdservice必填keepRemote

stack_list

List services configured in this stack.

输入参数cwdjson

stack_info

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

输入参数cwdjsonservice必填

stack_status

Show Phantom + services + config at a glance.

输入参数cwdjson

stack_env_show

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

输入参数cwdjson

stack_env_diff

Report which declared secrets are missing from the Phantom vault.

输入参数cwdjson

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.

输入参数allcwdfixjson

stack_sync

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

输入参数cwdplatform必填

stack_providers

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

输入参数jsoncategory

stack_projects_list

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

输入参数json

stack_deps

Show the service dependency graph for the current stack.

输入参数cwdjson

stack_templates_list

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

输入参数json

stack_upgrade

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

无需输入参数。

stack_recommend

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

输入参数kcwdsavequery必填category

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.

输入参数cwdno_wirerecipe_id必填

版本历史

1
  1. v0.3.1最新Nov 1, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分