שרת MCP מאומת: PostgreSQL

שרת ה-MCP ל-Postgres, אומת בריצה חיה על Mac אמיתי.

  • אומת2026-08-03macOS 26.3.1
  • חבילה@modelcontextprotocol/server-postgres 0.6.2
  • מדווח על עצמוexample-servers/postgres 0.1.0
  • פרוטוקול MCP2024-11-05
  • סביבת ריצהNode v24.18.0

התשובה הקצרה

אומת לאחרונה 2026-08-03

שרת ה-MCP ל-Postgres הוא שרת מסדי הנתונים של פרויקט ה-Model Context Protocol עצמו: הוא מחבר עוזר AI למסד נתונים PostgreSQL ונותן לו בדיוק כלי אחד, שאילתת SQL לקריאה בלבד. הוא גם מוכרז כמיושן. npm מגיש את אותה גרסה מאז דצמבר 2024 ומדפיס אזהרת ׳לא נתמך עוד׳ בהתקנה, והקוד עבר למאגר שהפרויקט העביר לארכיון, ובכל זאת החבילה הורדה בערך 124,000 פעמים בשבוע שעבר. אז הרצנו אותו. כיוונו אותו למסד נתונים זמני שזרענו על ה-Mac הזה, דיברנו איתו בפרוטוקול, קראנו שורות אמיתיות בחזרה, ואז ניסינו לכתוב וראינו אותו מסרב. הפלט הגולמי נמצא בעמוד הזה, כולל כל הודעת שגיאה, ולמטה מצוינת חלופה מתוחזקת אם אתם זקוקים לה. [1][2][3][4]

  • כלים

    1, נספר בריצה חיה

  • אישורי גישה

    לא נדרשים, רק מחרוזת חיבור

  • ערוץ תקשורת

    stdio, רץ על ה-Mac שלכם [4]

  • מתחזק

    modelcontextprotocol, בארכיון [1][3]

  • הורדות

    124 אלף בשבוע האחרון [2]

  • רישיון

    MIT [5]

אימות

איך שרת ה-MCP הזה אומת.

השיטה

הרצנו את השרת עם npx על גבי stdio, כשהוא מכוון למסד נתונים זמני של PostgreSQL 16 שזרענו על ה-Mac הזה לצורך הבדיקה, אף פעם לא לנתונים אמיתיים. השלמנו את לחיצת היד של MCP, קראנו ל-tools/list, ואז ביצענו קריאות query אמיתיות: קריאה מוצלחת אחת של שלוש שורות, וסדרה של כשלים מכוונים כדי ללכוד את נוסח השגיאות המדויק שהשרת מחזיר. טבלת הכלים למטה היא הלכידה הזו, מילה במילה. שני פרטים שאיננו מייפים: השרת ענה ללחיצת היד שלנו בגרסת 2025-06-18 עם גרסת הפרוטוקול הישנה יותר 2024-11-05, והוא לא הדפיס דבר משל עצמו ב-stderr, ולכן השורה שלמטה היא npm שמזהיר אותנו שהחבילה מיושנת, מה שהוא עושה בהתקנה הראשונה ולא בריצות מהמטמון.

הודעת הפתיחה של השרת

npm warn deprecated @modelcontextprotocol/server-postgres@0.6.2: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

קריאת כלי אמיתית אחת

tools/call query {"sql": "SELECT book, author, pages FROM reading_log ORDER BY id LIMIT 3"}
[
  {
    "book": "The Mythical Man-Month",
    "author": "Frederick Brooks",
    "pages": 322
  },

שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.

כלים

הכלים, כפי שנספרו מהשרת הרץ.

השרת ענה ל-tools/list עם 1 כלים בתאריך 2026-08-03. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.

כלימה הוא עושה
querysql

Run a read-only SQL query

פרמטרים המסומנים ב-* הם חובה.

התקנה

הגדרות שעובדות, אחת לכל אפליקציה.

העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.

Claude Desktop

פתחו את הקובץ ‎~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://yourname@localhost:5432/yourdb"
      ]
    }
  }
}

הארגומנט האחרון הוא מחרוזת החיבור שלכם, והוא הדבר היחיד שצריך לשנות. קראו אותה משמאל לימין: ‎postgresql://‎ קבוע, yourname הוא המשתמש במסד הנתונים, localhost הוא המחשב שעליו רץ מסד הנתונים, 5432 הוא הפורט שבו PostgreSQL משתמש כברירת מחדל, ו-yourdb הוא שם מסד הנתונים. אם המשתמש שלכם דורש סיסמה, היא באה אחרי השם, בצורה ‎postgresql://yourname:yourpassword@localhost:5432/yourdb. אחר כך סגרו ופתחו מחדש את Claude Desktop. [9]

