Skip to main content
Glama
respawn-llc

Tool Filter MCP

by respawn-llc

tool-filter-mcp

npm version

MCP-прокси-сервер, который фильтрует инструменты от вышестоящих MCP-серверов с помощью списка запрещенных регулярных выражений.

Поддерживается: ✅ Да (весна/лето 26)

Зачем это нужно?

Для эффективного проектирования контекста мы хотим минимизировать бесполезные токены. Большинство современных крупных агентов (например, Claude Code) НЕ удаляют описания инструментов из контекста. Даже если инструмент полностью запрещен и не используется, модель все равно получит его полное описание и все равно попытается вызвать этот инструмент (и получит сообщения об ошибках). Для больших MCP, таких как github, supabase, jetbrains IDE, atlassian, это катастрофично для контекста и приводит к его загрязнению на 40-60 тысяч бесполезных токенов. Вы хотели, чтобы ваш агент мог видеть описания тикетов jira? Пожалуйста, получите также эти 44 бесполезных инструмента для редактирования исполнителей на страницах confluence.

Этот MCP полностью решает проблему без каких-либо накладных расходов. Вклад сообщества приветствуется!

Related MCP server: mcp-tool-filter

Установка

# For HTTP/SSE MCP servers
npx @respawn-app/tool-filter-mcp --upstream <url> --deny <patterns>

# For stdio MCP servers
npx @respawn-app/tool-filter-mcp --upstream-stdio --deny <patterns> -- <command> [args...]

Использование

Базовый пример (HTTP/SSE)

Фильтрация инструментов, соответствующих шаблону .*_file$ от HTTP MCP-сервера:

npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --deny ".*_file$"

Базовый пример (stdio)

Фильтрация инструментов от локального stdio MCP-сервера:

npx @respawn-app/tool-filter-mcp \
  --upstream-stdio \
  --deny "dangerous_.*" \
  -- npx my-mcp-server

С переменными окружения (stdio)

Передача переменных окружения вышестоящему stdio-серверу:

npx @respawn-app/tool-filter-mcp \
  --upstream-stdio \
  --env "API_KEY=secret123" \
  --env "DEBUG=true" \
  --deny "admin_.*" \
  -- npx my-mcp-server

Несколько шаблонов

Используйте шаблоны, разделенные запятыми:

npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --deny "get_file_text,create_new_file,replace_text"

С заголовками аутентификации

Добавление пользовательских заголовков для аутентификации:

npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --header "Authorization: Bearer your-token-here" \
  --header "X-API-Key: your-api-key"

Заголовки поддерживают раскрытие переменных окружения (если они еще не были раскрыты вашим приложением):

npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --header "Authorization: Bearer $AUTH_TOKEN"

Список доступных инструментов

Узнайте, какие инструменты доступны, перед настройкой фильтров:

# Default table format
npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --list-tools

# Get comma-separated names for copy-paste
npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --list-tools --format=names

# Get full JSON with schemas
npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --list-tools --format=json

# Preview filtered results
npx @respawn-app/tool-filter-mcp \
  --upstream http://localhost:3000/sse \
  --deny ".*_file$" \
  --list-tools --format=names

С Claude Code

Вышестоящий HTTP/SSE сервер

Добавьте в ваш .mcp.json:

{
  "mcpServers": {
    "filtered-http-server": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream",
        "http://localhost:3000/sse",
        "--deny",
        "dangerous_tool_1,dangerous_tool_2"
      ],
      "type": "stdio"
    }
  }
}

С заголовками аутентификации (поддерживается раскрытие переменных окружения):

{
  "mcpServers": {
    "filtered-http-server": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream",
        "http://localhost:3000/sse",
        "--header",
        "Authorization: Bearer ${API_TOKEN}",
        "--header",
        "X-Custom-Header: $CUSTOM_VALUE",
        "--deny",
        "sensitive_.*"
      ],
      "type": "stdio"
    }
  }
}

