Skip to main content
Glama

MCP Gateway

Прокси-сервер с отложенной загрузкой, который находится между Claude и вашими MCP-серверами. Вместо загрузки каждого сервера при запуске (что приводит к сбросу сотен схем инструментов в контекст и расходу токенов), шлюз предоставляет всего 4 легковесных инструмента. Серверы запускаются только тогда, когда они вам действительно нужны.

До: 10 MCP-серверов = 200+ схем инструментов, загружаемых в каждый диалог = тысячи потраченных впустую токенов.

После: 10 MCP-серверов за шлюзом = 4 загруженные схемы инструментов. Каждый сервер запускается по требованию.

Проблема

Каждый MCP-сервер, который вы добавляете в Claude Code, регистрирует все свои инструменты заранее. Типичный сервер имеет 10-30 инструментов, каждый с полной JSON-схемой. С 10 серверами это 100-300 определений инструментов, которые съедают ваше окно контекста еще до того, как вы зададите вопрос.

Большинство диалогов используют только 1-2 сервера. Остальные — это мертвый груз.

Related MCP server: MCP Gateway

Как это работает

Шлюз предоставляет Claude 4 инструмента:

Инструмент

Что он делает

gateway_list_servers

Показывает доступные серверы и их статус

gateway_load_server

Подключается к серверу и обнаруживает его инструменты

gateway_call_tool

Вызывает инструмент на подключенном сервере

gateway_reload_server

Переподключает сервер (подхватывает изменения в коде)

Когда Claude нужен сервер, он вызывает gateway_load_server. Шлюз запускает подпроцесс, выполняет рукопожатие MCP и кэширует соединение. Последующие вызовы повторно используют запущенный процесс.

Серверы, которые не используются, никогда не запускаются. Токены не тратятся.

Быстрый старт

git clone https://github.com/raiansar/mcp-gateway.git
cd mcp-gateway
./install.sh

Отредактируйте config.json, чтобы добавить свои серверы, а затем добавьте шлюз в Claude Code:

claude mcp add gateway -- /path/to/mcp-gateway/run.sh

Вот и все. Все ваши серверы теперь находятся за одним шлюзом.

Конфигурация

config.json — это простая карта имен серверов и деталей их подключения. Шлюз поддерживает транспорты stdio (локальные процессы) и HTTP (удаленные серверы).

Stdio-серверы (локальные)

{
  "servers": {
    "my-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "some-mcp-server@latest"],
      "env": {
        "API_KEY": "your-key"
      },
      "timeout": 30,
      "description": "What this server does"
    }
  }
}

HTTP-серверы (удаленные)

{
  "servers": {
    "remote-server": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer your-token"
      },
      "timeout": 60,
      "description": "Remote MCP server"
    }
  }
}

Python-серверы (uv)

{
  "servers": {
    "my-python-server": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/server", "server-name"],
      "env": {},
      "timeout": 120,
      "description": "Python server managed by uv"
    }
  }
}

Поля конфигурации

Поле

Обязательно

По умолчанию

Описание

type

Нет

stdio

Транспорт: stdio, http, sse или streamable-http

command

Да (stdio)

-

Команда для запуска сервера

args

Нет

[]

Аргументы команды

env

Нет

{}

Переменные окружения

url

Да (http)

-

URL сервера

headers

Нет

{}

HTTP-заголовки (токены авторизации и т.д.)

timeout

Нет

30/60

Тайм-аут запроса в секундах (30 для stdio, 60 для http)

description

Нет

-

Человекочитаемое описание, отображаемое в gateway_list_servers

Миграция существующих MCP-серверов

Если у вас уже настроены MCP-серверы в Claude Code, перенесите их на шлюз:

До~/.claude.json или конфигурации Claude Desktop):

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
    },
    "tavily": {
      "command": "npx",
      "args": ["-y", "tavily-mcp@latest"],
      "env": { "TAVILY_API_KEY": "tvly-xxx" }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
      "env": {}
    }
  }
}

Послеconfig.json):

{
  "servers": {
    "github": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" },
      "description": "GitHub - repos, issues, PRs, code search"
    },
    "tavily": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "tavily-mcp@latest"],
      "env": { "TAVILY_API_KEY": "tvly-xxx" },
      "description": "Tavily AI search"
    },
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
      "env": {},
      "description": "File system access"
    }
  }
}

Затем удалите отдельные серверы из Claude и добавьте только шлюз:

claude mcp remove github -s user
claude mcp remove tavily -s user
claude mcp remove filesystem -s user
claude mcp add gateway -- /path/to/mcp-gateway/run.sh

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

После настройки Claude автоматически использует шлюз. Типичное взаимодействие:

  1. Claude вызывает gateway_list_servers, чтобы увидеть, что доступно

  2. Claude вызывает gateway_load_server("github"), когда ему нужен GitHub

  3. Claude вызывает gateway_call_tool("github", "search_repositories", '{"query": "mcp"}') для использования инструмента

  4. Сервер GitHub остается запущенным для последующих вызовов в рамках той же сессии

Поле description в вашей конфигурации помогает Claude решить, какой сервер загрузить для конкретной задачи, поэтому пишите хорошие описания.

Чем это отличается от RTK

RTK — это CLI-прокси, который сжимает вывод команд оболочки (git, ls, тестовые раннеры и т.д.), чтобы сократить потребление токенов на 60-90%.

MCP Gateway решает другую проблему: он предотвращает раздувание схемы MCP-инструментов за счет отложенной загрузки серверов по требованию вместо предварительной регистрации всех инструментов.

MCP Gateway

RTK

Проблема

Схемы инструментов от простаивающих MCP-серверов тратят контекст

Многословный вывод CLI тратит контекст

Как

Отложенно загружает серверы, предоставляет 4 прокси-инструмента

Сжимает вывод команд перед тем, как он попадет в контекст

Когда

Запуск / регистрация инструментов

Время выполнения / выполнение команды

Область

Управление MCP-серверами

Команды оболочки (git, npm, cargo и т.д.)

Они дополняют друг друга. Используйте оба для максимальной экономии токенов.

Требования

  • Python 3.10+

  • Пакет mcp (устанавливается через install.sh)

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Acts as a proxy for multiple MCP servers, reducing context window usage from 15,000+ tokens to ~500 tokens by dynamically loading servers on-demand and exposing only 3 tools instead of all tool definitions.
    5
    GPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Aggregates multiple Model Context Protocol servers into a single gateway to provide unified search, description, and execution of tools. It reduces context limit issues by dynamically fetching specific tool schemas only when needed rather than loading all available tools at once.
    6 npm
    23
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Aggregates tools from multiple upstream MCP servers and exposes them through 4 meta-tools, enabling LLMs to discover and use hundreds of tools without loading all schemas upfront.
    2
    Apache 2.0