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.
- Open Claude, then Settings > Connectors.
- Choose Add custom connector.
- Fill in Name (
pylo) and Remote MCP server URL (https://<your-pylo-mcp-host>/mcp/<customer-id>). - Leave OAuth Client ID, OAuth Client Secret and every other field blank.
- 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
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
- Open ChatGPT, then Settings > Apps & Connectors.
- Choose Create.
- Fill in Name (
pylo), Description, and MCP Server URL (https://<your-pylo-mcp-host>/mcp/<customer-id>). - Set Authentication to OAuth.
- 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
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 pylocodex 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
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
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
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.
| Setting | Value |
|---|---|
| Name | pylo |
| Server URL | https://<your-pylo-mcp-host>/mcp/<customer-id> |
| Transport | Streamable HTTP |
| Authentication | OAuth 2.1 |
Troubleshooting
| Symptom | Cause |
|---|---|
| 404 from the MCP server | The customer id in the URL is not a valid UUID |
OAuth fails with invalid_target | The id is a well-formed UUID, but no such customer exists |
| The client rejects the connector name | Claude Code allows only [A-Za-z0-9_-]. Drop spaces and punctuation |
| The agent connects but finds no tools | The connector is added but not enabled for the conversation |
| The agent cannot see an entity you expect | Grants 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.