Claude Code

פקודה אחת בטרמינל:

claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres postgresql://yourname@localhost:5432/yourdb

כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ. החליפו את מחרוזת החיבור במשתמש, במארח, בפורט ובשם מסד הנתונים שלכם. שימו לב שהמחרוזת נשמרת בקובץ הגדרות כטקסט גלוי, ולכן אם היא כוללת סיסמה, התייחסו לקובץ הזה כמו לכל קובץ אחר שמחזיק סיסמה. [10]

Cursor

הוסיפו ל-‎~/.cursor/mcp.json עבור כל הפרויקטים, או ל-‎.cursor/mcp.json בתוך פרויקט אחד:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://yourname@localhost:5432/yourdb"
      ]
    }
  }
}

אותה מחרוזת חיבור כמו למעלה, אותם חמישה חלקים. Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. [11]

Routines

בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:

Name        PostgreSQL
Command     npx
Arguments   -y @modelcontextprotocol/server-postgres postgresql://yourname@localhost:5432/yourdb

הערך בשדה ה-Arguments מתפצל לפי רווחים, ובמחרוזת חיבור רגילה אין רווחים בכלל. אם הסיסמה מכילה רווח או סימן פיסוק, קודדו אותה ב-URL encoding. לחצו על Test Connection: שרת תקין עונה עם מספר הכלים שלו, אחד בשרת הזה. קראו את המדריך שלמטה לפני שאתם סומכים על התוצאה, כי היא מוכיחה פחות ממה שנדמה. [12]

בלי טרמינל

איך מגדירים את שרת ה-MCP‏ PostgreSQL בלי טרמינל.

אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים שלושה שדות פעם אחת, והכלי של השרת זמין ל-AI שלכם בצ׳אט ובשגרות מתוזמנות.

  1. 01

    התקינו את Routines

    הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו.

  2. 02

    פתחו את הגדרות ה-MCP

    לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.

  3. 03

    בחרו Command (stdio)‎

    העבירו את הטופס ל-Command (stdio): השרת הזה הוא פקודה שה-Mac שלכם מריץ, לא כתובת אינטרנט שהוא פונה אליה.

  4. 04

    הרכיבו את מחרוזת החיבור

    Name: PostgreSQL. Command: npx. Arguments: ‎-y @modelcontextprotocol/server-postgres, אחריו רווח ומחרוזת החיבור שלכם. למחרוזת יש חמישה חלקים: ‎postgresql://‎, המשתמש במסד הנתונים, המארח, הפורט ושם מסד הנתונים, למשל ‎postgresql://yourname@localhost:5432/yourdb. אם לא אתם הקמתם את מסד הנתונים, מי שכן הקים יכול לתת לכם את כל החמישה, וכדאי לבקש ממנו באותה הזדמנות משתמש עם הרשאות קריאה בלבד.

  5. 05

    בדקו, ואז הוסיפו

    השאירו את Environment Variables ריק, השרת הזה קורא הכל מהארגומנטים. לחצו Test Connection: Routines מפעילה את השרת ומדווחת כמה כלים היא מצאה, אחד עבור השרת הזה. וכאן החלק שאף אחד לא כותב: השרת לא ניגש למסד הנתונים עד השאילתה האמיתית הראשונה, ולכן מחרוזת חיבור עם שם מסד נתונים שגוי עוברת את הבדיקה הזו בהצלחה. בדיקה שעוברת מוכיחה שהשרת עלה, לא שהוא מצליח להגיע לנתונים שלכם. לחצו Add Server, ואז שאלו אותו משהו בצ׳אט כדי לוודא את החיבור.

  6. 06

    השתמשו בו

    הכלי עובד בצ׳אט מיד. כדי לתת לשגרה מתוזמנת להשתמש בו, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.

רעיונות לשגרות

שגרות ששווה לתזמן.

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

תדריך מספרים של יום שני

פרומפט

Every Monday at 8:00, query the database for last week's signups, orders, and cancellations, compare each number to the week before, and write me a short note with the three numbers and whether each went up or down.

בדיקת נתונים שקטה

פרומפט

Every weekday at 7:00, run my usual read-only checks against the database: rows added yesterday, records missing an email address, and the oldest item still unprocessed. Only message me if one of them looks wrong.

סיכום סוף חודש

פרומפט

On the first of every month at 9:00, pull last month's totals by category from the database and save them as a markdown table in month-end.md, with the previous month in a second column for comparison.

פתרון תקלות

השגיאות שנתקלנו בהן, ומה פתר אותן.

שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.

כל ניסיון לשנות נתונים נדחה

מה רואים

cannot execute INSERT in a read-only transaction

הפתרון

