MCP server
Hand the docs and tools to Claude Code, Cursor, Windsurf, or any MCP-compatible AI assistant — and let it do the boring setup for you.
ShipEasy ships an MCP (Model Context Protocol) server: @shipeasy/mcp. Plug it into your AI coding assistant and the agent gains a typed toolkit for inspecting and changing your ShipEasy project — plus prompts that walk it through complete onboarding flows.
The MCP server is the same surface as the CLI, exposed as JSON-Schema-typed tools instead of argv. That distinction matters: a typed tool is much harder for an LLM to misuse than a free-form CLI invocation.
Install
The CLI patches the right config file for whichever assistants you use:
shipeasy mcp install
? Which assistants? › Claude Code, Cursor ✔ Wrote ~/.claude/settings.json ✔ Wrote .cursor/mcp.json MCP server registered. Restart your AI assistant to pick it up.
After install, restart your assistant. The new MCP server appears under its tool list as shipeasy.
Manual config
If your client isn't auto-detected, or you prefer to write the config yourself:
{
"mcpServers": {
"shipeasy": {
"command": "npx",
"args": ["-y", "@shipeasy/mcp@latest"]
}
}
}{
"mcpServers": {
"shipeasy": {
"command": "npx",
"args": ["-y", "@shipeasy/mcp@latest"]
}
}
}{
"mcpServers": {
"shipeasy": {
"command": "npx",
"args": ["-y", "@shipeasy/mcp@latest"]
}
}
}For any other MCP-compatible client, write the same block to whatever config file it reads.
There are no environment variables to set. Run shipeasy login once and the MCP server picks up
~/.shipeasy/credentials on every tool call. No second auth flow, no shared tokens, no secrets in
mcp.json.
Why typed tools beat free-form
A CLI is great for a human — short flags, terse output, easy to chain. For an LLM, a CLI is a parsing hazard. The agent has to remember the flag spelling, escape JSON correctly, and interpret the textual response.
A typed MCP tool flips that. Each tool is a named function with a JSON-Schema parameter object. The agent sees the schema, fills it, and gets a structured response back. Misuse — wrong types, missing required fields, unsupported flags — is caught at the protocol layer, not by the CLI's argv parser.
That's why the MCP server is the recommended surface for any AI-driven setup. The CLI is for humans and CI.
Tool inventory
The MCP server exposes ~30 tools, grouped by area. The agent sees them as mcp__shipeasy__<name>.
Auth & project
{ authenticated, project_id, user_email }.shipeasy login — asks the human to click.Inspection
Flags & experiments
draft → running.stopped.i18n (Polylang)
/.well-known/i18n.json manifest from a deployed site.<script> tag and create a client key.t().locale:env profile.Onboarding prompts
The MCP server bundles long-form prompts you can invoke with /mcp:shipeasy:<prompt>:
onboard_i18n→
Discover strings, codemod, push keys, AI-draft translations, publish — for a fresh project.
add_experiment→
Walks the agent from a hypothesis through metric selection, variant creation, and start.
gate_a_feature→
Wraps an existing feature with a flag, with rollout defaults that won't blow up your prod.
Practical example
Open Claude Code in a fresh React project and say:
Use the ShipEasy MCP to onboard this project to translations. Use
enas the source locale.
The agent will:
Detect the project
Calls mcp__shipeasy__detect_project to learn the framework, source root, and SDK install
status.
Check auth
Calls mcp__shipeasy__auth_check. If you're not logged in, prompts you to run shipeasy login in a real terminal.
Install the loader
Calls mcp__shipeasy__i18n_install_loader with the right framework hint. Creates a client key,
writes the script tag.
Preview & apply the codemod
Calls mcp__shipeasy__i18n_codemod_preview to show diffs. Asks for your approval. Calls
mcp__shipeasy__i18n_codemod_apply.
Push & publish
Calls mcp__shipeasy__i18n_push_keys then mcp__shipeasy__i18n_publish_profile. New copy is
live within seconds.
The whole flow takes a few minutes and the only thing you click is the browser confirmation during login. For the canonical step-by-step the agent follows, see LLM Guides → String Manager.
Auth model
The MCP server is launched as a subprocess of your AI assistant. It reads ~/.shipeasy/credentials on every tool call — the same file the CLI writes. There are three implications worth knowing:
- One login covers everything. Run
shipeasy loginonce on your machine, and every MCP tool in every assistant is authenticated. - Refresh happens transparently. If the access token has expired, the MCP server refreshes it before the tool call — same behaviour as the CLI.
- Tokens never appear in MCP config. Your
mcp.jsononly contains the launcher command. Stealing the config gives an attacker nothing.
Troubleshooting
Run shipeasy login in a real terminal. The MCP server reads the same credentials file the CLI
writes. If the CLI sees you as logged in (shipeasy whoami) but the MCP server doesn't, your
assistant is launching with a stripped env — set HOME explicitly in your mcp.json block.
Pass an explicit --project <id> to shipeasy login, or set SHIPEASY_PROJECT=<id> before launching your AI assistant. Some agents inherit env from the launcher, others don't.
Restart the AI assistant. MCP servers are loaded at process start; editing mcp.json while the
assistant is running has no effect.
Tell the agent who your users are.
The richer your attributes, the more precise your targeting and analysis. Most teams under-invest here on day one and regret it.