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.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://scenariosim-mcp.pages.dev/mcpClaude 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月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント inity13 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.2)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, MONS
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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.
Build and adjust your clients' MONS training plans: programs, templates, exercises, sets, reps.
作者のリポジトリから書かれたとおりにコピーしたものです。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
冒頭だけを表示しています。続きはリポジトリで読めます