MCP client setup
Platica's MCP server speaks Streamable HTTP (spec 2025-11-25). Any client compatible with this transport connects to:
https://api.platica.mx/mcp The recommended path is OAuth 2.1: paste that URL and the client takes you to sign in to Platica. If your client doesn't speak OAuth, use an API Key . Both methods are covered in Authentication .
- Method:
POST(JSON-RPC 2.0 over Streamable HTTP) - Mode: stateless + JSON (no
Mcp-Session-Idor SSE required) - Spec: Streamable HTTP
2025-11-25
Quick install
The buttons install the server with OAuth (URL only, no API Key). Cursor and VS Code open the client with the config ready; Claude Code, Antigravity, and Codex copy the command or config to your clipboard. When you connect, sign in to Platica and pick the workspaces.
Cursor
Edit ~/.cursor/mcp.json (or .cursor/mcp.json inside your project):
{
"mcpServers": {
"platica": {
"url": "https://api.platica.mx/mcp"
}
}
} Restart Cursor. The first time, Platica sign-in opens. When you're done, the bottom bar shows the platica server with a green dot.
Claude Code
claude mcp add --transport http platica https://api.platica.mx/mcp Or in .mcp.json:
{
"mcpServers": {
"platica": {
"transport": "http",
"url": "https://api.platica.mx/mcp"
}
}
} Claude Code registers the client, opens the browser, and stores the tokens. Don't pass --header if you want OAuth: that flag forces an API Key.
Claude Desktop
If you have Claude Pro or higher, go to Settings → Connectors → Custom Connectors, paste https://api.platica.mx/mcp, and authorize. Claude Desktop speaks native OAuth with the remote server; you don't need mcp-remote.
Claude Desktop's local config speaks stdio, so the mcp-remote bridge translates to Streamable HTTP. Without --header, mcp-remote starts OAuth too. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"platica": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.platica.mx/mcp"
]
}
}
} VS Code (GitHub Copilot)
In settings.json:
{
"github.copilot.chat.mcp.servers": {
"platica": {
"type": "http",
"url": "https://api.platica.mx/mcp"
}
}
} Antigravity
Open the agent panel → "..." menu → MCP Servers → Manage MCP Servers → View raw config, and add to ~/.gemini/antigravity/mcp_config.json:
{
"mcpServers": {
"platica": {
"serverUrl": "https://api.platica.mx/mcp"
}
}
} Antigravity uses serverUrl (not url) for HTTP servers. Restart Antigravity after saving. If your build doesn't speak OAuth yet, add the API Key header.
Codex
In ~/.codex/config.toml:
[mcp_servers.platica]
url = "https://api.platica.mx/mcp" Each server goes under [mcp_servers.<name>]. Restart Codex after saving. If your build doesn't speak OAuth yet, use http_headers with an API Key .
Any other client
If the client supports Streamable HTTP and the MCP authorization spec, the URL is enough. The initial 401 carries the WWW-Authenticate header that starts OAuth.
| Parameter | Value |
|---|---|
| URL | https://api.platica.mx/mcp |
| HTTP method | POST |
| Transport headers | Accept: application/json, text/event-streamContent-Type: application/json |
| Authentication | OAuth 2.1 (discovery + PKCE S256). Don't set Authorization by hand. |
| Session | Stateless (no Mcp-Session-Id required) |
| SSE | Not used (responses are always application/json) |
Resource identifier: https://api.platica.mx/mcp. Discovery documents and scopes are in Authentication .
Alternative: API Key
For scripts, CI, or a client that doesn't speak OAuth, generate a key under Settings → API Keys and put it in the header. Replace the placeholder with your pl_key_....
Cursor
{
"mcpServers": {
"platica": {
"url": "https://api.platica.mx/mcp",
"headers": {
"Authorization": "Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET"
}
}
}
} Claude Code
claude mcp add --transport http platica https://api.platica.mx/mcp \
--header "Authorization: Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET" Claude Desktop (mcp-remote)
The key travels in env so it doesn't sit in plain text in args:
{
"mcpServers": {
"platica": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.platica.mx/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET"
}
}
}
} VS Code
{
"github.copilot.chat.mcp.servers": {
"platica": {
"type": "http",
"url": "https://api.platica.mx/mcp",
"headers": {
"Authorization": "Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET"
}
}
}
} Antigravity
{
"mcpServers": {
"platica": {
"serverUrl": "https://api.platica.mx/mcp",
"headers": {
"Authorization": "Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET"
}
}
}
} Codex
[mcp_servers.platica]
url = "https://api.platica.mx/mcp"
http_headers = { "Authorization" = "Bearer pl_key_YOUR_KEY_ID_YOUR_SECRET" } Verify the connection
Ask the agent to run list_workspaces or ask "which Platica workspaces do you have access to?". You should see the workspaces you authorized, with their id, role, and modules.
Then "what tools do you have from the Platica MCP?" lists the catalog. If you authorized several workspaces, write tools will ask for workspace — the id comes from list_workspaces.
If the client reports 401, or never opens the browser: remove any leftover Authorization header from an old config (a bad pl_key_ blocks OAuth discovery). If you're using an API Key, check that it starts with pl_key_ and is active in the dashboard.
If a write tool returns 403 with insufficient_scope, the token is read-only: re-authorize requesting platica:write.
If it returns 403 with Missing … permission, your role in that workspace doesn't cover the module. Sign in with an account that does, or use an API Key.