Database & MCP

Supabase MCP सर्वर गाइड: AI एजेंट्स को Postgres से सुरक्षित जोड़ें

त्वरित उत्तर: Supabase MCP सर्वर Model Context Protocol के जरिए स्वायत्त AI एजेंट्स (Claude Code, Cursor, Windsurf) को PostgreSQL से सुरक्षित रूप से जोड़ता है। यह लाइव स्कीमा विश्लेषण, सुरक्षित SQL निष्पादन और pgvector सिमेंटिक सर्च प्रदान करता है। प्रोडक्शन में सुरक्षित संचालन के लिए केवल-पठन (read-only) क्रेडेंशियल्स, PgBouncer/Supavisor कनेक्शन पूलिंग (पोर्ट 6543), क्वेरी टाइमआउट और AST-आधारित SQL सत्यापन अनिवार्य है।


1. प्रस्तावना: स्वायत्त डेटाबेस AI एजेंट्स का उद्भव

2026 में, Claude Code (claude mcp), Cursor और विशेष डेटाबेस AI एजेंट्स केवल कोड जनरेशन से आगे बढ़कर साइट विश्वसनीयता और संपूर्ण डेटाबेस प्रबंधन का कार्य संभालने लगे हैं। स्थिर DDL फाइलों पर निर्भर रहने के बजाय, आधुनिक AI एजेंट्स स्वायत्त रूप से PostgreSQL कैटलॉग का विश्लेषण करते हैं, इंडेक्सिंग की कमियों का निदान करते हैं और लाइव प्रोडक्शन स्थिति की जांच करते हैं।

हालाँकि, एक स्वायत्त LLM एजेंट को सीधे प्रोडक्शन डेटाबेस से जोड़ने पर गंभीर जोखिम उत्पन्न होते हैं:

  • विनाशकारी DDL/DML भ्रम (Hallucinations): बिना शर्त DROP TABLE, TRUNCATE या बिना इंडेक्स के लाखों पंक्तियों पर UPDATE ... WHERE का अनपेक्षित निष्पादन।
  • कनेक्शन पूल की समाप्ति: एजेंट्स के समानांतर टूल्स कॉल PostgreSQL की max_connections सीमा को सेकंडों में समाप्त कर देते हैं, जिससे वेब सेवाएं ठप हो जाती हैं।
  • SQL इंजेक्शन और अनधिकृत पहुंच: अविश्वसनीय यूजर इनपुट के माध्यम से प्रॉम्प्ट इंजेक्शन, जो एजेंट से संवेदनशील डेटा लीक करवा सकता है।
  • कॉन्टेक्स्ट विंडो का अत्यधिक भराव: सिस्टम प्रॉम्प्ट में सैकड़ों टेबल्स के विशाल रिलेशनल स्कीमा को लोड करना, जिससे टोकन सीमा समाप्त हो जाती है और API लागत बढ़ जाती है।

Anthropic का Model Context Protocol (MCP) JSON-RPC 2.0 पर आधारित एक सुरक्षित और मानकीकृत इंटरफ़ेस प्रदान करता है। Supabase—ओपन-सोर्स पोस्टग्रेज प्लेटफॉर्म जिसमें नेटिव pgvector, PgBouncer / Supavisor पूलिंग और Row-Level Security (RLS) शामिल है—के साथ मिलकर डेवलपर्स एक सुरक्षित और उच्च-प्रदर्शन वाला डेटाबेस AI सिस्टम तैयार कर सकते हैं।


2. आर्किटेक्चर: MCP कैसे LLM और PostgreSQL को जोड़ता है

Model Context Protocol एजेंट के होस्ट एनवायरनमेंट और डेटाबेस इंजन के बीच एक हल्का ब्रिज प्रोसेस स्थापित करता है, जो लोकल stdio सबप्रोसेस या रिमोट SSE (HTTP/2) के माध्यम से सुरक्षित संवाद करता है।

