Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Local-first secret scanning, rotation, vault, and audit-log tools for AI agents.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"holster": {
"command": "uvx",
"args": [
"holster-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add holster -- uvx holster-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"holster": {
"command": "uvx",
"args": [
"holster-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"holster": {
"type": "stdio",
"command": "uvx",
"args": [
"holster-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名はドメイン nautaai.com で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは6 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Cape Winelands Visit Planner
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ 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.
Cape Winelands wine farm finder and day-route planner
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Holster MCP exposes local Holster Doctor checks to MCP-compatible agents. The server is local-first: free tools shell out to the bundled holster-doctor binary and never send repository contents to a network service.
From PyPI:
pip install holster-mcp
Development install:
cd /path/to/holster/mcp
python3.11 -m pip install -e '.[dev]'
Runtime command:
holster-mcp
MCP client config:
{
"mcpServers": { "holster": { "command": "uvx", "args": ["holster-mcp"] } } }
See the main Holster README for vault and holster-cli release binary installation.
License: MIT for the MCP package.
The server locates holster-doctor in this order:
HOLSTER_DOCTOR_BINholster_mcp/bin/holster-doctorholster-doctor on PATHtarget/release/holster-doctortarget/debug/holster-doctorholster.scan_repoInput:
{"path": "/absolute/repo/path", "depth": 3}
Output:
{
"ok": true, "scanned_files": 15, "findings": [ { "file": "src/main.py", "line": 12, "secret_kind": "openai_api_key", "severity": "error", "suggestion": "Rotate this key and move it into a local vault." } ] }
holster.check_gitignoreInput:
{"path": "/absolute/repo/path"}
Output:
{
"ok": true, "missing_patterns": [".env.local"], "existing_safe": [".env"], "existing_unsafe": [], "suggested_append": ".env.local\n*.pem" }
holster.rotation_playbookInput:
{"provider": "github"}
Output:
{
"ok": true, "provider": "github", "steps": ["Create a replacement token...", "Update local consumers...", "Revoke the old token..."], "estimated_minutes": 15, "warnings": ["Do not revoke the old credential until the replacement has been verified."] }
Day 1 wheels are built for:
aarch64-apple-darwin)x86_64-unknown-linux-gnu)The wheels bundle the platform's holster-doctor binary and are intentionally not universal.
Paid tools are local-only wrappers around holster-cli and are gated by a Holster license.
License lookup order:
license_key argument passed to a paid MCP toolHOLSTER_LICENSE_KEY~/.holster/config.tomlSupported config.toml shapes:
license_key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"
vault_path = "/absolute/path/to/holster-vault.db"
or:
[license]
key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"
[vault] path = "/absolute/path/to/holster-vault.db"
License cache:
~/.holster/licenses.db
If no license is configured, the first paid-tool call creates a local 7-day trial key with prefix holster_trial_.
Vault path lookup order:
HOLSTER_VAULT_PATH~/.holster/config.tomlholster.vault_addInput:
{
"provider": "github", "account": "nauta-ai", "secret": "user-pasted-secret", "label": "primary" }
Output:
{"ok": true, "vault_entry_id": "123e4567-e89b-12d3-a456-426614174000", "error": null}
The secret value is never placed in CLI argv, logs, or structured error output.
holster.vault_rotateDay 2 supports github and stripe.
Without new_secret, the tool returns the provider playbook and waits for the human to rotate/paste the replacement:
{
"provider": "github", "account": "nauta-ai", "vault_entry_id": "old-id" }
With new_secret, the replacement is added to the local vault and the old entry is marked superseded when the installed CLI supports that command.
holster.audit_logInput:
{"provider": "github", "account": "nauta-ai", "since_days": 30}
Output:
{"ok": true, "events": [{"ts": "...", "action": "add", "provider": "github", "account": "nauta-ai", "ok": true}]}
flowchart TD
A["Paid MCP tool call"] --> B["Resolve license key from arg/env/config"] B --> C{"Key present?"} C -- "No" --> D["Create local 7-day trial in ~/.holster/licenses.db"] C -- "Yes" --> E["Read ~/.holster/licenses.db"] D --> F{"Trial valid?"} E --> G{"Cached license valid?"} G -- "Valid" --> H["Dispatch paid tool"] G -- "Expired but within 7-day grace" --> I["Dispatch with license_warning"] G -- "Missing/stale live key" --> J["Stripe refresh: Customer.retrieve + Subscription.list"] J -- "Active" --> K["Update cache valid_until + last_checked"] J -- "Inactive/error/no API key" --> L["Return license_required_or_expired"] F -- "Valid" --> H F -- "Expired" --> L K --> H I --> H H --> M["Local holster-cli subprocess"]
The background poller refreshes cached live licenses every 10 minutes after a paid tool validates. There is no webhook receiver in Day 2 and no telemetry in V1.