Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Local MCP server that inventories and risk-grades MCP servers configured on this machine.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"shadow": {
"command": "uvx",
"args": [
"shadow-mcp",
"mcp-serve"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add shadow -- uvx shadow-mcp mcp-servePégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"shadow": {
"command": "uvx",
"args": [
"shadow-mcp",
"mcp-serve"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"shadow": {
"type": "stdio",
"command": "uvx",
"args": [
"shadow-mcp",
"mcp-serve"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub saagpatel, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.2.0) llegó al registro hace 4 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Discover and risk-grade the MCP servers actually present on this machine.
Most MCP security tooling assumes you already have a list of servers to audit. On a real developer machine you don't: servers are scattered across Claude Code, Codex, Claude Desktop, project-local .mcp.json files, DXT extensions, and live processes that bind no port. shadow-mcp finds them first, then grades them.
This is the local-first answer to OWASP MCP09:2025 — Shadow MCP Servers.
discover -> inventory -> risk-grade -> report
~/.claude.json, user + project scope), claude mcp list (catches remote + plugin servers no file contains), Codex (~/.codex/config.toml + profiles), project .mcp.json, Claude Desktop config + DXT extension manifests, and the live process table.personal-ops vs personal_ops), tracking every provenance.The risk model and its OWASP mapping live in docs/risk-model.md.
From this repository root, use uv:
make setup
The grading engines (mcp-audits and mcp-trust) are runtime dependencies resolved from PyPI, not editable sibling checkouts or an engines group. The installed mcp-trust package supplies its seed catalog; --registry-db or SHADOW_MCP_MCPTRUST_DB selects an explicitly chosen local registry instead.
uv run shadow-mcp scan # full pipeline, terminal report
uv run shadow-mcp scan --json out.json # machine-readable inventory uv run shadow-mcp scan --format markdown # markdown report uv run shadow-mcp discover # inventory only, no grading uv run shadow-mcp sources # per-collector counts uv run shadow-mcp grade-missing # A-F for servers the registry hasn't scanned uv run shadow-mcp deep-scan cost-tracker # connect to a server, grade its real tools
Useful flags: --no-processes (skip the live process scan), --no-cli (skip claude mcp list), --no-mcpaudit (inventory + mcp-trust only), --home PATH (point discovery at a fixture tree).
By default grading is static (config-only): no server is spawned, so grades reflect what's visible in the config. That's safe but coarse — a server's real capability only shows once you connect and list its tools.
shadow-mcp scan --connect (or deep-scan [names...]) spawns each stdio server and enumerates its real tools, delegating to MCPAudit's connected engine for a capability grade that actually differentiates (a filesystem server jumps from a static A to a connected D). This is opt-in because connecting executes the server; remote endpoints are never spawned (that's the network-scan tier), and a server that needs real secrets to start falls back to its static grade.
The committed uv.lock fixes the PyPI runtime and development graph. From the repository root, run:
make check
The suite uses synthetic homes. Keep SHADOW_MCP_RUN_CONNECT unset: the explicitly opted-in connected test is a separate server-execution lane. CI runs the same aggregate gate on Python 3.11 through 3.15; see the workflow. make build creates the wheel and sdist used by the release workflow.
Do not use the normal scan, discover, sources, grade-missing or MCP tool calls as a development smoke: they inventory the machine by default. CLI deep-scan and scan --connect additionally execute servers. For changed JSON or Markdown reports, check the corresponding fixture tests (tests/test_report.py) and inspect synthetic output; this CLI has no browser UI. Actual workstation or connected behavior requires its own explicitly authorized qualification.
claude mcp list (unless --no-cli is set), and list processes; nothing they find is ever mutated. (--connect/deep-scan is the one path that *executes* servers, and only when you explicitly ask.)*.inventory.json as private (it is git-ignored by default).shadow-mcp can serve its own inventory tools as an MCP server so an agent can query your local MCP surface without leaving the conversation.
| Tool | Description |
|---|---|
scan_local | Full pipeline (discover → inventory → grade → report). Returns JSON. |
discover_local | Inventory every MCP server without grading. Returns JSON. |
deep_scan | Grade the named servers, or all servers when the list is empty (static, no spawning). Accepts names: list[str]. Returns JSON. |
list_sources | Per-collector source counts from a discover run. Returns JSON. |
# directly from a local checkout
uv run shadow-mcp mcp-serve
uvx shadow-mcp mcp-serve
LOCAL only. MCP tools read local configs and the process table, skip claude mcp list, and never connect to hosted MCP endpoints or spawn servers. Grading is static (config-based); connect=False is enforced unconditionally.
This is the local-first tool: it inventories one machine from its configs and processes. A later network-scan expansion (probing hosts/ports for remote MCP endpoints, org-wide fleet inventory, typosquat-distance provenance checks) is deliberately out of scope here — see the bottom of docs/risk-model.md and the project notes for what that would add.
Python 3.11+; uv-managed locked dependencies; Ruff, mypy, and pytest checks; Hatchling wheel and sdist builds.
deep_scan remains unchanged pending an owner decision; the similarly named CLI command can connect to servers.critical ranks below low.--json is ignored by sources and grade-missing.Resolve the Python floor and MCP tool naming decisions, then address the listed behavior risks in a follow-up wave.