Вышестоящий Stdio сервер

{
  "mcpServers": {
    "filtered-zen": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream-stdio",
        "--deny",
        "dangerous_.*,sensitive_.*",
        "--",
        "npx",
        "my-mcp-server"
      ],
      "type": "stdio"
    }
  }
}

С несколькими аргументами для вышестоящего сервера:

{
  "mcpServers": {
    "filtered-stdio-server": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream-stdio",
        "--deny",
        "admin_.*",
        "--",
        "node",
        "my-mcp-server.js",
        "--config=config.json",
        "--verbose"
      ],
      "type": "stdio"
    }
  }
}

С аргументами, начинающимися с тире (например, uvx):

{
  "mcpServers": {
    "filtered-uvx-server": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream-stdio",
        "--deny",
        "test_.*",
        "--",
        "uvx",
        "--from",
        "git+https://github.com/BeehiveInnovations/zen-mcp-server.git",
        "zen-mcp-server"
      ],
      "type": "stdio"
    }
  }
}

С переменными окружения для вышестоящего stdio-сервера:

{
  "mcpServers": {
    "filtered-server-with-env": {
      "command": "npx",
      "args": [
        "@respawn-app/tool-filter-mcp",
        "--upstream-stdio",
        "--env",
        "API_KEY=${MY_API_KEY}",
        "--env",
        "DEBUG=true",
        "--deny",
        "admin_.*",
        "--",
        "npx",
        "my-mcp-server"
      ],
      "type": "stdio"
    }
  }
}

Параметры CLI

Список инструментов

Вывод списка доступных инструментов без запуска прокси-сервера

  • --list-tools: Вывести список доступных инструментов от вышестоящего сервера и завершить работу

  • --format <type>: Формат вывода для --list-tools (по умолчанию: table)

    • table: Читабельная таблица с описаниями (обрезаны до 100 символов)

    • json: Полный вывод в формате JSON с полными схемами

    • names: Имена инструментов, разделенные запятыми, для удобного копирования

Режим подключения (взаимоисключающие)

Чтобы запустить прокси-сервер, необходимо указать ровно один из следующих параметров:

  • --upstream <url>: Подключение к вышестоящему HTTP/SSE MCP-серверу

  • --upstream-stdio: Запуск и подключение к вышестоящему stdio MCP-серверу

    • Требует команду и аргументы после разделителя --

    • Пример: --upstream-stdio -- npx zen-mcp-server

Общие параметры

  • --deny <patterns>: Разделенные запятыми регулярные выражения для фильтрации инструментов

Параметры режима HTTP/SSE

Применимы только при использовании --upstream:

  • --header <name:value>: Пользовательский HTTP-заголовок для передачи вышестоящему серверу (можно повторять для нескольких заголовков)

    • Формат: --header "Header-Name: value"

    • Поддерживает раскрытие переменных окружения: $VAR или ${VAR}

    • Пример: --header "Authorization: Bearer $TOKEN"

Параметры режима Stdio

Применимы только при использовании --upstream-stdio:

  • --env <KEY=value>: Переменная окружения для передачи вышестоящему stdio-серверу (можно повторять для нескольких переменных)

    • Формат: --env "KEY=value"

    • Пример: --env "API_KEY=secret" --env "DEBUG=true"

  • После разделителя -- укажите команду и все ее аргументы

    • Все, что идет после --, передается вышестоящему серверу

    • Поддерживаются аргументы, начинающиеся с тире (например, --from, --config и т.д.)

    • Пример: --upstream-stdio -- uvx --from git+https://... package-name

Требования

  • Node.js >= 20.0.0

  • Вышестоящий MCP-сервер с:

    • Транспортом SSE или Streamable HTTP (для --upstream), ИЛИ

    • Транспортом stdio (для --upstream-stdio)

Лицензия

MIT

Copyright (c) 2026 Respawn LLC

Related MCP Connectors

Related MCP Servers