שרת MCP מאומת: Docker

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

  • אומת2026-08-03macOS 26.3.1
  • חבילהmcp-server-docker (PyPI) 0.2.1
  • מדווח על עצמוdocker-server 1.29.0
  • פרוטוקול MCP2025-06-18
  • סביבת ריצהPython 3.12.11 (uvx)

התשובה הקצרה

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

שרת ה-MCP ל-Docker מאפשר לעוזר AI להפעיל את Docker על ה-Mac שלכם: לרשום קונטיינרים, לקרוא את הלוגים שלהם, להפעיל ולעצור אותם, למשוך ולבנות אימג׳ים ולנהל רשתות ונפחים. זוהי חבילה קהילתית בשם mcp-server-docker, היא אינה תוכנה של Docker Inc., והיא אינה מבקשת מפתח API או חשבון, כי היא מגיעה אל ה-daemon דרך אותו socket מקומי שבו משתמשת הפקודה docker. מה שהיא כן דורשת זה ש-Docker עצמו ירוץ: כשה-daemon אינו זמין, השרת קורס עוד לפני שהספיק לומר שלום, ולכדנו גם את הקריסה הזו. לא הסתפקנו במה שכתוב ב-README. הפעלנו את Docker, הרצנו את השרת, דיברנו איתו בפרוטוקול, ספרנו את כל תשעה עשר הכלים, הרצנו קריאות אמיתיות מול מצב ה-Docker של ה-Mac הזה ושמרנו את הפלט הגולמי, כולל השגיאות המדויקות שהוא מחזיר כשקונטיינר, אימג׳ או רשת אינם קיימים. הכל נמצא בעמוד הזה. [1][3][6]

  • כלים

    19, נספרו בריצה חיה

  • אישורי גישה

    לא נדרשים, אבל Docker חייב לרוץ

  • ערוץ תקשורת

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

  • מתחזק

    Christian Kreiling, לא Docker Inc. [1][3]

  • הורדות

    3,571 בשבוע האחרון ב-PyPI [2]

  • רישיון

    GPL-3.0 [4]

אימות

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

השיטה

הפעלנו את Docker Desktop על ה-Mac של הבדיקה, ואז הרצנו את השרת עם uvx על גבי stdio בלי אף משתנה סביבה, השלמנו את לחיצת היד של MCP, קראנו ל-tools/list והרצנו שמונה קריאות כלי אמיתיות בשלוש הפעלות. ארבע מהן ענו ממצב ה-Docker של ה-Mac הזה עצמו: list_networks, list_volumes ו-list_containers פעמיים, והדוגמה למטה היא אחת מהן. ארבע נועדו להיכשל ואכן נכשלו, ומהן הגיע קטע פתרון התקלות. שום קריאה שלנו לא יצרה, שינתה או מחקה דבר: שלוש הקריאות שיכלו לשנות משהו פנו כולן לשמות שאינם קיימים וחזרו עם 404. הפעלה רביעית, שבה DOCKER_HOST הופנה אל socket שאינו קיים, שחזרה את הקריסה שמתקבלת כש-Docker אינו רץ, ולא הגיעה כלל ללחיצת היד. על ה-Mac רצו Docker Desktop 4.5.0 עם Engine 20.10.12 ו-Docker API 1.41; uvx התקינה את mcp-server-docker 0.2.1 מעל Python 3.12.11 עם docker-py 7.2.0 ועם ה-SDK של MCP ל-Python בגרסה 1.29.0. השרת אינו מדפיס דבר בהפעלה, לא ל-stdout ולא ל-stderr, ולכן מה שמופיע למטה הוא תגובת ה-initialize הגולמית בשורה אחת, בדיוק כפי שהגיעה מהחיבור.

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

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"docker-server","version":"1.29.0"}}}

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

