Command Palette

Search for a command to run...

Connect an app

Every client needs the same two things: your MCP endpoint, and one trip through the OAuth consent screen. The steps below differ only in where each client hides its connector form.

Open Settings > Connect Pylo in the admin panel first. It shows your endpoint with the customer id already filled in, a connector name of the form pylo-<customer>, and a Copy instructions to share button that puts the whole setup for one client on your clipboard, ready to send to whoever runs it. Every example below writes the endpoint as https://<your-pylo-mcp-host>/mcp/<customer-id> and the name as pylo.

Naming the connector

Name each connector after its customer. Clients list every connector in one flat menu, so pylo-acme and pylo-northwind stay apart where two pylo entries would not. Claude Code accepts only letters, numbers, hyphens and underscores in a name.

Claude

Covers claude.ai and Claude Desktop. Both use the same connector form.

  1. Open Claude, then Settings > Connectors.
  2. Choose Add custom connector.
  3. Fill in Name (pylo) and Remote MCP server URL (https://<your-pylo-mcp-host>/mcp/<customer-id>).
  4. Leave OAuth Client ID, OAuth Client Secret and every other field blank.
  5. Save, then approve Pylo in the window Claude opens.

Enable it in the chat

Adding the connector is not enough. Claude offers Pylo's tools only once you enable the connector from the tools menu in a conversation.

Claude Code

terminal
1 claude mcp add --transport http pylo https://<your-pylo-mcp-host>/mcp/<customer-id>

The server is added to the current project. Add --scope user to reach it from every project instead.

Then run /mcp inside Claude Code and authenticate. Claude Code opens your browser for the consent screen.

ChatGPT

  1. Open ChatGPT, then Settings > Apps & Connectors.
  2. Choose Create.
  3. Fill in Name (pylo), Description, and MCP Server URL (https://<your-pylo-mcp-host>/mcp/<customer-id>).
  4. Set Authentication to OAuth.
  5. Read the warning, tick the box, then create the connector.

Create is hidden

ChatGPT shows Create only in developer mode. Turn it on under Settings > Apps & Connectors > Advanced settings, then reopen the connectors list.

ChatGPT warns about every custom connector, because it cannot vet what a third-party server does with your data. The grant Pylo asks for is read-only.

Codex

terminal
1 2 codex mcp add pylo --url https://<your-pylo-mcp-host>/mcp/<customer-id> --oauth-resource https://<your-pylo-mcp-host>/mcp/<customer-id> codex mcp login pylo

codex mcp login opens the browser for the consent screen. --oauth-resource has to repeat the endpoint: Codex uses it as the OAuth resource indicator, and it is not inferred from --url.

Cursor

.cursor/mcp.json
1 2 3 4 5 6 7 { "mcpServers": { "pylo": { "url": "https://<your-pylo-mcp-host>/mcp/<customer-id>" } } }

Use ~/.cursor/mcp.json instead to reach Pylo from every project. Then open Settings > MCP and sign in to Pylo on the new server.

VS Code

.vscode/mcp.json
1 2 3 4 5 6 7 8 { "servers": { "pylo": { "type": "http", "url": "https://<your-pylo-mcp-host>/mcp/<customer-id>" } } }

Run MCP: List Servers from the command palette, start Pylo, then sign in. Pylo's tools appear in Copilot Chat's agent mode, not in ask mode.

Gemini

~/.gemini/settings.json
1 2 3 4 5 6 7 { "mcpServers": { "pylo": { "httpUrl": "https://<your-pylo-mcp-host>/mcp/<customer-id>" } } }

The key is httpUrl, not url. Restart the Gemini CLI, then run /mcp auth to approve Pylo.

Any other MCP client

Register a remote server over streamable HTTP with the same endpoint. Pylo implements OAuth 2.1 with dynamic client registration, so the client obtains its own credentials and needs no ID or secret from you.

SettingValue
Namepylo
Server URLhttps://<your-pylo-mcp-host>/mcp/<customer-id>
TransportStreamable HTTP
AuthenticationOAuth 2.1

Troubleshooting

SymptomCause
404 from the MCP serverThe customer id in the URL is not a valid UUID
OAuth fails with invalid_targetThe id is a well-formed UUID, but no such customer exists
The client rejects the connector nameClaude Code allows only [A-Za-z0-9_-]. Drop spaces and punctuation
The agent connects but finds no toolsThe connector is added but not enabled for the conversation
The agent cannot see an entity you expectGrants inherit your Pylo permissions. The agent reads exactly what your user may read

After connecting

Settings > Connect Pylo lists every app you have authorized, with the host it connects from, when you connected it, and when it last called the API. Revoke access there. The app loses access immediately and has to run the handshake again to reconnect.