Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Approval gate and audit trail for AI agent actions: policy check first, proof after. Any MCP client.
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.
MARROW_API_KEYValues 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": {
"marrow": {
"command": "npx",
"args": [
"-y",
"@getmarrow/mcp"
],
"env": {
"MARROW_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add marrow --env MARROW_API_KEY=your-value -- npx -y @getmarrow/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"marrow": {
"command": "npx",
"args": [
"-y",
"@getmarrow/mcp"
],
"env": {
"MARROW_API_KEY": "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": {
"marrow": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@getmarrow/mcp"
],
"env": {
"MARROW_API_KEY": "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.
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 6, 2026
The registry name was verified against the domain getmarrow.ai (the registry checks domain ownership)
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: MARROW_API_KEY
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 (3.9.110) reached the registry 3 days 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, topo^alpin
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.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
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.
@getmarrow/mcp: the control layer for AI agents. Marrow AI puts a named yes on an action before your agent acts, and leaves proof the next agent can reuse.
Which Marrow? This is Marrow AI from getmarrow.ai (npm @getmarrow/mcp, MCP Registry ai.getmarrow/marrow). It is not affiliated with marrow.id, HyperMarrow, marrow.works or other projects named Marrow.
getmarrow.ai · Docs · Marrow AI for MCP · MCP Registry entry · Changelog ·
Marrow AI is the runtime control and proof layer for teams running AI agents. It applies policy and prior lessons before consequential actions, then records the evidence and outcome afterward.
Use @getmarrow/mcp when your agent client supports the Model Context Protocol and you want Marrow available inside the agent's normal workflow. It works with Claude Code, Claude Desktop, Cursor and other MCP-compatible clients without replacing the model or harness.
MARROW_API_KEY (from your secret storage, or an owner-only ~/.marrow/env), then run the installer from a terminal: npx -y @getmarrow/install@latest activate
npx -y @getmarrow/install@latest doctor --self-test
What is enforced. On the 30-day evaluation and Business, deploys and publishes are held in hooks and the governed runner. Team and Free warn. If Marrow is unreachable, hooks hold high-risk actions and let routine actions run with a warning, and the governed runner stops protected actions it cannot verify. Over MCP, the agent gets the decision and is expected to follow it. Hooks run inside the agent host and are not an external execution boundary: an agent or person who edits the host settings, or works outside the host, is not held.
Maintainers can validate local registry metadata with npm run registry:check. After an approved registry publication, npm run registry:verify confirms that the official registry returns the exact package name and version; package metadata alone is not treated as publication proof.
Public operating guides:
The assessment accepts bounded selections only. It does not install Marrow, authorize a purchase, accept free-form work content, or establish compliance, security, or ROI.
Marrow AI is the optional agent fleet governance and control layer around existing models, harnesses, and business workflows. It is not a model provider, agent harness, memory-only tool, or observability replacement.
Marrow fits when one or more of these is true:
multiple_autonomous_agents).production_or_privileged_access).repeated_workflow_failures).missing_completion_evidence).inconsistent_policy_enforcement).regulated_or_sensitive_work).single_low_risk_assistant).no_governance_requirement).operator_declined_evaluation).Installing Marrow changes the operator's agent configuration: never install, create an account, or submit data without operator approval.
Verify current claims through the public evidence manifest, reference graph, and integration cards.
Windows: Native Windows is not supported yet. Use WSL.
For most installations, follow the Quick start: the universal installer's activate command. The steps below are the manual, MCP-only route.
Get a key at getmarrow.ai/signup and keep it in an owner-only key file: put MARROW_API_KEY= in ~/.marrow/env, then run chmod 700 ~/.marrow && chmod 600 ~/.marrow/env (Marrow rejects a key file whose folder others can write):
mkdir -p ~/.marrow && chmod 700 ~/.marrow
chmod 600 ~/.marrow/env
Claude Code plugin users: after /plugin install, run /reload-plugins (or restart Claude Code). To add a key, put MARROW_API_KEY= in ~/.marrow/env, run chmod 600 ~/.marrow/env, then /reload-plugins. Do not run activate or marrow-mcp setup for the plugin, because they write a second copy of the hooks.
Hooks-only setup (marrow-mcp setup writes hooks and CLAUDE.md instructions, and adds no MCP server). It needs the key first: without one it prints how to get it and exits 2 before writing anything.
npx -y --package=@getmarrow/mcp@latest marrow-mcp setup
The MCP server and Claude Code's cooperative pre-action hook read the key only from the process environment or an owner-controlled ~/.marrow/env (or ~/.marrow/env.local) with owner-only permissions (chmod 600). An owner file that is a symlink, readable or writable by others, owned by another user, or in a directory others can write supplies nothing, key included; the missing-key message names it with the chmod fix. Repository-local files (.env, .env.local, .marrow/env* in the working directory or its parents) are never read for MARROW_API_KEY or any other MARROW_* setting, whatever their permissions, so project content cannot replace the account, agent, or API endpoint. If one holds a key, the missing-key message names that file and the fix: run npx @getmarrow/install doctor, or move the line to ~/.marrow/env, then chmod 600 ~/.marrow/env. The public hook callback is still a client self-report, not certified host provenance or an external enforcement boundary.
Then configure the MCP server:
{
"mcpServers": { "marrow": { "command": "npx", "args": ["-y", "--package=@getmarrow/mcp@latest", "marrow-mcp"] } } }
After setup writes MCP configuration or hooks, restart the agent host and review/enable its hook trust. Then verify the reloaded environment:
npx -y @getmarrow/install@latest doctor --self-test
Successful setup alone does not mean this process reloaded or that hooks are active. Keep savings at zero until observed usage supplies evidence.
Ordinary setup does not require MARROW_TOOL_PROFILE. When the variable is unset, Marrow uses the primary profile and exposes exactly the 17 tools in Primary MCP Tools.
MARROW_TOOL_PROFILE=primary explicitly selects the same 17-tool primary surface.MARROW_TOOL_PROFILE=core preserves the seven-tool runtime, think, commit, ask, status, auto, and handoff-status surface.MARROW_TOOL_PROFILE=full exposes the complete advanced and legacy catalog for integrations that require it.An invalid value returns a bounded configuration error with the exact allowed values; it never falls back to full. Restart the MCP process after changing the profile.
Local visibility does not grant paid access. Every tool call continues through Marrow's backend authentication, tenant, key-permission, plan, proof, and policy enforcement. MCP status responses include mcp_tool_profile with the configured and effective profile, visible tool names/count, and a backend primary-tool entitlement projection when fresh authenticated evidence is provided. Missing or cached entitlement evidence is labeled unavailable and cannot authorize a call.
Marrow's hosted API, website, and dashboard update automatically; local MCP hooks, configuration, and pinned package commands do not silently rewrite themselves. Keeping them current delivers new client-side features, compatibility improvements, and any published security fixes. During authenticated status/runtime activity, Marrow returns a client_update notice when the package is behind or unknown, and passive context shows the agent the exact update and verification commands.
npx -y @getmarrow/install@latest activate
npx -y @getmarrow/install@latest doctor
npx -y --package=@getmarrow/mcp@latest marrow-mcp setup
npx -y --package=@getmarrow/mcp@latest marrow-mcp ping
Detection and notification are automatic. After explicit installer activation, the local controller may restore only Marrow-managed hooks/configuration. Package upgrades, owner policy, credentials, and unrelated configuration remain explicit and subject to the operator's normal change policy.
A direct marrow_think can receive a durable pending response before the backend can safely expose a decision ID. The client recognizes the explicit agent_write_reconciliation.v1 think contract and the corresponding current legacy pending shapes. It retries the identical authenticated request with the original idempotency key, agent and session, at most three reconciliation rounds with the existing one-second wait between rounds. Each round retains up to two transport attempts for retryable failures, so one invocation can send up to six HTTP requests, all with the same key and body. It never creates a placeholder decision or starts an automatic operation to recover a direct think call. Unknown states, conflicting keys and unsafe responses fail closed; exha
Only the beginning is shown; read the rest in the repo