关于 Self-Hosted Supabase MCP Server
Self-Hosted Supabase MCP Server 是面向可自托管 Supabase 实例的 MCP 服务,可在开发环境中检查数据库结构、管理迁移与认证用户。项目从零实现,仅聚焦单项目场景,不涉及云端多项目管理。
主要功能
- 01数据库结构与扩展查询
- 02迁移记录的列出与应用
- 03认证用户的增删改查
- 04Storage 存储桶与对象管理
- 05基于角色的工具权限控制
- 06HTTP 与 stdio 两种传输方式
适用场景
- 01在 IDE 中查看自托管 Supabase 的表、索引与外键
- 02检查数据库连接、统计信息与 RLS 策略
- 03生成 TypeScript 类型定义
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露数据库、认证、存储等相关工具。HTTP 模式下通过 JWT 中的 role 声明决定可用工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
自托管 Supabase MCP 服务
概述
本项目提供了一个专为与自托管 Supabase 实例交互而设计的 Model Context Protocol (MCP) 服务。它在 MCP 客户端(如 IDE 扩展)与本地或私有托管的 Supabase 项目之间搭建桥梁,让你可以直接在开发环境中进行数据库探查、管理和交互。
此服务从头构建,吸取了改造官方 Supabase 云端 MCP 服务的经验,提供精简、专注且针对自托管场景的实现。
目的
此服务的主要目标是让使用自托管 Supabase 安装的开发者能够借助基于 MCP 的工具完成以下任务:
- 查询数据库架构和数据。
- 管理数据库迁移。
- 检查数据库统计信息和连接。
- 管理身份验证用户。
- 与 Supabase Storage 交互。
- 生成类型定义。
它避开了官方云端服务在多项目管理和云专属 API 方面的复杂性,为单项目自托管环境提供更精简的体验。
功能(已实现的工具)
工具按权限级别分类:
- 常规工具可供任何经过身份验证的 Supabase JWT(
authenticated或service_role角色)使用。 - 特权工具需要
service_roleJWT(HTTP 模式),或直接访问数据库/服务密钥(stdio 模式)。
架构与迁移
| 工具 | 描述 | 权限 |
|---|---|---|
list_tables | 列出数据库架构中的表 | 常规 |
list_extensions | 列出已安装的 PostgreSQL 扩展 | 常规 |
list_available_extensions | 列出所有可用(可安装)的扩展 | 常规 |
list_migrations | 列出 supabase_migrations.schema_migrations 中已应用的迁移 | 常规 |
apply_migration | 应用 SQL 迁移,并将其记录到 supabase_migrations.schema_migrations 中 | 特权 |
list_table_columns | 列出指定表的列 | 常规 |
list_indexes | 列出指定表的索引 | 常规 |
list_constraints | 列出指定表的约束 | 常规 |
list_foreign_keys | 列出指定表的外键 | 常规 |
list_triggers | 列出指定表的触发器 | 常规 |
list_database_functions | 列出用户定义的数据库函数 | 常规 |
get_function_definition | 获取函数的源定义 | 常规 |
get_trigger_definition | 获取触发器的源定义 | 常规 |
数据库操作与统计
| 工具 | 描述 | 权限 |
|---|---|---|
execute_sql | 执行任意 SQL 查询 | 特权 |
explain_query | 对查询运行 EXPLAIN ANALYZE | 特权 |
get_database_connections | 显示活动连接(pg_stat_activity) | 常规 |
get_database_stats | 获取数据库统计信息(pg_stat_*) | 常规 |
get_index_stats | 显示索引使用统计信息 | 常规 |
get_vector_index_stats | 显示 pgvector 索引统计信息 | 常规 |
安全与 RLS
| 工具 | 描述 | 权限 |
|---|---|---|
list_rls_policies | 列出表的行级安全策略 | 常规 |
get_rls_status | 显示表是否启用 RLS | 常规 |
get_advisors | 获取安全和性能建议通知 | 常规 |
项目配置
| 工具 | 描述 | 权限 |
|---|---|---|
get_project_url | 返回配置的 Supabase URL | 普通 |
verify_jwt_secret | 检查是否已配置 JWT 密钥 | 普通 |
开发与扩展工具
| 工具 | 描述 | 权限 |
|---|---|---|
generate_typescript_types | 根据数据库架构生成 TypeScript 类型 | 普通 |
rebuild_hooks | 重启 pg_net 工作进程(如果已使用) | 特权 |
get_logs | 获取最近的日志条目(分析堆栈或 CSV 备用数据) | 普通 |
Auth 用户管理
| 工具 | 描述 | 权限 |
|---|---|---|
list_auth_users | 列出 auth.users 中的用户 | 普通 |
get_auth_user | 获取特定用户的详细信息 | 普通 |
create_auth_user | 在 auth.users 中创建新用户(密码通过 pgcrypto 进行 bcrypt 哈希处理) | 特权 |
update_auth_user | 更新用户详细信息(更改密码时会进行 bcrypt 哈希处理) | 特权 |
delete_auth_user | 删除 auth.users 中的用户 | 特权 |
存储
| 工具 | 描述 | 权限 |
|---|---|---|
list_storage_buckets | 列出所有存储桶 | 普通 |
list_storage_objects | 列出指定存储桶中的对象 | 普通 |
get_storage_config | 获取存储桶配置 | 普通 |
update_storage_config | 更新存储桶设置 | 特权 |
实时功能检查
| 工具 | 描述 | 权限 |
|---|---|---|
list_realtime_publications | 列出 PostgreSQL 发布(例如 supabase_realtime) | 普通 |
扩展专用工具
| 工具 | 描述 | 权限 |
|---|---|---|
list_cron_jobs | 列出计划任务(需要 pg_cron 扩展) | 普通 |
get_cron_job_history | 显示 cron 任务的近期执行历史 | 普通 |
list_vector_indexes | 列出 pgvector 索引(需要 pgvector 扩展) | 普通 |
Edge Functions
| 工具 | 描述 | 权限 |
|---|---|---|
list_edge_functions | 列出已部署的 Edge Functions | 普通 |
get_edge_function_details | 获取 Edge Function 的详细信息和元数据 | 普通 |
list_edge_function_logs | 获取 Edge Function 的近期日志 | 普通 |
关于 supabase_migrations.schema_migrations
list_migrations 和 apply_migration 工具依赖 supabase_migrations.schema_migrations 表。此表由 Supabase CLI 创建和管理,并非 MCP 服务本身的一部分。
表的创建方式:
使用 Supabase CLI 初始化或运行迁移时,会自动创建此表:
supabase db push # pushes local migrations to a remote database
supabase migration up # applies pending local migration files
如果你从未对数据库运行过 Supabase CLI,此表将不存在,且 list_migrations 会返回错误。你可以使用以下命令手动创建:
CREATE SCHEMA IF NOT EXISTS supabase_migrations;
CREATE TABLE IF NOT EXISTS supabase_migrations.schema_migrations (
version text NOT NULL PRIMARY KEY,
name text NOT NULL DEFAULT '',
inserted_at timestamptz NOT NULL DEFAULT now()
);
与官方 Supabase 的架构差异:
Supabase 云平台会追踪其他列(例如 statements、dirty)。此 MCP 服务使用最精简的架构(version + name + inserted_at),与 Supabase CLI 的本地开发工作流兼容。如果现有表包含额外的列,则会忽略这些列。
设置与安装
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装 Self-Hosted Supabase MCP Server:
npx -y @smithery/cli install @HenkDz/selfhosted-supabase-mcp --client claude
前置条件
- Bun v1.1 或更高版本(替代 Node.js/npm,用于运行时和构建)
- 可访问自托管的 Supabase 实例(URL、密钥,以及可选的直接 PostgreSQL 连接字符串)。
步骤
- 克隆代码仓库:
git clone <repository-url> cd selfhosted-supabase-mcp - 安装依赖:
bun install - 构建项目:
此操作会将 TypeScript 源代码编译为 JavaScript,并放入bun run builddist目录。
配置
服务需要配置 Supabase 实例的详细信息。可以通过命令行参数或环境变量提供这些信息。命令行参数优先。
必填:
--url <url>或SUPABASE_URL=<url>:Supabase 项目的主 HTTP URL(例如:http://localhost:8000)。--anon-key <key>或SUPABASE_ANON_KEY=<key>:Supabase 项目的匿名密钥。
可选(但建议使用/某些工具必填):
--service-key <key>或SUPABASE_SERVICE_ROLE_KEY=<key>:Supabase 项目的服务角色密钥。特权工具以及启动时自动创建execute_sql辅助函数都需要此密钥。--db-url <url>或DATABASE_URL=<url>:Supabase 数据库的直接 PostgreSQL 连接字符串(例如:postgresql://postgres:password@localhost:5432/postgres)。需要直接访问数据库的工具(apply_migration、Auth 工具、Storage 工具、pg_catalog查询)必须提供此项。--jwt-secret <secret>或SUPABASE_AUTH_JWT_SECRET=<secret>:Supabase 项目的 JWT 密钥。使用--transport http时必须提供,verify_jwt_secret工具也需要此密钥。--tools-config <path>:指定要启用哪些工具(白名单)的 JSON 文件路径。如果省略,则启用所有工具。格式:{"enabledTools": ["tool_name_1", "tool_name_2"]}。
HTTP 传输选项(使用 --transport http 时):
--port <number>:HTTP 服务端口(默认值:3000)。--host <string>:HTTP 服务主机(默认值:127.0.0.1)。--cors-origins <origins>:允许的 CORS 来源列表,以逗号分隔。默认仅允许 localhost。--rate-limit-window <ms>:速率限制窗口时长,单位为毫秒(默认值:60000)。--rate-limit-max <count>:每个速率限制窗口内的最大请求数(默认值:100)。--request-timeout <ms>:请求超时时长,单位为毫秒(默认值:30000)。
重要说明:
- **
execute_sql辅助函数:**许多工具依赖 Supabase 数据库中的public.execute_sql函数,通过 RPC 执行 SQL。服务会在启动时尝试检查此函数是否存在。如果函数不存在,且提供了service-key和db-url,服务会尝试自动创建该函数。如果创建失败或未提供密钥,仅依赖 RPC 的工具可能无法正常工作。 - **直接访问数据库:**直接与特权架构(
auth、storage)或系统目录(pg_catalog)交互的工具通常需要配置DATABASE_URL。 - Coolify/反向代理部署:
DATABASE_URL必须使用 MCP 服务进程所在位置可访问的内部主机名,而不是面向公网的域名。- 启动时出现
ECONNRESET错误,表示服务所在的网络环境无法访问DATABASE_URL。 - 服务仍会成功启动,且所有不需要直接连接数据库的工具都会继续正常工作。
安全
HTTP 传输(推荐用于远程访问)
使用 --transport http 运行时,服务会强制执行以下规则:
- 所有
/mcp端点均使用你的SUPABASE_AUTH_JWT_SECRET进行 JWT 身份验证。 - 基于权限的访问控制(RBAC) — JWT 中的
role声明决定哪些工具可用:service_role:完全访问权限(所有工具,包括特权工具)。authenticated:仅可使用常规工具。anon:无法使用任何工具。
- 速率限制 — 可配置每个 IP 地址的请求速率限制。
- CORS — 可配置允许的来源列表(默认仅允许 localhost)。
- 安全标头 —
X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security等。 - 请求超时 — 可配置超时时间,防止资源耗尽。
Stdio 传输(本地开发)
Stdio 模式没有身份验证 — 所有工具(包括特权工具)均可使用。此模式仅供可信的本地客户端使用(例如,在本机运行的 IDE 扩展)。使用此模式时,启动过程中会打印一条警告。
身份验证用户工具的密码处理
create_auth_user 和 update_auth_user 接受 MCP 客户端传入的明文密码,然后立即使用 bcrypt(通过 PostgreSQL 的 pgcrypto 扩展:crypt($password, gen_salt('bf')))对密码进行哈希处理,再将其存储到 auth.users 中。明文密码绝不会被存储。密码作为查询参数传递(不会通过字符串插值写入 SQL),以防止 SQL 注入。
注意: 密码会以明文形式通过 MCP 传输在 MCP 客户端和服务之间传输。这是 MCP 协议接口固有的特性,在这一层无法避免。为保护网络安全,请使用启用了 TLS 终止的 HTTP 传输(例如,部署在 Kong/nginx 后面)。
SQL 执行安全
MCP 服务中的所有数据库操作都使用参数化查询($1、$2,……)以防止 SQL 注入。execute_sql 工具是一个有意设置的例外 — 它按设计执行任意 SQL(这正是该工具的用途)。此工具仅限 service_role 权限级别使用,以限制暴露风险。
用法
Stdio 模式(本地 MCP 客户端)
使用 Bun 运行服务,并提供必要的配置:
# Using CLI arguments (stdio mode — default)
bun run dist/index.js --url http://localhost:8000 --anon-key <your-anon-key> \
--db-url postgresql://postgres:password@localhost:5432/postgres \
--service-key <your-service-key>
# Example with tool whitelisting via config file
bun run dist/index.js --url http://localhost:8000 --anon-key <your-anon-key> \
--tools-config ./mcp-tools.json
# Or configure using environment variables and run:
# export SUPABASE_URL=http://localhost:8000
# export SUPABASE_ANON_KEY=<your-anon-key>
# export DATABASE_URL=postgresql://postgres:password@localhost:5432/postgres
# export SUPABASE_SERVICE_ROLE_KEY=<your-service-key>
bun run dist/index.js
HTTP 模式(Docker / 远程访问)
bun run dist/index.js \
--transport http \
--port 3100 \
--host 0.0.0.0 \
--url http://kong:8000 \
--anon-key <your-anon-key> \
--service-key <your-service-key> \
--jwt-secret <your-jwt-secret> \
--db-url postgresql://postgres:password@db:5432/postgres
HTTP 模式需要 --jwt-secret。所有 /mcp 请求都必须在 Authorization: Bearer <token> 标头中包含有效的 Supabase JWT。
服务通过 stdio(默认)或 HTTP(Streamable HTTP Transport)进行通信,设计为由 MCP 客户端应用程序调用(例如 Cursor 之类的 IDE 扩展)。客户端将连接到服务的 stdio 流或 HTTP 端点,以列出并调用可用工具。
客户端配置示例
以下示例展示了如何配置常用 MCP 客户端,以使用此可自托管服务。
重要提示:
- 请将
<your-supabase-url>、<your-anon-key>、<your-db-url>、<path-to-dist/index.js>等占位符替换为实际值。 - 请确保已编译的服务文件(
dist/index.js)路径适用于你的系统。 - 请谨慎将敏感密钥直接存储在配置文件中,尤其是配置文件会提交到版本控制的情况下。如果客户端支持,请考虑使用环境变量或其他更安全的方式。
Cursor
-
在项目根目录中创建或打开文件
.cursor/mcp.json。 -
添加以下配置:
{ "mcpServers": { "selfhosted-supabase": { "command": "bun", "args": [ "run", "<path-to-dist/index.js>", // 例如:"/home/user/selfhosted-supabase-mcp/dist/index.js" "--url", "<your-supabase-url>", // 例如:"http://localhost:8000" "--anon-key", "<your-anon-key>", // 可选——根据所用工具的需要添加以下参数 "--service-key", "<your-service-key>", "--db-url", "<your-db-url>", // 例如:"postgresql://postgres:password@host:port/postgres" "--jwt-secret", "<your-jwt-secret>", // 可选——将特定工具加入白名单 "--tools-config", "<path-to-your-mcp-tools.json>" // 例如:"./mcp-tools.json" ] } } }
Visual Studio Code(Copilot)
VS Code Copilot 允许使用通过提示输入填充的环境变量,这种方式更安全地处理密钥。
-
在项目根目录中创建或打开文件
.vscode/mcp.json。 -
添加以下配置:
{ "inputs": [ { "type": "promptString", "id": "sh-supabase-url", "description": "自托管 Supabase URL", "default": "http://localhost:8000" }, { "type": "promptString", "id": "sh-supabase-anon-key", "description": "自托管 Supabase 匿名密钥", "password": true }, { "type": "promptString", "id": "sh-supabase-service-key", "description": "自托管 Supabase 服务密钥(可选)", "password": true, "required": false }, { "type": "promptString", "id": "sh-supabase-db-url", "description": "自托管 Supabase DB URL(可选)", "password": true, "required": false }, { "type": "promptString", "id": "sh-supabase-jwt-secret", "description": "自托管 Supabase JWT 密钥(可选)", "password": true, "required": false }, { "type": "promptString", "id": "sh-supabase-server-path", "description": "self-hosted-supabase-mcp/dist/index.js 的路径" }, { "type": "promptString", "id": "sh-supabase-tools-config", "description": "工具配置 JSON 文件的路径(可选,例如:./mcp-tools.json)", "required": false } ], "servers": { "selfhosted-supabase": { "command": "bun", "args": [ "run", "${input:sh-supabase-server-path}", "--tools-config", "${input:sh-supabase-tools-config}" ], "env": { "SUPABASE_URL": "${input:sh-supabase-url}", "SUPABASE_ANON_KEY": "${input:sh-supabase-anon-key}", "SUPABASE_SERVICE_ROLE_KEY": "${input:sh-supabase-service-key}", "DATABASE_URL": "${input:sh-supabase-db-url}", "SUPABASE_AUTH_JWT_SECRET": "${input:sh-supabase-jwt-secret}" } } } } -
在 Agent 模式(@workspace)下使用 Copilot Chat 时,它应能检测到该服务。首次调用服务时,系统会提示你输入相关信息(URL、密钥、路径)。
其他客户端(Windsurf、Cline、Claude)
参考 Cursor 配置或 Supabase 官方文档中的配置结构,并将 command 和 args 替换为 bun run 命令及此服务所需的参数,类似于 Cursor 示例:
{
"mcpServers": {
"selfhosted-supabase": {
"command": "bun",
"args": [
"run",
"<path-to-dist/index.js>",
"--url", "<your-supabase-url>",
"--anon-key", "<your-anon-key>",
"--service-key", "<your-service-key>",
"--db-url", "<your-db-url>",
"--jwt-secret", "<your-jwt-secret>",
"--tools-config", "<path-to-your-mcp-tools.json>"
]
}
}
}
请查阅各客户端的具体文档,了解应将 mcp.json 或等效配置文件放在何处。
与自托管 Supabase 的 Docker 集成
此 MCP 服务可以直接集成到自托管 Supabase Docker Compose 堆栈中,通过 Kong API 网关与其他 Supabase 服务一同使用。
架构概览
与 Docker 集成时:
- MCP 服务以 HTTP 传输模式运行(而非 stdio)
- 服务通过 Kong 暴露在
/mcp/v1/* - JWT 身份验证由 MCP 服务自身处理
- 服务可直接访问数据库和所有 Supabase 密钥
设置步骤
1. 将 MCP 服务添加为 Git 子模块
在 Supabase Docker 目录中:
git submodule add https://github.com/HenkDz/selfhosted-supabase-mcp.git selfhosted-supabase-mcp
2. 创建 Dockerfile
创建 volumes/mcp/Dockerfile:
# Dockerfile for selfhosted-supabase-mcp HTTP mode
# Multi-stage build using Bun runtime for self-hosted Supabase
FROM oven/bun:1.1-alpine AS builder
WORKDIR /app
# Copy package files from submodule
COPY selfhosted-supabase-mcp/package.json selfhosted-supabase-mcp/bun.lock* ./
# Install dependencies
RUN bun install --frozen-lockfile || bun install
# Copy source code
COPY selfhosted-supabase-mcp/src ./src
COPY selfhosted-supabase-mcp/tsconfig.json ./
# Build the application
RUN bun build src/index.ts --outdir dist --target bun
# Production stage
FROM oven/bun:1.1-alpine AS runner
WORKDIR /app
# Create non-root user for security
RUN addgroup --system --gid 1001 mcp && \
adduser --system --uid 1001 --ingroup mcp mcp
# Copy built application from builder
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
# Set ownership
RUN chown -R mcp:mcp /app
USER mcp
# Default environment variables
ENV NODE_ENV=production
# Health check
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3100/health || exit 1
# Expose HTTP port
EXPOSE 3100
# Start the MCP server in HTTP mode
CMD ["bun", "run", "dist/index.js"]
3. 将 MCP 服务添加到 docker-compose.yml
将此服务定义添加到 docker-compose.yml:
## MCP Server - Model Context Protocol for AI integrations
## DISABLED BY DEFAULT - Add 'mcp' to COMPOSE_PROFILES to enable
mcp:
container_name: ${COMPOSE_PROJECT_NAME:-supabase}-mcp
profiles:
- mcp
build:
context: .
dockerfile: ./volumes/mcp/Dockerfile
restart: unless-stopped
healthcheck:
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://localhost:3100/health"
]
timeout: 5s
interval: 10s
retries: 3
depends_on:
db:
condition: service_healthy
rest:
condition: service_started
environment:
SUPABASE_URL: http://kong:8000
SUPABASE_ANON_KEY: ${ANON_KEY}
SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY}
SUPABASE_AUTH_JWT_SECRET: ${JWT_SECRET}
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
command:
[
"bun",
"run",
"dist/index.js",
"--transport", "http",
"--port", "3100",
"--host", "0.0.0.0",
"--url", "http://kong:8000",
"--anon-key", "${ANON_KEY}",
"--service-key", "${SERVICE_ROLE_KEY}",
"--jwt-secret", "${JWT_SECRET}",
"--db-url", "postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
]
4. 添加 Kong API 网关路由
将 MCP 路由添加到 volumes/api/kong.yml 的 services 部分:
## MCP Server routes - Model Context Protocol for AI integrations
## Authentication is handled by the MCP server itself (JWT validation)
- name: mcp-v1
_comment: 'MCP Server: /mcp/v1/* -> http://mcp:3100/*'
url: http://mcp:3100/
routes:
- name: mcp-v1-all
strip_path: true
paths:
- /mcp/v1/
plugins:
- name: cors
config:
origins:
- "$SITE_URL_PATTERN"
- "http://localhost:3000"
- "http://127.0.0.1:3000"
methods:
- GET
- POST
- DELETE
- OPTIONS
headers:
- Accept
- Authorization
- Content-Type
- X-Client-Info
- apikey
- Mcp-Session-Id
exposed_headers:
- Mcp-Session-Id
credentials: true
max_age: 3600
5. 启用 MCP 服务
MCP 服务使用 Docker Compose 配置文件,因此默认处于禁用状态。启用方法如下:
选项 A:在 .env 文件中设置:
COMPOSE_PROFILES=mcp
选项 B:在运行时启用:
docker compose --profile mcp up -d
访问 MCP 服务
运行后,可通过以下地址访问 MCP 服务:
- 内部(从其他容器访问):
http://mcp:3100 - 外部(通过 Kong 访问):
http://localhost:8000/mcp/v1/
身份验证
以 HTTP 模式运行时,MCP 服务会使用配置的 JWT_SECRET 验证 JWT。客户端必须在 Authorization 标头中包含有效的 Supabase JWT:
Authorization: Bearer <supabase-jwt>
JWT 的 role 声明决定了访问权限:
service_role:可完整访问所有工具(常规工具和特权工具)authenticated:仅可访问常规工具anon:无法访问工具
健康检查
MCP 服务提供健康检查端点:
curl http://localhost:8000/mcp/v1/health
安全注意事项
通过 Docker 部署时:
- MCP 服务以非 root 用户(
mcp:mcp)身份运行 - 所有工具调用都强制执行 JWT 身份验证
- 特权工具(如
execute_sql)需要service_roleJWT - CORS 通过 Kong 配置;请根据部署情况调整来源
开发
- 语言: TypeScript
- 构建:
bun build(通过bun run build) - 运行时: Bun v1.1+
- 测试运行器:
bun test - 依赖项: 通过
bun(bun.lock)管理 - 核心库:
@supabase/supabase-js、pg(node-postgres)、zod(验证)、commander(CLI 参数)、@modelcontextprotocol/sdk(MCP 服务框架)、express、jsonwebtoken。
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。