Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Deterministic what-if & scenario simulation for AI agents: projections, sensitivity & break-even.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://scenariosim-mcp.pages.dev/mcp打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"scenariosim": {
"command": "npx",
"args": [
"-y",
"scenariosim-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add --transport http scenariosim https://scenariosim-mcp.pages.dev/mcpclaude mcp add scenariosim -- npx -y scenariosim-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"scenariosim": {
"url": "https://scenariosim-mcp.pages.dev/mcp"
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"scenariosim": {
"command": "npx",
"args": [
"-y",
"scenariosim-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"scenariosim": {
"type": "http",
"url": "https://scenariosim-mcp.pages.dev/mcp"
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"scenariosim": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"scenariosim-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://scenariosim-mcp.pages.dev/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日
注册名称已通过 GitHub 账户 inity13 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(1.0.2)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, arr-mcp
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
One server, 40 tools, the whole media stack: *arrs, Jellyfin, Plex, Seerr, Cleanuparr, downloaders
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A transparent, 100% deterministic Model Context Protocol (MCP) server that gives LLM agents a reliable what-if / scenario simulation engine.
Agents are good at describing a plan but unreliable at *projecting* it: they drift on multi-period arithmetic, mishandle compounding, and can't show their work. ScenarioSim offloads the simulation to an exact, explainable engine. You provide assumptions (growth rates, churn, pricing, costs, starting metrics, a time horizon); it returns projected outcomes over time, key metrics, the exact assumptions used, plus sensitivity analysis and break-even solving — each with a plain-language explanation.
Every number flows through decimal.js at 40-digit precision (never floats), so identical inputs always produce byte-identical output. The server is stateless — no database, no sessions, no clocks or randomness in the result.
This is the third product in a suite built to the same engineering standard as PrecisionCalc MCP (deterministic high-precision finance/business math) and DecisionMatrix MCP (transparent multi-criteria decision analysis): identical project structure, output philosophy, and Cloudflare Pages deployment.
A public remote MCP server runs on Cloudflare's edge — point any Streamable-HTTP MCP client at it:
https://scenariosim-mcp.pages.dev/mcp
{ "mcpServers": { "scenariosim": {
"type": "http", "url": "https://scenariosim-mcp.pages.dev/mcp" } } }
It runs in open mode on the free tier (no key, 20 calls/day per IP). Paid plans (Starter $12/mo · 5,000/day, Pro $39/mo · 50,000/day) are available via Stripe Checkout — buy a plan, get an API key instantly, and send it as X-API-Key. Self-host for unlimited calls with no keys. Landing page + pricing: https://scenariosim-mcp.pages.dev.
Six tools, all returning a uniform, agent-parseable envelope:
| Tool | Purpose |
|---|---|
run_scenario | Main tool. Project a pre-built template or a free-form model over time → per-period projections, headline key_results, the assumptions_used, methodology, notes, and a plain-language explanation. |
sensitivity_analysis | Vary one or more inputs (one-at-a-time) and report the impact on a target metric — with an elasticity estimate, the output range, and a ranking of the most influential inputs. |
break_even | Solve for the input value required to make a target metric hit a target value (deterministic bisection). |
compare_scenarios | Run 2–3 scenarios side-by-side with deltas vs a baseline and an optional winner. |
list_templates | Discovery: every template with its inputs (defaults + units) and available outputs. |
health_check | Version, status, and capabilities. |
| id | models | primary output |
|---|---|---|
saas_growth | subscribers + MRR/ARR from acquisition (with its own growth) and churn | ending_mrr |
pricing_change | revenue/profit impact of a price change via price elasticity | cumulative_profit_after |
churn_impact | retention erosion + revenue lost vs a no-churn baseline | cumulative_revenue_lost |
cost_reduction | profit + margin impact of cutting costs | cumulative_savings |
hiring_plan | headcount, fully-loaded payroll, revenue capacity | cumulative_payroll |
cash_runway | cash balance forward + months-to-zero runway | runway_periods |
unit_economics | LTV, LTV:CAC, CAC payback, per-customer margin curve | ltv_cac_ratio |
marketing_funnel | visitors → leads → customers → revenue | total_revenue |
compound_growth | generic single-metric compound/linear projection | ending_value |
custom | free-form: any number of independently-growing metrics | *(first metric)* |
Every template accepts horizon (number of periods, 1–1200) and period_label (day/week/month/quarter/year, which also sets annualization). Inputs you don't provide fall back to documented defaults; unknown inputs are ignored and reported in notes. Call list_templates for the full input/output catalog.
Every successful response contains: status, scenario, period_label, horizon, key_results (+ key_results_detail with units and full-precision value_exact), projections, assumptions_used, methodology, notes, and a natural-language explanation.
{
"status": "success", "scenario": "saas_growth", "period_label": "month", "horizon": 12, "key_results": { "ending_customers": 449.7, "ending_mrr": 26982.1, "ending_arr": 323785.2, "total_churned_customers": 82.4, "cumulative_revenue": 232104.6 }, "projections": [ { "period": 0, "customers": 200, "mrr": 12000, "new_customers": 0, "churned_customers": 0 }, { "period": 1, "customers": 234, "mrr": 14040, "new_customers": 40, "churned_customers": 6 } ], "assumptions_used": { "template": "saas_growth", "starting_customers": "200", "new_customers_per_period": "40", "acquisition_growth_rate": "0", "churn_rate": "0.03", "arpu": "60", "horizon": 12, "period_label": "month" }, "methodology": { "model": "SaaS Growth", "primary_output": "ending_mrr", "precision": "decimal.js (40 significant digits)", "deterministic": true, "period_convention": "Period 0 is the starting state; periods 1..12 are projected. 12 month(s) per year." }, "notes": ["Churn is applied to the prior period's base before new customers are added."], "explanation": "Starting from 200 customers and adding 40 per month (churn 3%), after 12 months you reach ..." }
Errors never cross the tool boundary as exceptions — they come back as a structured, actionable envelope:
{
"status": "error", "error": { "type": "unknown_template", "message": "Unknown scenario template 'saaas'.", "hint": "Available templates: saas_growth, pricing_change, churn_impact, cost_reduction, hiring_plan, cash_runway, unit_economics, marketing_funnel, compound_growth. Call list_templates for details ..." } }
Design note — exact numbers: headline numbers in
key_resultsare
deterministically rounded (6 dp) for easy consumption;
key_results_detail[].value_exact
and
assumptions_usedcarry full-precision strings so no precision is lost in JSON.
All internal math is exact 40-digit decimal.
scenariosim-mcp/
├── worker-src/ │ ├── index.mjs # Cloudflare Pages Function (_worker.js): MCP over Streamable HTTP + billing routes │ ├── engine.mjs # The deterministic simulation engine: 9 templates + 6 tools + solver + validation │ └── billing.mjs # Stripe Checkout + KV-backed API keys, quota metering, webhook ├── server.mjs # Local stdio MCP server (same engine, no network/state) ├── site/ │ ├── index.html # Static landing / pricing / docs page │ ├── mcp.json # Machine-readable connection manifest │ ├── llms.txt # LLM-friendly summary │ └── _worker.js # Built bundle (esbuild output; git-ignored) ├── tests/ │ └── engine.test.mjs # 29 core simulation-logic tests (node --test) ├── examples/ │ └── agent_example.mjs # End-to-end MCP client demo over HTTP ├── package.json # build / deploy / dev / test scripts ├── wrangler.toml # Cloudflare Pages config ├── .env.example # Optional auth/rate-limit env reference ├── LICENSE # MIT └── README.md
Separation of concerns: engine.mjs is pure and transport-agnostic (import it directly in tests or any Node/Deno/edge runtime); index.mjs only handles the MCP JSON-RPC wiring, HTTP, CORS, and the auth/metering seam; server.mjs re-uses the same engine over stdio.
decimal.js (math) and esbuild (bundler).git clone <your-fork> scenariosim-mcp && cd scenariosim-mcp
npm install
npm test
npm run dev # -> http://127.0.0.1:8788/mcp
node examples/agent_example.mjs node examples/agent_example.mjs http://127.0.0.1:8788
node server.mjs
Quick manual call:
curl -s http://127.0.0.1:8788/mcp \
-H 'content-type: application/json' \ -H 'accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"list_templates","arguments":{}}}'
Run the server locally over stdio with a single command — nothing to deploy:
npx -y scenariosim-mcp
Claude Desktop / any stdio MCP client (claude_desktop_config.json):
{ "mcpServers": { "scenariosim": { "command": "npx", "args": ["-y", "scenariosim-mcp"] } } }
This is the same deterministic engine as the hosted server, running on your machine.
~/.cursor/mcp.json{ "mcpServers": { "scenariosim": {
"url": "https://scenariosim-mcp.pages.dev/mcp" } } }
claude_desktop_config.jsonClaude Desktop launches stdio servers, so bridge to the HTTP endpoint with mcp-remote:
{ "mcpServers": { "scenariosim": {
"command": "npx", "args": ["-y", "mcp-remote", "https://scenariosim-mcp.pages.dev/mcp"] } } }
.vscode/mcp.json{ "servers": { "scenariosim": {
"type": "http", "url": "https://scenariosim-mcp.pages.dev/mcp" } } }
~/.codeium/windsurf/mcp_config.json{ "mcpServers": { "scenariosim": {
"serverUrl": "https://scenariosim-mcp.pages.dev/mcp" } } }
Point it at https://scenariosim-mcp.pages.dev/mcp (or your self-hosted URL). If you enable auth, add X-API-Key (or Authorization: Bearer ) in the client's headers.
run_scenario(template?, inputs?, metrics?, horizon?, period_label?)saas, pricing, runway, ltv, funnel also resolve). Omit it (or pass "custom") to run a free-form model.{ "churn_rate": 0.03, "arpu": 60 }. Also accepted as assumptions, or spread at the top level. Missing keys use documented defaults.{ name, start, growth_rate?, mode? } where mode is "compound" (default, x·(1+r)ⁿ) or "linear" (x·(1+r·n)).day/week/month/quarter/year (default month).sensitivity_analysis(template, variable|variables, target_metric?, variation?, steps?, values?, min?, max?, inputs?, horizon?)Sweeps each listed input across a range (default ±variation=0.2 around the baseline, steps=5) while all others stay at baseline, recomputing target_metric (defaults to the template's primary output) at each point. Returns per-variable sweep rows, an elasticity_estimate, the output_range, and a most_influential ranking. You can also give explicit values: [...] or a min/max grid instead of variation.
break_even(template, solve_for, target_metric?, target_value, bounds?, inputs?, horizon?)Solves for the value of solve_for (an input name) that makes target_metric equal target_value, via deterministic bisection with automatic bracket expans
只显示了开头部分;其余内容请在仓库中阅读