PostgREST
@supabase/mcp-server-postgrest
这是PostgREST的 MCP 服务器。它允许 LLM 通过 REST API 在你的应用上执行 CRUD 操作。
该服务器可与 Supabase 项目(运行 PostgREST)和任何独立的 PostgREST 服务器配合使用。
工具
可以使用以下工具:
postgrestRequest
向已配置的PostgREST 服务器执行 HTTP 请求。它接受以下参数:
method:要使用的 HTTP 方法(例如GET、POST、PATCH、DELETE)path:查询的路径(例如/todos?id=eq.1)body:请求主体(用于POST和PATCH请求)
它返回来自 PostgREST 服务器的 JSON 响应,包括GET请求的选定行以及POST和PATCH请求的更新行。
sqlToRest
将 SQL 查询转换为等效的 PostgREST 语法(作为方法和路径)。这对于 LLM 难以转换为有效 PostgREST 语法的复杂查询非常有用。
请注意,PostgREST 仅支持 SQL 的子集,因此并非所有查询都会转换。有关更多详细信息,请参阅sql-to-rest 。
它接受以下参数:
sql:要转换的 SQL 查询。
它返回一个包含请求的method和path属性的对象。然后,LLM 可以使用postgrestRequest工具来执行该请求。
Related MCP server: Supabase MCP Server
用法
使用 Claude Desktop
Claude Desktop是一款流行的 LLM 客户端,支持模型上下文协议 (MCP)。您可以将 PostgREST 服务器连接到 Claude Desktop,以便通过自然语言命令查询数据库。
您可以通过以下配置文件将 MCP 服务器添加到 Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
要将您的 Supabase 项目*(或任何 PostgREST 服务器)*添加到 Claude Desktop,请将以下配置添加到配置文件中的mcpServers对象:
{
"mcpServers": {
"todos": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-postgrest@latest",
"--apiUrl",
"https://your-project-ref.supabase.co/rest/v1",
"--apiKey",
"your-anon-key",
"--schema",
"public"
]
}
}
}配置
apiUrl:PostgREST 端点的基本 URLapiKey:用于身份验证的 API 密钥*(可选)*schema:用于提供 API 的 Postgres 模式(例如public)。请注意,任何非公共模式都必须从 PostgREST 手动公开。
以编程方式(自定义 MCP 客户端)
如果您正在构建自己的 MCP 客户端,可以使用您首选的传输方式以编程方式连接到 PostgREST 服务器。MCP SDK提供内置的stdio和SSE传输方式。如果您希望直接连接到内存中的 MCP 服务器,或者通过您自己的基于流的传输方式进行管道传输,我们还提供StreamTransport接口。
安装
npm i @supabase/mcp-server-postgrestyarn add @supabase/mcp-server-postgrestpnpm add @supabase/mcp-server-postgrest例子
以下示例使用StreamTransport直接连接 MCP 客户端和服务器。
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamTransport } from '@supabase/mcp-utils';
import { createPostgrestMcpServer } from '@supabase/mcp-server-postgrest';
// Create a stream transport for both client and server
const clientTransport = new StreamTransport();
const serverTransport = new StreamTransport();
// Connect the streams together
clientTransport.readable.pipeTo(serverTransport.writable);
serverTransport.readable.pipeTo(clientTransport.writable);
const client = new Client(
{
name: 'MyClient',
version: '0.1.0',
},
{
capabilities: {},
}
);
const supabaseUrl = 'https://your-project-ref.supabase.co'; // http://127.0.0.1:54321 for local
const apiKey = 'your-anon-key'; // or service role, or user JWT
const schema = 'public'; // or any other exposed schema
const server = createPostgrestMcpServer({
apiUrl: `${supabaseUrl}/rest/v1`,
apiKey,
schema,
});
// Connect the client and server to their respective transports
await server.connect(serverTransport);
await client.connect(clientTransport);
// Call tools, etc
const output = await client.callTool({
name: 'postgrestRequest',
arguments: {
method: 'GET',
path: '/todos',
},
});This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/supabase-community/supabase-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server