עובד כמתוכנן, וזו כל מהות השרת הזה. לפני הרצת ה-SQL שלכם הוא פותח טרנזקציה עם BEGIN TRANSACTION READ ONLY ומבטל אותה אחר כך, כך ש-PostgreSQL עצמו מסרב לכל דבר שכותב. ניסינו INSERT וקיבלנו את השורה שלמעלה; UPDATE מחזיר את אותו משפט עם הפועל המוחלף, cannot execute UPDATE in a read-only transaction. אין דגל או ארגומנט שמכבה את זה. אם אתם צריכים עוזר שיכול לכתוב, זה השרת הלא נכון ומתאימה לכם החלופה המתוחזקת המצוינת בשאלות שלמטה.

Test Connection עובר אבל כל שאילתה נכשלת

מה רואים

database "does_not_exist_db" does not exist

הפתרון

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

העוזר אומר שטבלה חסרה, אף שאתם יודעים שהיא קיימת

מה רואים

relation "books" does not exist

הפתרון

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

שאילתה חוזרת עם שגיאת תחביר

מה רואים

syntax error at end of input

הפתרון

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

השרת יוצא מיד והלקוח שלכם נתקע

מה רואים

Please provide a database URL as a command-line argument

הפתרון

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

לקוח ה-MCP לא מצליח להפעיל את השרת בכלל

הפתרון

הפקודה npx שייכת ל-Node.js. אם Node לא מותקן על ה-Mac, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו Node מ-nodejs.org, הפעילו מחדש את לקוח ה-MCP ונסו שוב.

שאלות נפוצות

שאלות שאנשים שואלים.

מה זה שרת ה-MCP ל-Postgres?

זהו שרת ה-PostgreSQL של פרויקט ה-Model Context Protocol עצמו. אחרי החיבור, עוזר AI כמו Claude יכול להריץ SQL מול מסד נתונים שתכוונו אותו אליו ולקרוא את התשובות בחזרה, וזה מה שמאפשר לכם לשאול שאלות על הנתונים שלכם בשפה רגילה במקום לכתוב שאילתות. הוא רץ כתהליך מקומי על ה-Mac שלכם ומדבר עם אפליקציית ה-AI על גבי stdio. [4][3]

האם שרת ה-MCP ל-Postgres עדיין מתוחזק?

לא, וכדאי שתדעו את זה לפני ההתקנה. npm מסמן את החבילה כמיושנת עם ההערה ׳Package no longer supported׳, הגרסה החדשה ביותר היא 0.6.2 מדצמבר 2024, והקוד עבר למאגר שהפרויקט העביר לארכיון ותייג כ׳שרתי MCP לדוגמה שאינם מתוחזקים עוד׳. ובכל זאת הוא הורד בערך 124,000 פעמים בשבוע שעבר, והוא רץ אצלנו כשורה ב-2026-08-03. זה המתח שכדאי לומר בקול: בשימוש נרחב, ובבירור לא מתוחזק. הגיל שלו ניכר בפרטים קטנים, למשל בכך שענה ללחיצת היד שלנו בגרסת 2025-06-18 עם גרסת הפרוטוקול הישנה יותר 2024-11-05. עובד היום אינו הבטחה לשנה הבאה, ולכן אם זה נכנס למשהו שאתם תלויים בו, קראו קודם על החלופה שלמטה. [1][2][3]

אילו כלים כלולים בשרת ה-MCP ל-Postgres?

בדיוק אחד, בשם query, שהשרת מתאר כ-׳Run a read-only SQL query׳. הוא מקבל פרמטר יחיד, sql. פרט אחד שגילינו ישירות מהחיבור ולא ציפינו לו: הסכימה של הכלי מגדירה את הפרמטר הזה אך לעולם אינה מציינת אותו כנדרש, כך שלקוח רשאי לקרוא לכלי בלעדיו, וכשעשינו זאת השרת ענה ׳Client was passed a null or undefined query׳. בפועל העוזר שלכם תמיד שולח SQL, ולכן זו סקרנות ולא בעיה. השרת גם מכריז על resources של MCP, וכך הוא מציע את הסכימה של כל טבלה לעיון; בריצה הזו ספרנו כלים, לא resources. [4]

האם שרת ה-MCP ל-Postgres יכול לשנות לי את הנתונים?

לא, ובדקנו את הגדר במקום לסמוך עליה. השרת עוטף כל שאילתה ב-BEGIN TRANSACTION READ ONLY ומבטל אותה, כך ש-PostgreSQL עצמו דוחה כתיבות: ניסיונות ה-INSERT וה-UPDATE שלנו נדחו שניהם, עם ההודעות המדויקות המודפסות בקטע פתרון התקלות למעלה. עם זאת, קריאה בלבד אינה שם נרדף לבלתי מזיק. הוא יכול לקרוא כל טבלה שהמשתמש במחרוזת החיבור שלכם רשאי לקרוא ולהעביר את התוכן למודל AI, אז תנו לו משתמש עם גישה למה שאתם באמת רוצים שיראה, ולא יותר. [4]

