Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP server for LiveAuth: PoW + Lightning auth, L402 bundles, and paid MCP tool receipts.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
LIVEAUTH_API_KEY, LIVEAUTH_API_BASE, LIVEAUTH_DEMOYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"liveauth": {
"command": "npx",
"args": [
"-y",
"@liveauth-labs/mcp-server"
],
"env": {
"LIVEAUTH_API_KEY": "your-value",
"LIVEAUTH_API_BASE": "your-value",
"LIVEAUTH_DEMO": "your-value"
}
}
}
}Run this in your terminal
claude mcp add liveauth --env LIVEAUTH_API_KEY=your-value --env LIVEAUTH_API_BASE=your-value --env LIVEAUTH_DEMO=your-value -- npx -y @liveauth-labs/mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"liveauth": {
"command": "npx",
"args": [
"-y",
"@liveauth-labs/mcp-server"
],
"env": {
"LIVEAUTH_API_KEY": "your-value",
"LIVEAUTH_API_BASE": "your-value",
"LIVEAUTH_DEMO": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"liveauth": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@liveauth-labs/mcp-server"
],
"env": {
"LIVEAUTH_API_KEY": "your-value",
"LIVEAUTH_API_BASE": "your-value",
"LIVEAUTH_DEMO": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
LIVEAUTH_API_KEY envLIVEAUTH_API_BASE envLIVEAUTH_DEMO envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account dulzuradev, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.0.8) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Tools MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Web production tools for AI agents: contrast, JP text, WebP, JSON-LD, slugs, dates and 40+ more
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Caller-funded MCP (1.3.0): use the existing createMcpGate({ publicKey, toolName, fundingMode: 'caller' }). LiveAuthCore verifies caller payment and owns accounting; this package owns payment challenges, retry binding and duplicate execution prevention. Caller funding, API examples and migration. PoW authenticates; it does not fund paid tools.
Authentication, pay-per-call metering, and signed receipts for AI agents and MCP tools: Bitcoin-native, Lightning-backed, and L402 compatible.
This MCP server lets any AI agent authenticate against your API using proof-of-work (free, no account) or Lightning Network micropayments (sats), then meter and monetize subsequent tool calls with per-call pricing, idempotent revenue events, and HMAC-signed receipts that auditors can verify offline.
Use it when you want to:
mcp-call-receipt-v1) for every paid tool invocation.Try it in 5 seconds — no account, no API key:
npx @liveauth-labs/mcp-server
Without configuration, the server uses LiveAuth's anonymous demo project and the real PoW flow. Add LIVEAUTH_API_KEY only when you need a specific project's policy, pricing, or attribution.
| Tool | Purpose |
|---|---|
liveauth_mcp_start | Begin a session. Returns a PoW challenge, a Lightning invoice, or an L402 bundle hint. |
liveauth_mcp_confirm | Submit a solved PoW challenge, a paid Lightning invoice, or an L402 macaroon → receive a JWT. |
liveauth_mcp_charge | Meter usage after a call. With toolName, resolves registered tool pricing and records a paid revenue event. |
liveauth_mcp_refresh | Exchange a refresh token for a new JWT — no re-auth required. |
liveauth_mcp_status | Poll session/payment status (Lightning confirmation, expiry). |
liveauth_mcp_lnurl | Fetch the BOLT11 invoice for a session (lnget-compatible). |
liveauth_mcp_payment_confirm | Confirm a caller payment with the current session; then retry the original operation. |
liveauth_mcp_usage | Query remaining budget, calls used, and rate-limit windows. |
Full parameter and response schemas are in the Tool Reference below.
npx @liveauth-labs/mcp-server
In an MCP client, call liveauth_mcp_start, then call liveauth_mcp_confirm with only the returned quoteId. The package reuses its existing PoW solver locally and the LiveAuth API verifies the signed challenge before issuing a short-lived session JWT.
claude_desktop_config.json:{
"mcpServers": { "liveauth": { "command": "npx", "args": ["-y", "@liveauth-labs/mcp-server"], "env": { "LIVEAUTH_API_BASE": "https://api.liveauth.app", "LIVEAUTH_API_KEY": "la_pk_your_public_key" } } } }
export LIVEAUTH_API_KEY=la_pk_xxx
npx @liveauth-labs/mcp-server
The package is also a TypeScript SDK — see SDK Usage below. The CLI bin is liveauth-mcp.
For API providers / tool developers:
createMcpGate) and you get per-tool revenue, per-tool min/max pricing, and idempotent retries.For AI agents / agent builders:
The math that matters: if your tool is being scraped by a bot, charging 1 sat per call is enough to make the scraper unprofitable. We call this *cost-of-attack economics*, and it's the whole reason we exist.
npm install -g @liveauth-labs/mcp-server
Or use directly with npx:
npx @liveauth-labs/mcp-server
Configure the command as npx and arguments as ["-y", "@liveauth-labs/mcp-server"]. No environment variables are required for initialize, notifications/initialized, or tools/list. Keep stdin open throughout the session. Startup diagnostics go to stderr; stdout is reserved for MCP messages when running without CLI arguments. Do not pass --help or setup goose to a verifier: those commands intentionally exit.
LIVEAUTH_API_KEY optionally selects a project's public key, and LIVEAUTH_API_BASE defaults to https://api.liveauth.app. Leave LIVEAUTH_DEMO unset for verification; the legacy simulated mode is not needed. Authentication and payment requirements remain enforced when tools are called. A safe offline discovery test can set LIVEAUTH_API_BASE=http://127.0.0.1:1, leave the key unset, and only initialize and list tools; those operations do not contact the API.
Run npm run test:package to build and pack the project, install the tarball into a temporary directory, and test the direct entry point and npm bin with an MCP client. The test includes paths with spaces and reserved characters and verifies that an unauthenticated charge is rejected.
Version 1.3.1 fixes the 1.3.0 entry-point detection bug that could exit with code 0 when invoked through an npm bin symlink or from a path containing spaces or URL-reserved characters. For a reproducible verification, use npx -y @liveauth-labs/mcp-server@1.3.1. A successful local handshake does not establish that MCPVault's own retest passes; the separately reported exit 134 has not been reproduced.
For an unexplained exit (especially code 134), retain complete stderr from process launch, the exit code and signal, resolved package version, Node/npm versions, OS/architecture, exact argv, working directory, and stdin/handshake timing. A deprecation warning alone does not establish the cause of an abort.
LiveAuth for Goose uses the same standards-based stdio MCP server as every other client—there is no Goose wrapper, daemon, or duplicate authentication runtime.
Install in Goose
Or print the official deep link and current fallbacks:
npx @liveauth-labs/mcp-server setup goose
For a one-off Goose CLI session:
goose session --with-extension "liveauth:npx -y @liveauth-labs/mcp-server"
Manual Goose stdio configuration, when the deep link is unavailable:
extensions:
liveauth: type: stdio name: LiveAuth enabled: true cmd: npx args: ["-y", "@liveauth-labs/mcp-server"] env_keys: [] envs: {} timeout: 300
Do not edit an existing Goose config destructively. Prefer the deep link or goose configure; if you add project configuration later, enter it through Goose's extension secret settings rather than shared plaintext YAML.
Ask Goose:
Use LiveAuth to start the default authentication flow. Confirm the returned quote, then show my LiveAuth usage.
The initial flow uses the anonymous demo project's PoW challenge and does not require a wallet. A project public key is optional:
| Variable | When to set it |
|---|---|
LIVEAUTH_API_KEY | Project-specific policy, pricing, and attribution. |
LIVEAUTH_API_BASE | A self-hosted LiveAuth API instead of https://api.liveauth.app. |
LIVEAUTH_DEMO=true | Explicitly opt into the older locally simulated Lightning demo. |
When a paid flow is requested, tool results retain the existing invoice fields and also include portable structured data:
{
"lightning": { "invoice": "lnbc...", "lightningUri": "lightning:lnbc...", "amountSats": 21, "expiresAt": "2030-03-17T17:46:40.000Z", "status": "pending" } }
Clients with MCP Apps support can render the included QR, Open Wallet action, expiration, and live paid/pending/expired state. Other clients receive the JSON and QR image content as ordinary MCP results.
npx @liveauth-labs/mcp-server setup goose and use its one-session or manual fallback.npx is unavailable, install a current Node.js release (Node 18 or newer).liveauth_mcp_start again to obtain a fresh quote.LiveAuth lets agents acquire authorization at runtime instead of requiring every tool to be provisioned with permanent credentials in advance.
The package can also be imported as a TypeScript/JavaScript SDK. Importing the package does not start the stdio MCP server; the CLI lives at the liveauth-mcp bin.
import { createMcpClient } from '@liveauth-labs/mcp-server';
const liveauth = createMcpClient({ publicKey: 'la_pk_xxx', baseUrl: 'https://api.liveauth.app', onInvoice(invoice) { // Render invoice.bolt11 as a QR code for a paid Lightning test. console.log(invoice.bolt11); }, });
const session = await liveauth.start(); const token = await liveauth.confirm(session);
console.log(token.jwt);
The client stores confirmed JWTs, refreshes them before expiry when a refresh token is returned, and exposes the current token through liveauth.token. Call liveauth.destroy() when your app is shutting down to clear token state and refresh timers.
For PoW, config.publicKey is the credential sent in X-LW-Public. It may be either the project's primary public key or an active API public key belonging to that project. The API returns the canonical project key in session.powChallenge.projectPublicKey; the solver hashes that returned key, and confirmation still sends the configured credential. These two key strings can legitimately differ, so comparing them for equality is not a project-isolation check.
Use sessions from your trusted LiveAuth API endpoint. The server binds the quote and signed challenge to the resolved project and issues a JWT with projectId and authType. For diagnostics, compare the JWT's projectId with the expected project ID from your console, without logging the token. Decoding claims alone does not verify a JWT signature.
To require a real paid invoice:
const session = await liveauth.start({ forceLightning: true });
console.log(session.invoice?.
Only the beginning is shown; read the rest in the repo