Supabase自托管MCP服务器
MCP(模型上下文协议)服务器,用于具有RLS感知PostgreSQL+PostgREST层的自托管Supabase。
______________________________________________________________________
🌟 AIRIS生态系统的一部分
此MCP服务器旨在与 AIRIS套房 -可通过以下方式访问 airis mcp网关 用于令牌高效集成。
AIRIS套房
| 组件 | 目的 | 适用对象 |
|---|---|---|
| airis代理人 | 🧠 所有编辑器的智能层(置信度检查、深入研究、自我审查) | 所有使用Claude Code、Cursor、Windsurf、Codex、Gemini CLI的开发人员 |
| airis mcp网关 | 🚪 通过延迟加载减少90%令牌的统一MCP代理 | 希望更快启动的Claude Code用户 |
| Mindbase 的 | 💾 具有语义搜索的本地跨会话内存 | 想要持久对话历史的开发人员 |
| airis工作区 | 🏗️ Docker第一个monorepo管理器 | 构建monorepo的团队 |
| airiscode | 🖥️ 终端优先自主编码代理 | CLI优先开发者 |
MCP服务器(通过网关提供)
- airis mcp suabase自宿主 (此仓库)-支持RLS的自托管Supabase MCP
- Mindbase 的 -内存搜索和存储工具(
mindbase_search,mindbase_store)
建议:通过AIRIS MCP网关安装
此MCP服务器来了 预配置 使用AIRIS MCP网关。无需额外设置。
# Install the Gateway (includes this server)
brew install agiletec-inc/tap/airis-mcp-gateway
# Start the gateway
airis-mcp-gateway up
# Add to Claude Code
claude mcp add --transport http airis-mcp-gateway http://api.gateway.localhost:9400/api/v1/mcp替代方案:独立安装
如果您需要独立运行此服务器:
git clone https://github.com/agiletec-inc/airis-mcp-supabase-selfhost.git
cd airis-mcp-supabase-selfhost && pnpm install全套套房为您带来:
- ✅ 信任门控工作流程(防止错误的方向编码)
- ✅ 深入研究与证据综合
- ✅ 通过存储库索引减少94%的令牌
- ✅ 跨所有编辑器的跨会话内存
- ✅ 自我审查和实施后验证
______________________________________________________________________
✨ 特性
- 2层后端:PostgREST(尊重RLS)+直接PostgreSQL(模式自检和诊断)
- 令牌优化:懒惰的广告、模式摘要、最少的工具描述
- 安全第一:默认情况下为READ_ONLY模式,DML/DDL/DCL被阻止,SQL验证
- 功能标志:选择性工具激活(数据库、文档、postgrest、函数、存储)
- RLS意识:PostgREST层遵守行级安全策略
- Supabase兼容:适用于官方Supabase自托管部署
🏗️ 建筑
┌─────────────────────────────────────────┐
│ LLM (Claude, GPT, etc.) │
└───────────────┬─────────────────────────┘
│ MCP Protocol (JSON-RPC)
┌───────────────▼─────────────────────────┐
│ Supabase Self-hosted MCP Server │
│ ┌─────────────────────────────────┐ │
│ │ Feature Flags & Safety Guards │ │
│ └─────────────────────────────────┘ │
│ │ │ │
│ ┌──────▼──────┐ ┌─────▼──────┐ │
│ │ PostgREST │ │ Direct │ │
│ │ Layer │ │ PG │ │
│ │ (RLS aware) │ │ (read-only)│ │
│ └──────┬──────┘ └─────┬──────┘ │
└─────────┼──────────────────┼───────────┘
│ │
▼ ▼
┌─────────────────────────────┐
│ Supabase Self-hosted │
│ (PostgreSQL + PostgREST) │
└─────────────────────────────┘🚀 快速开始
先决条件
- Node.js>=20.0.0
- 自托管Supabase实例正在运行(本地主机:54321或远程)
- PostgreSQL只读用户(推荐)
1.安装依赖项
pnpm install2.配置环境
cp .env.example .env
# Edit .env with your Supabase credentials关键配置:
# PostgreSQL (use read-only role for safety)
PG_DSN=postgres://mcp_ro:password@127.0.0.1:5432/postgres
# PostgREST endpoint
POSTGREST_URL=http://127.0.0.1:54321/rest/v1
# PostgREST JWT (anon key or service_role key)
POSTGREST_JWT=your_anon_key_here
# Safety mode (recommended: true)
READ_ONLY=true
# Feature flags
FEATURES=database,docs,postgrest3.创建只读PostgreSQL用户(推荐)
-- Connect to your Supabase PostgreSQL as superuser
CREATE ROLE mcp_ro WITH LOGIN PASSWORD 'secure_password';
GRANT pg_read_all_data TO mcp_ro;
GRANT USAGE ON SCHEMA public TO mcp_ro;
GRANT USAGE ON SCHEMA information_schema TO mcp_ro;4.启动服务器
# Development mode (with auto-reload)
pnpm dev
# Production mode
pnpm build
pnpm start服务器启动于 http://localhost:3100
🛠️ 可用工具
MVP工具(当前实施)
工具前缀:所有工具使用 sbsh_ 前缀,以避免与官方Supabase MCP和PostgreSQL MCP服务器冲突。
1. sbsh_introspect_schema
获取指定架构的令牌优化架构摘要。
{
"name": "sbsh_introspect_schema",
"arguments": {
"schemas": ["public"]
}
}输出:包含表名、列类型、索引/约束计数、RLS状态的摘要格式。
2. sbsh_execute_sql
安全地执行SELECT查询或解释计划。
{
"name": "sbsh_execute_sql",
"arguments": {
"sql": "SELECT * FROM users WHERE created_at > '2024-01-01' LIMIT 10",
"limit": 100
}
}安全:在READ_ONLY模式下,DML/DDL/DCL被阻止。
3. sbsh_postgrest_get
通过PostgREST发出GET请求,并尊重RLS。
{
"name": "sbsh_postgrest_get",
"arguments": {
"table": "users",
"query": {
"select": "id,email,created_at",
"eq": "status:active",
"order": "created_at.desc",
"limit": 10
}
}
}安全:使用提供的JWT,尊重RLS政策。
4. sbsh_get_table_doc
获取特定表格的详细文档。
{
"name": "sbsh_get_table_doc",
"arguments": {
"table": "public.users"
}
}输出:列、约束、RLS策略、评论。
🔐 安全特性
只读模式(默认)
- 默认情况下启用 为了安全
- 阻止所有DML/DDL/DCL操作
- 仅允许SELECT和EXPLAIN查询
- 建议用于生产
SQL验证
- 基于正则表达式的变异操作检测
- 块:INSERT、UPDATE、DELETE、TRUNCATE、ALTER、DROP、CREATE、GRANT、REVOKE等。
- 允许:选择、解释
RLS尊重
- PostgREST层自动执行行级安全
- PostgreSQL直接层使用只读角色(无写权限)
- 基于JWT的用户范围访问身份验证
功能标志
通过以下方式控制工具可用性 FEATURES 环境变量:
database:模式自省和SQL执行docs:表格文件postgrest:PostgREST API包装functions:边缘功能(尚未实现)storage:存储API(尚未实现)
📊 令牌优化
懒惰的广告
- 仅支持广告功能
- 最少的工具描述(按需提供详细帮助)
- 功能标志减少了初始令牌负载
架构摘要
introspect_schema返回压缩摘要- 详细信息请访问
docs.get_table_doc按需 - 列格式:
name:type!(!=非空)
结果抽样
- 可配置的行限制(最大1000)
- 包含用于上下文的字段元数据
- 截断警告
🔧 发展路线图
第一阶段:MVP(当前)
- \[x\] 项目设置
- \[x\] 核心工具:内省模式、执行sql、postgrest.get、文档
- \[x\] 只读模式
- \[x\] 功能标志
- \[x\] 令牌优化
第二阶段:增强安全性
- \[\]DML操作的干运行模式
- \[\]审核日志记录
- \[\]速率限制
- \[\]查询成本估算
第三阶段:扩展功能
- \[\]边缘功能支持
- \[\]存储API集成
- \[\]实时订阅
- \[\]多项目支持
第四阶段:高级优化
- \[\]模式缓存无效
- \[\]结果分页
- \[\]流媒体响应
- \[\]连接池优化
🤝 整合
使用airis mcp网关
此服务器设计用于动态MCP网关模式:
// Load only when Supabase tools are needed
await gateway.loadServer('airis-mcp-supabase-selfhost', {
url: 'http://localhost:3100/mcp',
features: 'database,docs'
})
// Use tools
await gateway.call('airis-mcp-supabase-selfhost', 'sbsh_introspect_schema', {})
// Unload after use
await gateway.unloadServer('airis-mcp-supabase-selfhost')使用克劳德桌面
增添 claude_desktop_config.json:
{
"mcpServers": {
"airis-mcp-supabase-selfhost": {
"command": "node",
"args": ["/path/to/dist/server.js"],
"env": {
"PG_DSN": "postgres://mcp_ro:pass@localhost:5432/postgres",
"POSTGREST_URL": "http://localhost:54321/rest/v1",
"POSTGREST_JWT": "your_jwt_here",
"READ_ONLY": "true",
"FEATURES": "database,docs,postgrest"
}
}
}
}______________________________________________________________________
🔗 相关项目
探索AIRIS生态系统中的其他工具:
- airis mcp网关 -统一MCP集线器,令牌减少90%
- airis代理人 -AI编码的智能层
- Mindbase 的 -具有语义搜索的本地跨会话内存
- airis工作区 -Docker第一个单仓库管理器
- cmd时间 macOS IME 切换器
- 神经的 -本地LLM翻译工具
- airiscode -终端第一自主编码代理
______________________________________________________________________
💖 支持这个项目
如果你觉得这个项目有帮助,可以考虑支持它的开发:
 ](https://github.com/sponsors/kazukinakai)
您的支持有助于维护和改进所有AIRIS项目!
______________________________________________________________________
🤝 贡献
我们欢迎捐款!拜托:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'feat: add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
______________________________________________________________________
📝 许可证
麻省理工学院
______________________________________________________________________
🙏 致谢
- 灵感来自 Supabase官方MCP
- 建立在 模型上下文协议
- 来自社区MCP服务器的PostgreSQL自检模式
______________________________________________________________________
内置于❤️ 由 Agiletec 团队
