Resumen
Descubrimiento
Un pedido sin token recibe401 con la dirección de los metadatos:
El flujo
1
Registro
El cliente se registra con
POST /oauth/register mandando client_name y sus redirect_uris. Se aceptan clientes públicos (token_endpoint_auth_method: none) y con secreto (client_secret_post o client_secret_basic).2
Autorización
El cliente abre
/oauth/authorize en el navegador con response_type=code, client_id, redirect_uri, code_challenge, code_challenge_method=S256, state y, recomendado, resource=https://mcp.xtarify.com/mcp.3
Consentimiento en xtarify.com
El usuario inicia sesión en xtarify.com y ve qué app pide acceso, a dónde volverá y qué podrá hacer. Las apps conocidas (Claude, ChatGPT, Cursor, VS Code, Windsurf y clientes locales) aparecen como verificadas; las demás muestran un aviso. Si acepta, vuelve al
redirect_uri con code y state.4
Token
El cliente canjea el código en
POST /oauth/token con grant_type=authorization_code, el code_verifier y el mismo redirect_uri. El código dura 5 minutos y sirve una sola vez: si se usa dos veces, se revocan los tokens que emitió.5
Llamadas
Cada pedido al servidor MCP lleva
Authorization: Bearer <access_token>. Para renovar, grant_type=refresh_token: devuelve un par nuevo y el refresco anterior deja de servir.Reglas
- Tokens atados al servidor (RFC 8707): un token emitido para otro recurso no abre
https://mcp.xtarify.com/mcp, y unresourcedistinto en el pedido de token devuelveinvalid_target. - Direcciones de retorno:
https://,http://solo paralocalhost,127.0.0.1o::1, y esquemas propios de apps de escritorio (cursor://,vscode://). Nuncajavascript:,data:nifile:, y sin fragmento (#). - Límite de registros: 30 por hora por dirección IP.
- Desconexión: el usuario puede revocar una app en xtarify.com/fabrica (Apps conectadas) y sus tokens dejan de servir al instante. El cliente también puede revocar sus tokens con
/oauth/revoke.
Transporte
POST /mcpcon un mensaje JSON-RPC (o un lote) responde con JSON. Las notificaciones reciben202.GET /mcpresponde405: el servidor no abre flujos SSE y no usaMcp-Session-Id, porque cada pedido es independiente.- Si mandas
MCP-Protocol-Versioncon una versión que no está en la lista, recibes400.

