Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Exact-version library docs from your lockfile — local, offline, no rate limits.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"lockdocs": {
"command": "npx",
"args": [
"-y",
"@sylphx/lockdocs",
"mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add lockdocs -- npx -y @sylphx/lockdocs mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"lockdocs": {
"command": "npx",
"args": [
"-y",
"@sylphx/lockdocs",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"lockdocs": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sylphx/lockdocs",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント SylphxAI で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.7.5)がレジストリに届いたのは5 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, topo^alpin
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Exact-version library docs from your lockfile — local, offline, no rate limits.
Reads your lockfile. Answers from the docs and type declarations of the exact version you installed.
npm · PyPI · crates.io · Go. MCP server + CLI in one Rust binary. No account, no API key. MIT.
npx -y @sylphx/lockdocs setup
Docs · Quickstart · Tools · Benchmarks · Compare · How it works
A real terminal: one question, two installs. pydantic 1.10.18 answers BaseModel.dict() (pydantic/main.py:427), pydantic 2.9.2 answers model_dump() (pydantic/main.py:352). It opens with Next.js 14 vs 15 cookies().
Ask for the exact signature of BaseModel.model_dump in a project that pins pydantic 2.9.2 (the run in the demo above):
$ lockdocs api BaseModel.model_dump --tokens 300
pydantic@2.9.2 · pypi · .venv/lib/python3.12/site-packages · pinned in uv.lock
def model_dump(self, *, mode: Literal['json', 'python'] | str = 'python', include: IncEx | None = None, …) -> dict[str, Any] Usage docs: https://docs.pydantic.dev/2.9/concepts/serialization/#modelmodel_dump
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
The same call in a pydantic 1 project answers that pydantic 1.10.18 has no model_dump, and shows the closest documentation instead.
npx -y @sylphx/lockdocs setup # add lockdocs to Claude Code, Codex, Cursor, VS Code, Claude Desktop, Windsurf, Gemini CLI
That's it. Using Claude Code only? claude mcp add lockdocs -- npx -y @sylphx/lockdocs mcp. setup detects the clients you have, writes their MCP config, and prints every change. Run it again and nothing changes. Then ask your agent something like *"Use lockdocs: how do I reject unknown keys with the zod we use?"*
From a terminal, inside any project:
npx -y @sylphx/lockdocs zod "reject unknown keys" # docs for the zod version in your lockfile
npx -y @sylphx/lockdocs api axum::Router::route # exact signature + doc comment npx -y @sylphx/lockdocs resolve # every pinned version, and whether its docs are here npx -y @sylphx/lockdocs fetch # once: add upstream docs at each version's git tag
Requires Node 18+. Confirm the install in your editor, open your project, and enable the server. Both links run npx -y @sylphx/lockdocs mcp locally; no API key is needed.
For VS Code from a terminal:
code --add-mcp '{"name":"lockdocs","command":"npx","args":["-y","@sylphx/lockdocs","mcp"]}'
Or add the server to .cursor/mcp.json:
{
"mcpServers": { "lockdocs": { "command": "npx", "args": [ "-y", "@sylphx/lockdocs", "mcp" ] } } }
For .vscode/mcp.json, use the VS Code servers format:
{
"servers": { "lockdocs": { "type": "stdio", "command": "npx", "args": [ "-y", "@sylphx/lockdocs", "mcp" ] } } }
<!-- editor-install:end -->
Manual MCP config
{
"mcpServers": { "lockdocs": { "command": "npx", "args": ["-y", "@sylphx/lockdocs", "mcp"] } } }
Claude Code: claude mcp add lockdocs -- npx -y @sylphx/lockdocs mcp Claude Code plugin: /plugin marketplace add SylphxAI/lockdocs, then /plugin install lockdocs@lockdocs Codex (~/.codex/config.toml):
[mcp_servers.lockdocs]
command = "npx" args = ["-y", "@sylphx/lockdocs", "mcp"]
The server answers for the client's workspace root (or its working directory, or LOCKDOCS_ROOT). Every tool also takes root.
Your agent writes code against the library version it remembers, not the one you installed. So it calls .dict() on a pydantic 2 model, cookies() without await on Next.js 15, and /:id routes on axum 0.8. Hosted doc servers help, but they guess the version from the prompt, cap free usage, and cannot see your private packages.
lockdocs takes the version question off the table:
package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lock, Cargo.lock, uv.lock, poetry.lock, Pipfile.lock, requirements*.txt and go.mod. No library IDs, no "use v14" in the prompt.docs/ folders, plus the API reference in the package itself: .d.ts declarations with JSDoc, Python docstrings and stubs, rustdoc comments, Go doc comments. If it is installed, it is documented, including your private and internal packages.node_modules, your virtualenv, ~/.cargo/registry and the Go module cache. The optional model downloads once (129 MB, kept as 32 MB). Use --offline (or LOCKDOCS_OFFLINE=1) to prohibit all downloads; LOCKDOCS_EMBED=0 disables only the model. No account or hosted query quota. First-use upstream requests reveal the public repository and version being fetched, not your question or project files.--no-fetch or LOCKDOCS_FETCH=0 opts out; cached docs still work offline. Failures are reported alongside local answers, never replaced with latest-version docs.model_validate instead").package@version path:line.Three tools, cheap enough to call before every unfamiliar API:
| Tool | Ask it | Returns |
|---|---|---|
resolve | "Which zod do we use?" | Pinned versions from every lockfile, direct vs transitive, and where their docs are (or what to install) |
docs | "How do I reject unknown keys?" (optionally package: "zod") | The most relevant README, changelog and API sections of the installed version, within budget, each cited zod@4.1.5 v4/classic/schemas.d.ts:453 |
api | z.object, tokio::spawn, BaseModel.model_dump, gin.Context.JSON | The exact signature and doc comment, overloads, members of a class/interface/struct/trait, and other matches |
| Ecosystem | Versions from | Docs read from | API reference |
|---|---|---|---|
| npm | package-lock.json, npm-shrinkwrap.json, pnpm-lock.yaml (v5-v9), yarn.lock (v1 and Berry), bun.lock; else package.json + node_modules | node_modules (including pnpm's .pnpm store and monorepo roots), Yarn PnP zip cache (.yarn/cache, global Berry cache) | .d.ts/.d.mts/.d.cts with JSDoc; @types/* when the package ships none; JSDoc'd JS otherwise |
| PyPI | uv.lock, poetry.lock, pdm.lock, Pipfile.lock, requirements*.txt; else the virtualenv | .venv, venv, $VIRTUAL_ENV, $CONDA_PREFIX, then the system interpreter | Docstrings and signatures from .py, .pyi stubs; README from the wheel's METADATA |
| crates.io | Cargo.lock | ~/.cargo/registry/src (or $CARGO_HOME), git dependencies from ~/.cargo/git/checkouts, vendor/ | Public items with rustdoc (///, //!), including items declared inside macros such as tokio's cfg_rt! |
| Go | go.mod (with replace) | $GOMODCACHE/~/go/pkg/mod, vendor/ | Exported funcs, methods, types, interface methods with doc comments; package docs |
Legacy copies bundled inside a package (zod/v3 inside zod 4, pydantic/v1 inside pydantic 2) rank below the current API.
The first docs or api query adds the selected dependencies' public release-tag docs once: it finds the GitHub repository in the package's own metadata and the git tag of your pinned version, resolves that tag to an immutable commit, and downloads only its docs folders (Markdown, MDX, reStructuredText, docs examples). It does not use ambient GitHub credentials or download major-version website docs by default. Previously opted-in docs-site caches are preserved and their provenance stays visible. lockdocs fetch remains available to prewarm docs and explicitly add major-version docs sites. Answers then cite next@15.1.0 upstream:docs/01-app/.../cookies.mdx:12. See Upstream docs and fetching.
Registry package downloads remain opt-in; default upstream enrichment uses installed package metadata (plus the one-time embedding model download). If a pinned package is not installed (a fresh clone, CI, a lockfile you are reviewing), it says so and tells you how to install it. Pass --fetch (or set LOCKDOCS_FETCH=1, or lockdocs setup --fetch) to let it download exactly that version from the registry (npm tarball, PyPI wheel or sdist, crates.io .crate, Go module proxy zip) into its cache. Fetched answers say fetched from registry.npmjs.org. You can also ask for a version you do not use: lockdocs npm:zod@4.1.5 "strict object" --fetch.
105 questions whose correct answer depends on the version, over 15 libraries (zod, Next.js, React Router, pydantic, axum, tokio, Tailwind CSS, ESLint, Prisma, React, Vite, Express, SQLAlchemy, Django, FastAPI), each asked in a real project with that version installed. An answer passes when it contains the version-correct API and none of the other version's. Same questions and grader against
冒頭だけを表示しています。続きはリポジトリで読めます