+----------------------------------------------------------------------------------------------------+
|                                      HOST AI AGENT RUNTIME                                         |
|                       (Claude Code CLI, Cursor IDE, Windsurf, Custom Agent)                        |
|                                                                                                    |
|    +--------------------------+                                 +-----------------------------+    |
|    |    User Prompt Loop      |                                 |     Model Context Window    |    |
|    |  "Find top 10 users..."  |                                 | (System Prompt + MCP Tools) |    |
|    +------------+-------------+                                 +--------------^--------------+    |
|                 |                                                              |                   |
|                 | Dispatches Tool Call: execute_sql                            | Receives Schema / |
|                 v                                                              | Query Result Rows |
|    +---------------------------------------------------------------------------+--------------+    |
|    |                                      MCP CLIENT SUBSYSTEM                                |    |
|    |  - Capabilities Negotiation & Protocol Handshake (JSON-RPC 2.0)                          |    |
|    |  - Tool Call Serialization & Permission Policy Enforcement                               |    |
|    +---------------------------------------------+--------------------------------------------+    |
+--------------------------------------------------|-------------------------------------------------+
                                                   | Transport: stdio / SSE
                                                   v
+----------------------------------------------------------------------------------------------------+
|                                    SUPABASE / POSTGRES MCP SERVER                                  |
|                                                                                                    |
|    +----------------------+   +-----------------------+   +-----------------------------------+    |
|    | Schema Introspection |   | Read-Only Query Guard |   | pgvector Similarity Search        |    |
|    | - list_tables        |   | - AST parser / regex  |   | - semantic_search                 |    |
|    | - describe_table     |   | - statement_timeout   |   | - hybrid_search                   |    |
|    +----------+-----------+   +-----------+-----------+   +-----------------+-----------------+    |
|               |                           |                                 |                      |
+---------------|---------------------------|---------------------------------|----------------------+
                |                           |                                 |
                +---------------------------+---------------------------------+
                                            |
                                            v  Encrypted TLS Connection
+----------------------------------------------------------------------------------------------------+
|                                    SUPABASE POSTGRESQL INFRASTRUCTURE                              |
|                                                                                                    |
|    +------------------------------------------------------------------------------------------+    |
|    |                         SUPAVISOR / PGBOUNCER CONNECTION POOLER                          |    |
|    |  - Port 6543 (Transaction Mode) | Max 10,000 Client Conns | Shared Server Worker Pool    |    |
|    +----------------------------------------------+-------------------------------------------+    |
|                                                   | Internal Unix Socket / Local Loopback          |
|                                                   v                                                |
|    +------------------------------------------------------------------------------------------+    |
|    |                               POSTGRESQL 16/17 DATABASE ENGINE                            |    |
|    |  - Role: readonly_agent (NO DDL, SELECT only)                                            |    |
|    |  - Row Level Security (RLS) Policies                                                     |    |
|    |  - Extensions: pgvector, pg_stat_statements, pg_cron                                     |    |
|    +------------------------------------------------------------------------------------------+    |
+----------------------------------------------------------------------------------------------------+

आर्किटेक्चर: MCP कैसे LLM और PostgreSQL को जोड़ता है - Core Responsibilities

  1. डायनामिक स्कीमा विश्लेषण: एजेंट केवल आवश्यक टेबल्स की जानकारी (list_tables, describe_table) प्राप्त करता है, जिससे मॉडल का कॉन्टेक्स्ट अनावश्यक रूप से नहीं भरता।
  2. निश्चयात्मक SQL निष्पादन: सभी क्वेरीज़ ट्रांजैक्शनल सीमाओं में सुरक्षित होती हैं और सख्त निष्पादन समय सीमा (statement_timeout = '5000ms') द्वारा संरक्षित रहती हैं।
  3. pgvector द्वारा नेटिव वेक्टर सर्च: बाहरी वेक्टर डेटाबेस के बिना RAG और सिमेंटिक सर्च के लिए HNSW और IVFFlat इंडेक्स का सीधा उपयोग।
  4. क्रेडेंशियल्स का अलगाव: एजेंट को कभी भी सुपरयूजर पासवर्ड नहीं दिया जाता; यह केवल समर्पित रीड-ओनली रोल के साथ कार्य करता है।

