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 پر مبنی تصدیق لازمی ہے۔


1. تعارف: خود مختار ڈیٹا بیس AI ایجنٹس کا ابھار

2026 میں، سافٹ ویئر انجینئرنگ کے خود مختار ایجنٹس جیسے Claude Code (claude mcpCursor اور خصوصی ڈیٹا بیس AI ایجنٹس محض کوڈ تحریر کرنے سے آگے بڑھ کر سائٹ ریلائبلٹی اور مکمل ڈیٹا بیس مینجمنٹ سنبھال رہے ہیں۔ روایتی DDL فائلوں اور دستی مائیگریشنز پر انحصار کرنے کے بجائے، جدید AI ایجنٹس خود بخود PostgreSQL کیٹلاگ کا جائزہ لیتے ہیں، انڈیکسنگ کی خامیوں کی نشاندہی کرتے ہیں اور پروڈکشن میٹرکس کی نگرانی کرتے ہیں۔

تاہم، کسی خود مختار LLM کو براہ راست پروڈکشن ڈیٹا بیس سے جوڑنا سنگین خطرات کا باعث بن سکتا ہے:

  • تباہ کن DDL/DML غلطیاں (Hallucinations): بغیر کسی شرط کے لاکھوں ریکارڈز پر غلطی سے DROP TABLE، TRUNCATE یا بغیر انڈیکس والی UPDATE ... WHERE کا نفاذ۔
  • کنکشن پول کا خاتمہ: متوازی ایجنٹ تھریڈز سیکنڈوں میں PostgreSQL کی max_connections حد ختم کر دیتے ہیں جس سے مین ایپلیکیشن کریش ہو جاتی ہے۔
  • SQL انجیکشن اور غیر مجاز رسائی: پرامپٹ انجیکشن حملوں کے ذریعے ایجنٹ کو گمراہ کر کے حساس ڈیٹا چوری کروانا یا غیر مجاز اختیارات حاصل کرنا۔
  • کنٹیکسٹ ونڈو کا بوجھ: پرامپٹ میں سینکڑوں ٹیبلز کے تفصیلی سکیما لوڈ کرنے سے ٹوکن ضائع ہوتے ہیں اور API لاگت میں بے پناہ اضافہ ہوتا ہے۔

اینتھروپک کا Model Context Protocol (MCP) JSON-RPC 2.0 پر مبنی ایک محفوظ اور معیاری انٹرفیس مہیا کرتا ہے۔ Supabase کے ساتھ مل کر—جس میں بلٹ ان pgvector، PgBouncer / Supavisor پولنگ اور Row-Level Security (RLS) شامل ہیں—انجینئرز انتہائی محفوظ اور تیز رفتار ڈیٹا بیس ایجنٹس تیار کر سکتے ہیں۔


2. فن تعمیر: MCP ماڈلز اور PostgreSQL کو کیسے جوڑتا ہے

ماڈل کنٹیکسٹ پروٹوکول ایجنٹ کے ہوسٹ ماحول کو ڈیٹا بیس سے الگ رکھتا ہے اور ایک ہلکے پل کے ذریعے مقامی سب پروسیس (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 ماڈلز اور PostgreSQL کو کیسے جوڑتا ہے - Core Responsibilities

  1. ڈائنامک سکیما معائنہ: ایجنٹ صرف مطلوبہ ٹیبلز کی معلومات (list_tables اور describe_table) مانگتا ہے، جس سے پرامپٹ میں غیر ضروری ٹوکن ضائع نہیں ہوتے۔
  2. محفوظ اور حتمی SQL عمل درآمد: تمام کوئریز محفوظ ٹرانزیکشن حدود میں اور سخت وقت کی حد (statement_timeout = '5000ms') کے تحت چلائی جاتی ہیں۔
  3. pgvector کے ذریعے ویکٹر تلاش: بیرونی ویکٹر ڈیٹا بیسز کے بغیر براہ راست پوسٹگریس میں HNSW اور IVFFlat انڈیکسز سے ہائبرڈ RAG تلاش۔
  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 خرچ کرتا ہے۔
  • 15 ملی سیکنڈ سے کم تاخیر: مقامی stdio ٹرانسپورٹ میں ایک ملی سیکنڈ سے بھی کم تاخیر ہوتی ہے، جس سے ڈیٹا بیس کی اصل رفتار برقرار رہتی ہے۔

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';

پہلا طریقہ: 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"
      }
    }
  }
}

دوسرا طریقہ: 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 میگا بائٹ ریم) کھولتا ہے، جس سے میموری جلدی ختم ہو جاتی ہے۔ دوسری طرف پورٹ 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 تشخیصی ایجنٹ

ایک کروڑ ٹرانزیکشنز والے ای کامرس پلیٹ فارم پر 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 سے 482 ملی سیکنڈ والی سست کوئری کی نشاندہی کی، describe_table سے انڈیکس کا معائنہ کیا اور نان بلاکنگ CREATE INDEX CONCURRENTLY تجویز کر کے تاخیر کو کم کر کے 1.4 ملی سیکنڈ (99.7% بہتری) تک پہنچا دیا۔


7. لاگت کا تخمینہ اور ماہانہ TCO

ڈیٹا بیس AI ایجنٹ کلسٹر چلانے کی کل لاگت کلاؤڈ ڈیٹا بیس اور ماڈل انفرنس ٹوکنز پر مشتمل ہوتی ہے:

+----------------------------------------------------------------------------------------------------+
|                               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. خلاصہ اور انٹرپرائز چیک لسٹ

Model Context Protocol کے ذریعے Supabase اور Claude Code/Cursor کو ملانے سے کام کی رفتار میں بے پناہ اضافہ ہوتا ہے۔ پروڈکشن میں ان اصولوں کی پاسداری کریں:

  1. سخت RBAC کا نفاذ: کبھی سپر یوزر لاگ ان نہ دیں؛ ہمیشہ agent_readonly رول کا استعمال کریں۔
  2. ہمیشہ پورٹ 6543 (Supavisor) استعمال کریں: ٹرانزیکشن پولنگ کے ذریعے کنکشن بحران سے بچیں۔
  3. سخت کوئری ٹائم آؤٹ لگائیں: statement_timeout = '5000ms' سسٹم کو ہینگ ہونے سے بچاتا ہے۔
  4. AST پارسر سے کوئری چیک کریں: ڈیٹا میں کسی بھی قسم کی تبدیلی کو سرور کی سطح پر ہی روکیں۔
  5. pg_stat_statements کے ذریعے نگرانی رکھیں: ایجنٹ کی تمام سرگرمیوں کو باقاعدگی سے مانیٹر کریں۔
→ تمام مضامین
0 / 4