liquid_connectLABSCO SUMMARY
Read-only until you say otherwise, and it tells you the cost before it spends it.
Two decisions make this usable in an agent loop rather than just impressive: writes are gated behind an environment variable, and every adapter can be asked what a call would cost in tokens before the call happens. Errors carry a structured recovery with a next action — a 401 points at storing credentials, a 404 at repairing the adapter — so an agent can respond without parsing error prose.
What it is
An adapter layer between an agent and everything it might need to reach. Given an endpoint, Liquid discovers the interface, maps it to the fields you asked for, and hands back typed records — the same small API whether the target is a REST or GraphQL API, a Postgres or MongoDB database, another MCP server, or an industrial protocol. An LLM does the learning once at setup and again when the upstream drifts; the data path itself makes no model call.
What you get
- An interface discovered and mapped to your target model, then reusable as an adapter —
liquid_connect,liquid_discover - Typed records fetched from that adapter, with pagination envelopes flattened and timestamps and IDs normalised across sources —
liquid_fetch - Server-side search and aggregation so filtering happens upstream instead of after a full fetch —
liquid_query - Expected item count and token size for a call before you make it, so a request that would not fit the budget can be skipped —
liquid_estimate - The adapters already stored, which persist under
~/.liquidalong with credentials —liquid_list_adapters - Database insert, update and delete, exposed only when the server is started with
LIQUID_ALLOW_WRITES=1—liquid_execute
Requirements
Python 3.12+ and pip install liquid-api, which brings the liquid-mcp command; the package is liquid-api (0.67.0). The tool surface is read-only unless you set LIQUID_ALLOW_WRITES. An LLM key is needed only for discovering a REST API with no machine-readable spec and for field mapping — OPENAI_API_KEY with an optional OPENAI_BASE_URL, or GEMINI_API_KEY, or ANTHROPIC_API_KEY, installed as pip install 'liquid-api[discovery]'. Self-describing interfaces (OpenAPI, GraphQL, gRPC, MCP, A2A, WSDL) and all databases discover with no LLM at all.
Setup effort
One command — uvx liquid-mcp
USE CASES
Reaching an API nobody has written a connector for
Hand it the endpoint and the fields you want; discovery works out the shape and auth, and you get typed records without writing client code.
Querying a database without pulling the table into context
Filter and aggregate server-side, so the model sees the answer rather than the rows it would have had to scan.
Deciding whether a call is worth the context
Estimate the item count and token size first, then skip or narrow the request when it would not fit the budget.
Comparing data across two services that disagree on shape
Normalise money, timestamps and identifier fields across sources so records from different vendors line up on the same keys.
Letting an agent write to a store, deliberately
Start the server with writes enabled to expose insert, update and delete; leave the variable unset and the write tool is not advertised at all.
7 tools
Listed in project docs. Your client may show a different list.
liquid_fetchliquid_queryliquid_estimateliquid_discoverliquid_list_adaptersliquid_executeBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
uvx on PATH
Optional
OPENAI_API_KEY in your environment
INSTALLATION
Connect your client
Server setup
uvx liquid-mcpMCP Clients
Claude Code
claude mcp add liquid --scope user -e OPENAI_API_KEY=<YOUR_OPENAI_API_KEY> -- uvx liquid-mcpClaude Desktop — MCPB bundle
Install uv, which the bundle needs to run liquid-mcp.
git clone https://github.com/ertad-family/liquid.git
cd liquid/packages/liquid-mcp/mcpb
npx @anthropic-ai/mcpb pack .Double-click the .mcpb file that command produces, or in Claude Desktop open Settings → Extensions → Advanced → Install Extension… and pick it.
Enter a model key (OpenAI, Gemini or Anthropic) when the installer asks; it is stored in the OS keychain.