3. बेंचमार्क: Supabase MCP बनाम PostgreSQL MCP बनाम डायरेक्ट ORM

LLMPodium की इंजीनियरिंग टीम ने तीन मुख्य इंटीग्रेशन रणनीतियों का गहन परीक्षण किया: आधिकारिक @supabase/mcp-server-supabase, कम्युनिटी PostgreSQL MCP सर्वर और Prisma CLI के जरिए डायरेक्ट सबप्रोसेस कॉल।

Benchmark Methodology

AWS us-east-1 रीजन में Supabase Pro इंस्टेंस (2 vCPU, 8 GB RAM) पर 50 समानांतर एजेंट सेशंस के साथ परीक्षण किया गया:

  • वर्कलोड A (स्कीमा खोज): 45 टेबल्स और 280 फॉरेन कीज की टोपोलॉजी का विश्लेषण।
  • वर्कलोड B (एनालिटिकल क्वेरीज़): 1,000 जटिल मल्टी-टेबल JOINs और एग्रीगेशन क्वेरीज़।
  • वर्कलोड C (उच्च समवर्तीता): 50 एजेंट थ्रेड्स द्वारा एक साथ डेटा पढ़ने का कार्य।
+-----------------------------------------------------------------------------------------------------------------------+
|                                    DATABASE AI AGENT ADAPTER BENCHMARK MATRIX (2026)                                  |
+-------------------------------------+------------------+-------------+-----------+-----------+------------+-----------+
| Adapter Implementation              | Transport Method | Schema TTFT | Query p50 | Query p99 | Max Conns  | Prompt KB |
+-------------------------------------+------------------+-------------+-----------+-----------+------------+-----------+
| Supabase MCP (Supavisor Pooler)     | stdio (Node.js)  | 28 ms       | 12.4 ms   | 48.2 ms   | 10,000+    | 1.8 KB    |
| Community PostgreSQL MCP            | stdio (TypeScript) 34 ms      | 14.1 ms   | 185.0 ms* | 90 (Cap)   | 4.2 KB    |
| Direct Agent via Prisma ORM CLI     | Subprocess Exec  | 142 ms      | 62.0 ms   | 240.0 ms  | 60 (Cap)   | 12.5 KB   |
| Remote SSE Supabase Gateway         | HTTP/2 SSE       | 86 ms       | 42.0 ms   | 110.0 ms  | 5,000+     | 2.1 KB    |
+-------------------------------------+------------------+-------------+-----------+-----------+------------+-----------+

Key Performance Findings

  • Supavisor पूलिंग अनिवार्य है: पोर्ट 5432 पर डायरेक्ट कनेक्शन 50 समवर्ती थ्रेड्स पर तुरंत विफल हो गया (FATAL: remaining connection slots are reserved)। पोर्ट 6543 के जरिए Supabase MCP ने 10,000 से अधिक वर्चुअल सेशंस को बिना किसी रुकावट के संभाला।
  • कॉन्टेक्स्ट ओवरहेड में भारी बचत: Supabase MCP केवल 1.8 KB कॉन्टेक्स्ट का उपयोग करता है, जबकि संपूर्ण Prisma स्कीमा को लोड करने में 12.5 KB की खपत होती है।
  • 15ms से कम लेटेंसी: लोकल stdio ट्रांसपोर्ट में 1ms से भी कम ओवरहेड होता है, जिससे डेटाबेस की अपनी स्पीड पूरी तरह सुरक्षित रहती है।

4. चरण-दर-चरण सेटअप: Claude Code और Cursor

न्यूनतम विशेषाधिकार सिद्धांत का पालन करते हुए Supabase MCP को Claude Code और Cursor में पांच मिनट के भीतर कॉन्फ़िगर किया जा सकता है।

