Refract
Refract
Сокращает до 98% токенов, которые ваши AI-агенты тратят на использование инструментов MCP — без потерь.
Что именно меняется
Сервер | Инструментов | До | После | Сокращение |
filesystem (Anthropic) | 14 | 1 892 ток | 236 ток | −88% |
sequential-thinking | 1 | 926 ток | 20 ток | −98% |
Google Calendar | 5 | 5 010 ток | 660 ток | −87% |
Enterprise (Cal + Gmail + Drive) | 12 | 8 649 ток | 882 ток | −90% |
sample_app.js (JavaScript) | — | 799 ток | 284 ток | −64.5% |
sample_app.ts (TypeScript) | — | 378 ток | 266 ток | −29.6% |
ast_extractor.py (Python) | — | 3 633 ток | 890 ток | −75.5% |
Меньше отправленных токенов = ниже счета за API и быстрее ответы. И ничего не теряется. Каждая проверка подтверждает, что инструменты остаются на 100% работоспособными после сжатия.
Воспроизведите эти числа самостоятельно — каждый входной файл статический фикстур в репозитории, токены подсчитаны с помощью tiktoken cl100k_base:
python benchmarks/run_benchmark.py # the table above
python benchmarks/run_benchmark.py --json # machine-readable
python benchmarks/run_benchmark.py --fixture path/to/your_schemas.jsonRelated MCP server: Bifrost-MCP Gateway
Установка
Одной строкой (macOS / Linux) — устанавливает пакет и настраивает Claude Desktop:
curl -sSL https://raw.githubusercontent.com/LoudiliMed/Refract/main/install-refract.sh | shПередача скрипта из интернета в оболочку требует беглого просмотра: посмотреть install-refract.sh на GitHub. Он никогда не использует sudo.
Или напрямую через pip:
pip install refract-mcpДополнительные возможности:
pip install refract-mcp[semantic] # semantic tool routing with embeddings
pip install refract-mcp[multilang] # JavaScript, TypeScript, JSX, TSX supportДва режима
Режим 1 — Прокси MCP
Располагается между вашим агентом и любым MCP-сервером. Сжимает схемы инструментов на лету, чтобы агент не загружал полный каталог при каждом запросе.
Локальный подпроцесс (stdio):
refract-proxy --target "npx @modelcontextprotocol/server-filesystem /tmp" --verboseУдалённый HTTP/SSE-сервер:
# --url implies SSE transport (explicit, recommended for remote endpoints)
refract-proxy --url https://my-mcp-server.com/sse
# or with --transport flag (auto-detection can be overridden)
refract-proxy --target https://my-mcp-server.com/sse --transport sseФлаги прокси:
Флаг | По умолчанию | Описание |
| обязательный | Цель MCP: команда stdio, HTTP URL или JSON-файл |
| — | Псевдоним для |
| — | Удалённая конечная точка SSE/HTTP — подразумевает |
| auto | Принудительный транспорт к цели: |
| 30 | Тайм-аут подключения для SSE-целей (3 повтора) |
| stdio | Как прокси обслуживает вашего агента |
| 8080 | Порт прослушивания прокси в режиме |
| выкл | Выводить количество токенов на каждый запрос |
| WARNING | DEBUG / INFO / WARNING / ERROR |
Добавление в Claude Desktop:
{
"mcpServers": {
"my-server-via-refract": {
"command": "/path/to/refract-proxy",
"args": [
"--target",
"npx @modelcontextprotocol/server-filesystem /path/to/folder",
"--verbose"
]
}
}
}Для удалённого MCP-сервера (SSE):
{
"mcpServers": {
"remote-via-refract": {
"command": "/path/to/refract-proxy",
"args": ["--url", "https://my-mcp-server.com/sse"]
}
}
}refract-wrap-all — обёртка для всех серверов сразу
Вместо того чтобы редактировать записи по одной (или запускать refract-install для каждого сервера), refract-wrap-all переписывает все stdio-серверы в claude_desktop_config.json так, чтобы они проходили через refract-proxy одной командой:
# Preview what would change — writes nothing
refract-wrap-all --dry-run
# Wrap every stdio server not already going through refract
refract-wrap-all
# Restore the original commands
refract-wrap-all --unwrapПример: эта запись
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/tmp"],
"env": {"MY_VAR": "1"}
}
}
}превращается в
{
"mcpServers": {
"filesystem": {
"command": "/path/to/refract-proxy",
"args": ["--stdio-cmd", "npx @modelcontextprotocol/server-filesystem /tmp"],
"env": {"MY_VAR": "1"}
}
}
}Гарантии:
Резервная копия конфигурации создаётся перед каждой записью (
claude_desktop_config.json.bak, затем.bak2,.bak3… — существующая резервная копия никогда не перезаписывается).Поля
env,cwdи любые другие поля сервера сохраняются.Серверы, уже проходящие через
refract-proxyилиrefract-server, пропускаются (already wrapped).Удалённые SSE/HTTP-серверы (записи с
url) пропускаются — обёртываются только stdio-серверы.--unwrap— точная обратимая операция: wrap затем unwrap восстанавливает исходную команду, аргументы и поля.
Транспорты, поддерживаемые refract-proxy
Флаг | Значение | Описание |
| Streamable HTTP | Текущий стандарт (спецификация MCP 2025-03-26). Используйте с удалёнными MCP-серверами. |
| SSE | Устаревший транспорт, оставлен для совместимости. Используйте, если сервер не поддерживает Streamable HTTP. |
| stdio-подпроцесс | Локальная команда (по умолчанию, когда |
(опущен) | автоопределение | Определяется по |
Оба sse и http требуют HTTP(S) URL в --target.
# Connect to a remote MCP server via Streamable HTTP (recommended)
refract-proxy --target "https://my-mcp-server.com/mcp" --transport http
# Connect via SSE (legacy)
refract-proxy --target "https://my-mcp-server.com/sse" --transport sse
# Local subprocess (auto-detected, --transport stdio optional)
refract-proxy --target "npx @modelcontextprotocol/server-filesystem /tmp"Режим 2 — MCP-сервер
Предоставляет вашу кодовую базу как MCP-сервер. Ваш агент может проиндексировать репозиторий, получить сжатый контекст файла, развернуть конкретные функции, проанализировать влияние, обнаружить критические изменения и нанести на карту риски безопасности.
refract-server --root /path/to/your/repoДобавление в Claude Desktop:
{
"mcpServers": {
"refract-code": {
"command": "/path/to/refract-server",
"args": ["--root", "/path/to/your/repo"]
}
}
}Как это работает (без жаргона)
Представьте библиотеку с 50 книгами.
Без Refract: ваш агент получает подробное описание всех 50 книг на каждый вопрос, даже если ответу нужна только одна.
С Refract: агент сначала получает список названий (индекс). Как только он понимает, какая книга нужна, он получает только содержимое этой книги.
Технически:
Индекс (всегда отправляется): только названия инструментов и краткое описание каждого.
Детали (отправляются только при необходимости): полное описание используемого инструмента, всё необходимое для его правильного использования, ничего лишнего.
Проверка: после каждого сжатия Refract автоматически проверяет, что ничего важного не удалено. Если есть сомнения, отправляется полная версия — без риска.
В этом процессе не задействована ни одна AI-модель. Он полностью автоматический, быстрый и детерминированный.
Инструменты прокси MCP
Инструмент | Что делает |
Сжатие | Сжимает схемы инструментов на лету, до 98% сокращения |
Проверка сигнала | Проверяет вызываемый контракт после каждого сжатия |
Семантическая маршрутизация | Определяет нужный инструмент с помощью эмбеддингов (опционально) |
Кэширование подсказок | Вставляет Anthropic cache_control для повторяющихся запросов |
Инструменты MCP-сервера
Инструмент | Вход | Выход |
index_repo | путь к репозиторию | агрегированный индекс всех файлов Python, JS, TS |
get_compressed | путь к файлу | сжатая структура + статистика токенов |
expand | путь к файлу + имена функций | исходный код + контекст зависимостей |
blast_radius | путь к файлу + имя функции | все функции, которые сломаются при изменении цели |
semantic_diff | путь к файлу + старый исходник + новый исходник | критические изменения против изменений только тела |
semantic_diff_branches | путь к репозиторию + файл + функция + базовая/целевая ссылки git | semantic_diff одной функции между двумя ветками/коммитами |
security_surface | путь к репозиторию | карта опасных вызовов (subprocess, eval, pickle, requests) |
Проверка здоровья репозитория
refract-status --root /path/to/repo
refract-status --root /path/to/repo --jsonФлаг | Описание |
| Путь для анализа (по умолчанию: текущая директория) |
| Машиночитаемый вывод |
Показывает: файлы по языкам, исходные и сжатые токены, функции/классы в индексе, опасные вызовы по категориям, языки без поддержки tree-sitter.
blast_radius
Попросите Claude показать, какие функции сломаются, если вы измените целевую функцию.
Пример результата:
{
"target": "authenticate",
"direct_callers": ["login_user"],
"all_impacted": ["login_user", "verify_session", "admin_access"],
"impacted_count": 3,
"risk_level": "MEDIUM"
}Уровни риска: LOW (от 0 до 2 затронутых), MEDIUM (от 3 до 5), HIGH (6 и более).
semantic_diff
Обнаруживает критические изменения API, сравнивая интерфейсы функций, а не их тела. Используйте как шлюз CI.
Пример результата:
{
"breaking": ["authenticate"],
"body_only": ["logout"],
"added": ["new_function"],
"removed": [],
"unchanged": ["hash_password"],
"is_breaking": true
}Если is_breaking равно true, PR изменяет публичный API и требует проверки.
security_surface
Наносит на карту каждую функцию, вызывающую опасные примитивы, во всём репозитории.
HIGH риск: subprocess, os.system, eval, exec, pickle, ctypes
MEDIUM риск: open (режим записи), socket, requests, httpx, urllib
Пример результата:
{
"high_risk": [
{
"file": "src/llm_client.py",
"function": "run_command",
"calls": ["subprocess.run"]
}
],
"summary": {
"high_risk_count": 1,
"medium_risk_count": 3,
"total_functions_scanned": 87,
"clean_files": 8
}
}Поддерживаемые языки
Python (через модуль ast), JavaScript, TypeScript, JSX, TSX (через tree-sitter, опционально: pip install refract-mcp[multilang]).
Язык определяется автоматически по расширению файла. Элегантный откат, если tree-sitter не установлен.
Встроенное кэширование Anthropic
Refract интегрируется с кэшированием подсказок Anthropic. as_anthropic_tools() автоматически помечает сжатый каталог как кэшируемый, что ещё больше снижает затраты на повторные запросы.
Пример за 30 дней, 100 запросов в день, 5 000 токенов схем:
Сценарий | Стоимость |
Без Refract, без кэша | $45.00 |
С Refract + кэш | $1.49 |
Устранение неполадок
"Failed to spawn process: No such file or directory" в Claude Desktop
Claude Desktop не может найти refract-proxy в своём PATH. Найдите абсолютный путь и используйте его напрямую:
which refract-proxyЗатем используйте полный путь в claude_desktop_config.json:
{
"mcpServers": {
"my-tool-via-refract": {
"command": "/full/path/to/refract-proxy",
"args": [
"--target",
"npx @modelcontextprotocol/server-filesystem /path/to/folder"
]
}
}
}Работает с
Claude Desktop, Cursor, любым клиентом, соответствующим стандарту MCP, любым существующим MCP-сервером.
Лицензия
MIT — свободное использование, включая коммерческое.
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA proxy server that wraps existing MCP servers to significantly reduce token consumption by compressing tool descriptions into a two-step interface. It enables users to integrate extensive toolsets without exceeding context limits or incurring high API costs.106Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnterprise-grade dynamic MCP proxy that eliminates token bloat by lazy-loading tool schemas based on semantic intent, enabling efficient orchestration of multiple backend tools from a single endpoint.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP proxy that minifies tool schemas to reduce context tokens, supporting minify and defer modes for efficient tool access.
- AlicenseAqualityAmaintenanceMCP server and local proxy that compresses LLM prompts, tool output, and replies to cut token cost, with a quality gate that reverts any step that does not save. Exposes llmtrim_compress, llmtrim_compress_text, and llmtrim_stats.3213Mozilla Public 2.0
Related MCP Connectors
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LoudiliMed/Refract'
If you have feedback or need assistance with the MCP directory API, please join our Discord server