Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Read-only repo navigation and progressive disclosure; BM25 locator with registered evidence.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"navigator": {
"command": "npx",
"args": [
"-y",
"mentu-navigator"
]
}
}
}ターミナルでこれを実行します
claude mcp add navigator -- npx -y mentu-navigatorプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"navigator": {
"command": "npx",
"args": [
"-y",
"mentu-navigator"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"navigator": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mentu-navigator"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名はドメイン mentu.ai で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.2)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, zanadir
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
Find what a repository's CI is missing, and which security checks cannot fail the build.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Read-only, provenance-first repository navigation for humans and AI agents.
Point it at a repository and ask a question. It returns ranked file-and-line ranges to read, each carrying the reason it ranked, and it never writes to the repository it reads. It is built for agents that must find the document that answers a question in a documentation-heavy repository, without pulling the whole thing into context, and for the people reviewing what those agents did.
Scope. The ranking default is measured on documentation: markdown corpora, in pre-registered studies (see *Evidence*). It has not been measured on source code, where published comparisons favour other locators (see *Scope of the evidence*). The code-structure commands (map, symbol, impact) work on any repository; their usefulness has not been measured.
mentu-navigator is the product name. mentu-nav is its short CLI.
Requires Node.js 20 or newer.
npm install -g mentu-navigator # CLI: mentu-nav, MCP server: mentu-navigator-mcp
To run it without installing:
npx -p mentu-navigator mentu-nav "where is retry handled?"
The package name and the command name differ, so npx mentu-navigator on its own cannot resolve a binary. Pass -p as above.
License: Apache-2.0. Telemetry is local-only JSONL under ~/.mentu/pd1/ (spec: docs/TELEMETRY-SPEC.md); disable with MENTU_NAV_TELEMETRY=off. Nothing ever leaves the machine.
mentu-navigator is the retrieval surface. mentu-pdv validates the frontmatter schema this tool consumes and emits the demotion sets locate applies. The two are designed as a pair, and the schema is published as a spec (SPEC-frontmatter.md).
Search tools find matching text. A repository navigator also preserves the question's intent and returns the nearby contracts, tests, docs, Git lineage, and risk surfaces needed to act safely.
The first release is intentionally deterministic:
cd /path/to/repository
mentu-nav mentu-nav "where is DEMO-274 implemented and tested?"
Interactive terminals receive a concise human view. Pipes receive compact JSON; --json requests the full envelope. Agents should use --agent for a compact, token-efficient JSON contract:
mentu-nav --agent "where is DEMO-274 implemented and tested?"
The front door auto-routes to map, query, handles, symbol, or impact. Their explicit commands remain available for scripts and advanced use.
For a docs-as-code network:
mentu-nav handles "catalog lineage"
This returns metadata pointers, typed relationships, and diagnostics. Every pointer carries requiresHydration: true. query keeps these pointers separate from source-body evidence so a summary cannot silently become an answer.
| Capability | Question answered | Evidence |
|---|---|---|
map | What is here? | files, languages, contracts, manifests, typed docs, Git state |
query | Where is the relevant evidence? | ranked path/line/snippet hits and routing reason |
locate | Which ranges should I read? | BM25-ranked hits with retriever attribution (evidence-backed default) |
read-range | What does that range say? | heading-bounded slice, frontmatter returned separately |
handles | Which docs and typed relationships may matter? | frontmatter pointers, relationship resolution, diagnostics; hydration required |
symbol | What surrounds this symbol? | definitions, references, tests, docs, config |
impact | What may this change affect? | Git range, tickets, contracts, tests, risk signals |
locate and read-rangelocate is the agent surface. Its default arm is ranked lexical retrieval (BM25). That default was set by a pre-registered study, not by taste (see *Evidence* below). Two legs exist:
lang frontmatter tag (detected as a fallback, and the detection is logged, never written);query pipeline, unchanged in semantics.A fused arm (reciprocal rank fusion of the two legs) exists as a measurement arm. It was the original default and was retired from the default path by its own pre-registered ablation rule when the registered bake-off found it trailing plain BM25 by 7.8 points of localization (see *Evidence*). Every hit says which leg (or both) put it there.
mentu-nav locate "compaction policy" --k 8
mentu-nav read-range docs/adr/ADR-014-ledger-compaction.md 38 62 --widen 1
locate returns {path, line, range, snippet, score, retriever, why}. That is a range to read, not an answer. read-range returns the slice; each --widen step reaches ±20 lines further and stops at the enclosing heading boundary, and frontmatter comes back in its own field so metadata cannot be mistaken for body evidence. Handles remain the pointer layer, unchanged: every pointer still carries requiresHydration: true.
These are design parameters, not implementation details. Each is registered as an ablation and measured there; changing one is a dated decision plus a re-measurement.
| Parameter | Value | What it governs |
|---|---|---|
LOCATE_DEFAULT_K | 8 | hits locate returns by default |
LOCATE_MAX_K | 40 | ceiling on k, whatever a caller asks for |
SNIPPET_MAX_CHARS | 240 | snippet length, whitespace-normalized to one line |
WIDEN_STEP_LINES | 20 | one read-range widening step |
RRF_K | 60 | reciprocal rank fusion constant |
DEMOTION_MULTIPLIER | 0.5 | penalty applied to a demoted document |
The legacy query command keeps its own human-facing default of 40 results; the pins above govern locate.
--demotions reads a pdv demotions JSON file (resolved against the repository root) and multiplies those documents' scores by 0.5. A demoted document ranks lower and is never removed. An unavailable document is the more expensive error. An unreadable or malformed demotion set is reported in the envelope diagnostics rather than silently ignored.
--retriever is for measurement--retriever=bm25|exact|fused selects an arm (default bm25). It exists so a registered bake-off's arms are produced by the shipped code path rather than by a harness fork. That is exactly how the defaults here were decided. The flag is not a tuning knob.
Every performance-relevant default in this tool traces to a registered, mechanically adjudicated study, and every claim below carries its scope: one 141-document bilingual operational documentation corpus, a fresh 115-question blind set, this tool's k=8 contract. The bake-off (doi:10.5281/zenodo.21969901, companion to doi:10.5281/zenodo.21960138):
bm25 is the default.Nothing here claims generality beyond that corpus class; the study, corpus manifest, question set, and adjudicator are public in the DOIs above for re-running.
Every study behind these defaults used markdown documentation; none used source code, and the difference matters. Finding the file to change from an issue description is a lower-overlap task, and published comparisons rank BM25 below embedding retrieval there. On SWE-bench Lite, BM25 placed a correct file among its top five 61.7% of the time, against 84.7% for a code-embedding retriever (Chen et al., *LocAgent*, Table 4). So:
locate, then read the range it returns;What *is* additionally asserted by the test suite on every commit: the index writes nothing to a target repository and lives in memory for the life of the process; identical corpus and query produce byte-identical hit lists across runs and index rebuilds; secret-bearing paths are excluded before tokenization, not after; and a search pattern beginning with - is passed after a literal -- so it can never be parsed as an engine flag.
mentu-navigator-mcp exposes:
navigator: preferred compact, auto-routing entrypointlocate: BM25-ranked ranges, with retriever and demotionsread_range: the disclosure step locate hands off tonavigator_mapnavigator_querynavigator_handlesnavigator_symbol_contextnavigator_change_impactAn MCP client configuration:
{
"mcpServers": { "mentu-navigator": { "command": "npx", "args": ["-y", "-p", "mentu-navigator", "mentu-navigator-mcp"] } } }
or launch the installed binary mentu-navigator-mcp directly.
mentu-nav setup --target all
mentu-nav doctor --human
Setup links the bundled skill into Codex and Claude without copying its logic. It refuses to replace an existing path. Repository navigation itself remains read-only.
The executable remains centralized. Repositories adopt only a short operating contract; they do not copy the implementation. See docs/adoption.md.