पूर्वापेक्षा: एक समर्पित रीड-ओनली एजेंट रोल तैयार करना

-- 1. Create dedicated agent user role
CREATE ROLE agent_readonly WITH LOGIN PASSWORD 'SecureAgentPassphrase2026!';

-- 2. Grant connection rights to target database
GRANT CONNECT ON DATABASE postgres TO agent_readonly;

-- 3. Grant schema usage
GRANT USAGE ON SCHEMA public TO agent_readonly;

-- 4. Grant read-only access to existing and future tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO agent_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON ALL TABLES TO agent_readonly;

-- 5. Revoke destructive permissions explicitly
REVOKE CREATE ON SCHEMA public FROM agent_readonly;
REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM agent_readonly;

-- 6. Enforce statement timeouts (kills rogue queries after 5 seconds)
ALTER ROLE agent_readonly SET statement_timeout = '5000ms';
ALTER ROLE agent_readonly SET lock_timeout = '2000ms';

इंटीग्रेशन A: Claude Code (CLI)

Claude Code नेटिव रूप से MCP सर्वर का समर्थन करता है और इसे टर्मिनल कमांड या कॉन्फ़िगरेशन फ़ाइल के माध्यम से जोड़ा जा सकता है।

#### Method 1: Interactive Terminal Command

# Add the Supabase MCP server via npx
claude mcp add supabase-db -- npx -y @supabase/mcp-server-supabase \
  --db-url "postgresql://agent_readonly:SecureAgentPassphrase2026!@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require"

#### Method 2: Global Configuration File

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ],
      "env": {
        "SUPABASE_DB_URL": "postgresql://agent_readonly:SecureAgentPassphrase2026!@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require",
        "SUPABASE_ACCESS_TOKEN": "sbp_your_personal_access_token_here",
        "SUPABASE_PROJECT_REF": "your-project-ref"
      }
    }
  }
}

इंटीग्रेशन B: Cursor IDE

Cursor सेटिंग्स (Features > MCP) में या प्रोजेक्ट रूट में .cursor/mcp.json फ़ाइल जोड़कर सीधे कॉन्फ़िगर किया जा सकता है।

{
  "mcpServers": {
    "supabase-db": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://agent_readonly:SecureAgentPassphrase2026!@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require"
      ]
    }
  }
}

5. गहन सुरक्षा: सैंडबॉक्सिंग, कनेक्शन पूलिंग और इंजेक्शन से बचाव

AI एजेंट को डेटाबेस अनुमति देते समय बहुस्तरीय रक्षा प्रणाली आवश्यक है। केवल सिस्टम प्रॉम्प्ट निर्देशों ('कृपया डेटा न बदलें') पर कभी भरोसा न करें।

+----------------------------------------------------------------------------------------------------+
|                                    DEFENSE-IN-DEPTH AGENT SECURITY LAYERS                          |
+-------------------+------------------------------------+-------------------------------------------+
| Defense Layer     | Mechanism                          | Threat Mitigated                          |
+-------------------+------------------------------------+-------------------------------------------+
| 1. PostgreSQL RBAC| Read-Only User Role (`agent_readonly`) Arbitrary DROP, INSERT, UPDATE, DELETE       |
| 2. Connection Pool| Supavisor / PgBouncer Port 6543    | Max Connection Exhaustion & Server Denial |
| 3. Execution Guard| `statement_timeout = '5000ms'`     | Infinite Loops & Cartesian Join Freezes   |
| 4. Client Boundary| Read-Only Toolset (`read_query`)   | DDL Execution via Parameter Injection     |
| 5. Query Auditing | `pg_stat_statements` + Access Log  | Stealth Exfiltration & Anomalous Scans    |
| 6. Data Isolation | Row-Level Security (RLS)           | Cross-Tenant Customer Record Exposure     |
+-------------------+------------------------------------+-------------------------------------------+

