关于 Faucet
Faucet 是一个开源单文件 Go 程序,可将 PostgreSQL、MySQL、SQL Server、Oracle、Snowflake、SQLite 等 SQL 数据库转换为 REST API 和 MCP 服务。它面向需要快速提供数据接口并对 AI Agent 做权限控制的团队,内置 RBAC 与管理界面。
主要功能
- 01根据数据库结构自动生成 REST API 与 OpenAPI 3.1 文档
- 02基于角色的访问控制(RBAC)
- 03内置 MCP 服务,挂载于 /mcp 路径
- 04支持 API 密钥与 stdio 两种 MCP 连接方式
- 05内置管理界面,可添加数据库并生成客户端配置
适用场景
- 01为应用快速搭建数据库后端接口
- 02让 Claude 或 Cursor 在权限约束下查询数据库
- 03为旧版数据库提供 REST 接口而不修改代码
MCP 相关
该项目是一个 MCP 服务,通过 /mcp 端点(Streamable HTTP)或 stdio 向 MCP 客户端暴露 faucet_list_services、faucet_query 等数据库工具,并遵循与 REST API 相同的角色规则。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @faucetdb/faucetFAUCET_DATA_DIRFaucet data directory holding the databases you connected with `faucet serve` or `faucet db add`. Default: ~/.faucet. stdio mode runs with local admin rights.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
8收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| table | string | 是 | 要从中删除记录的表名 |
| filter | string | 是 | 用于选择要删除记录的筛选表达式(例如:"status = 'expired'") |
| service | string | 是 | 数据库服务名称 |
详细介绍
Faucet:适用于任何 SQL 数据库的 REST API 和 MCP 服务
将任何 SQL 数据库转换为安全的 REST API 和 MCP 服务。
一个二进制文件。一条命令。
Faucet 是一个开源(MIT)Go 单一二进制程序,可将 PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake 或 SQLite 转换为供 AI Agent 使用的 REST API 和 MCP 服务,并提供基于角色的访问控制(RBAC)、OpenAPI 3.1 和内置管理界面。
端点、OpenAPI 规范和 MCP 工具会在运行时根据数据库架构生成。无需代码生成、无需 ORM、无需样板代码。
网站 · 文档 · 快速入门 · Docker · MCP 服务 · 问题反馈
什么是 Faucet?
Faucet 是一个数据库到 REST API 网关——一种轻量、可自托管的服务,可连接到你的 SQL 数据库、检查架构,并生成完整的 CRUD REST API,支持身份验证、基于角色的访问控制(RBAC)和 OpenAPI 文档。它还会在 /mcp 提供一个 MCP 服务,让 AI Agent 和 AI 应用构建工具(Claude、ChatGPT、Cursor、VS Code、Windsurf、Base44、Replit)通过相同的角色和 API 密钥查询你的数据。
可以把它看作 DreamFactory、PostgREST 或 Hasura 的开源替代方案,支持多个数据库,内置管理界面,并原生集成 AI Agent,所有功能集于一个二进制文件中。请参阅对比。

