内容
# Liquid
**连接您的 AI 代理到任何事物 — 无需编写或维护连接器。**
将 Liquid 指向一个 URL 或数据库,它会自动为您找出接口:
发现其结构,映射到您要求的字段,并处理身份验证、
分页和规范化 — 类型记录,无需客户端代码。当上游发生变化时,
它会重新映射并继续。相同的简单 API — `fetch` · `query` ·
`write` · `sense` — 可以访问 Web API、数据库、其他代理(MCP/A2A)、电子邮件、
甚至物联网和工业系统(MQTT、Modbus、OPC UA、BACnet)。LLM 在设置时进行学习(和漂移);
数据路径本身不调用模型。
[](https://pypi.org/project/liquid-api/)
[](https://github.com/ertad-family/liquid/blob/main/LICENSE)
[](https://www.python.org/)
---
## Liquid 可以连接的工具
一个代理接口(`fetch` · `query` · `write` · `sense`)可以访问代理可能需要的所有内容 —
Liquid 可以自动识别 *如何连接*,因此代理不需要。 这是代理的感知 **和** 操作:
`fetch`/`query` 探测,`sense` 感知实时事件流,`write` 操作世界。
- **Web API 和消息传递** — REST/JSON,GraphQL,SOAP/WSDL,gRPC,WebSocket,
SSE/NDJSON 流,MQTT(IoT 发布/订阅 — 订阅感知,发布操作)
- **电子邮件** — IMAP/SMTP(任何提供商,应用密码或 OAuth2 `XOAUTH2`)和
Gmail API(OAuth2):读取邮箱,`sense` 新邮件到达,发送
- **工业 / OT** — Modbus(PLC,传感器)和 OPC UA(工业 4.0 节点,
原生订阅)适用于工厂车间;BACnet 适用于建筑物(暖通空调/建筑管理系统)—
读取,写入,感知
- **Android 设备** — 手机,电视盒,信息亭通过 ADB:感知 `logcat`,读取
`shell`,操作 `input`/`am`
- **其他代理和工具** — 任何 MCP 服务器,A2A 代理,ChatGPT 插件清单
- **数据库** — Postgres(+ pgvector),MySQL/MariaDB,SQLite,DuckDB,SQL Server,
Neo4j(图),MongoDB(文档),Redis(键值)
- **人,地点和事物** — 一个人类,一个家或一辆车作为节点通过
`connectors`:Telegram(感知消息,`send` 回复),Home Assistant
(感知整个智能家居的状态变化,通过 `call_service` 操作 — 灯,
锁,媒体),和 Smartcar(感知连接的车辆,跨约 30 个品牌 —
位置/电池/燃料 — 和操作:`lock`/`unlock`,充电)
将它指向一个 `https://…` 端点,一个 `postgres://…` / `mongodb://…` / `redis://…`
DSN,一个 `grpc://…` 目标,或另一个 MCP 服务器 — 发现识别接口,
学习其结构,并为您的代理提供类型记录。相同的 `fetch`/`query`/`write` 无论底层是什么都起作用。
无需为每个服务编写连接器;集成在上游更改时自行维护。
```python
# 一个它从未见过的 Web API — 没有规范,没有连接器,没有身份验证
adapter = await liquid.get_or_create(
"https://api.openbrewerydb.org/v1/breweries",
target_model={"name": "str", "city": "str", "country": "str"},
auto_approve=True,
)
breweries = await liquid.fetch(adapter) # 类型记录
# 数据库只是另一个接口 — 相同的 API,也可以写入
db = await liquid.get_or_create("postgresql://reader@host/shop",
target_model={"id": "int", "email": "str"},
auto_approve=True)
orders = await liquid.fetch(db, "/public/orders")
await liquid.write(db, "/public/orders", op="insert",
values={"email": "a@b.com", "total_cents": 9900},
allow_write=True) # 需要许可;修改存储
```
您不需要编写连接器和模式:LLM 在设置时学习接口(数据库自我检查并跳过此步骤),
并且集成在上游漂移时**自我修复**。运行时是纯确定性传输 —
可预测的成本,可复制的行为,无需维护。
## 为现实代理的约束而构建
连接一切是一半的工作。另一半是代理为每个令牌付费,
遇到不一致的格式时感到困惑,无法解析错误文本。 Liquid
用具体的原始类型回答每个问题 — 所有这些都已发货,全部在 PyPI 上。
### 上下文预算控制
```python
# 在服务器端搜索/聚合,而不是获取后过滤 — 减少 10-100 倍的令牌
orders = await liquid.search(adapter, "/orders",
where={"total_cents": {"$gt": 10000}, "status": "paid"}, limit=20)
stats = await liquid.aggregate(adapter, "/orders",
group_by="status", agg={"total_cents": "sum", "id": "count"})
hits = await liquid.text_search(adapter, "/tickets", "shipping delay") # BM25-lite
data = await liquid.fetch(adapter, "/orders", max_tokens=2000) # 预算上限
data = await liquid.fetch(adapter, "/customers", verbosity="terse") # id + 1-2 个字段
```
### 跨源规范化
```python
liquid = Liquid(..., normalize_output=True)
# Stripe {amount:1000,currency:"usd"} · PayPal {value:"10.00",currency_code:"USD"}
# → Money(amount_cents=1000, currency="USD", amount_decimal=Decimal("10.00"))
```
时间戳(Unix / ISO 8601 / RFC 2822)折叠为 UTC `datetime`;分页
信封(`{data:[…]}` / `{results:[…]}` / Link 头)展平;ID 字段
在 `id` / `_id` / `uuid` / `*_id` 之间规范化。
### 规范意图 — 跨服务的一种心智模型
```python
await liquid.execute_intent(adapter, "charge_customer",
{"customer_id": "cus_xyz", "amount_cents": 9999, "currency": "USD"})
# 相同的意图在 Stripe / Braintree / Square / Adyen — 71 种规范意图
```
### 结构化恢复 — 代理在无需解析文本的情况下自我修复
```python
try:
await liquid.fetch(adapter, "/orders")
except LiquidError as e:
if e.recovery and e.recovery.next_action:
await agent.call_tool(e.recovery.next_action.tool, e.recovery.next_action.args)
```
每个错误都带有 `Recovery` 和 `next_action: ToolCall`、`retry_safe` 和
`retry_after_seconds`。401 → `store_credentials`。404/410 → `repair_adapter`。429
→ 在给定的延迟后重试。而当上游的模式漂移时,适配器
**自我修复**(`repair_adapter`)— 代理继续工作。
### 可预测的成本 — 调用前就知道
```python
est = await liquid.estimate_fetch(adapter, "/orders")
# FetchEstimate(expected_items=250, expected_tokens=52_000, confidence="high", …)
if est.expected_tokens < my_budget:
data = await liquid.fetch(adapter, "/orders")
```
`to_tools()` 发出的工具带有 `metadata` 块(`cost_credits`、
`typical_latency_ms`、`cached`、`idempotent`、`side_effects`、`related_tools`),所以
代理可以推理出应该选择哪个工具 — 而环境工具
(`liquid_check_quota`、`liquid_list_adapters`,...)允许它询问状态而不是
记忆它。
---
## 测量的影响
现实代理任务的确定性基准测试(500 个订单,200 个票据
基准,模拟 HTTP)— 可通过 `python -m benchmarks.run` 重现:
| 任务 | 指标 | 基线 | 使用 Liquid | 增量 |
|---|---|---:|---:|---:|
| 查找 10 个超过 100 美元的订单 | 令牌 | 75,482 | 1,519 | **-98%** |
| 按状态划分收入(聚合) | 令牌 | 75,482 | 115 | **-100%** |
| 获取客户(仅限 id 和电子邮件) | 令牌 | 424 | 12 | **-97%** |
| 从 401 恢复 | 结构化的下一步 | 否 | 是 | — |
| 查找运输票据 | 令牌 | 14,588 | 154 | **-99%** |
| Stripe↔PayPal 一致性 | 字段重叠 | 0.11 | 1.00 | **+9×** |
| 通过估计跳过浪费的调用 | 令牌 | 14,943 | 0 | **-100%** |
| `max_tokens=2000` 预算上限 | 令牌 | 14,943 | 1,999 | **-87%** |
完整的 方法论 + 每个任务的详细情况:[`benchmarks/RESULTS.md`](benchmarks/RESULTS.md).
## 安装
```bash
pip install liquid-api # 核心 + 捆绑的 MCP 服务器(`liquid-mcp` 命令)
pip install 'liquid-api[discovery]' # + 一个用于发现无规范 REST API 和字段映射的 LLM
```
**您需要额外的 LLM 吗?** 自描述接口 — OpenAPI,GraphQL,
gRPC,MCP,A2A,WSDL — 和 **所有数据库**(自省)通过 **无 LLM** 发现,
整个运行时(`fetch`/`query`/`write`/`sense`)从不调用模型。您只需要一个 LLM 后端来
**发现没有机器可读规范的 REST API** (启发式 + LLM)和 **映射** 其字段。 `[discovery]`
拉取 LiteLLM,它可以访问 OpenAI / Gemini / Anthropic / 本地 / 100+ 提供商;
或直接选择一个:
```bash
pip install 'liquid-api[gemini]' # Google Gemini (或 [anthropic];OpenAI/本地通过 base_url 工作,无需额外操作)
pip install 'liquid-api[grpc]' # gRPC 传输(反射)
pip install 'liquid-api[ws]' # WebSocket 传输
pip install 'liquid-api[pg]' # Postgres / pgvector(asyncpg)
pip install 'liquid-api[mysql]' # MySQL / MariaDB(aiomysql);SQLite 无需额外操作
pip install 'liquid-api[neo4j]' # Neo4j 图(Bolt / Cypher)
pip install 'liquid-api[duckdb]' # DuckDB(嵌入式分析)
pip install 'liquid-api[mssql]' # SQL Server(ODBC;需要系统 ODBC 驱动程序)
pip install 'liquid-api[mongodb]' # MongoDB(集合作为端点)
pip install 'liquid-api[redis]' # Redis(键空间命名空间作为端点)
pip install 'liquid-api[mqtt]' # MQTT(IoT 发布/订阅)
pip install 'liquid-api[modbus]' # Modbus(工业寄存器)
pip install 'liquid-api[opcua]' # OPC UA(工业 4.0 节点 + 订阅)
pip install 'liquid-api[bacnet]' # BACnet(建筑自动化;ADB 需要系统 `adb` 二进制文件)
# 框架集成(LangChain / OpenAI / Anthropic / MCP)已内置 — 无需额外包。
```
核心依赖项为空 — 每个后端的库都是可选的额外项,
仅在需要时导入。
## 看它工作 — 实时的,无需预配置
将 Liquid 指向它从未见过的 API(无适配器,无 OpenAPI 规范,无身份验证)
并获取类型化的记录 — 您无需编写连接器;发现 + 映射是
模型运行的唯一地方。通过
[`examples/live_quickstart.py`](examples/live_quickstart.py) 可运行端到端:
```text
连接到 Liquid 从未见过的 API:
https://api.openbrewerydb.org/v1/breweries
发现方法 : rest_heuristic
映射字段 : ['name', 'city', 'state', 'country']
至今的 LLM 调用 : 2 (发现 + 映射)
fetch() -> 50 个类型化记录;前 3 个:
{'name': '(405) Brewing Co', 'city': 'Norman', 'state': 'Oklahoma', 'country': 'United States'}
{'name': '(512) Brewing Co', 'city': 'Austin', 'state': 'Texas', 'country': 'United States'}
{'name': '1 of Us Brewing Company', 'city': 'Mount Pleasant', 'state': 'Wisconsin', 'country': 'United States'}
提取过程中的 LLM 调用 : 0
第二次提取的 LLM 调用 : 0
```
您没有编写连接器,没有模式,没有身份验证代码 — Liquid 为您学习了接口,
并且如果它发生变化,将重新学习。 这就是重点:您不构建或维护的集成。
## 作为 MCP 服务器运行(开源,自我托管)
将引擎暴露给任何 MCP 客户端(Claude Desktop,Cursor,Claude Code)—
它**在您自己的进程中运行**,无需云,无需帐户,无需锁定:
[](cursor://anysphere.cursor-deeplink/mcp/install?name=liquid&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJsaXF1aWQtbWNwIl19)
在 Cursor 中一键安装(按钮将服务器写入您的 `mcp.json`;之后在 Cursor 的 MCP 设置中添加您的
`OPENAI_API_KEY`)。 或手动设置:
```bash
pip install liquid-api
export OPENAI_API_KEY=sk-... # 或 GEMINI_API_KEY / ANTHROPIC_API_KEY,
# 或 OPENAI_BASE_URL=http://localhost:11434/v1 用于本地(Ollama/vLLM)
liquid-mcp # 或:python -m liquid.mcp_server
```
使用 `uvx` 零安装([`liquid-mcp`](https://pypi.org/project/liquid-mcp/)
软件包使命令可以按名称运行)— Claude Code:
```bash
claude mcp add liquid --scope user -e OPENAI_API_KEY=sk-... -- uvx liquid-mcp
```
Claude Desktop / 任意 MCP 客户端:
```json
{ "mcpServers": { "liquid": {
"command": "uvx",
"args": ["liquid-mcp"],
"env": { "OPENAI_API_KEY": "sk-..." }
} } }
```
(或在 `pip install liquid-api` 后,删除 `uvx` 并直接使用 `"command": "liquid-mcp"`。)
**Claude Desktop 中的一键安装:** 安装 [`.mcpb` 包](packages/liquid-mcp/mcpb) —
它提示您安装密钥(存储在 OS 密钥链中),无需编辑 JSON。
需要机器上的 `uv`。
<!-- mcp-name: io.github.ertad-family/liquid -->
工具:`liquid_connect`(发现 + 映射任意接口),`liquid_fetch`,
`liquid_query`(服务器端搜索/聚合),`liquid_estimate`(预估成本/大小,无调用),
`liquid_list_adapters`,`liquid_discover`。 默认情况下**仅限读取**;
启动服务器时使用 `LIQUID_ALLOW_WRITES=1` 也会暴露 `liquid_execute`(数据库插入/更新/删除)。
适配器和凭证存储在 `~/.liquid` 下。 由 **任意 LLM** 支持 — OpenAI,Gemini,Anthropic,
任意 OpenAI 兼容/本地端点通过 `base_url`,**100+ 提供商通过 LiteLLM**,
或通过 `CallableBackend` 使用您自己的函数。
## 快速入门 — LangGraph 代理
```python
from liquid import Liquid, InMemoryCache, RateLimiter
from liquid._defaults import InMemoryVault, InMemoryAdapterRegistry, CollectorSink
from liquid_langchain import LiquidToolkit
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
liquid = Liquid(
llm=my_llm, vault=InMemoryVault(), sink=CollectorSink(),
registry=InMemoryAdapterRegistry(), cache=InMemoryCache(), rate_limiter=RateLimiter(),
normalize_output=True, # 跨源规范化形状
include_meta=True, # 每个响应中的 _meta 块
)
adapter = await liquid.get_or_create(
"https://api.shopify.com",
target_model={"id": "str", "total_cents": "int", "customer_email": "str"},
credentials={"access_token": "shpat_..."},
auto_approve=True,
)
tools = LiquidToolkit(adapter, liquid).get_tools()
agent = create_react_agent(ChatOpenAI(model="gpt-4o-mini"), tools)
result = await agent.ainvoke(
{"messages": [("user", "Find 5 recent orders over $100 from VIP customers")]}
)
```
代理的工具附带丰富的描述(何时使用,不用于什么,返回
形状,成本),每个错误都有结构化的恢复,服务器端搜索因此
它从不拉取 500 个订单来查找 5 个。
## 每种接口,一个 API
发现功能会识别目标并为每个端点标记一个协议;一个可插拔的传输驱动程序运行它 — 但是面向代理的 API(`fetch`、`query`、`write`、映射、恢复、缓存、速率限制) 在所有接口中都是相同的。
| 接口 | 运行时 | 写 | 安装 |
|---|---|---|---|
| REST / HTTP+JSON | ✅ | ✅ 操作(POST/PUT/PATCH/DELETE) | — |
| GraphQL | ✅ 查询 + Relay 分页 | ✅ 变更 | — |
| SOAP / WSDL | ✅ 标准库 XML | — | — |
| gRPC | ✅ 单工 + 服务器流(反射) | — | `liquid-api[grpc]` |
| WebSocket | ✅ 有界批量读取 + 订阅 + 实时 `sense` | — | `liquid-api[ws]` |
| SSE / NDJSON(HTTP 服务器推送) | ✅ 有界批量读取 + 实时 `sense` | — | — |
| MCP(代理) | ✅ 调用工具 / 读取资源 + 通知 `sense` | ✅ 工具调用 | — |
| A2A(代理) | ✅ JSON-RPC `message/send` 到 AgentCard 技能 | — | — |
| Postgres(+pgvector) | ✅ 表/视图,过滤,分页,向量搜索 | ✅ | `liquid-api[pg]` |
| MySQL / MariaDB | ✅ 表/视图,过滤,分页 | ✅ | `liquid-api[mysql]` |
| SQLite | ✅ 表/视图,过滤,分页 | ✅ | — (标准库) |
| DuckDB | ✅ 表/视图,过滤,分页 | ✅ | `liquid-api[duckdb]` |
| SQL Server | ✅ 表/视图,OFFSET/FETCH 分页 | ✅ | `liquid-api[mssql]` |
| Neo4j(图) | ✅ 标签/关系类型,属性过滤 | ✅ 节点 CRUD | `liquid-api[neo4j]` |
| MongoDB(文档) | ✅ 集合,字段过滤,分页 | ✅ | `liquid-api[mongodb]` |
| Redis(键值) | ✅ 键空间命名空间,类型值,SCAN 分页 | ✅ SET/HSET/DEL | `liquid-api[redis]` |
| MQTT(IoT 发布/订阅) | ✅ 订阅 → 批量 + 实时 `sense` | ✅ 发布 | `liquid-api[mqtt]` |
| Modbus(工业) | ✅ 寄存器/线圈读取 + 增量轮询 `sense` | ✅ 寄存器/线圈写入 | `liquid-api[modbus]` |
| OPC UA(工业) | ✅ 节点读取 + 原生订阅 `sense` | ✅ 节点写入 | `liquid-api[opcua]` |
| BACnet(建筑) | ✅ 对象属性读取 + 增量轮询 `sense` | ✅ 属性写入 | `liquid-api[bacnet]` |
| ADB(Android) | ✅ shell 读取 + logcat `sense` | ✅ shell 操作(input/am) | — (系统 `adb`) |
| 电子邮件 — IMAP/SMTP | ✅ 读取邮箱按 UID + 新邮件 `sense` | ✅ 发送(MIME) | — (标准库) |
| 电子邮件 — Gmail API | ✅ 列表/获取 + `history` `sense` | ✅ `messages.send` | — (OAuth2) |
**读写。** `liquid.write(adapter, endpoint, op="insert", values={...}, allow_write=True)` 修改任何数据库(SQL `INSERT`/`UPDATE`/`DELETE`,MongoDB 插入/更新/删除,Redis `SET`/`HSET`/`DEL`,Neo4j 节点 CRUD);Web/代理写入通过验证的操作进行。标识符来自内省,值是参数化的;`update`/`delete` 需要 `where`(无空白修改);写入 **在您选择启用时才进行**,需设置 `allow_write=True`。
**Sense — 感官器官。** `liquid.sense(adapter, endpoint)` 在任何地方感知实时事件流:SQL 行增量(和 Postgres `LISTEN/NOTIFY`),Redis 发布/订阅,WebSocket 帧,HTTP 服务器推送(SSE/NDJSON),以及 MCP 通知 — 每个都作为模态无关的事件产生。指向 *内部*,`liquid.sense_webhook(port=…, verifier=…)` 托管一个入站端点,以便服务(或人类,通过 Webhook)发布到代理成为可感知的信号。所有这些都受 `max_events` / `max_seconds` 的限制,以便代理可以排空并拉取。
**感官运动循环。** `react(stream, handler)` 为每个感知的事件驱动一个处理程序 — 具有错误隔离和有界并发 — 以便主机可以 *感知 → 唤醒代理 → 采取行动*。`merge_senses(*streams)` 将多个感知合并为一个循环,以便一个代理可以同时监视数据库、队列和 Webhook:
```python
events = merge_senses(
await liquid.sense(orders, "/orders"),
await liquid.sense_webhook(port=8088, verifier=stripe_verifier),
)
await react(events, on_event, max_concurrency=4)
```
**发现是自动的 — 并实时识别。** 在管道运行之前, 指纹步骤命名目标:一个裸 `host:port` 通过知名端口规范化(`db:5432` → `postgresql://db:5432`),`liquid.identify(url)` 回答“这是什么,它的驱动程序是否已安装?”如果缺少后端,则提供安装提示。(识别协议是可行的实时;*发言*新的身份验证二进制协议不是 — 所以未知协议被命名,而不是猜测。)
| 发现 | 它寻找的地方 | 成本 |
|---|---|---|
| 数据库 | 目录内省(`postgres://`,`mysql://`,`mongodb://`,`redis://`,`neo4j://`,…) | 低 |
| gRPC / WebSocket / SSE | 服务器反射 / 帧采样 / 内容类型嗅探 | 低 |
| MCP / A2A / 插件 | `/mcp`,`/.well-known/agent-card.json`,`/.well-known/ai-plugin.json` | 低 |
| OpenAPI / GraphQL / SOAP | 规范,内省,或 WSDL | 低 |
| REST 启发式 | 常用路径 + LLM 解释 | 中 |
| 浏览器 | Playwright 捕获网络 | 高 |
**无需编写代码即可添加后端。** 对于 SQL 系列,契约是声明式的,可以作为 **数据**:一个 **方言清单**(引用,占位符样式,分页,内省 SQL,错误映射,DBAPI2 模块)通过 `register_sql_manifest({...})` 注册,安装一个工作驱动程序 + 发现 — 因此一个新的 SQL / 线兼容存储(CockroachDB,ClickHouse,任何 DBAPI2 驱动程序),甚至一个从网络获取为 JSON 的存储,无需发布即可连接。新协议否则通过 `liquid.transport.ProtocolDriver` 协议插入;SQL 后端共享一个方言感知核心,因此一个新的大约是 80 行的适配器。
**您想教 Liquid 一个新协议吗?** 一个完整的传输驱动程序(`fetch`/`write`/`sense`)通常大约 150 行 — 请参阅 [docs/ADDING_A_DRIVER.md](docs/ADDING_A_DRIVER.md) 以获取演练和愿望清单(CAN 总线,CoAP,KNX,AMQP,NATS,SNMP,…)。欢迎贡献。
2,500+ 个 API 已在 [全局目录](https://liquid.ertad.family/catalog) 中预先发现和预先映射 — 大多数热门服务连接时无需发现成本。
## 架构
```
URL / DSN 代理
↓ ↑
指纹 → 发现 FETCH · QUERY · WRITE · SEARCH · AGGREGATE
↓ ↑
每个接口的一个 ProtocolDriver 确定的每协议传输
REST GraphQL gRPC WS SSE MQTT 查询 DSL(服务器端过滤)
MCP A2A · SQL 图文档 KV · 输出规范化
Modbus OPC-UA BACnet ADB … 详细协议列表见上表
↓ 结构化恢复 + 自我修复
APISchema 速率限制感知令牌桶
↓ 响应缓存(Cache-Control 感知)
AI 映射(仅设置) 经验数据探查(云)
↓
适配器配置
```
**AI 仅在设置时参与。** 运行时是纯传输,带有转换 — 没有每次调用的 LLM,可预测的成本,可复制的行为(除了 `search_nl`,它会缓存其编译)。
## 可交换组件
每个横切关注点都是一个可以替换的 `Protocol`:
```python
from liquid.protocols import (
Vault, LLMBackend, DataSink, KnowledgeStore, AdapterRegistry, CacheStore,
)
```
所有这些都附带内存实现;`liquid-cloud` 为托管部署提供 `PostgresVault`、`RedisCache` 等。
## 框架支持
```python
adapter.to_tools(format="anthropic") # Claude 工具使用
adapter.to_tools(format="openai") # OpenAI 函数调用(LangChain/CrewAI 直接使用)
adapter.to_tools(format="mcp") # MCP(Claude Desktop,Cursor)
```
## 框架集成
无需安装额外的包 — 它内置于 `liquid-api`。`adapter.to_tools(format="anthropic" | "openai" | "mcp")` 发出可直接使用的工具定义,用于 Claude 工具使用、OpenAI 函数调用(LangChain / LangGraph 和 CrewAI 直接使用),以及任何 MCP 客户端(Claude Desktop,Cursor,…)。捆绑的 `liquid-mcp` 服务器还开箱即用地将 Liquid 作为 MCP 工具公开。
## 比较
| 功能 | Liquid | Zapier | LangChain 工具 | DIY |
|---|---|---|---|---|
| 自动发现任何接口(无精选连接器) | 是 | 否 | 否 | 否 |
| 一个层中的 API + 数据库 + 代理 | 是 | 部分 | 否 | 否 |
| 通过一个 API 读取 **和** 写入 | 是 | 是 | 部分 | 否 |
| 服务器端搜索 / 聚合 | 是 | 否 | 否 | 部分 |
| 跨源输出规范化 | 是 | 部分 | 否 | 否 |
| 带有 next_action 的结构化恢复 | 是 | 否 | 否 | 否 |
| 架构漂移时的自我修复 | 是 | 否 | 否 | 否 |
| 预飞行成本估算 | 是 | 否 | 否 | 否 |
| MCP + A2A + LangChain + CrewAI 原生 | 是 | 否 | 部分 | 否 |
| 开源 | 是 | 否 | 是 | 不适用 |
## 文档
- [快速入门](docs/QUICKSTART.md) — 发现 → 映射 → 获取,以及 **无 LLM 运行时**
- [开源 vs. 云](docs/OSS-VS-CLOUD.md) — 诚实的边界:免费/自托管 vs. 托管
- [架构](docs/ARCHITECTURE.md)
- [扩展](docs/EXTENDING.md) — 实现您自己的 Vault / LLM / Sink
- [写入操作规范](docs/SPEC-WRITE-OPERATIONS.md)
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器