Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Inicia sesión con Google para escribir reseñas.Prototipo · se actualiza cada 30 min
PopNx MCPServidores MCP para quienes usan IA · en palabras sencillas

shadow-mcp

de saagpatelversión 0.2.0i★ 0iSe ejecuta en tu computadora
Nombre en el registroio.github.saagpatel/shadow-mcp

Cómo instalar

What it does

Local MCP server that inventories and risk-grades MCP servers configured on this machine.

  • Connects Se ejecuta en tu computadora
  • Account or key No key needed
  • Category Otros

Instalación

Elige la app de IA que usas y copia la configuración.

Pasó 2/3 revisiones · Funciona en tu computadora · ✓ Comandos revisados el 13 nov 2026

Primero: ¿qué IA usas?

Elige tu app y los pasos aparecen abajo.

Funciona con Claude, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil

Que la IA lo instale

Copia este mensaje en un chat de Claude. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server shadow-mcp para Claude en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "shadow": { "command": "uvx", "args": [ "shadow-mcp", "mcp-serve" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de shadow-mcp aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre el archivo de configuración de la app de Claude de escritorio

    SettingsDeveloperEdit Config

  3. Pega esta configuración y guarda el archivo

    {
      "mcpServers": {
        "shadow": {
          "command": "uvx",
          "args": [
            "shadow-mcp",
            "mcp-serve"
          ]
        }
      }
    }
  4. Cierra Claude y vuelve a abrirlo

  5. Pruébalo

    Usa shadow-mcp y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude dice que está usando shadow-mcp o muestra una herramienta de shadow-mcp en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

ChatGPT todavía no puede conectar shadow-mcp

shadow-mcp se instala en tu computadora, pero ChatGPT solo conecta servidores que funcionan en la web

Lo que puedes hacer en su lugar

A · Usa una app que pueda conectar shadow-mcp

  • Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)

B · Otros en Otros que funcionan con ChatGPT

Elegidos entre los más usados de la misma categoría, solo los que se conectan con una dirección y sin clave

Funciona con Claude Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Claude Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server shadow-mcp para Claude Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): claude mcp add --scope user shadow -- uvx shadow-mcp mcp-serve 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de shadow-mcp aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre la Terminal

    Mac: pulsa Command+Espacio y escribe Terminal · Windows: abre PowerShell

  3. Pega este comando y pulsa Enter

    claude mcp add --scope user shadow -- uvx shadow-mcp mcp-serve
  4. Escribe /mcp en Claude Code

    Deberías ver shadow-mcp en la lista como conectado

  5. Pruébalo

    Usa shadow-mcp y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude Code dice que está usando shadow-mcp o muestra una herramienta de shadow-mcp en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con Cursor, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Cursor. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server shadow-mcp para Cursor en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "shadow": { "command": "uvx", "args": [ "shadow-mcp", "mcp-serve" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de shadow-mcp aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir Cursor

    Abrir en Cursor

    Cursor te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de Cursor en modo Agent

  4. Pruébalo

    Usa shadow-mcp y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Cursor dice que está usando shadow-mcp o muestra una herramienta de shadow-mcp en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Cursor el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con VS Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de VS Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server shadow-mcp para VS Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "servers": { "shadow": { "type": "stdio", "command": "uvx", "args": [ "shadow-mcp", "mcp-serve" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de shadow-mcp aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir VS Code

    Abrir en VS Code

    VS Code te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de VS Code en modo Agent

  4. Pruébalo

    Usa shadow-mcp y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si VS Code dice que está usando shadow-mcp o muestra una herramienta de shadow-mcp en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de VS Code el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Otras apps que usan MCP, como Windsurf, Zed o Gemini CLI, añaden servidores de forma distinta. Míralo en la lista de apps

Ver todas las apps que usan MCP →

La configuración JSON está en “Para desarrolladores”, abajo

¿Te atascaste? Pregunta a quien usa shadow-mcp💬 Conversación →
Para desarrolladores: comandos de Terminal y configuración JSON

Instalado en tu computadora

Claude Code

claude mcp add --scope user shadow -- uvx shadow-mcp mcp-serve

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "shadow": {
      "command": "uvx",
      "args": [
        "shadow-mcp",
        "mcp-serve"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "shadow": {
      "command": "uvx",
      "args": [
        "shadow-mcp",
        "mcp-serve"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "shadow": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "shadow-mcp",
        "mcp-serve"
      ]
    }
  }
}

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

De un vistazo

Descargas por semanai
17/sem
Licenciai
Sin licencia indicada
Conexión
Se ejecuta en tu computadora
Última versióni
0.2.0
Categoríai
Otros
Publicado en el registroi
3 jul 2026
Último cambio de códigoi
14 nov 2026
Creador
saagpatel
Paquetes
pypi: shadow-mcp
Estado en el registro
Activo

Qué apps pueden usarlo

Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.

Se ejecutan en tu computadora en

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Todas las apps, con ventajas y desventajas →

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 16 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub saagpatel, dueña del repo

  • ✓ Superada

    Sigue en mantenimiento

    Último cambio de código: anteayer

  • ✕ No superada

    Tiene licencia

    No se encontró ningún archivo de licencia en el repo

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Vulnerabilidades publicadas (OSV.dev)

Sin entradas en OSV.dev para shadow-mcp@0.2.0

Solo revisa esta versión del paquete, no todas sus dependencias · revisado 16 nov 2026

Qué revisamos → · JSON

Creadores: pedir otra revisión o avisar de un dato erróneo

Conversación

Pregunta, comparte un consejo o avisa de que no funciona. Ordenado por lo que la gente marcó como útil.

Aún no hay publicaciones. Sé la primera persona en preguntar o compartir.

Lo publicado aquí lo escriben usuarios, no el equipo de PopNx.

Inicia sesión para publicar

Reseñas de usuarios

Aún no hay reseñas

Inicia sesión para escribir una reseña

Comparado con otros en Otrosi

  • Más estrellas que el 0% de los otros 19969 servidores de esta categoría
  • Publicado en el registro más recientemente que el 11% de los otros 19969 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 45% de los otros 19969 servidores de esta categoría

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.

Preguntas frecuentes

¿Es seguro shadow-mcp?

Superó 2 de 3 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.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

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).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez anteayer, y la última versión (0.2.0) llegó al registro hace 5 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu

Alternativas parecidas

Misma categoría, otros creadores, comandos ya revisados. Primero los oficiales, luego por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

de koala73Muy usado★ 90,7 milActualizado anteayer

Se ejecuta en la nube✓ del servicio · worldmonitor.app

openstatus

Manage monitors, status pages, incidents and maintenances in your openstatus workspace.

de openstatusHQMuy usado★ 9,3 milActualizado hace 2 meses

Se ejecuta en la nube✓ del servicio · openstatus.dev

Oh My Posh Validator

Validate oh-my-posh configurations and segment snippets against the official schema.

de JanDeDobbeleerMuy usado★ 23,8 mil Estrellas de todo el repositorioActualizado hace 27 días

Se ejecuta en la nube✓ del servicio · ohmyposh.dev

Strata

MCP server for progressive tool usage at any scale (see https://klavis.ai)

de Klavis-AIEn crecimiento★ 5,8 milActualizado hace 14 meses

Se ejecuta en la nubeRepo archivado✓ klavis.ai

Jitsu

Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.

de jitsucomMuy usado★ 5,1 milActualizado hace 4 meses

Se ejecuta en la nube✓ del servicio · jitsu.com
  • World Monitor — Funciona en la nube, sin instalar nada · Sin clave
  • openstatus — Funciona en la nube, sin instalar nada · Sin clave
  • Oh My Posh Validator — Funciona en la nube, sin instalar nada · Sin clave
  • Strata — Funciona en la nube, sin instalar nada · Sin clave
  • Jitsu — Funciona en la nube, sin instalar nada · Sin clave

README del creador

Abrir el README

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.

shadow-mcp

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.

What it does

discover  ->  inventory  ->  risk-grade  ->  report
  1. Discover (read-only) MCP servers from supported configuration and runtime sources: Claude Code (~/.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.
  2. Inventory: merge sightings into one entry per logical server, even when a server appears under different names across hosts (personal-ops vs personal_ops), tracking every provenance.
  3. Risk-grade by delegating to the existing engines rather than reimplementing them:
  • MCPAudit for a 0-10 capability composite + injection findings
  • mcp-trust for an authoritative A-F danger grade (when known)
  • a thin local layer for the config-shaped OWASP dimensions the engines under-cover (secrets/MCP01, supply-chain provenance/MCP04, transport exposure/MCP07).
  1. Report: a ranked terminal table, a machine-readable JSON inventory, or markdown — plus a Shadow & attention section for the deltas that matter (running-but-unconfigured, broad blast radius, capable-but-ungraded).

The risk model and its OWASP mapping live in docs/risk-model.md.

Install

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.

Use

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).

Static vs connected grading

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.

Development and safe verification

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.

Safety

  • Read-only discovery. Collectors parse configs, invoke 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.)
  • Secrets stay out. We record env variable *names* (to flag secret-bearing servers per MCP01) but never their values. Inline credentials in command arguments, URLs, and process parent commands are redacted before storage. A captured inventory still contains local paths and hostnames, so treat *.inventory.json as private (it is git-ignored by default).

Use as an MCP server

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.

Tools
ToolDescription
scan_localFull pipeline (discover → inventory → grade → report). Returns JSON.
discover_localInventory every MCP server without grading. Returns JSON.
deep_scanGrade the named servers, or all servers when the list is empty (static, no spawning). Accepts names: list[str]. Returns JSON.
list_sourcesPer-collector source counts from a discover run. Returns JSON.
Run the server
# directly from a local checkout

uv run shadow-mcp mcp-serve

via uvx (once published to PyPI)

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.

Scope

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.

Status

Stack

Python 3.11+; uv-managed locked dependencies; Ruff, mypy, and pytest checks; Hatchling wheel and sdist builds.

Known risks
  • The minimum Python version remains 3.11 pending an owner decision about raising it to 3.12.
  • The MCP tool name deep_scan remains unchanged pending an owner decision; the similarly named CLI command can connect to servers.
  • Identity collisions in identity and inventory matching.
  • Process sightings are deduplicated by name before owner classification.
  • Grading evidence is limited to eight findings, and critical ranks below low.
  • Collector failures can be silent.
  • --json is ignored by sources and grade-missing.
  • Report writes are not atomic.
  • Markdown and Rich output escaping differs.
  • Dependency major upgrades, moving off Hatchling, a coverage threshold, package publishing, tags, and releases remain out of scope.
Next steps

Resolve the Python floor and MCP tool naming decisions, then address the listed behavior risks in a follow-up wave.