1. कनेक्शन पूलिंग: डायरेक्ट पोर्ट 5432 बनाम ट्रांजैक्शन पूल 6543

एजेंट्स तेजी से कनेक्शन खोलते और बंद करते हैं। पोर्ट 5432 प्रत्येक कनेक्शन के लिए एक नया प्रोसेस (5-10 MB RAM) बनाता है, जिससे मेमोरी जल्दी भर जाती है। पोर्ट 6543 पर Supavisor क्वेरी समाप्त होते ही कनेक्शन को तुरंत मुक्त कर देता है, जिससे हजारों क्लाइंट्स का संचालन संभव होता है।

# ❌ NEVER use port 5432 for agent workflows in production:
# postgresql://user:pass@db.xyz.supabase.co:5432/postgres

# ✅ ALWAYS use port 6543 with transaction pooling:
# postgresql://user:pass@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require

2. एजेंटिक वर्कफ़्लो में SQL इंजेक्शन की रोकथाम

क्वेरीज़ में स्ट्रिंग्स को सीधे जोड़ना इंजेक्शन का सबसे बड़ा कारण है। प्रोडक्शन MCP सर्वर में केवल SELECT और EXPLAIN निर्देशों की अनुमति देने के लिए AST पार्सर का उपयोग करें।

import { Parser } from 'node-sql-parser';

const parser = new Parser();

// ✅ SECURE: Strict AST parsing and parameterized inputs
export function validateAndExecuteReadOnlySQL(sql: string) {
  const ast = parser.astify(sql);
  
  // Enforce single-statement queries only
  if (Array.isArray(ast) && ast.length > 1) {
    throw new Error('Multi-statement execution rejected by security policy.');
  }

  const singleAst = Array.isArray(ast) ? ast[0] : ast;
  
  // Whitelist SELECT and EXPLAIN only
  if (singleAst.type !== 'select') {
    throw new Error(`Forbidden operation: ${singleAst.type.toUpperCase()}. Agent is read-only.`);
  }

  return true;
}

6. व्यावहारिक केस स्टडी: स्वायत्त DBA डायग्नोस्टिक एजेंट

10 मिलियन ट्रांजैक्शन वाले ई-कॉमर्स प्लेटफॉर्म पर Claude Code द्वारा Supabase MCP के जरिए स्लो क्वेरी की पहचान और इंडेक्स ऑप्टिमाइज़ेशन का वास्तविक उदाहरण:

Autonomous DBA Agent Execution Log

$ claude "Identify the 3 slowest queries in production from pg_stat_statements and check for missing indexes."

[Supabase MCP] -> Calling tool: execute_sql
Parameters: {
  "query": "SELECT query, calls, total_exec_time / calls AS avg_time_ms FROM pg_stat_statements ORDER BY avg_time_ms DESC LIMIT 3;"
}

[Supabase MCP] <- Result:
1. SELECT * FROM orders WHERE customer_id = $1 AND status = 'pending'; (avg_time_ms: 482.4ms, calls: 42,910)
2. SELECT * FROM order_items WHERE tracking_number = $1; (avg_time_ms: 312.1ms, calls: 8,400)
3. SELECT date_trunc('day', created_at), sum(total_amount) FROM orders GROUP BY 1; (avg_time_ms: 289.0ms, calls: 140)

[Claude Code Analysis]
Query #1 is an index scan bottleneck on 'orders'. Let me inspect current indexes on the 'orders' table.

[Supabase MCP] -> Calling tool: describe_table
Parameters: { "table_name": "orders" }

[Supabase MCP] <- Result:
Columns: id (uuid), customer_id (uuid), status (text), total_amount (numeric), created_at (timestamp)
Indexes: orders_pkey (PRIMARY KEY, btree, id)