使用场景
- 应用的即时后端 — 无需手动编写 CRUD API。将 Faucet 指向你的数据库,即可开始构建前端。
- AI Agent 数据访问 — 为 Claude、GPT 或任何兼容 MCP 的 Agent 提供受管控的数据库读写权限。
- 内部工具和仪表板 — 无需修改现有基础设施,即可为内部数据库生成 API。
- 旧版数据库现代化 — 无需更改代码,即可为 SQL Server 2012、MySQL 5.7 或 PostgreSQL 9.6 添加 REST API。
- 多数据库聚合 — 将 PostgreSQL、MySQL、SQL Server、Oracle 等连接到一个 Faucet 实例,通过一个 API 查询所有数据库。
- 快速原型开发 — 不到 60 秒,就能从空数据库开始拥有可用的 API。
工作原理
┌──────────────┐ ┌───────────────────────────────────────┐ ┌──────────────┐
│ PostgreSQL │ │ F A U C E T │ │ REST API │
│ MySQL │──────▶│ │──────▶│ /api/v1/* │
│ MariaDB │ SQL │ ┌─────────┐ ┌──────┐ ┌───────────┐ │ ├──────────────┤
│ SQL Server │◀──────│ │ Schema │ │ RBAC │ │ OpenAPI │ │──────▶│ OpenAPI 3.1 │
│ Oracle │ │ │ Intro- │ │ Auth │ │ Generator │ │ │ /openapi.json│
│ Snowflake │ │ │ spection│ │ │ │ │ │ ├──────────────┤
│ SQLite │ │ └─────────┘ └──────┘ └───────────┘ │──────▶│ MCP Server │
└──────────────┘ │ │ │ (AI Agents) │
│ ┌──────────────────────────────────┐ │ ├──────────────┤
│ │ Embedded Admin UI (Preact) │ │──────▶│ Admin UI │
│ └──────────────────────────────────┘ │ │ :8080/ │
└───────────────────────────────────────┘ └──────────────┘
连接任意 SQL 数据库 → Faucet 检查数据库架构 → 即刻生成 REST 端点、OpenAPI 文档、MCP 工具和管理 UI,并通过 API 密钥、JWT 身份验证和基于角色的权限进行保护。
截图
使用主机、端口、用户名和密码连接数据库。Faucet 会在保存前测试连接,并告知你需要修正的内容。
浏览表、列、键和数据,并锁定 API 契约,防止架构变更造成破坏。
使用筛选条件和分页构建请求,然后复制为 curl、JavaScript 或 Python 代码。
可直接复制的 MCP 配置,适用于 Claude Code、Claude Desktop、Cursor、VS Code、Windsurf 和 ChatGPT。
请参阅管理 UI 指南,了解每个页面的详细介绍。
主要功能
API 生成
- 完整的 CRUD REST API — 提供 GET、POST、PUT、PATCH、DELETE,支持筛选、排序和分页
- 架构检查 — 运行时发现表、列、类型和约束
- 架构 DDL — 通过 API 创建、修改和删除表
- 存储过程调用 — 使用带类型的参数执行存储过程
- 易读的查询筛选条件 —
(age > 21) AND (status = 'active') - OpenAPI 3.1 规范 — 根据实时数据库架构自动生成,路径为
/openapi.json
安全与访问控制
- API 密钥身份验证 — 使用 SHA-256 哈希的密钥,并可为每个密钥分配角色
- JWT 身份验证 — 使用 HMAC-SHA256 签名令牌进行管理员会话验证
- 基于角色的访问控制(RBAC) — 针对每张表设置操作权限(GET、POST、PUT、PATCH、DELETE)
- 行级安全筛选条件 — 筛选表达式按访问规则存储并由 API 返回;将其应用于查询的功能已列入计划,目前尚未强制执行
- 架构契约锁定 — 通过三种模式(none、auto、strict)、漂移检测和 CLI 管理,锁定 API 契约,防止未提示的破坏性架构变更
AI Agent 集成(MCP)
- 内置 MCP 服务 — 提供 8 个工具和 2 个资源,用于 Model Context Protocol,与 REST API 共用端口,服务路径为
/mcp - 兼容你的 AI 工具 — 提供可直接复制的配置,适用于 Claude Code、Claude Desktop、Cursor、VS Code 和 Windsurf;ChatGPT 可通过
/openapi.json上的 Custom GPT Action 接入 - Streamable HTTP + stdio 传输 — 可通过网络使用 API 密钥进行身份验证,也可在自己的机器上通过 stdio 连接
- 受管控的 AI 查询 — AI Agent 遵守与 API 客户端相同的 RBAC 规则
开发者体验
- 单个二进制文件 — 零外部依赖,跨平台支持 Linux、macOS 和 Windows
- 内嵌管理 UI — 使用主机、端口、用户名和密码连接数据库(无需连接字符串);保存前测试连接,浏览架构和数据,创建角色和密钥,并复制适用于 Claude、Cursor、VS Code 等工具的即用型 MCP 配置。支持离线使用,并提供浅色和深色主题
- SQLite 配置存储 — 所有配置均存储在本地,无需外部数据库
- npm + Homebrew + Docker — 几秒钟即可在任何平台上完成安装(
npx @faucetdb/faucet) - 健康检查端点 — 提供
/healthz和/readyz,用于 Kubernetes 风格的探测
支持的数据库
| 数据库 | 版本 | 云变体 | 教程 |
|---|---|---|---|
| PostgreSQL | 9.6 – 17 | Amazon RDS、Aurora、Supabase、Neon、Azure Database | 指南 |
| MySQL | 5.7 – 9.x | Amazon RDS、Aurora MySQL、PlanetScale、Azure MySQL | 指南 |
| MariaDB | 10.2 – 11.x | 通过 MySQL 驱动程序 | MySQL 指南 |
| SQL Server | 2012 – 2022 | Azure SQL Database、Amazon RDS | 指南 |
| Oracle | 12c – 26ai | Oracle Cloud(OCI)、Amazon RDS、Azure | 指南 |
| Snowflake | 当前版本 | AWS、Azure、GCP | 指南 |
| SQLite | 3.35+ | 本地文件、内存中 | 指南 |
连接器详情、SSL 选项和驱动程序说明:数据库连接器。
60 秒快速入门
安装
npm(Node.js 18+):
npx @faucetdb/faucet serve
Homebrew(macOS / Linux):
brew install faucetdb/tap/faucet
Docker:
docker run -p 8080:8080 -v faucet-data:/data faucetdb/faucet
Go:
go install github.com/faucetdb/faucet/cmd/faucet@latest
**二进制文件下载:**请参阅 GitHub Releases,获取预构建的二进制文件(Linux、macOS、Windows)。
运行
faucet serve
打开 **http://localhost:8080**。设置向导会创建管理员帐户并连接第一个数据库:选择引擎,输入主机、端口、用户名和密码,点击 测试连接,然后保存。每个表都会立即获得 REST 端点 /api/v1/<name>/_table/<table> 和 MCP 工具。接着在 角色 页面创建角色,并在 API 密钥 页面创建 API 密钥;该页面会提供一条可直接运行的 curl 命令,以及一条已包含新密钥的 MCP 配置命令。
更喜欢使用终端?使用 CLI 执行相同的步骤:
# Create an admin account and add a database (no connection string needed)
faucet admin create --email [email protected] --password changeme123
faucet db add --name mydb --driver postgres \
--host localhost --user app --password 's3cret@!' --database mydb
# Create a role that can read every database, then an API key bound to it
faucet role create --name default --verbs GET
faucet key create --role default
# Start the server (it loads databases on startup), then query your data
faucet serve
curl -H "X-API-Key: faucet_YOUR_KEY_HERE" "http://localhost:8080/api/v1/mydb/_table/users?limit=10"
如果你已有连接字符串,仍可使用 --dsn。运行中的服务会立即加载通过管理界面或 API 添加的数据库;通过 faucet db add 添加的数据库会在服务下次启动时加载。
面向 AI Agent 的 MCP 服务
Faucet 内置了 Model Context Protocol (MCP) 服务,因此 Claude、Cursor、VS Code Copilot 和 Windsurf 等 AI Agent 可以通过受管控的工具访问来查询和修改数据库。
faucet serve 会在 http://localhost:8080/mcp 上提供 MCP 服务(Streamable HTTP),与 REST API 使用同一端口。通过 X-API-Key 请求头使用 API 密钥进行身份验证。密钥对应的角色会控制 Agent 可以查看和更改哪些数据库及表,与 REST API 的规则完全相同。
管理界面中的 AI Agent(MCP) 页面会生成下方所有配置,并填入你的密钥。将 YOUR_API_KEY 替换为 API 密钥 页面或 faucet key create 创建的密钥。
Claude Code
claude mcp add --transport http faucet http://localhost:8080/mcp \
--header "X-API-Key: YOUR_API_KEY"
Cursor、VS Code、Windsurf
Cursor(~/.cursor/mcp.json 或 .cursor/mcp.json):
{
"mcpServers": {
"faucet": {
"url": "http://localhost:8080/mcp",
"headers": { "X-API-Key": "YOUR_API_KEY" }
}
}
}
VS Code(.vscode/mcp.json,供 Agent 模式下的 Copilot Chat 使用):
{
"servers": {
"faucet": {
"type": "http",
"url": "http://localhost:8080/mcp",
"headers": { "X-API-Key": "YOUR_API_KEY" }
}
}
}
Windsurf(~/.codeium/windsurf/mcp_config.json):与 Cursor 相同,但使用 serverUrl 而非 url。
Claude Desktop
Claude Desktop 的配置文件只能启动本地命令,因此请在 claude_desktop_config.json 中使用 mcp-remote 桥接工具(需要 Node.js):
{
"mcpServers": {
"faucet": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8080/mcp", "--header", "X-API-Key:YOUR_API_KEY"]
}
}
}
如果 Faucet 服务位于另一台机器上,且通过普通的 http:// 访问,请在 args 中添加 "--allow-http"。请参阅 examples/claude-desktop-config.json。
ChatGPT
ChatGPT 连接器通过 OAuth 登录,Faucet 不支持 OAuth。请改用 自定义 GPT Action:通过 HTTPS 暴露 Faucet,导入 https://your-host/openapi.json,并将身份验证设为 API 密钥,使用自定义请求头 X-API-Key。
本地 stdio(仅限你的计算机)
MCP 客户端也可以将 Faucet 作为子进程启动。stdio 模式会读取通过 faucet serve 或 faucet db add 配置的数据库(默认为 ~/.faucet),并以本地管理员权限运行:角色不会生效。仅在你自己的计算机上使用;如需共享,请使用带 API 密钥的 /mcp。
{
"mcpServers": {
"faucet": {
"command": "npx",
"args": ["-y", "@faucetdb/faucet", "mcp"]
}
}
}
相同的配置见 examples/mcp-stdio-config.json。如果已安装 faucet(通过 Homebrew、Go 或发行版二进制文件安装),请使用 "command": "faucet", "args": ["mcp"]。faucet mcp --transport http --port 3001 会在独立端口上运行一个经过 API 密钥验证的独立 HTTP 服务。
完整指南(包括 curl 测试和 OpenAI Responses API):MCP 服务文档。
可用的 MCP 工具
| 工具 | 描述 |
|---|---|
faucet_list_services | 列出所有已连接的数据库 |
faucet_list_tables | 列出数据库中的所有表 |
faucet_describe_table | 获取列名、类型和约束 |
faucet_query | 使用筛选条件、排序和分页查询记录 |
faucet_insert | 插入新记录 |
faucet_update | 更新现有记录 |
faucet_delete | 删除记录 |
faucet_raw_sql | 执行原始 SQL(仅限管理员) |
CLI 参考
faucet serve # Start HTTP server (default :8080)
faucet db add NAME # Add database connection
faucet db list # List configured databases
faucet db test NAME # Test database connectivity
faucet db schema NAME # Dump database schema
faucet db lock NAME # Lock schema contract
faucet db unlock NAME # Remove contract locks
faucet db diff NAME # Show schema drift
faucet db promote NAME # Promote contracts to match live schema
faucet key create # Create API key
faucet key list # List API keys
faucet role create # Create RBAC role (--verbs grants its first rule)
faucet role grant # Add an access rule to a role
faucet role list # List roles and their rules
faucet admin create # Create admin account
faucet mcp # Start MCP server (stdio)
faucet openapi # Generate OpenAPI spec
faucet config set KEY VALUE # Set configuration value
faucet version # Show version info
访问规则(RBAC)
角色由一组规则 {service_name, component, verb_mask} 组成。API 密钥会继承其绑定角色的规则;每个请求都会根据这些规则进行检查。管理员 JWT 会话(仪表板和 /api/v1/system/*)不受 RBAC 限制。
动词位——使用按位 OR 组合:
| 动词 | 位 |
|---|---|
| GET | 1 |
| POST | 2 |
| PUT | 4 |
| PATCH | 8 |
| DELETE | 16 |
| 全部 | 31 |
匹配规则(区分大小写——模式必须与 URL 中的服务名和表名完全一致):
service_name:*(任意服务)、精确名称(mydb)或前缀通配符(prod_*)component:*(任意内容)、精确组件(_table/customers、_schema)、前缀通配符(_table/*——所有表以及_table列表),或裸名称(customers,可匹配_table/customers、_schema/customers等)
默认拒绝。 没有规则的角色、verb_mask 为 0 的规则或未激活的角色都会拒绝所有请求,并返回 403 和说明原因的错误信封:
{"error":{"code":403,"message":"Role \"readonly\" does not permit POST on mydb/_table/orders",
"context":{"role":"readonly","service":"mydb","component":"_table/orders","verb":"POST"}}}
标记为 read_only 的服务会拒绝所有非 GET 请求,无论角色为何。
MCP。 工具映射到相同的动词:faucet_query = GET、faucet_insert = POST、faucet_update = PATCH、faucet_delete = DELETE、faucet_list_tables = 对 _table 执行 GET、faucet_describe_table = 对 _schema/{table} 执行 GET。faucet_raw_sql 要求规则包含所有五种动词,且匹配组件 _sql(例如 *)。faucet_list_services 只会列出角色可访问的服务。stdio 模式下的 faucet mcp 使用本地管理员权限;faucet mcp --transport http 则要求与主服务相同的 API 密钥或 JWT 凭据。
通过 CLI 授予规则:
faucet role create --name readonly --verbs GET # GET on every service
faucet role grant --role readonly --service mydb --component "_table/orders" --verbs GET,POST
也可以通过管理员 API 授予,该 API 会替换整个规则列表:
curl -X PUT -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" \
http://localhost:8080/api/v1/system/role/1 -d '{
"name": "readonly",
"is_active": true,
"access": [
{"service_name": "*", "component": "*", "verb_mask": 1, "requestor_mask": 1, "filters": [], "filter_op": "AND"},
{"service_name": "mydb", "component": "_table/orders", "verb_mask": 3, "requestor_mask": 1, "filters": [], "filter_op": "AND"}
]
}'
规则上的行级
filters会由 API 存储并返回,但目前尚未应用于查询。
升级。 此修复之前,角色规则虽已存储,但从未对 API 密钥请求进行强制执行。使用 faucet role create 创建且从未配置规则的角色现在会被拒绝访问,返回 403——请使用 faucet role grant 或管理员 UI 为其授予规则。在管理员 UI 中创建的角色默认对所有服务仅具有 GET 权限,因此,之前通过此类角色写入数据的 API 密钥现在需要显式授予 POST/PUT/PATCH/DELETE 权限。启动时,faucet serve 会针对每个拥有活跃 API 密钥但会拒绝所有请求的角色(没有规则、只有 verb_mask: 0 规则或未激活)记录警告,并提供可修复问题的 faucet role grant 命令。
管理员 JWT 签名密钥不再有内置默认值:如果未配置 auth.jwt_secret / FAUCET_AUTH_JWT_SECRET(别名 FAUCET_JWT_SECRET),首次启动时会生成随机密钥并将其持久化到数据目录中。除非此前已配置该密钥,否则升级会使现有管理员会话失效——请重新登录。
API 路由
GET /healthz # Liveness probe
GET /readyz # Readiness probe
GET /openapi.json # OpenAPI 3.1 spec
POST /api/v1/system/admin/session # Admin login
GET /api/v1/system/service # List services
POST /api/v1/system/service # Create service
GET /api/v1/system/role # List roles
POST /api/v1/system/role # Create role
POST /api/v1/system/api-key # Create API key
GET /api/v1/{service}/_table # List tables
GET /api/v1/{service}/_table/{table} # Query records
POST /api/v1/{service}/_table/{table} # Insert records
PUT /api/v1/{service}/_table/{table} # Replace records
PATCH /api/v1/{service}/_table/{table} # Update records
DELETE /api/v1/{service}/_table/{table} # Delete records
GET /api/v1/{service}/_schema # List table schemas
POST /api/v1/{service}/_schema # Create table
GET /api/v1/{service}/_proc # List stored procedures
POST /api/v1/{service}/_proc/{proc} # Call procedure
查询参数
| 参数 | 示例 | 说明 |
|---|---|---|
filter | (age > 21) AND (name LIKE 'A%') | 类 SQL 筛选语法,并采用安全的参数化处理 |
order | created_at DESC, name ASC | 排序顺序 |
limit | 25 | 返回的最大记录数 |
offset | 50 | 分页时跳过的记录数 |
fields | id,name,email | 选择特定列 |
ids | 1,2,3 | 按主键值筛选 |
include_count | true | 在响应元数据中包含记录总数 |
Faucet 与 PostgREST、Hasura、DreamFactory、Supabase 的对比
简要对比各项目的定位。内容仅涵盖可在各项目自身文档中核实的事实;如果其中有信息已过时,请提交 issue。
| Faucet | PostgREST | Hasura | DreamFactory | Supabase | |
|---|---|---|---|---|---|
| 主要 API | REST + OpenAPI 3.1,另有内置 MCP 端点 /mcp | REST | 以 GraphQL 为主 | REST | REST(通过 PostgREST)、实时功能、身份验证、存储 |
| 数据库 | PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake、SQLite | PostgreSQL | PostgreSQL,以及通过连接器接入的其他数据源 | 多种 SQL 和 NoSQL 数据源 | PostgreSQL |
| 管理界面 | 内嵌在二进制文件中 | 无 | 控制台 | Web 管理应用 | Studio |
| 运行方式 | 单个 Go 二进制文件,配置存储在内嵌的 SQLite 中 | 单个二进制文件 | 引擎加一个 Postgres 元数据数据库(v2) | PHP/Laravel 应用 | 托管平台,或自托管多服务 Docker 栈 |
| 许可证 | MIT | MIT | Apache 2.0(graphql-engine 仓库) | Apache 2.0(开源版),另提供付费版本 | Apache 2.0 |
常见问题
Faucet 是什么? Faucet 是一个采用 MIT 许可证的开源单个 Go 二进制文件,可将 SQL 数据库转换为 REST API 和供 AI Agent 使用的 MCP 服务。它支持 PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake 和 SQLite,并包含 RBAC、OpenAPI 3.1 规范和内置管理界面。
Faucet 支持哪些数据库? 七种:PostgreSQL、MySQL、MariaDB(通过 MySQL 驱动程序)、SQL Server、Oracle、Snowflake 和 SQLite。有关版本和各数据库教程,请参阅支持的数据库。
如何将 Claude Code 或 Claude Desktop 连接到我的数据库?
运行 faucet serve,在管理界面中连接数据库,创建 API 密钥,然后运行 claude mcp add --transport http faucet http://localhost:8080/mcp --header "X-API-Key: YOUR_API_KEY"。Claude Desktop 使用 mcp-remote 桥接程序;请参阅 Claude Desktop。
如何连接 Cursor、VS Code 或 Windsurf?
将 http://localhost:8080/mcp 添加为带有 X-API-Key 标头的 HTTP MCP 服务。可直接复制粘贴的配置见 Cursor、VS Code、Windsurf 和管理界面的 AI agents (MCP) 页面。
如何将 ChatGPT 连接到我的数据库?
通过 HTTPS 暴露 Faucet,创建具有只读角色的 API 密钥,然后添加一个自定义 GPT Action,导入 https://your-host/openapi.json 并使用 API 密钥进行身份验证(标头 X-API-Key)。ChatGPT 连接器需要 OAuth,而 Faucet 不支持 OAuth。
可以将 Faucet 与 Base44、Replit 或其他 AI 应用构建工具搭配使用吗?
可以。通过 HTTPS 暴露 Faucet 并创建范围受限的 API 密钥。然后,将 https://your-host/mcp 作为自定义 MCP 服务添加,并设置 X-API-Key 标头;也可以在应用中调用 REST API(/api/v1/...)和 OpenAPI 规范(/openapi.json)。
Faucet 可自托管吗?我的数据存放在哪里?
可以。Faucet 可在任何运行环境中运行(你的笔记本电脑、与本地部署数据库相邻的服务器或容器),并直接连接数据库;数据行不会被复制到其他地方。Faucet 自身的配置(连接、角色、API 密钥、管理账户)存储在数据目录中的内嵌 SQLite 文件里(默认位于 ~/.faucet,Docker 中位于 /data)。有关匿名使用情况遥测及如何关闭它,请参阅 TELEMETRY.md。
Faucet 免费吗? 是的。Faucet 采用 MIT 许可证开源,核心功能没有付费层级。
Faucet 与 PostgREST 有何不同? PostgREST 仅支持 PostgreSQL。Faucet 支持 7 种数据库(PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake、SQLite),内置管理界面,并为 AI Agent 提供原生 MCP 支持,所有功能都集成在单个二进制文件中。 Faucet 与 Hasura 有何不同? Hasura 以 GraphQL 为先。Faucet 生成 REST API,并提供 OpenAPI 3.1 规范(而非 GraphQL);它以单个二进制文件运行,将配置保存在内嵌的 SQLite 文件中,并内置用于 AI Agent 的 MCP 服务。
Faucet 与 DreamFactory 有何不同? DreamFactory 是 PHP/Laravel 应用,需要运行在带 PHP 的 Web 服务栈上。Faucet 是单个 Go 二进制文件,没有运行时依赖。Faucet 在 MIT 许可证下完全开源,包含所有功能,核心功能无需付费套餐。
Faucet 与 Supabase 有何不同? Supabase 是一个 PostgreSQL 平台(数据库、身份验证、存储、实时功能),可托管使用,也可作为一组服务自行托管。Faucet 不托管你的数据:它在你已有的数据库前提供 REST API 和 MCP 服务,包括 MySQL、SQL Server、Oracle、Snowflake 和 SQLite。
Faucet 支持 GraphQL 吗? 目前不支持。Faucet 生成 REST API 和 OpenAPI 3.1 规范。未来可能会添加 GraphQL 支持。
Faucet 已可用于生产环境了吗? Faucet 正在积极开发中。它适用于内部工具、原型开发和 AI Agent 集成。请查看发布页面了解最新版本。
AI Agent 可以通过 Faucet 写入数据吗?
可以。MCP 工具包括 faucet_insert、faucet_update 和 faucet_delete。所有操作都遵循 RBAC 角色,因此你可以按表为 AI Agent 授予只读或读写权限。除非你为某项服务启用原始 SQL 并授予所有动词权限,否则原始 SQL 默认关闭。
Faucet 需要单独的数据库来存储配置吗? 不需要。Faucet 使用内嵌的 SQLite 数据库存储所有配置、凭据、角色和 API 密钥。所有内容都保存在本地的单个文件中。
从源代码构建
git clone https://github.com/faucetdb/faucet.git
cd faucet
make build # Builds UI + Go binary
make test # Runs all tests
make dev # Dev mode with hot reload
技术栈
- Go 1.25+ — Chi 路由器、sqlx、Cobra/Viper CLI
- Preact + Vite + Tailwind — 内嵌的管理 UI
- SQLite(纯 Go,无 CGO)— 配置存储
- MCP(模型上下文协议)— AI Agent 集成
文档
完整文档请访问 wiki.faucetdb.ai:
- 快速入门:安装、连接数据库并发送第一个请求
- 管理 UI 指南:逐页介绍各项功能
- MCP 服务:连接 Claude、Cursor、VS Code、Windsurf 和 ChatGPT
- 角色和 API 密钥(RBAC)
- 筛选语法
- API 参考
- CLI 参考
- 架构锁定
- 部署:Docker、Kubernetes、systemd、反向代理、生产环境检查清单
- 数据库连接器及以下教程:PostgreSQL、MySQL / MariaDB、SQL Server、Oracle、Snowflake 和 SQLite
- 架构
- 大模型指南:为 AI 编码助手编写的精简参考文档
参与贡献
欢迎贡献!请参阅 CONTRIBUTING.md 了解指南,或提交 issue 报告错误和请求功能。
许可证
MIT — 可免费用于商业和个人用途。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。