Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
OS keychain secrets for AI coding agents, over MCP.
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.
QRING_BACKEND, QRING_FILE_PASSPHRASE, QRING_FILE_BACKEND_PATH, QRING_CONFIG_DIRValues marked secret are keys to your account. Never share them or paste them into a chat.
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": {
"q-ring": {
"command": "npx",
"args": [
"-y",
"@i4ctime/q-ring"
],
"env": {
"QRING_BACKEND": "your-value",
"QRING_FILE_PASSPHRASE": "your-value",
"QRING_FILE_BACKEND_PATH": "your-value",
"QRING_CONFIG_DIR": "your-value"
}
}
}
}Run this in your terminal
claude mcp add q-ring --env QRING_BACKEND=your-value --env QRING_FILE_PASSPHRASE=your-value --env QRING_FILE_BACKEND_PATH=your-value --env QRING_CONFIG_DIR=your-value -- npx -y @i4ctime/q-ringFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"q-ring": {
"command": "npx",
"args": [
"-y",
"@i4ctime/q-ring"
],
"env": {
"QRING_BACKEND": "your-value",
"QRING_FILE_PASSPHRASE": "your-value",
"QRING_FILE_BACKEND_PATH": "your-value",
"QRING_CONFIG_DIR": "your-value"
}
}
}
}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": {
"q-ring": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@i4ctime/q-ring"
],
"env": {
"QRING_BACKEND": "your-value",
"QRING_FILE_PASSPHRASE": "your-value",
"QRING_FILE_BACKEND_PATH": "your-value",
"QRING_CONFIG_DIR": "your-value"
}
}
}
}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.
QRING_BACKEND envQRING_FILE_BACKEND_PATH envQRING_CONFIG_DIR envThese 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 6, 2026
The registry name was verified with the GitHub account I4cTime, 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.
You need to fill in: QRING_FILE_PASSPHRASE
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 (0.19.0) reached the registry yesterday.
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, Reelsaw
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.
Drive a self-hosted Reelsaw: turn long videos into vertical clips, edit, re-render and export them.
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.
OS keychain secrets for AI coding agents, over MCP.
Website: qring.i4c.studio
Stop pasting API keys into plain-text .env files or wrestling with clunky secret managers. q-ring securely anchors your credentials to your OS's native vault (macOS Keychain, Linux Secret Service, Windows Credential Vault) and supercharges them with mechanics from quantum physics.
📖 [View the Official Documentation](https://qring.i4c.studio/docs) for a complete CLI reference, MCP prompt cookbooks, and architecture details.
q-ring is designed to be installed globally so it's available anywhere in your terminal. Pick your favorite package manager:
# pnpm (recommended)
pnpm add -g @i4ctime/q-ring
npm install -g @i4ctime/q-ring
yarn global add @i4ctime/q-ring
brew install i4ctime/tap/qring
The repo ships a Dockerfile that builds the MCP server and exposes it through mcp-proxy — useful for hosted MCP deployments (e.g. Glama) or keeping the server off the host entirely:
git clone https://github.com/I4cTime/q-ring.git
cd q-ring docker build -t qring-mcp . docker run --rm -p 8080:8080 qring-mcp
Note: inside a container there is no OS keychain (GNOME Keyring / macOS Keychain), so this path is for the MCP protocol surface, ephemeral use, and CI experiments — not for durable local secret storage. For day-to-day use install the CLI natively via one of the package managers above.
# 1️⃣ Store a secret (prompts securely if value is omitted)
qring set OPENAI_API_KEY sk-...
qring get OPENAI_API_KEY
qring list
qring generate --format api-key --prefix "sk-" --save MY_KEY
qring health
qring doctor
qring completion zsh > ~/.zsh/completions/_qring # also: bash, fish
A single secret can hold different values for dev, staging, and prod simultaneously. The correct value resolves based on your current context.
# Set environment-specific values
qring set API_KEY "sk-dev-123" --env dev qring set API_KEY "sk-stg-456" --env staging qring set API_KEY "sk-prod-789" --env prod
QRING_ENV=prod qring get API_KEY # → sk-prod-789 QRING_ENV=dev qring get API_KEY # → sk-dev-123
qring inspect API_KEY
Once a secret carries per-environment states, promotion replaces copy-paste: compare two environments key by key (statuses only, never values), then copy a value from one state to another. diff exits 1 on drift, so it doubles as a CI gate; promote refuses to overwrite a differing target unless you say so.
# What differs between staging and prod? (same / different / missing on one side)
qring diff staging prod
qring promote DATABASE_URL --from staging --to prod
qring promote DATABASE_URL --from staging --to prod --force --json
MCP agents get the same two operations as diff_environments and promote_secret.
q-ring auto-detects your environment without explicit flags. Resolution order:
--env flagQRING_ENV environment variableNODE_ENV environment variablemain/master → prod, develop → dev).q-ring.json project config# See what environment q-ring detects
qring env
echo '{"env": "staging", "branchMap": {"release/*": "staging"}}' > .q-ring.json
Secrets can have a time-to-live. Expired secrets are blocked from reads. Stale secrets (75%+ lifetime) trigger warnings.
# Set a secret that expires in 1 hour
qring set SESSION_TOKEN "tok-..." --ttl 3600
qring set CERT_KEY "..." --expires "2026-06-01T00:00:00Z"
qring health
Every secret read, write, and delete is logged with a tamper-evident hash chain. Access patterns are tracked for anomaly detection.
# View audit log
qring audit qring audit --key OPENAI_KEY --limit 50
qring audit --anomalies
qring audit:verify
qring audit:export --format json --since 2026-03-01 qring audit:export --format csv --output audit-report.csv
Generate cryptographically strong secrets in common formats.
qring generate # API key (default)
qring generate --format password -l 32 # Strong password qring generate --format uuid # UUID v4 qring generate --format token # Base64url token qring generate --format hex -l 64 # 64-byte hex qring generate --format api-key --prefix "sk-live-" --save STRIPE_KEY
Link secrets across projects. When you rotate one, all entangled copies update automatically.
# Entangle two secrets
qring entangle API_KEY API_KEY_BACKUP
qring set API_KEY "new-value"
qring disentangle API_KEY API_KEY_BACKUP
Create secrets that exist only in memory. They never touch disk. Optional TTL and max-read self-destruction.
# Create an ephemeral secret (returns tunnel ID)
qring tunnel create "temporary-token-xyz" --ttl 300 --max-reads 1
qring tunnel read tun_abc123
qring tunnel list
Pack secrets into AES-256-GCM encrypted bundles for secure transfer between machines. Two ways to lock a bundle:
qring teleport keygen once and shares their recipient string (qring1…, an X25519 public key; the private half lives in their OS keyring). pack --to encrypts a fresh content key to every recipient — HKDF-SHA256 over an ephemeral X25519 agreement, AES-256-GCM throughout, node:crypto only — so nothing secret travels beside the bundle and nobody has to whisper a passphrase.# Passphrase bundle (prompts)
qring teleport pack --keys "API_KEY,DB_PASS" > bundle.txt cat bundle.txt | qring teleport unpack
qring teleport keygen # → qring1a3F… (share this; keep the keyring) qring teleport identity # print it again later
qring teleport pack --keys "API_KEY,DB_PASS" --to qring1a3F… --to qring1Zz9… > bundle.txt
cat bundle.txt | qring teleport unpack
qring teleport unpack --dry-run
Import secrets from .env files directly into q-ring. Supports standard dotenv syntax including comments, quoted values, and escape sequences. The CLI accepts either a file path or raw content; the import_dotenv MCP tool only accepts raw content (it never reads files from disk) so an agent can't coerce it into reading arbitrary local files.
# Import all secrets from a .env file
qring import .env
qring import .env --project --skip-existing
qring import .env --dry-run
Export only the secrets you need using key names or tag filters.
# Export specific keys
qring export --keys "API_KEY,DB_PASS,REDIS_URL"
qring export --tags "backend"
qring export --keys "API_KEY,DB_PASS" --format json
Filter qring list output by tag, expiry state, or key pattern.
# Filter by tag
qring list --tag backend
qring list --expired
qring list --stale
qring list --filter "API_*"
qring has OPENAI_API_KEY --quiet && echo "configured"
Declare required secrets in .q-ring.json and validate project readiness with a single command.
# Validate project secrets against the manifest
qring check
Only the beginning is shown; read the rest in the repo