יש חלופה מתוחזקת?

כן. postgres-mcp מבית CrystalDBA, שמתפרסמת ב-PyPI, נמצאת בגרסה 0.3.0, מגדירה את עצמה ככלי לכוונון וניתוח של PostgreSQL, מפורסמת ברישיון MIT, והמאגר שלה עודכן לאחרונה בינואר 2026 במקום לעבור לארכיון, עם כ-3,100 כוכבים וכ-107,000 הורדות בשבוע האחרון. היא מציעה גישת קריאה וכתיבה שניתנת להגדרה, מה שהשרת הרשמי במכוון אינו מציע. לא הרצנו אותה, ולכן היא לא מקבלת כאן תג אימות: העמוד הזה מאמת את השרת הרשמי בלבד ומדווח רק את מה שהמאגרים אומרים על החלופה. [6][7][8]

צריך טרמינל כדי להגדיר אותו?

לא. ב-Routines ממלאים שלושה שדות בהגדרות ולוחצים Test Connection; המדריך למעלה מראה כל לחיצה, כולל האזהרה החשובה: בדיקת חיבור שעוברת אינה מוכיחה שמחרוזת החיבור שלכם מגיעה למסד הנתונים הנכון. Claude Desktop דורש עריכה חד-פעמית של קובץ JSON קטן. רק Claude Code הוא כלי טרמינל מטבעו. [12][9]

אילו אפליקציות יכולות להשתמש בשרת ה-MCP ל-Postgres?

כל לקוח MCP שמסוגל להפעיל שרת stdio מקומי: Claude Desktop, Claude Code, Cursor ו-Routines כולם יכולים, וההגדרה המדויקת לכל אחד נמצאת למעלה. השרת עצמו זהה בכל לקוח; רק המקום שבו מדביקים את ההגדרה משתנה. גם מחרוזת החיבור זהה בכל ארבעתם, מה שמקל לבדוק בלקוח אחד ולהעתיק הלאה. [9][10][11][12]

מקורות

כל טענה חיצונית, עם קבלה.

כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.

  1. [1]

    npm registry: @modelcontextprotocol/server-postgresנקרא בתאריך 2026-08-03

    Latest version 0.6.2, published 2024-12-04, carrying the deprecation notice "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." License MIT.

  2. [2]

    npm downloads API: last weekנקרא בתאריך 2026-08-03

    123,984 downloads for the week ending 2026-08-01.

  3. [3]

    GitHub: modelcontextprotocol/servers-archivedנקרא בתאריך 2026-08-03

    Archived repository described as "Reference MCP servers that are no longer maintained", last pushed 2025-05-28, per the GitHub API. It holds src/postgres.

  4. [4]

    Postgres server source: src/postgres/index.tsנקרא בתאריך 2026-08-03

    Runs BEGIN TRANSACTION READ ONLY before each query and ROLLBACK after, with no flag to disable it: the only command-line argument it reads is the database URL, and it exits when that is missing. Instantiates StdioServerTransport, and serves each table's schema as an MCP resource.

  5. [5]

    modelcontextprotocol/servers-archived LICENSE fileנקרא בתאריך 2026-08-03

    MIT, per the GitHub API license endpoint for the repository.

  6. [6]

    PyPI: postgres-mcpנקרא בתאריך 2026-08-03

    Version 0.3.0, summary "PostgreSQL Tuning and Analysis Tool".

  7. [7]

    pypistats: postgres-mcp recent downloadsנקרא בתאריך 2026-08-03

    106,879 downloads in the last week.

  8. [8]

    GitHub: crystaldba/postgres-mcpנקרא בתאריך 2026-08-03

    3,146 stars, MIT licensed, not archived, last pushed 2026-01-22, per the GitHub API. Described as providing "configurable read/write access and performance analysis".

  9. [9]

    modelcontextprotocol.io: Connect to local MCP serversנקרא בתאריך 2026-08-03

    The official Claude Desktop quickstart and the claude_desktop_config.json shape.

  10. [10]

    Claude Code docs: MCPנקרא בתאריך 2026-08-03

    The claude mcp add syntax for local stdio servers.

  11. [11]

    Cursor docs: Model Context Protocolנקרא בתאריך 2026-08-03

    The mcp.json shape and file locations.

  12. [12]

    Routines: Connectorsנקרא בתאריך 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server.

העמוד הזה מתאר את PostgreSQL כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.

מאחורי המדריך הזה

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