npm stacktree-mcpstreamable-httpMITupdated 18d ago
MCP server for stacktr.ee. Publish HTML artifacts from any MCP client (Claude Desktop, Claude Code, Cursor, Continue, etc).
What can you do with Stacktree?
stacktree-mcp
MCP server for stacktr.ee. Publish HTML artifacts from any MCP client (Claude Desktop, Claude Code, Cursor, Continue, etc).
Set up with an agent
If you have a coding agent open, hand it this line and it does the rest — installs, verifies the connection, and learns the tool surface:
Fetch and follow the setup instructions at https://stacktr.ee/prompt.md
Works in any agent that can fetch a URL. The instructions are plain Markdown; read them first if you like.
Install
Add to your MCP client config:
{
"mcpServers": {
"stacktree": {
"command": "npx",
"args": ["-y", "stacktree-mcp"],
"env": { "STACKTREE_API_KEY": "stk_live_..." }
}
}
}
Generate an API key at https://app.stacktr.ee.
Tools
| Tool | What it does |
|---|---|
publish_html |
Publish HTML; returns { url, id, expires_at, ... }. Pass client to file it under a client space. |
update_site |
Replace the HTML of an existing site in place; URL is preserved. |
get_site |
Read a site's current HTML source — edit it, then update_site. |
set_password |
Add or clear a passcode gate. Paid plans only. |
set_expiry |
Set hours-from-now expiry, or null for never. Clamped to the plan ceiling. |
set_email_gate |
Restrict viewers to an email domain (one-time magic-link verify). Paid plans only. |
set_agentation |
Toggle the on-page Agentation feedback toolbar. |
list_sites |
List sites owned by this API key. Paged (has_more + cursor); filter with client. |
delete_site |
Hard delete a site. |
link_wallet |
Link your wallet so pages you publish are owned by your account. |
list_feedback |
Read viewer annotations left via the Agentation toolbar; unresolved first. |
resolve_feedback |
Mark a feedback item addressed, with an optional note. |
set_client |
File a page under a client space by name or slug (auto-created), or null to detach. |
list_client_spaces |
The client spaces on the account: page counts, bound hostname, portal state. |
create_client_space |
Create a space up front. Rarely needed — publishing with client creates one. |
update_client_space |
Rename, archive, or set the space-wide viewer gate every page under it inherits. |
delete_client_space |
Remove a space. Its pages detach and keep their URLs. |
get_design_guide |
The house design guide — read it before generating or restyling a page. |
Linking a wallet
If your agent pays for publishes from its own wallet (x402 / MPP), link that wallet to your Stacktree account so every page it publishes — past and future — is owned there:
- Your human generates a link code at https://app.stacktr.ee/wallets.
link_wallet({ code })→ returns the exact message to sign.- Sign it with your wallet (
personal_sign). link_wallet({ code, wallet, signature })→ links the wallet and adopts the pages it already published.
Reading feedback
Turn on the on-page toolbar with set_agentation and viewers can annotate the page; their comments are stored with the site. list_feedback returns them, unresolved first (comment, annotated element, selected text, intent, severity). Fix the page in place with update_site (same URL), then resolve_feedback to mark each item addressed, with an optional note.
Privacy defaults
Every site gets an unguessable https://stacktr.ee/p/{token}/ URL. Pass public_slug to opt into https://{slug}.stacktr.ee/.
pii_check defaults to block — uploads matching common secrets and PII shapes (emails, SSNs, credit cards, OpenAI/GitHub/Stripe API-key prefixes) are refused. Pass warn to publish anyway (matches are flagged in the response), or off to skip the scan.
What the free plan gives you
A key on the free plan publishes 3 pages in total, and each one expires 7 days after it is published. The count is lifetime, not concurrent: deleting a page or letting it expire does not give the slot back. expires_in_hours: "never" is clamped to the 7-day ceiling rather than refused, so always read expires_at off the response.
Passcodes (set_password), email gates (set_email_gate) and viewer numbers are on paid plans. Hitting a ceiling returns HTTP 402 with a stable plan_* code in error:
| Code | Means |
|---|---|
plan_lifetime_limit_exceeded |
All 3 free pages used. Deleting one does not help. |
plan_site_limit_exceeded |
Active-page cap reached. |
plan_password_not_available |
Passcodes are not on this plan. |
plan_viewer_gate_not_available |
Email gates are not on this plan. |
plan_domain_not_available |
Custom domains are not on this plan. |
GET /me returns the calling key's own limits object. Read caps from there rather than hard-coding them. Current plans and prices: https://stacktr.ee/pricing.md.
Install
Add Stacktree to your client. Pick the one you use.
{
"servers": {
"stacktree-mcp": {
"type": "http",
"url": "https://api.stacktr.ee/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
claude mcp add stacktree-mcp -- npx -y stacktree-mcpcodex mcp add stacktree-mcp -- npx -y stacktree-mcpamp mcp add stacktree-mcp -- npx -y stacktree-mcp{
"mcpServers": {
"stacktree-mcp": {
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"stacktree-mcp": {
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"mcpServers": {
"stacktree-mcp": {
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"stacktree-mcp": {
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"stacktree-mcp": {
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"stacktree-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"stacktree-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"stacktree-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"stacktree-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y stacktree-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
18 tools
Stacktree exposes 18 tools to a connected agent.
- publish_html
- Publish HTML; returns `{ url, id, expires_at, ... }`. Pass `client` to file it under a client space.
- update_site
- Replace the HTML of an existing site in place; URL is preserved.
- get_site
- Read a site's current HTML source — edit it, then `update_site`.
- set_password
- Add or clear a passcode gate. Paid plans only.
- set_expiry
- Set hours-from-now expiry, or `null` for never. Clamped to the plan ceiling.
- set_email_gate
- Restrict viewers to an email domain (one-time magic-link verify). Paid plans only.
- set_agentation
- Toggle the on-page Agentation feedback toolbar.
- list_sites
- List sites owned by this API key. Paged (`has_more` + cursor); filter with `client`.
- delete_site
- Hard delete a site.
- link_wallet
- Link your wallet so pages you publish are owned by your account.
- list_feedback
- Read viewer annotations left via the Agentation toolbar; unresolved first.
- resolve_feedback
- Mark a feedback item addressed, with an optional note.
- set_client
- File a page under a client space by name or slug (auto-created), or `null` to detach.
- list_client_spaces
- The client spaces on the account: page counts, bound hostname, portal state.
- create_client_space
- Create a space up front. Rarely needed — publishing with `client` creates one.
- update_client_space
- Rename, archive, or set the space-wide viewer gate every page under it inherits.
- delete_client_space
- Remove a space. Its pages detach and keep their URLs.
- get_design_guide
- The house design guide — read it before generating or restyling a page.
Score
86 / 100
Excellent
- Documentation25/25
- Maintenance25/25
- Trust13/20
- Capability8/15
- Install experience15/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 10 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 18 tool(s) documented
- Provides prompt templates
- Provides resources
- 18 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.6.0Latest | Aug 20, 2026 |
| 0.5.0 | Aug 17, 2026 |
| 0.2.1 | May 14, 2026 |