Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
MCP server that decodes V8 CPU profiles into token-efficient bottleneck summaries for AI agents
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"v8-cpu-profile-decoder": {
"command": "npx",
"args": [
"-y",
"v8-cpu-profile-decoder-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add v8-cpu-profile-decoder -- npx -y v8-cpu-profile-decoder-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"v8-cpu-profile-decoder": {
"command": "npx",
"args": [
"-y",
"v8-cpu-profile-decoder-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"v8-cpu-profile-decoder": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"v8-cpu-profile-decoder-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント vola-trebla で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは6 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, ProAgentStore
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
MCP-first control plane for ProAgentStore agents and private instances.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An MCP server that decodes V8 CPU profiles into token-efficient bottleneck summaries for AI agents.
Your Node.js app is slow. You ran --cpu-prof. Now you have a 20MB .cpuprofile file — and your AI agent is completely blind to it.
V8 CPU profiles are massive. A typical .cpuprofile from a production Node.js app is 5–50MB of raw JSON — millions of lines mapping memory addresses, tick counts, and microsecond execution sequences. It looks like this:
{
"nodes": [ { "id": 1482, "callFrame": { "functionName": "processRequest", "url": "file:///app/dist/server.js", "lineNumber": 847 }, "hitCount": 3241, "children": [1483, 1490] }, ... ], "samples": [1482, 1483, 1482, 1490, 1482, ...], "timeDeltas": [120, 98, 115, 102, ...] }
An AI agent attempting to read this file instantly collapses its context window and fails. Even if it could read it, it can't run the aggregation algorithms needed to compute inclusive/exclusive CPU times across the call tree.
So when you ask your agent:
...it's guessing. It has no access to the profiling data.
v8-cpu-profile-decoder-mcp fixes that. It decodes the profile locally and hands the agent a 10-line semantic summary instead of a 50MB file.
extract_hottest_functionsParses the .cpuprofile and returns the top N functions ranked by exclusive CPU time (self time). Filters out V8 internals and Node.js built-ins — only user code.
{
"profile_path": "/app/profiles/CPU.20260516.cpuprofile", "top_n": 5, "min_self_percent": 1.0 }
[
{ "rank": 1, "functionName": "hashPassword", "url": "file:///app/dist/auth/crypto.js", "lineNumber": 42, "selfTimeMs": 1842.5, "totalTimeMs": 1842.5, "selfPercent": 61.32, "totalPercent": 61.32, "hitCount": 3241 }, { "rank": 2, "functionName": "parseJsonBody", "url": "file:///app/dist/middleware/body.js", "lineNumber": 18, "selfTimeMs": 412.1, "totalTimeMs": 412.1, "selfPercent": 13.71, "totalPercent": 13.71, "hitCount": 724 } ]
analyze_call_tree_pathFinds all callers of a specific function and shows how often each one invoked it. Accepts partial, case-insensitive function name matching.
{
"profile_path": "/app/profiles/CPU.20260516.cpuprofile", "function_name": "hashPassword", "top_callers": 3 }
{
"targetFunction": "hashPassword", "matchedNodes": 2, "totalSelfTimeMs": 1842.5, "totalPercent": 61.32, "callers": [ { "functionName": "loginHandler", "url": "file:///app/dist/routes/auth.js", "lineNumber": 94, "callCount": 2180, "selfTimeMs": 240.1 }, { "functionName": "validateSession", "url": "file:///app/dist/middleware/auth.js", "lineNumber": 31, "callCount": 1061, "selfTimeMs": 116.8 } ] }
correlate_source_codeMaps compiled JS bottlenecks back to their original TypeScript source locations using .js.map files. Falls back gracefully to compiled JS locations if no source map is found.
{
"profile_path": "/app/profiles/CPU.20260516.cpuprofile", "top_n": 5 }
{
"resolved": [ { "rank": 1, "generatedUrl": "file:///app/dist/auth/crypto.js", "generatedLine": 42, "source": { "originalFile": "src/auth/crypto.ts", "originalLine": 38, "originalColumn": 2, "originalFunction": "hashPassword" }, "selfTimeMs": 1842.5, "selfPercent": 61.32 } ], "sourcemapErrors": [] }
analyze_gc_pressureReports garbage collection overhead as a percentage of profiling duration, broken down by GC type. Flags when GC exceeds a configurable threshold and provides a targeted recommendation.
{
"profile_path": "/app/profiles/CPU.cpuprofile", "threshold_percent": 10 }
{
"gc_ticks": 184, "total_ticks": 1240, "gc_percentage": 14.84, "gc_type_breakdown": { "scavenger": 122, "mark_sweep": 0, "mark_compact": 0, "incremental": 62, "generic": 0 }, "exceeds_threshold": true, "threshold_percent": 10, "verdict": "GC consumed 14.84% of CPU — exceeds the 10% threshold. Dominated by Scavenger (short-lived object pressure). Consider object pooling, reusing buffers, or reducing closure captures." }
diff_profilesCompares two .cpuprofile files (before/after an optimization) and returns per-function CPU time deltas, normalized against each profile's total duration. Frames are matched by call-frame coordinates, not transient node IDs, so alignment is stable across profiling sessions.
{
"before_profile_path": "/app/profiles/before.cpuprofile", "after_profile_path": "/app/profiles/after.cpuprofile", "top_n": 5 }
{
"before_duration_ms": 5000, "after_duration_ms": 4800, "total_execution_delta_ms": -200, "total_execution_delta_percent": -4, "top_improvements": [ { "function_name": "hashPassword", "url": "file:///app/dist/auth/crypto.js", "line_number": 42, "before_ms": 1842.5, "after_ms": 620.1, "absolute_diff_ms": -1222.4, "relative_diff_percent": -66.34 } ], "top_regressions": [], "only_in_before": [], "only_in_after": [] }
analyze_async_bottlenecksDetects event-loop overhead by identifying V8 internal frames representing async machinery — microtask queue processing, nextTick saturation, and timer/immediate callbacks.
{
"profile_path": "/app/profiles/CPU.cpuprofile", "threshold_percent": 10 }
{
"total_ticks": 1240, "async_ticks": 186, "event_loop_overhead_ms": 372, "event_loop_overhead_percent": 15.0, "dominant_async_patterns": [ { "pattern": "promise_chains", "ticks": 142, "percent": 11.45 }, { "pattern": "nexttick_saturation", "ticks": 44, "percent": 3.55 } ], "verdict": "Event-loop overhead is 15.0% of CPU — exceeds the 10% threshold. Promise chain overhead is visible in the profile. Consider batching microtasks, using Promise.all() to parallelise I/O, or offloading CPU-bound continuations to worker threads." }
npx v8-cpu-profile-decoder-mcp
Or install globally:
npm install -g v8-cpu-profile-decoder-mcp
# Single run
node --cpu-prof your-script.js
node --cpu-prof --cpu-prof-dir ./profiles your-script.js
Or programmatically via Chrome DevTools → Performance tab → Record.
{
"mcpServers": { "v8-cpu-profile-decoder-mcp": { "command": "npx", "args": ["-y", "v8-cpu-profile-decoder-mcp"] } } }
_"Here's my CPU profile at
/app/profiles/CPU.cpuprofile— which function is consuming the most CPU?"_
_"Find what's calling
processRequestin this profile and how often"_
_"Map the top 10 hottest functions back to their original TypeScript files"_
_"My Node.js API is slow under load — profile is at
/tmp/CPU.cpuprofile, find the bottleneck"_
_"Is GC the bottleneck? Check the profile at
/tmp/CPU.cpuprofileand tell me what kind of allocation is causing it"_
_"Compare these two profiles before and after my optimization — which functions improved and which regressed?"_
_"Is this app spending too much CPU on async overhead and event-loop machinery?"_
MIT © vola-trebla