Skip to main content
Glama

ShadowRun

Локально-ориентированный stdio-прокси для MCP-серверов. Он располагается между AI-агентом (Claude Code, Cursor и т.д.) и реальным MCP-сервером, перехватывает деструктивные вызовы инструментов (запись, удаление, SQL-мутации и т.д.) до их выполнения и удерживает их в памяти, пока вы не зафиксируете или отклоните их через локальную панель управления.

В отличие от наивного перехватчика, имитирующего успех, ShadowRun не отвечает агенту, пока перехваченный вызов не будет разрешен. Имитация ответа (например, для INSERT ... RETURNING id) позволяет агенту действовать на основе данных, которых еще не существует, и расходится с реальностью в его представлении о состоянии — поэтому перехваченные вызовы просто ждут (с таймаутом).

Область применения (v0.1)

Это намеренно узкая область: CLI для одного разработчика для локальных MCP-серверов (Postgres, файловая система и т.д.), используемых с Claude Code / Cursor. Это не шлюз для обеспечения соблюдения политик команды, не имеет аутентификации и не сохраняет состояние между перезапусками — см. Ограничения ниже, прежде чем полагаться на него для чего-либо, кроме вашей собственной машины.

Related MCP server: Agentrim MCP

Установка и запуск

npm install
npm run build

Направьте конфигурацию вашего агента на прокси вместо реального сервера:

{
  "mcpServers": {
    "postgres": {
      "command": "node",
      "args": [
        "/path/to/shadowrun-mcp/dist/index.js",
        "npx", "-y", "@modelcontextprotocol/server-postgres",
        "postgresql://localhost:5432/devdb"
      ]
    }
  }
}

Откройте http://127.0.0.1:4040, чтобы увидеть ожидающие мутации, и зафиксируйте или отклоните каждую. Вызовы только для чтения (get*, list*, search*, ...) проходят немедленно и никогда не появляются на панели управления.

Как работает классификация

См. src/interceptor.ts — DEFAULT_CONFIG. Вызов инструмента перехватывается, если его имя соответствует шаблону изменяющего глагола (write, delete, create, ...) и не соответствует сначала шаблону безопасного чтения, или если любой строковый аргумент содержит ключевое слово SQL-мутации (insert into, drop table, ...). Это эвристика, а не гарантия — см. Ограничения.

Ограничения

  • Эвристический классификатор. Регулярные выражения по именам инструментов и тексту аргументов могут пропустить хитро названные изменяющие инструменты и могут чрезмерно перехватывать странно названные инструменты чтения. Относитесь к этому как к лежачему полицейскому, а не как к границе безопасности.

  • Нет аутентификации на панели управления. Она привязывается только к 127.0.0.1, но любой локальный процесс (или вредоносная страница, выполняющая DNS-ребандинг, теоретически), который может достичь этого порта, может зафиксировать/отклонить. Не запускайте это на общей или ненадежной машине.

  • Только в памяти. Перезапуск прокси удаляет все ожидающие мутации — исходный вызов агента просто истечет по таймауту.

  • Один разработчик, локальное использование. Нет общего журнала аудита или общегруппового обеспечения политик. Если вам это нужно, обратитесь к хостинговому MCP-шлюзу.

Лицензия

AGPL-3.0

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-dependency local proxy that wraps any MCP server to redact secrets, strip hidden-Unicode prompt injection, and block writes to protected paths like ~/.ssh and .env.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A least-privilege enforcement proxy for MCP servers. It sits between MCP clients and upstream servers, enforcing tool policies, hiding denied tools, requiring human approval for risky actions, and providing a structured audit trail.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A zero-infrastructure, local proxy that wraps any stdio MCP server to add audit logging, policy enforcement with regex guards, and per-session/per-day budgets.
    MIT