mcpField
F
Faucet

Faucet

本地服务
wiki.faucetdb.ai数据库1661 周前更新

关于 Faucet

Faucet 是一个开源单文件 Go 程序,可将 PostgreSQL、MySQL、SQL Server、Oracle、Snowflake、SQLite 等 SQL 数据库转换为 REST API 和 MCP 服务。它面向需要快速提供数据接口并对 AI Agent 做权限控制的团队,内置 RBAC 与管理界面。

主要功能

  1. 01根据数据库结构自动生成 REST API 与 OpenAPI 3.1 文档
  2. 02基于角色的访问控制(RBAC)
  3. 03内置 MCP 服务,挂载于 /mcp 路径
  4. 04支持 API 密钥与 stdio 两种 MCP 连接方式
  5. 05内置管理界面,可添加数据库并生成客户端配置

适用场景

  1. 01为应用快速搭建数据库后端接口
  2. 02让 Claude 或 Cursor 在权限约束下查询数据库
  3. 03为旧版数据库提供 REST 接口而不修改代码

MCP 相关

该项目是一个 MCP 服务,通过 /mcp 端点(Streamable HTTP)或 stdio 向 MCP 客户端暴露 faucet_list_services、faucet_query 等数据库工具,并遵循与 REST API 相同的角色规则。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"faucetdb-faucet": {
"command": "npx",
"args": [
"-y",
"@faucetdb/faucet"
],
"env": {
"FAUCET_DATA_DIR": "<FAUCET_DATA_DIR>"
}
}
}
}
启动命令npx -y @faucetdb/faucet
需要配置的环境变量
FAUCET_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@faucetdb/faucet0.1.15
ocidocker.io/faucetdb/faucet:0.1.15

工具

8

收录的工具列表 · 更新于 2 周前

参数类型必填说明
tablestring是要从中删除记录的表名
filterstring是用于选择要删除记录的筛选表达式(例如:"status = 'expired'")
servicestring是数据库服务名称

详细介绍

Faucet 标志

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、无需样板代码。

GitHub 发布版本 许可证:MIT Docker 拉取次数 CI 状态 已收录于 mcpservers.org

MCP Vault

网站 · 文档 · 快速入门 · 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,所有功能集于一个二进制文件中。请参阅对比。

Faucet 管理界面列出已连接的 PostgreSQL 和 SQLite 数据库

使用场景
  • 应用的即时后端 — 无需手动编写 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 管理 UI 中添加 PostgreSQL 数据库,可填写主机、端口、用户名和密码
使用主机、端口、用户名和密码连接数据库。Faucet 会在保存前测试连接,并告知你需要修正的内容。

Faucet 架构页面,显示已锁定表的列、键和架构漂移
浏览表、列、键和数据,并锁定 API 契约,防止架构变更造成破坏。

Faucet API 浏览器,包含筛选查询、JSON 响应和复制为 curl 的功能
使用筛选条件和分页构建请求,然后复制为 curl、JavaScript 或 Python 代码。

Faucet AI Agent 页面,提供 Claude Code、Cursor、VS Code 等工具的即用型 MCP 配置
可直接复制的 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 风格的探测

支持的数据库

数据库版本云变体教程
PostgreSQL9.6 – 17Amazon RDS、Aurora、Supabase、Neon、Azure Database指南
MySQL5.7 – 9.xAmazon RDS、Aurora MySQL、PlanetScale、Azure MySQL指南
MariaDB10.2 – 11.x通过 MySQL 驱动程序MySQL 指南
SQL Server2012 – 2022Azure SQL Database、Amazon RDS指南
Oracle12c – 26aiOracle Cloud(OCI)、Amazon RDS、Azure指南
Snowflake当前版本AWS、Azure、GCP指南
SQLite3.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 组合:

动词位
GET1
POST2
PUT4
PATCH8
DELETE16
全部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 筛选语法,并采用安全的参数化处理
ordercreated_at DESC, name ASC排序顺序
limit25返回的最大记录数
offset50分页时跳过的记录数
fieldsid,name,email选择特定列
ids1,2,3按主键值筛选
include_counttrue在响应元数据中包含记录总数

Faucet 与 PostgREST、Hasura、DreamFactory、Supabase 的对比

简要对比各项目的定位。内容仅涵盖可在各项目自身文档中核实的事实;如果其中有信息已过时,请提交 issue。

FaucetPostgRESTHasuraDreamFactorySupabase
主要 APIREST + OpenAPI 3.1,另有内置 MCP 端点 /mcpREST以 GraphQL 为主RESTREST(通过 PostgREST)、实时功能、身份验证、存储
数据库PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake、SQLitePostgreSQLPostgreSQL,以及通过连接器接入的其他数据源多种 SQL 和 NoSQL 数据源PostgreSQL
管理界面内嵌在二进制文件中无控制台Web 管理应用Studio
运行方式单个 Go 二进制文件,配置存储在内嵌的 SQLite 中单个二进制文件引擎加一个 Postgres 元数据数据库(v2)PHP/Laravel 应用托管平台,或自托管多服务 Docker 栈
许可证MITMITApache 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:

参与贡献

欢迎贡献!请参阅 CONTRIBUTING.md 了解指南,或提交 issue 报告错误和请求功能。

许可证

MIT — 可免费用于商业和个人用途。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。