MCP clients
Connection values, client setup and fixes for the Lepsto MCP server.
Connect a remote HTTP MCP client to https://mcp.lepsto.com. Use browser sign-in for an interactive session, or a platform API key for a background agent.
This page lists connection settings, client configuration, and fixes for common failures. For a guided first connection, follow connect Lepsto MCP.
Connection values
The endpoint is shared by every product. Every caller sees the same tool list; each product-scoped call names its product in an argument: product_id, or productId where the tool declares it. The tool schema shows which.
Field | Value |
|---|---|
URL | https://mcp.lepsto.com — one endpoint for every product |
Transport | HTTP, JSON-RPC 2.0, POST only; stateless, with no MCP session to keep |
Interactive sign-in | OAuth 2.1 authorization code flow with PKCE; approve the access request in the browser opened by your client. |
Headless credential | Authorization: Bearer <API key>, with a platform API key (lsk_…) created on the product’s Developer page |
Authentication metadata | https://mcp.lepsto.com/.well-known/oauth-protected-resource |
Server name | lepsto in the examples below; this is a name in your client, not a separate server address. |
Add and remove Lepsto
Choose your client below. Use the endpoint exactly as shown, without an added path.
Client | Add | Remove |
|---|---|---|
Claude Code | claude mcp add --transport http lepsto https://mcp.lepsto.com, then open /mcp and sign in | claude mcp remove lepsto |
Claude Desktop | Customize → Connectors → + → Add custom connector, enter https://mcp.lepsto.com, then connect and approve access. On Team and Enterprise plans an owner adds it under Organization settings → Connectors first. | Customize → Connectors, then Remove on the connector |
Cursor | Add a lepsto entry with "url": "https://mcp.lepsto.com" under mcpServers in .cursor/mcp.json (one project) or ~/.cursor/mcp.json (every project) | Delete the lepsto entry from that file |
OpenCode | Add "lepsto": { "type": "remote", "url": "https://mcp.lepsto.com" } under mcp in opencode.json, then run opencode mcp auth lepsto | Delete the entry, or set "enabled": false to keep it switched off; opencode mcp logout lepsto clears the stored sign-in |
ChatGPT | Add Lepsto as a custom app for a remote MCP server using https://mcp.lepsto.com, then sign in with OAuth. Availability depends on your ChatGPT plan and workspace settings; follow the developer-mode instructions linked below. | Remove the app in ChatGPT |
Client configuration controls which projects can use the connection. In Claude Code, the default is the current project. Use --scope project to write a shared .mcp.json in the project root, or --scope user to make the connection available across your projects.
For current client-specific details, see Claude Code, Claude custom connectors, Cursor, OpenCode, and ChatGPT developer mode.
Use an API key instead of signing in
A platform API key lets CI and background agents connect without a person approving a browser sign-in. Use Claude Code, Cursor, or OpenCode for the key configuration below. The Claude custom connector documents OAuth sign-in only; this page also covers ChatGPT through OAuth.
-
Create a key on the product’s Developer page in the web app. Copy its plaintext value when shown; you cannot retrieve it later. See key management.
-
Set
LEPSTO_API_KEYto the key in your shell, then add the bearer header. For Claude Code:claude mcp add --transport http lepsto https://mcp.lepsto.com \ --header "Authorization: Bearer $LEPSTO_API_KEY"For Cursor or OpenCode, add
"Authorization": "Bearer <key>"to the server entry’sheadersobject, replacing<key>with your key. Keep credentials out of committed files, including a shared.mcp.json. -
Ask the agent to list the Lepsto tools available to it. If authentication fails, use the
401checks below.
A raw API key is bound to the product it was created in. Calls may omit the product argument and use that product; a call whose product argument names another product is refused with no_tool_permission, even if you belong to that product. The server checks the key on every request; revoking it stops the next call made with that key.
Choose the product
The server does not remember a product between calls. Ask the agent to list your products; it calls organization_product_list. Then name the product you want in the request, for example:
List the services in product
<product-id>.
The agent passes that ID on every product-scoped tool call, as product_id or, where the tool declares it, productId. Check the product name in the list before asking for product-specific work. With a raw API key, the product argument may be omitted: the key’s own product is the only one available.
Troubleshooting
Symptom | Check and next action |
|---|---|
401 with a WWW-Authenticate header | Reconnect and sign in. No credential reached the server; the header points an OAuth-capable client to the authentication metadata. |
401 without a WWW-Authenticate header | Replace the rejected credential, such as a revoked or mistyped key. The server does not send an OAuth discovery pointer when a credential was supplied and rejected. |
A tool error starting with product_id_required | The call named no product. Pass the product’s ID in the argument the tool schema declares, product_id or productId; get it from organization_product_list. |
A tool error starting with no_tool_permission | Check the product argument first. API key: use a key created in the intended product; membership elsewhere does not extend the key. OAuth: confirm your product access and role permissions. The code does not say which check failed. |
A tool call returns Unknown tool | The name is not a tool on the server. Product selection is one such case: it is not available over MCP, so pass the product argument on each product-scoped call instead. For another name, check the live tools/list. |
405, 415, or 400 with -32600 from the endpoint | Configure the client for remote HTTP (not SSE). The server accepts one JSON-RPC message per POST with Content-Type: application/json; it rejects GET, DELETE, and batches. |
A tool description starts with DEPRECATED — use <new name> | Switch to the replacement named in the description. The old name remains available for one release cycle after a rename. |
The client lists no Lepsto tools after you edit its config | Quit the client completely and reopen it so clients that read configuration at startup load the change. |
No browser opens for sign-in | Run the client in a session with a browser, or configure an API key for headless use. |