ConfigurationMCP servers

Fix a server that doesn't work

What each MCP server status means, what a mission says when a server stops it, and where to see the servers that an agent had.

Overview

An MCP server that can't be used never disappears quietly. Its card on the project's page says what is wrong, and the Vault's inventory shows the same status. If an agent of a mission should get the server, the mission stops before that agent starts. The message names the server.

Read a server's status

StatusWhat it meansWhat to do
ReadyThe server is reachable with its credential.Nothing. Agents in its enabled roles get it on their next run.
Needs credentialThe server refused a request without a credential.Select Connect to sign in, or edit the binding to add a header.
Reconnect neededThe stored sign-in expired or the provider revoked it.Select Reconnect.
URL changedThe repository now gives this server a different host from the host that its credential is pinned to.If you trust the new host, edit the binding and save it for the new URL.
PreparingSHIP fetches, verifies and builds the package of an isolated server.Wait a few minutes. The page checks the status again automatically.
Preparing failedSHIP could not prepare the package. The card gives the reason.To retry, save the binding again. You can also bind the vendor's hosted endpoint.
Can't run isolatedThe server is not an npm package, so it can't run in the isolated runtime.Run it in the sandbox if it needs no secret, or bind its hosted endpoint.
Not declaredThe binding remains, but the repository's MCP file no longer declares the server.Remove the binding, or declare the server again. Until then, no agent receives it.

From a terminal, ship mcp list shows the same statuses and ends with the command to run next for each server that isn't ready:

github    ready                     planner 6 tools, builder 6 tools, qa 4 tools  https://api.githubcopilot.com/mcp/
linear    needs a credential        planner no tool list yet, builder no tool list yet  https://mcp.linear.app/mcp
figma     needs reconnecting        builder 2 tools  https://mcp.figma.com/mcp
postgres  not bound                 docker run -i --rm -e DATABASE_URL mcp/postgres
Next:
  ship mcp connect figma --project prj_123
  ship mcp connect linear --project prj_123
  ship mcp bind postgres --roles planner,builder --url <hosted https endpoint> --project prj_123

Act on a stopped mission's message

Before an agent starts, SHIP checks every server that agent should get. If one can't be used, the mission stops at that agent with a message in its activity, such as:

MCP servers for the planner agent cannot be mounted: MCP server 'linear' needs reconnecting; fix its binding on the project's page in SHIP

Fix the binding. Then restart the mission. The fix applies to the next agent. Nothing else in the mission changes. Two other messages name a configuration to change, not a binding:

  • A harness without MCP support. The pi harness cannot use MCP servers. Remove the role from those servers' bindings, or run the role on a harness from the supported list.
  • A server that ship.yml asks for, but the project doesn't grant. For example: MCP server 'sentry' is requested for reviewer but has no binding in this project. The ship.yml file and the per-issue override can only narrow what the bindings allow. So a server that they name for a role must also have a binding for that role.

Fix an MCP file SHIP can't read

If the repository's MCP file isn't valid JSON, the project's page shows where it fails. Every binding reads MCP file invalid until you fix the file. Agents in roles with a bound server stop before they start, because SHIP can't check their servers against the file.

The project's MCP servers section with an error notice naming the JSON position where .mcp.json fails to parse, and a server card reading MCP file invalid.
An MCP file that doesn't parse, with the line and column, and what it does to missions.

Fix the file on your default branch. SHIP reads it again at the start of the next mission.

See which servers an agent had

The record of each attempt lists the servers that its agent got. SHIP also records on the mission each tool call that an agent makes through SHIP, and this includes refused calls. In the timeline of a claude-code run, the first row also lists the servers that the agent started with, and whether each one connected. So the run shows a server that failed to start inside the sandbox:

A run timeline beginning with an MCP servers row listing github and context7 as connected and linear as failed.

If a server failed to start in the sandbox, the agent's session log usually shows the error from the server. For example, the package doesn't exist, or the server needs a secret that it didn't get.

How is this page?

On this page