[Claude Code Recommendation]
Found issue: Table 'orders' has NO index on 'customer_id' or 'status'. Sequential scan across 8,400,000 rows.
Recommended Remediation:
CREATE INDEX CONCURRENTLY idx_orders_customer_status ON orders (customer_id, status) WHERE status = 'pending';
Estimated query latency reduction: 482ms -> 1.4ms (99.7% improvement).

एजेंट ने pg_stat_statements में 482ms की एक स्लो क्वेरी की पहचान की, describe_table द्वारा इंडेक्स की जांच की और नॉन-ब्लॉकिंग CREATE INDEX CONCURRENTLY स्टेटमेंट तैयार किया, जिससे लेटेंसी घटकर 1.4ms (99.7% सुधार) रह गई।


7. लागत विश्लेषण और मासिक TCO

डेटाबेस AI एजेंट क्लस्टर के संचालन की लागत क्लाउड डेटाबेस संसाधनों और LLM टोकन खर्च पर निर्भर करती है:

+----------------------------------------------------------------------------------------------------+
|                               DATABASE AI AGENT INFRASTRUCTURE TCO (MONTHLY)                       |
+------------------------------------+--------------------------+------------------+-----------------+
| Component                          | Tier / Specification     | Usage Estimate   | Monthly Cost    |
+------------------------------------+--------------------------+------------------+-----------------+
| Supabase Pro Cloud Instance        | Compute: 2 vCPU, 8 GB    | 1 Production DB  | $25.00          |
| Supavisor Connection Pooler        | Built-in Managed Pooler  | 10,000 max conns | Included ($0.00)|
| pgvector Storage (Vector RAG)      | 15 GB NVMe Vector Data   | 2M embeddings    | Included ($0.00)|
| Claude 3.7 Sonnet Inference (Agent)| 120M Input / 18M Output  | 4,000 agent runs | $540.00         |
| DeepSeek V3 (Alternative Agent)    | 120M Input / 18M Output  | 4,000 agent runs | $21.84          |
| Hetzner Cloud VPS (Agent Host)     | CAX11 (2 vCPU, 4GB RAM)  | 24/7 Agent Daemon| $4.15           |
+------------------------------------+--------------------------+------------------+-----------------+
| Total Monthly Cost (Claude 3.7)    | Enterprise Tier          | 4,000 runs/mo    | $569.15         |
| Total Monthly Cost (DeepSeek V3)   | Cost-Optimized Tier      | 4,000 runs/mo    | $51.00          |
+------------------------------------+--------------------------+------------------+-----------------+

Key Economic Takeaway

नियमित जांच और डायग्नोस्टिक्स के लिए महंगे क्लोज्ड मॉडल्स के बजाय DeepSeek V3 या Qwen 2.5 Coder का उपयोग करने से संचालन लागत 90% से अधिक घट जाती है (मासिक $569 से गिरकर $51 पर)।


8. निष्कर्ष और एंटरप्राइज चेकलिस्ट

Supabase और Claude Code/Cursor को MCP के माध्यम से जोड़ने से विकास गति में अभूतपूर्व वृद्धि होती है। प्रोडक्शन में सुरक्षित संचालन के लिए इन नियमों का पालन करें:

  1. सख्त RBAC लागू करें: कभी भी सुपरयूज़र क्रेडेंशियल्स न दें; हमेशा agent_readonly रोल का उपयोग करें।
  2. हमेशा पोर्ट 6543 (Supavisor) से कनेक्ट करें: ट्रांजैक्शन पूलिंग द्वारा कनेक्शन क्रैश से बचें।
  3. सख्त क्वेरी टाइमआउट लागू करें: statement_timeout = '5000ms' अनियंत्रित क्वेरीज़ को रोकता है।
  4. AST पार्सर से क्वेरी सत्यापित करें: डेटा में किसी भी अवांछित बदलाव को सर्वर स्तर पर ही रोकें।
  5. pg_stat_statements से निगरानी करें: एजेंट द्वारा निष्पादित सभी क्वेरीज़ का निरंतर ऑडिट और विश्लेषण करें।
← सभी लेख
0 / 4