Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Cited, OSV-gated, injection-hardened web briefs for coding agents. Verified, never raw web.
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.
You 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": {
"voyager": {
"command": "npx",
"args": [
"-y",
"@dir-ai/voyager",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add voyager -- npx -y @dir-ai/voyager mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"voyager": {
"command": "npx",
"args": [
"-y",
"@dir-ai/voyager",
"mcp"
]
}
}
}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": {
"voyager": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dir-ai/voyager",
"mcp"
]
}
}
}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.
These 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 dir-ai, 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.4.0) reached the registry 4 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, SuperCollider
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.
Make sound with SuperCollider: synths, drums, chords, melodies and soundscapes over OSC.
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.
The verified-brief organ for coding agents.
An AI coding agent that reaches the open internet gets a raw, unsigned, possibly-poisoned blob and feeds it straight into its own prompt. voyager sits in front of that: it turns a query into a cited, confidence-scored, OSV-gated, injection-hardened brief — the only surface your model ever sees.
Every claim carries its provenance and a confidence signal. Package recommendations pass a fail-closed OSV vulnerability gate, surface build provenance (npm SLSA attestations) when present, and can be reproduced in a disposable twin — install + smoke-import run inside a hardened, rootless, network-isolated container (never on the host). That proves the package installs and its entrypoint loads; it is not a safety proof. All fetched text is stripped of instruction-shaped payloads (multilingual + base64 + markdown /HTML vectors) and framed as untrusted evidence the model must analyze, never obey.
CLI, library, and MCP server.
npm i @dir-ai/voyager
npx -y @dir-ai/voyager check express
voyager check <name> [--ecosystem npm|pypi] [--version V] [--twin] # exit 1 if unsafe
voyager brief " " [--package name] [--discover " "] [--search " "] [--docs ] voyager discover " " # GitHub repo discovery (Tier-A) voyager search " " # open-web search (Tier-C, needs a key) voyager docs # canonical docs (Tier-B) voyager doctor # which source keys are configured
check is a natural CI gate: fail the build if an agent picked a vulnerable, deprecated, or non-existent dependency.
import { checkPackage, voyagerRetrieve, setKeyResolver } from '@dir-ai/voyager'
const v = await checkPackage({ name: 'express', ecosystem: 'npm' }) // → { verdict: 'belief' | 'fact' | 'rejected', claim, steps } (adversarial trace)
const brief = await voyagerRetrieve('a safe date library', { packages: [{ name: 'date-fns', ecosystem: 'npm' }], discover: 'date library', }) brief.rendered // the injection-hardened, framed text to feed a model brief.claims // structured, cited, confidence-scored
// Bring your own key store (default is env vars): setKeyResolver((provider) => mySecrets.get(provider))
// .mcp.json
{ "mcpServers": { "voyager": { "command": "npx", "args": ["-y", "@dir-ai/voyager", "mcp"] } } }
Tools: check_package, retrieve, discover_repos, fetch_docs.
docker run --rm ghcr.io/dir-ai/voyager check express
docker run -i --rm ghcr.io/dir-ai/voyager mcp # stdio MCP
| Tier | Source | Base trust |
|---|---|---|
| A | GitHub · npm · PyPI · OSV (structured facts) | high |
| B | canonical docs (official hosts only) | high |
| C | open-web search (Tavily / Exa / Apify) | low — cross-referenced before trusted |
| D | isolated twin (install + smoke in a container) | reproduction, not a safety proof |
Keys are optional: the Tier-A core (npm/PyPI/OSV, and GitHub unauthenticated) is zero-key. Tier-C providers each no-op without their key. Set GITHUB_TOKEN, TAVILY_API_KEY, etc., or inject a resolver.
One egress allowlist (a fixed set of public API hosts), https-only, redirect: error, a streamed byte cap that aborts an oversized body mid-download, and an injection-strip that removes role-hijacks / chat-template tokens / zero-width & bidi characters, decodes-and-rescans base64, neutralizes markdown images and HTML comments, and matches instruction payloads across several languages. The framing is the real defense — the strip keeps it from being trivially escaped. The twin runs the package's code only inside a hardened, network-isolated, read-only, non-root container; with no container runtime it refuses to run (returns unsupported) rather than execute on the host. See SECURITY.md.
Idempotent Tier-A facts (npm / PyPI / OSV) are cached in-process and on disk under ~/.voyager/cache (content-addressed, TTL'd) so repeated checks are fast, survive across runs, and lean less on the network. No secret is ever written (auth headers are never part of a cache key or value). VOYAGER_NO_CACHE=1 disables it; VOYAGER_CACHE_DIR relocates it.
deps.dev-backed multi-ecosystem facts (crates / Go / RubyGems / Packagist), typosquatting detection, PyPI/cargo twins. Contributions welcome.
MIT © dir-ai