ertad-family/liquid

ertad-family/liquid

от ertad-family
Подключает AI-агентов к любым API, БД, IoT и промышленным системам без написания коннекторов - сам определяет интерфейс, нормализует данные и самовосстанавливается при изменениях схемы.

Liquid

Connect your AI agent to anything — with no connector to write or maintain.

Point Liquid at a URL or a database and it works out the interface for you: discovers its shape, maps it to the fields you asked for, and handles auth, pagination and normalization — typed records, no client code. When the upstream drifts, it re-maps and keeps going. The same small API — fetch · query · write · sense — reaches web APIs, databases, other agents (MCP/A2A), email, and even IoT and industrial systems (MQTT, Modbus, OPC UA, BACnet). An LLM does the learning at setup (and on drift); the data path itself makes no model call.

PyPI License Python


What an agent can reach through Liquid

One agent-facing API (fetch · query · write · sense) over everything an agent might need to touch — Liquid figures out how to talk to it so the agent doesn't have to. It's the agent's senses and hands: fetch/query probe, sense perceives a live event stream, write acts on the world.

  • Web APIs & messaging — REST/JSON, GraphQL, SOAP/WSDL, gRPC, WebSocket, SSE/NDJSON streams, MQTT (IoT pub/sub — subscribe to sense, publish to act)
  • Email — IMAP/SMTP (any provider, app-password or OAuth2 XOAUTH2) and the Gmail API (OAuth2): read a mailbox, sense new mail as it arrives, and send
  • Industrial / OT — Modbus (PLCs, sensors) and OPC UA (Industry-4.0 nodes, native subscriptions) for the factory floor; BACnet for buildings (HVAC/BMS) — read, write, and sense
  • Android devices — phones, TV boxes, kiosks via ADB: sense logcat, read shell, act with input/am
  • Other agents & tools — any MCP server, A2A agents, ChatGPT-plugin manifests
  • Databases — Postgres (+ pgvector), MySQL/MariaDB, SQLite, DuckDB, SQL Server, Neo4j (graph), MongoDB (documents), Redis (key-value)
  • People, places & things — a human, a home, or a car as a node via connectors: Telegram (perceive messages, send replies), Home Assistant (perceive a whole smart home's state changes, act via call_service — lights, locks, media), and Smartcar (perceive a connected vehicle across ~30 brands — location/battery/fuel — and act: lock/unlock, charge)
Инструменты были проиндексированы:
liquid_connectидемпотентныйвнешний мир

Однократная настройка для API. Обнаруживает API по url, использует LLM для сопоставления его ответов с вашей target_model и сохраняет переиспользуемый адаптер; возвращает adapter_id, который затем передаёте в liquid_fetch / liquid_query / liquid_estimate. Побочные эффекты: выполняет исходящие HTTP(S)-запросы к url, вызывает настроенную LLM (требуется API-ключ) и сохраняет адаптер вместе с учётными данными в ~/.liquid. Идемпотентен: повторное подключение с теми же url и target_model использует существующий адаптер, а не создаёт дубликат. Используйте один раз на каждый API. Для быстрого просмотра без сохранения используйте liquid_discover; для чтения данных из уже подключённого API — liquid_fetch.

Подключение к API (однократная настройка)

Параметры
  • credentialsobject

    Необязательные секреты для API, требующего авторизации, например {"api_key": "..."}, {"token": "..."} или {"username": "...", "password": "..."}. Хранятся в зашифрованном виде в ~/.liquid и автоматически подставляются при каждом последующем запросе. Для публичных API не указывайте.

  • target_modelobjectобязательный

    Форма записи, которую вы хотите получить на выходе: плоский словарь соответствий вида «имя поля -> тип», например {"name": "str", "price": "float", "in_stock": "bool"}. Liquid сопоставляет сырой ответ API ровно с этими полями; всё остальное отбрасвается.

  • urlstringобязательный

    Базовый URL или конкретная конечная точка API (например, https://api.example.com или https://api.example.com/v1/users). Также принимает конечную точку GraphQL, URL WSDL или адреса grpc:// / wss://.

liquid_discoverтолько чтениеидемпотентныйвнешний мир

Проверяет структуру API: имя сервиса, метод обнаружения, тип аутентификации и список эндпоинтов — без создания или сохранения адаптера. Побочные эффекты: выполняет исходящие HTTP(S)-запросы к url для разведки и может вызывать настроенную LLM для API, которые не публикуют машиночитаемую спецификацию (эвристика REST). Только чтение: ничего не сохраняется. Используйте это, чтобы предварительно изучить незнакомое API; когда будете готовы реально читать данные, вызывайте liquid_connect — он обнаруживает, и отображает, и сохраняет переиспользуемый адаптер.

Проверить API без сохранения адаптера

Параметры
  • credentialsobject

    Необязательные секреты для API, требующего авторизации, например {"api_key": "..."}, {"token": "..."} или {"username": "...", "password": "..."}. Хранятся в зашифрованном виде в ~/.liquid и автоматически подставляются при каждом последующем запросе. Для публичных API не указывайте.

  • urlstringобязательный

    Базовый URL API для проверки (те же форматы, что и url у liquid_connect).

liquid_estimateтолько чтениеидемпотентный

Предварительная оценка для fetch — прогнозируемое количество элементов, байт, токенов, кредитов и задержка, каждый параметр с указанием уверенности и источника — без выполнения каких-либо HTTP-вызовов или вызовов LLM. Только чтение и бесплатно. Возвращает {estimate: {...}}. Проверьте это перед потенциально большим liquid_fetch, чтобы решить, стоит ли сначала сузить выборку с помощью liquid_query (фильтр/агрегация). Требуется adapter_id от liquid_connect.

Оценить fetch (без вызова)

Параметры
  • adapter_idstringобязательный

    Идентификатор адаптера, возвращаемый liquid_connect (или перечисляемый liquid_list_adapters).

  • endpointstring

    Необязательный путь эндпоинта, над которым выполняется операция (например, "/users"); если не указан, используется основной эндпоинт адаптера. Используйте путь, который показывает liquid_connect / liquid_list_adapters.

liquid_fetchтолько чтениеидемпотентныйвнешний мир

Извлекает записи через подключенный адаптер, сопоставленные с target_model, который вы задали при подключении — детерминированно, без вызова LLM. Побочные эффекты: отправляет исходящий HTTP(S)-запрос только на чтение к подключенному API, используя сохраненные учетные данные; подчиняется лимитам частоты запросов этого API (Liquid заранее применяет троттлинг и возвращает ошибки 429 с подсказками для повторной попытки). Возвращает {records, data: [до 100 сопоставленных записей], _meta}. Требуется adapter_id из liquid_connect. Используйте это для получения полных записей; для фильтрации/агрегации на стороне сервера и получения меньшего ответа используйте вместо этого liquid_query; чтобы оценить размер выгрузки до её выполнения, сначала вызовите liquid_estimate.

Извлекает записи с помощью адаптера

Параметры
  • adapter_idstringобязательный

    Идентификатор адаптера, возвращаемый liquid_connect (или перечисляемый liquid_list_adapters).

  • endpointstring

    Необязательный путь эндпоинта, над которым выполняется операция (например, "/users"); если не указан, используется основной эндпоинт адаптера. Используйте путь, который показывает liquid_connect / liquid_list_adapters.

liquid_list_adaptersтолько чтениеидемпотентный

Перечислить адаптеры, уже подключенные на этой машине (читать из ~/.liquid) — только чтение, без сетевых вызовов, без LLM. Каждая запись содержит adapter_id, название сервиса, source url и пути эндпоинтов. Вызывайте это, чтобы найти adapter_id для liquid_fetch / liquid_query / liquid_estimate, или чтобы проверить, подключено ли уже API, перед вызовом liquid_connect.

Список подключенных адаптеров

Параметры

Без параметров.

liquid_queryтолько чтениеидемпотентныйвнешний мир

Выполняет поиск или агрегацию на стороне сервера через адаптер и возвращает только ответ, без полного набора данных — детерминированно, без вызова LLM, только чтение. Два режима: через group_by/agg для агрегации (количество, суммы и т.д.) или через where/fields/limit для фильтрации и проекции. Побочные эффекты: исходящий HTTP(S) запрос на чтение к подключённому API, с ограничением частоты, как у liquid_fetch. Возвращает результаты поиска {records, data, _meta} или агрегацию {result, _meta}. Используйте этот инструмент вместо liquid_fetch, когда нужно только отфильтрованное подмножество, количество или сводка — он возвращает гораздо меньше токенов.

Поиск или агрегация через адаптер

Параметры
  • adapter_idstringобязательный

    Идентификатор адаптера, возвращаемый liquid_connect (или перечисляемый liquid_list_adapters).

  • aggobject

    Aggregate-mode: агрегации для каждой группы в виде field -> op, например {"price": "sum", "id": "count"}. Указывается вместе с group_by.

  • endpointstring

    Необязательный путь эндпоинта, над которым выполняется операция (например, "/users"); если не указан, используется основной эндпоинт адаптера. Используйте путь, который показывает liquid_connect / liquid_list_adapters.

  • fieldsstring[]

    Проекция в режиме поиска: имена полей target_model, которые нужно вернуть, например ["name", "price"]. Если не указано, возвращаются все поля.

  • group_bystring

    Режим агрегации: поле target_model для группировки, например "category".

  • limitinteger

    Максимальное количество записей для возврата в режиме поиска (по умолчанию 100).

  • whereobject

    Фильтр поискового режима в виде поля -> значение (или поля -> {op: значение}), например: {"status": "active", "price": {"gt": 100}}. Ключи - поля target_model.

liquid_senseтолько чтениевнешний мир

Узнай, что произошло в мире с момента последней проверки: опрашивай endpoint на предмет событий, произошедших после cursor - новые строки в БД, опубликованные сообщения и т.д. Возвращает пакет событий (каждое с modality, payload и cursor) плюс next_cursor, чтобы продолжить с него. Это читающая сторона чувств агента - вызывай его повторно, передавая последний next_cursor, чтобы оставаться в курсе изменений, не пересматривая старые события. Ограничен max_events / max_seconds, поэтому всегда возвращает результат быстро. Где liquid_fetch - однократное получение текущего состояния, liquid_sense воспринимает, что изменилось с последней проверки. Требует adapter_id от liquid_connect. Поддерживают только endpoints, способные к восприятию (таблицы SQL, каналы Redis, WebSocket, потоки SSE/NDJSON, уведомления MCP, MQTT, Modbus, OPC UA, BACnet, ADB logcat); остальные возвращают ошибку. Только для чтения - он воспринимает, он ничего не меняет.

Проверить сенсоры агента (опрос на наличие новых событий)

Параметры
  • adapter_idstringобязательный

    Идентификатор адаптера, возвращаемый liquid_connect (или перечисляемый liquid_list_adapters).

  • cursorstring

    Токен для возобновления из next_cursor предыдущего вызова; при пропуске начинает с текущего момента.

  • endpointstring

    Необязательный путь эндпоинта, над которым выполняется операция (например, "/users"); если не указан, используется основной эндпоинт адаптера. Используйте путь, который показывает liquid_connect / liquid_list_adapters.

  • max_eventsnumber

    Максимальное количество событий, возвращаемых этим вызовом (по умолчанию 50).

  • max_secondsnumber

    Максимальное количество секунд ожидания событий перед возвратом (по умолчанию 5).

0.1.0основная

Выберите клиент, чтобы установить ertad-family/liquid:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "ertad-family-liquid-d47if4a86w": {
      "type": "stdio",
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"ertad-family-liquid-d47if4a86w\",\"type\":\"stdio\",\"env\":{\"OPENAI_API_KEY\":\"sk-...\"},\"args\":[\"liquid-mcp\"],\"command\":\"uvx\"}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add ertad-family-liquid-d47if4a86w --env OPENAI_API_KEY=sk-... -- uvx liquid-mcp

Либо через JSON-конфиг:

claude mcp add-json ertad-family-liquid-d47if4a86w "{\"env\":{\"OPENAI_API_KEY\":\"sk-...\"},\"args\":[\"liquid-mcp\"],\"command\":\"uvx\"}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add ertad-family-liquid-d47if4a86w --env OPENAI_API_KEY=sk-... -- uvx liquid-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.ertad-family-liquid-d47if4a86w]
command = "uvx"
args = ["liquid-mcp"]

[mcp_servers.ertad-family-liquid-d47if4a86w.env]
OPENAI_API_KEY = "sk-..."
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите ertad-family/liquid, а в поле команды запуска — строку ниже:
uvx liquid-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx",
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например ertad-family-liquid-d47if4a86w.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: ertad-family-liquid-d47if4a86w
    command: uvx
    args:
      - "liquid-mcp"
    env:
      OPENAI_API_KEY: sk-...
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "ertad-family-liquid-d47if4a86w": {
      "env": {
        "OPENAI_API_KEY": "sk-..."
      },
      "args": [
        "liquid-mcp"
      ],
      "command": "uvx"
    }
  }
}

Похожие MCP-сервера

espressif/esp-rainmaker-mcp

espressif/esp-rainmaker-mcp

от espressif

MCP-сервер для управления IoT-устройствами ESP RainMaker через ИИ-клиенты (Claude, Cursor). Позволяет получать статус узлов, менять параметры, управлять расписаниями и группами устройств, используя...

Python⭐ 18
thingsboard/thingsboard-mcp

thingsboard/thingsboard-mcp

официальный

от thingsboard

MCP сервер для ThingsBoard: управляйте IoT-устройствами, телеметрией и тревогами через естественный язык. 120+ инструментов для автоматизации операций с сущностями и OTA-пакетами. Идеален для DevOp...

Java⭐ 98
claymore666/debmatic-mcp

claymore666/debmatic-mcp

от claymore666

ccu-mcp — MCP-сервер для HomeMatic, напрямую подключается к CCU и открывает AI-ассистентам (Claude, Cursor) доступ к устройствам, комнатам и программам. Управляйте отоплением, проверяйте датчики и ...

TypeScript⭐ 9
0x1abin/matter-controller-mcp

0x1abin/matter-controller-mcp

от 0x1abin

MCP-сервер для управления умным домом по протоколу Matter. Помогает находить, подключать и управлять светом, выключателями и датчиками. Поддерживает диммирование, цвет, а также чтение и запись атри...

JavaScript⭐ 8
lpigeon/unitree-go2-mcp-server

lpigeon/unitree-go2-mcp-server

от lpigeon

MCP инструмент управляет роботом Unitree Go2 через естественный язык: LLM интерпретирует команды и преобразует их в ROS2 действия. Сервер объединяет AI и ROS2 для интуитивного управления четвероногим роботом.

Python⭐ 86
voska/hass-mcp

voska/hass-mcp

от voska

Управляет умным домом через Home Assistant: включает свет, опрашивает датчики, ищет устройства и автоматизации. Экономно расходует токены.

Python⭐ 348
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин