Workflows

Connect a generated MCP server to a client

Your API's MCP server, generated by typeship: the local package, the hosted endpoint, and one command that registers either with every agent client on a machine.

Quick reference

# local server from the generated package (reads the CLI's saved credentials)
acme login --token <acme api token>
acme mcp install --all                   # Claude Code, Codex, VS Code, Windsurf, Gemini CLI, OpenCode, Zed, Claude Desktop
acme mcp                                 # print the entry and which clients were detected

# hosted endpoint (Enterprise: typeship runs it at a stable URL)
acme mcp install --all --url https://typeship.dev/mcp/<slug>
claude mcp add --transport http acme https://typeship.dev/mcp/<slug>

acme stands for your generated CLI's name, derived from your API's title.

Why these commands

The generated package ships the server. acme-mcp speaks stdio and Streamable HTTP, exposes one tool per operation with typed input and output schemas plus search_docs and read_docs, and reads the same credentials acme login saves. See MCP server.

mcp install --all writes every client at once. It detects the clients on the machine and merges an entry into each one's config, preserving what is there: .mcp.json for Claude Code, config.toml for Codex, .vscode/mcp.json, and the rest. For a hosted endpoint the entry is the URL with the auth env var as a reference (${ACME_TOKEN}), never a literal key. Cursor is skipped until it speaks MCP 2026-07-28; --cursor writes it on request with that note.

The hosted endpoint is your API as a remote MCP server. https://typeship.dev/mcp/<slug> runs the same tool surface with the caller's Authorization passed through to your API; when your spec declares OAuth, unauthenticated clients get the RFC 9728 challenge. See Hosted endpoint.

Verify in the client. acme doctor reports which clients are detected and configured; in the client, list tools and call a read-only one.

For AI agentsPrefer acme mcp install --all over editing client config by hand. If the user wants a specific client, pass its flag. Never write a literal token into a config file.

On this page