MCP serverשרת MCP

Give your agent a key that reaches one project and stops at a spend limit you set in EUR. Then one command connects it. The limits live on the server, so a prompt cannot talk its way past them.

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

1. Make a key for the agent1. יוצרים מפתח לסוכן

Keys are made by a person, signed in to the panel. An agent cannot make one, whatever scopes it holds. Open API keys and fill in:

מפתחות נוצרים על ידי אדם שמחובר לפאנל. סוכן לא יכול ליצור מפתח, לא משנה אילו הרשאות יש לו. פותחים את מפתחות API וממלאים:

ProjectThe one project this agent works on. Every other project answers 404 to it.הפרויקט היחיד שהסוכן עובד עליו. כל פרויקט אחר מחזיר לו 404.
Scopesread and deploy are enough to ship and debug. Add env:write only if the agent should set variables.read ו-deploy מספיקים כדי לפרוס ולדבג. מוסיפים env:write רק אם הסוכן צריך להגדיר משתנים.
Spend limitEUR per billing period. When the key reaches it, new deploys are refused with spend_limit_reached. What is already running keeps running.ביורו לכל תקופת חיוב. כשהמפתח מגיע לתקרה, פריסות חדשות נדחות עם spend_limit_reached. מה שכבר רץ ממשיך לרוץ.

The key is shown once. The panel shows it already inside the command for step 2, so you can copy it straight into your terminal without pasting it anywhere else.

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

2. Connect your agent2. מחברים את הסוכן

Claude CodeClaude Code

terminal
claude mcp add shipyard \
  -e SHIPYARD_API_KEY=sy_live_xxxxxxxxxxxxxxxxxxxx \
  -- npx -y @shipyard/mcp

Start Claude Code in your repository and ask it to deploy. It calls whoami, then project_link once to bind the directory, then deploy.

מפעילים את Claude Code בתיקיית המאגר ומבקשים לפרוס. הוא קורא ל-whoami, אחר כך פעם אחת ל-project_link כדי לקשר את התיקייה, ואז ל-deploy.

CursorCursor

Add the server to .cursor/mcp.json in the repository, or to ~/.cursor/mcp.json for every project. Keep the file out of git: it holds the key.

מוסיפים את השרת ל-.cursor/mcp.json במאגר, או ל-~/.cursor/mcp.json לכל הפרויקטים. אל תכניסו את הקובץ ל-git: המפתח נמצא בו.

.cursor/mcp.json
{
  "mcpServers": {
    "shipyard": {
      "command": "npx",
      "args": ["-y", "@shipyard/mcp"],
      "env": { "SHIPYARD_API_KEY": "sy_live_xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

Any other MCP clientכל לקוח MCP אחר

3. Check what the agent can reach3. בודקים לאן הסוכן מגיע

Ask the agent to run whoami. A bound key answers with its organisation, its scopes and its one project. If you see more than you meant to give, revoke the key in the panel and make a narrower one.

בקשו מהסוכן להריץ whoami. מפתח קשור עונה עם הארגון, ההרשאות והפרויקט היחיד שלו. אם אתם רואים יותר ממה שהתכוונתם לתת, בטלו את המפתח בפאנל וצרו מפתח מצומצם יותר.

The toolsהכלים

whoamiThe organisation, the scopes and the bound project.הארגון, ההרשאות והפרויקט שהמפתח קשור אליו.
projects_listProjects the key can see. For a bound key, one.הפרויקטים שהמפתח רואה. למפתח קשור, אחד.
project_linkBind the current directory to a project.קישור התיקייה הנוכחית לפרויקט.
deployBuild and release. Production needs confirm: true.בנייה ושחרור. בייצור נדרש confirm: true.
deployment_statusWhere a deploy got to, including the scan verdict.לאן הפריסה הגיעה, כולל תוצאת הסריקה.
get_logsLog lines, bounded. Pass the next_since it returns to get only what came after.שורות לוג, תחומות. העבירו את next_since שהוחזר כדי לקבל רק את מה שבא אחריו.
rollbackGo back to an earlier release. Needs confirm: true.חזרה לגרסה קודמת. נדרש confirm: true.
versionsBuilt versions you can promote or roll back to.גרסאות בנויות שאפשר לקדם או לחזור אליהן.
promoteMove a built version to another environment. Production needs confirm: true.העברת גרסה בנויה לסביבה אחרת. בייצור נדרש confirm: true.
env_listVariable names, values masked.שמות משתנים, עם ערכים מוסתרים.
env_setSet a variable. Anything credential-shaped needs confirm: true.הגדרת משתנה. כל דבר שנראה כמו סוד דורש confirm: true.
security_report_getThe scan report for a deployment.דוח הסריקה של פריסה.
domains_listCustom domains on the project and whether they are verified.הדומיינים של הפרויקט והאם הם אומתו.
create_projectA new project in TLV or AMS, linked here. Needs an org-wide key.פרויקט חדש ב-TLV או ב-AMS, מקושר לתיקייה. נדרש מפתח ברמת הארגון.
get_metricsRequests, 5xx rate, p95, CPU and memory per environment, plus recent events.בקשות, שיעור 5xx, p95, מעבד וזיכרון לכל סביבה, ואירועים אחרונים.
get_usageWhat the organisation spent this period in EUR, and the month projection.כמה הארגון הוציא בתקופה הנוכחית ב-EUR, והתחזית לחודש.

Where a bound key stopsאיפה מפתח קשור נעצר

404 not_foundAnother project. It looks the same as a project that does not exist, on purpose.פרויקט אחר. זה נראה בדיוק כמו פרויקט שלא קיים, בכוונה.
403 key_project_boundAn organisation-wide route, such as usage. The error carries next, the route the key may use instead.נתיב ברמת הארגון, כמו צריכה. השגיאה כוללת next, הנתיב שהמפתח כן יכול להשתמש בו.
403 session_requiredMinting keys or deleting the organisation. Only a signed-in person can.יצירת מפתחות או מחיקת הארגון. רק אדם מחובר יכול.
spend_limit_reachedThe key used its limit for this period. A person raises the limit in the panel, or waits for the next period.המפתח ניצל את התקרה שלו לתקופה הזו. אדם מעלה את התקרה בפאנל, או מחכים לתקופה הבאה.

Every code, with what to do about it, is in /llms-full.txt. Point your agent at it; it is written for agents to read.

כל הקודים, עם מה לעשות בכל אחד, נמצאים ב-/llms-full.txt. הפנו אליו את הסוכן; הוא כתוב כדי שסוכנים יקראו אותו.

Production asks a person firstייצור שואל קודם אדם

A deploy or promote to production, any rollback, and any env_set that looks like a credential are refused until the call carries confirm: true. The server tells the agent to ask you before it sets it. A stray instruction in a README cannot ship to production on its own.

פריסה או קידום לייצור, כל rollback, וכל env_set שנראה כמו סוד נדחים עד שהקריאה כוללת confirm: true. השרת אומר לסוכן לשאול אתכם לפני שהוא מוסיף את זה. הוראה תועה בקובץ README לא יכולה להעלות לייצור לבד.

One key per agentמפתח אחד לכל סוכן

  1. 1Each agent, CI job and person gets its own key. Keys are never shared.לכל סוכן, משימת CI ואדם יש מפתח משלו. לא משתפים מפתחות.
  2. 2Revoke a key in the panel and it stops working within 10 seconds.מבטלים מפתח בפאנל והוא מפסיק לעבוד תוך 10 שניות.