Connect MCP clients
Connect a local MCP package or hosted endpoint to a supported client, then verify a read.
Connect your generated MCP server as a local process or a remote HTTPS endpoint. Start with the Connect block in its generated README or Console Target page; it contains the package-specific commands and credential names.
For a local connection, build the package with npm install and npm run build first. Remote connections need a Typeship-hosted endpoint or a configured self-hosted handler. The examples below use a fictional parcel command; substitute your generated command and paths.
Client compatibility
Connect using your client's default settings. Generated servers support MCP 2025-11-25 and 2026-07-28 automatically over stdio and Streamable HTTP. Claude Code does not need protocol environment variables. The Quickstart provides a local Petstore package and first read with no API credentials.
If a client reports an unsupported protocol version, update it and check protocol notes. Revisions older than 2025-11-25 are not supported.
Client prerequisites and config locations
Local package connections require Node.js 20 or newer and a published or locally available npm package. Hosted connections require an HTTPS Streamable HTTP endpoint. Put credentials in the client's secret or environment settings, never in command arguments or a repository file.
| Client | One-line or install link | Manual project config | Manual user config |
|---|---|---|---|
| Claude Code | claude mcp add … | .mcp.json | managed by claude mcp add --scope user … |
| Codex | codex mcp add … | .codex/config.toml | ~/.codex/config.toml |
| Cursor | parcel mcp install --cursor with a generated CLI | .cursor/mcp.json | ~/.cursor/mcp.json |
| VS Code | generated vscode:mcp/install?… link | .vscode/mcp.json | the active VS Code profile |
| Claude web/Desktop | Settings → Connectors → Add custom connector | n/a | saved in Claude |
The VS Code link URL-encodes a named MCP configuration. Review the prompt before installing it.
Connect from the generated README
Use the package and executable names in the README's Connect block. For a published package:
claude mcp add my-api -- npx -y --package "<published-mcp-package>" "<mcp-executable>"
codex mcp add my-api -- npx -y --package "<published-mcp-package>" "<mcp-executable>"Replace the placeholders before running the command. These npx commands require a published package. For a downloaded package, use the README's local node command; the quickstart includes a working sample.
For a Typeship-hosted endpoint, replace <slug> with the value from the Console:
claude mcp add --transport http parcel https://typeship.dev/mcp/<slug>
codex mcp add parcel --url https://typeship.dev/mcp/<slug>If your API takes an API key or bearer token, add it as a header that references an environment variable, for example --header 'X-API-Key: ${PARCEL_API_KEY}' with Claude Code. If your API uses OAuth, add no header; the client signs in when it connects. Connectors in Claude.ai, Claude Desktop, and ChatGPT cannot send credential headers, so they work with the hosted endpoint only for OAuth APIs. See which clients can connect.
These connections need only the MCP Target. Use the adjacent read-only entry when the agent should not write: the local command adds --read-only; the hosted URL uses /readonly.
Configure with your CLI
If you also generated a CLI, it can detect installed clients and merge an entry without replacing existing servers or putting a token in the file. Run it from the directory of the project that should see the server:
parcel login # once; the MCP server shares these credentials
parcel mcp install --claude # ./.mcp.json
parcel mcp install --claude-desktop # Claude Desktop's config file
parcel mcp install --codex
parcel mcp install --cursor # ./.cursor/mcp.json
parcel mcp install --all # every detected client
parcel doctorFor the hosted endpoint, add --url:
parcel mcp install --url https://typeship.dev/mcp/<slug> --claudeAdd --read-only to either form for a server that cannot write: the local entry gets the --read-only flag, the hosted URL gets /readonly. See Read-only and narrower servers.
Claude Desktop takes remote servers as connectors in the app (Settings, Connectors, Add custom connector), not through its config file, so mcp install --claude-desktop --url prints that instruction instead of writing an entry.
Client configuration files identify the transport and server. The server selects the supported protocol automatically.
Manual configuration
In Cursor, use the same local mcpServers configuration shown below in .cursor/mcp.json, or merge a hosted entry as { "mcpServers": { "parcel": { "url": "https://typeship.dev/mcp/<slug>" } } }. Enable the server in Cursor’s MCP settings and confirm that its tools appear.
Local server, in .mcp.json at the project root:
{
"mcpServers": {
"parcel": {
"command": "node",
"args": ["/abs/path/parcel/dist/mcp.js"]
}
}
}Remote server:
{
"mcpServers": {
"parcel": {
"type": "http",
"url": "https://typeship.dev/mcp/<slug>"
}
}
}Run claude mcp list to confirm the server is connected.
Credentials
A local server resolves credentials like the CLI: environment variables (PARCEL_TOKEN), then whatever parcel login saved. The Typeship-hosted endpoint forwards caller-supplied API credentials. A self-hosted HTTP handler validates an MCP connection token and uses your application's credentialsFor resolver for separate API credentials. When OAuth is configured, compatible clients discover the authorization server through its challenge. See OAuth discovery.
Check it works
List the client's configured servers, then ask it to list tools and call a read operation from your API:
Use the parcel server to list my shipments.Confirm the response contains data from your API. If you also generated a CLI, parcel doctor checks the local package and known client entries. A hosted connection should challenge for OAuth or accept the caller's configured credential; it should never need a token embedded in an install link.
Every server also answers search_docs and read_docs, so "how does pagination work in the Parcel API?" is answerable in the session when a docs site is configured.