חיבור Claude Code לבסיס נתונים: שאילתות על מידע אמיתי עם MCP

חיבור PostgreSQL לـ Claude Code דרך MCP, הגדרת חשבון לקריאה בלבד עם בקרת הרשאות — Claude קורא סכמות, כותב שאילתות ומנתח נתונים ישירות.


אחרי חיבור בסיס הנתונים, Claude Code עובד אחרת. אין צורך להעתיק מבני טבלאות לפרומפט או להסביר שמות שדות — Claude מתחבר ישירות, קורא את הסכמה בעצמו, כותב שאילתות ומנתח תוצאות.

המאמר משתמש ב-PostgreSQL כדוגמה ועובר על כל התהליך מהגדרה ועד שימוש ממשי.

איזה MCP Server להשתמש

@modelcontextprotocol/server-postgres הרשמי תומך ב:

  • קריאת סכמה של כל הטבלאות (שמות שדות, סוגים, אילוצים)
  • הרצת שאילתות SQL והחזרת תוצאות
  • מספר schemas

קריאה בלבד. Server זה מיועד לשאילתות בלבד — לא מבצע INSERT, UPDATE או DELETE.

התקנה

npm install -g @modelcontextprotocol/server-postgres

הגדרה

ערכו את .claude/settings.json (ברמת הפרויקט):

{
  "mcpServers": {
    "db": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres",
        "postgresql://readonly_user:password@localhost:5432/myapp_production"]
    }
  }
}

אם לא רוצים לשמור סיסמה בקובץ הגדרות, השתמשו בשדה env עם משתנה סביבה. הגדרות רגישות שמרו ב-.claude/settings.local.json והוסיפו ל-.gitignore.

קודם כל צרו חשבון לקריאה בלבד

CREATE USER claude_readonly WITH PASSWORD 'your_password';
GRANT CONNECT ON DATABASE myapp_production TO claude_readonly;
GRANT USAGE ON SCHEMA public TO claude_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO claude_readonly;

אימות החיבור

הפעילו מחדש את Claude Code ושאלו: "רשום את כל הטבלאות בבסיס הנתונים". אם Claude מחזיר רשימה — MCP עובד.

דוגמאות שימוש ממשי

הבנת מבנה הנתונים: "מה הקשר בין טבלאות users ו-orders? יש אילוצי מפתח זר?"

ניתוח נתונים: "ממשתמשים שנרשמו ב-30 הימים האחרונים, כמה אחוז ביצעו לפחות הזמנה אחת? לפי ערוץ הרשמה."

איתור באגים: "מצא הזמנות עם status = 'pending' שנוצרו לפני יותר מ-7 ימים. כמה יש ומתי נוצרה האחרונה?"

תמיכה בפיתוח: "רוצה להוסיף עמודת last_login_at לטבלת users. כתוב SQL לmigration ובדוק אם האינדקסים הקיימים מספיקים."

שליטה במה ש-Claude רואה

-- לפי טבלאות
GRANT SELECT ON TABLE users, orders, products TO claude_readonly;

-- view לסינון שדות רגישים
CREATE VIEW users_safe AS SELECT id, email, created_at, plan, status FROM users;
GRANT SELECT ON users_safe TO claude_readonly;

חיבור לבסיס נתונים מרוחק

ssh -L 5433:localhost:5432 [email protected] -N

מה משתנה בפועל

השינוי הבולט ביותר: שיחות על נתונים לא דורשות הכנה מראש. אין צורך להסביר סכמה — אומרים מה צריך ו-Claude מחפש בעצמו. שימושי במיוחד לאיתור באגים: במקום לבצע שאילתה, להעתיק ולהדביק תוצאות, מתארים את הבעיה — Claude שואל ישירות ומחזיר מסקנות.