tools/call list_networks {}
[
  {
    "id": "dcf9d8f81c4ca5896a85a1eedface31f2a8e7db9cc115f417485ea467215c7aa",
    "name": "bridge",
    "short_id": "dcf9d8f81c4c",
    "driver": "bridge",
    "scope": "local",

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

כלים

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

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

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

List all Docker containers

create_containerdetachimage*nameentrypointcommandnetworkenvironmentportsvolumeslabelsauto_remove

Create a new Docker container

run_containerdetachimage*nameentrypointcommandnetworkenvironmentportsvolumeslabelsauto_remove

Run an image in a new Docker container (preferred over `create_container` + `start_container`)

recreate_containerdetachimage*nameentrypointcommandnetworkenvironmentportsvolumeslabelsauto_removecontainer_id

Stop and remove a container, then run a new container. Fails if the container does not exist.

start_containercontainer_id*

Start a Docker container

fetch_container_logscontainer_id*tail

Fetch logs for a Docker container

stop_containercontainer_id*

Stop a Docker container

remove_containercontainer_id*force

Remove a Docker container

list_imagesnameallfilters

List Docker images

pull_imagerepository*tag

Pull a Docker image

push_imagerepository*tag

Push a Docker image

build_imagepath*tag*dockerfile

Build a Docker image from a Dockerfile

remove_imageimage*force

Remove a Docker image

list_networksfilters

List Docker networks

create_networkname*driverinternallabels

Create a Docker network

remove_networknetwork_id*

Remove a Docker network

list_volumes

List Docker volumes

create_volumename*driverlabels

Create a Docker volume

remove_volumevolume_name*force

Remove a Docker volume

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

התקנה

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

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

Claude Desktop

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

{
  "mcpServers": {
    "docker": {
      "command": "uvx",
      "args": [
        "mcp-server-docker"
      ]
    }
  }
}

בלי משתני סביבה ובלי ארגומנט של תיקיה: השרת מוצא את ה-Docker המקומי שלכם בעצמו. הפעילו קודם את Docker Desktop, ואז סגרו ופתחו מחדש את Claude Desktop. אם השרת לא מופיע, הזינו בשדה הפקודה את הנתיב המלא שמדפיסה הפקודה which uvx, כי אפליקציית Mac שנפתחה מה-Dock לא תמיד יורשת את ה-PATH של המעטפת שלכם. [10][5]

Claude Code

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

claude mcp add docker -- uvx mcp-server-docker

כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ, וזו הפקודה שאימתנו. ודאו ש-Docker רץ לפני שאתם פותחים הפעלה, אחרת השרת ימות כבר בהפעלה. [11]

Cursor

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

{
  "mcpServers": {
    "docker": {
      "command": "uvx",
      "args": [
        "mcp-server-docker"
      ]
    }
  }
}

Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. כדי להפעיל מנוע Docker במחשב אחר במקום המקומי, הוסיפו אובייקט env עם DOCKER_HOST שמצביע על כתובת ‎ssh://‎, אפשרות שהשרת תומך בה דרך ה-SDK של Docker ל-Python. [12][5]

Routines

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

Name        Docker
Command     uvx
Arguments   mcp-server-docker

השאירו את Environment Variables ריק. הפעילו את Docker Desktop לפני שאתם לוחצים Test Connection: שרת תקין עונה עם מספר הכלים שלו, תשעה עשר עבור השרת הזה, ואילו Docker כבוי יחזיר לכם שרת מת. [13]

בלי טרמינל

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

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

  1. 01

    התקינו את Routines, את uv ואת Docker

    הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו. השרת הזה כתוב ב-Python, ולכן הוא זקוק גם ל-uv, הכלי שמספק את הפקודה uvx: התקינו אותו מ-astral.sh/uv, או בשורת טרמינל אחת אם כבר יש לכם Homebrew, brew install uv. והוא זקוק ל-Docker Desktop מ-docker.com, כי כל העניין הוא להפעיל את ה-Docker שרץ על ה-Mac שלכם.

  2. 02

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

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

  3. 03

    בחרו Command (stdio)‎

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

  4. 04

    מלאו שלושה שדות

    Name: Docker. Command: uvx. Arguments: mcp-server-docker, לבד, בלי שום דבר אחריו. אין תיקיה להרשות ואין מפתח להדביק, כי השרת מדבר עם Docker דרך ה-socket המקומי שלחשבון שלכם כבר יש גישה אליו.

  5. 05

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

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

  6. 06

    השתמשו בו

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

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

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

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

בדיקת קונטיינרים יומית

פרומפט

Every weekday at 9:00, list my Docker containers with their status, tell me which ones are not running that were running yesterday, and for each of those show the last twenty lines of its logs.

רשימת ניקיון לדיסק ביום שני

פרומפט

Every Monday at 8:00, list my Docker images and volumes, flag every one that no container is using, and give me the list so I can decide what to remove myself.

סריקת שגיאות ליום שישי

פרומפט

Every Friday at 17:00, fetch the last hundred log lines from each running container, and write me one short paragraph per container about anything that looks like an error or a repeated warning.

פתרון תקלות

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

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

השרת מת ברגע שהלקוח מפעיל אותו

מה רואים

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

הפתרון

Docker אינו רץ, או שהשרת מחפש אותו במקום הלא נכון. זו אינה תקלה רכה שאפשר לעקוף מתוך הצ׳אט: החבילה קוראת ל-docker.from_env() עוד לפני שהיא פותחת את חיבור ה-MCP, ולכן התהליך מסתיים לפני שהלקוח מספיק להשלים את לחיצת היד, וכל מה שהלקוח מספר לכם הוא שהשרת מת. שחזרנו את זה בכוונה כשהפנינו את DOCKER_HOST אל socket שאינו קיים. הפעילו את Docker Desktop, המתינו שהלווייתן בשורת התפריטים ייצב, והפעילו מחדש את לקוח ה-MCP. אם הגדרתם את DOCKER_HOST בעצמכם, בדקו את הכתובת שבו.

אין קונטיינר כזה

מה רואים

404 Client Error for http+docker://localhost/v1.41/containers/no-such-container-mcp-verify/json: Not Found ("No such container: no-such-container-mcp-verify")

הפתרון

השם או המזהה הגיעו ל-Docker ול-Docker אין אותם: בדרך כלל שגיאת הקלדה, קונטיינר שנמחק, או כזה שקיים רק במחשב אחר. גרמנו לזה בכוונה עם שם מומצא. בקשו קודם list_containers כשהערך all הוא true, ואז חזרו על הבקשה עם שם מתוך הרשימה. רשתות ונפחים שנמחקו חוזרים באותה צורה, עם 404 משלהם.

משיכת אימג׳ נדחתה

מה רואים

404 Client Error for http+docker://localhost/v1.41/images/create?tag=latest&fromImage=mcp-verify-no-such-image-2026: Not Found ("pull access denied for mcp-verify-no-such-image-2026, repository does not exist or may require 'docker login': denied: requested access to the resource is denied")

הפתרון

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

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

הפתרון

הפקודה uvx שייכת ל-uv. אם uv לא מותקנת, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו אותה מ-astral.sh/uv, ואז הריצו which uvx בטרמינל: אם היא מדפיסה נתיב ואפליקציית Mac עדיין לא מצליחה להפעיל את השרת, הדביקו את הנתיב המלא בשדה הפקודה, כי אפליקציה שנפתחה מה-Dock לא תמיד יורשת את ה-PATH של המעטפת שלכם.

שאלות נפוצות

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

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

זוהי תוכנית Python קטנה שיושבת בין עוזר AI לבין ה-Docker שרץ על ה-Mac שלכם. אחרי החיבור, Claude יכול לרשום את הקונטיינרים והאימג׳ים שלכם, לקרוא לוגים של קונטיינרים, להפעיל ולעצור קונטיינרים, למשוך ולבנות אימג׳ים וליצור או למחוק רשתות ונפחים, הכל דרך ה-API הרגיל של Docker. היא רצה כתהליך מקומי ומדברת עם אפליקציית ה-AI על גבי stdio. [5][6]

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

השרת הרץ חושף 19 כלים: קונטיינרים (list_containers, create_container, run_container, recreate_container, start_container, fetch_container_logs, stop_container, remove_container), אימג׳ים (list_images, pull_image, push_image, build_image, remove_image), רשתות (list_networks, create_network, remove_network) ונפחים (list_volumes, create_volume, remove_volume). הטבלה למעלה היא פלט ה-tools/list החי, מילה במילה. אותה לחיצת יד גם מכריזה על יכולות של prompts ו-resources, וה-README מתאר prompt אחד לפריסות Compose ומשאבים של סטטיסטיקות ולוגים לכל קונטיינר. [5]

האם זה שרת ה-MCP הרשמי של Docker?

לא. mcp-server-docker היא חבילה קהילתית של Christian Kreiling, עם 731 כוכבים ב-GitHub ובלי גרסה חדשה מאז יוני 2025. ל-Docker Inc. יש אמנם תוכנת MCP משלה, אבל זה דבר אחר לגמרי: ה-MCP Toolkit, שבנוי על הפרויקט הפתוח docker/mcp-gateway, הוא שער שמריץ שרתי MCP של אחרים כקונטיינרים, והכתובת mcp.docker.com מפנה לקטלוג שלהם ב-hub.docker.com/mcp. זה ההפך ממה שהעמוד הזה מכסה, שהוא שרת שמאפשר לעוזר לנהל את Docker עצמו. לא בדקנו את ה-Toolkit: הוא דורש גרסת Docker Desktop חדשה בהרבה מזו שרצה על ה-Mac של הבדיקה שלנו. [3][7][8][9]

האם שרת ה-MCP ל-Docker בטוח?

התייחסו אליו ככלי חזק, לא כארגז חול. אין כאן רשימת היתר כמו התיקיות של שרת הקבצים: כל מה שהחשבון שלכם יכול לעשות ל-Docker, השרת הזה יכול לעשות, ורק חמישה מתוך תשעה עשר הכלים הם קריאה בלבד, כלומר ארבעה עשר האחרים משנים משהו, ובהם remove_container, remove_image ו-remove_volume. הפרויקט אומר זאת בעצמו, באותיות גדולות: אל תגדירו קונטיינרים עם מידע רגיש, ובדקו את הקונטיינרים שהמודל יוצר. הוא כן מסרב לאפשרויות המסוכנות ביותר, בלי תמיכה במצב privileged ובדגלי הרשאות. קראו מה שהעוזר מציע לפני שאתם מאשרים, והרחיקו אותו מכל דבר שאינכם יכולים לבנות מחדש. [5]

הוא דורש מפתח API או חשבון?

לא. אין למה להירשם ואין אישור גישה להדביק: השרת מגיע אל Docker דרך ה-socket המקומי שלחשבון ה-macOS שלכם כבר יש גישה אליו. הוא כן דורש ש-Docker עצמו ירוץ, וזה התנאי היחיד שהעמוד הזה חוזר עליו שוב ושוב, והפקודה uvx מורידה את החבילה ממאגר החבילות הציבורי של PyPI בריצה הראשונה, כך שההפעלה הראשונה צריכה חיבור לאינטרנט. אחריה החבילה שמורה על ה-Mac. [1][5]

למה השרת מדווח גרסה 1.29.0 בלחיצת היד?

כי הוא לא מדווח גרסה משלו. הקוד יוצר את שרת ה-MCP שלו כ-Server("docker-server") בלי ארגומנט גרסה, ולכן ה-SDK נופל אחורה ומדפיס את גרסת החבילה של עצמו, והריצה שלנו קיבלה 1.29.0. החבילה שהתקנו היא mcp-server-docker 0.2.1, שפורסמה בתאריך 2025-06-05. שני המספרים אמיתיים ושניהם נלכדו למעלה. [1][6]

באיזה רישיון הוא מופץ?

GPL-3.0, וזה חריג במדריך הזה: רוב שרתי ה-MCP כאן הם MIT או Apache-2.0. המאגר כולל את הטקסט המלא של GNU General Public License גרסה 3, ו-GitHub מדווח על אותו רישיון. זה משנה אם אתם מתכננים לפצל אותו למשהו שאתם מפיצים; זה לא משפיע על הרצה שלו על המחשב שלכם. [4][3]

מקורות

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

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

  1. [1]

    PyPI registry: mcp-server-dockerנקרא בתאריך 2026-08-03

    Latest version 0.2.1, uploaded 2025-06-05; author Christian Kreiling; requires Python >=3.12 and declares docker>=7.1.0, mcp>=1.1.0,<2.0 and paramiko>=3.5.1,<4.0.

  2. [2]

    PyPI download stats: mcp-server-dockerנקרא בתאריך 2026-08-03

    3,571 downloads in the last week and 12,821 in the last month at access time.

  3. [3]

    GitHub: ckreiling/mcp-server-dockerנקרא בתאריך 2026-08-03

    731 stars, licence reported as GPL-3.0, and a last push dated 2025-06-05 at access time, per the GitHub API.

  4. [4]

    ckreiling/mcp-server-docker LICENSE fileנקרא בתאריך 2026-08-03

    The full GNU General Public License version 3. PyPI carries no licence classifier for this package, only the licence text.

  5. [5]

    mcp-server-docker READMEנקרא בתאריך 2026-08-03

    The uvx config shape, the docker_compose prompt, the per-container stats and logs resources, the ssh:// DOCKER_HOST option, and the disclaimers about sensitive data and unsupported privileged options.

  6. [6]

    mcp-server-docker source: server.py and __init__.pyנקרא בתאריך 2026-08-03

    Line 34 creates Server("docker-server") with no version, and run_stdio() uses stdio_server(): the server speaks stdio and declares no version of its own. In __init__.py, docker.from_env() is evaluated before the stdio server starts, which is why an unreachable daemon is a startup crash.

  7. [7]

    docs.docker.com: MCP Catalog and Toolkitנקרא בתאריך 2026-08-03

    Docker Inc.'s own MCP surface: a Docker Desktop feature that runs other MCP servers as containers behind one local gateway.

  8. [8]

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

    1,516 stars, MIT licence, and a push dated 2026-07-23 at access time. The open-source CLI plugin behind the MCP Toolkit; its README lists Docker Desktop 4.59 or newer as a prerequisite, and our test Mac runs 4.5.0.

  9. [9]

    Docker MCP Catalog on Docker Hubנקרא בתאריך 2026-08-03

    Docker's public catalogue of MCP servers packaged as images. A request to mcp.docker.com answered 302 to this address at access time.

  10. [10]

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

    The Claude Desktop config file path and the mcpServers command and args shape.

  11. [11]

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

    The claude mcp add [options] <name> -- <command> [args...] syntax for local stdio servers.

  12. [12]

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

    The mcp.json shape and file locations.

  13. [13]

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

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

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

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

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