El servidor MCP de Ocean expone los mismos datos que la API REST a través del Model Context Protocol, para que agentes de IA y clientes compatibles con MCP (Claude Code, Claude.ai, Cursor) consulten usuarios escaneados, puntuaciones de riesgo y la base de tramposos sin armar llamadas REST a mano.
Endpoint: https://api.anticheat.ac/mcp
Transporte: Streamable HTTP (POST únicamente, respuestas JSON)
Autenticación: OAuth 2.1 con PKCE
El servidor habla Streamable HTTP, así que cualquier cliente MCP con ese transporte puede conectarse. Cada cliente de abajo gestiona el login OAuth solo: el primer intento abre el navegador en la página de autorización de Ocean (https://api.anticheat.ac/oauth/authorize, que te lleva a la pantalla de consentimiento), donde inicias sesión y eliges qué alcances conceder.
Agrega el servidor y autentícate con /mcp dentro de Claude Code:
claude mcp add --transport http ocean https://api.anticheat.ac/mcp
O agrégalo a .mcp.json en tu proyecto:
{
"mcpServers": {
"ocean": {
"type": "http",
"url": "https://api.anticheat.ac/mcp"
}
}
}Ajustes → Conectores → Agregar conector personalizado. Ponle de nombre Ocean, pon la URL https://api.anticheat.ac/mcp, luego Conectar y completa el login de Ocean. No hace falta configurar JSON.
Agrégalo a ~/.cursor/mcp.json (global) o .cursor/mcp.json (proyecto):
{
"mcpServers": {
"ocean": {
"url": "https://api.anticheat.ac/mcp"
}
}
}Después, en Ajustes de Cursor → MCP, haz clic en Iniciar sesión junto al servidor cuando aparezca “Needs login”.
Agrégalo a .vscode/mcp.json:
{
"servers": {
"ocean": {
"type": "http",
"url": "https://api.anticheat.ac/mcp"
}
}
}Inicia el servidor desde el editor; VS Code pide el login de OAuth.
Agrégalo a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ocean": {
"serverUrl": "https://api.anticheat.ac/mcp"
}
}
}Agrégalo a ~/.gemini/settings.json:
{
"mcpServers": {
"ocean": {
"httpUrl": "https://api.anticheat.ac/mcp"
}
}
}Apúntalo a https://api.anticheat.ac/mcp. El cliente necesita Streamable HTTP y OAuth 2.1 con PKCE, y debe soportar Dynamic Client Registration o Client ID Metadata Documents. El descubrimiento empieza en https://api.anticheat.ac/.well-known/oauth-protected-resource/mcp. Para depurar una conexión a mano, usa el MCP Inspector:
npx @modelcontextprotocol/inspector
Después elige el transporte Streamable HTTP e ingresa la URL de arriba.
Cada herramienta usa el mismo alcance de permiso que su endpoint REST. La llamada falla si la cuenta de la conexión no concedió ese alcance.
| Herramienta | Alcance | Descripción |
|---|---|---|
| lookup_scanned_user | scanned-users:lookup | Consulta el historial de escaneos, detecciones, bans o avisos y cuentas relacionadas de un usuario de Discord |
| get_user_risk_score | user:risk-score | Obtén la puntuación y el nivel de riesgo calculados de un usuario de Discord |
| create_scan_pin | pins:create | Crea PIN de escaneo de forma programática. Solo dueños de Enterprise, y recibe un argumento enterpriseId |
| get_scan_pin_status | pins:status | Obtén el progreso en tiempo real, el porcentaje y un resumen del resultado de tus PIN |
| get_scan_pin_results | pins:results | Obtén los resultados de escaneo de tus propios PIN |
| query_cheater_database | db:query (acceso a la base) | Busca en la base de tramposos por ID de Discord: perfil de la comunidad, consulta de red y coincidencias de escaneos de Ocean |
| get_client_version | ninguno | Lee la versión activa del cliente de Ocean |
Conceder un alcance en la pantalla de consentimiento de OAuth no salta la comprobación de licencia. db:query solo se puede conceder a cuentas con un plan DB Access activo, un asiento de base de Enterprise o un rol de staff, y pins:create solo se puede conceder a cuentas que sean dueñas de un Enterprise activo, y exige un argumento enterpriseId en cada llamada.
| Límite | Valor |
|---|---|
| Límite de peticiones | 1.000 peticiones por hora y por cuenta (cada POST a /mcp cuenta, incluidos initialize y tools/list; 429 si se supera) |
Puedes revocar una conexión MCP cuando quieras desde Ajustes → Aplicaciones conectadas en el panel de Ocean.
| Síntoma | Significado |
|---|---|
401 con la cabecera WWW-Authenticate | Falta el access token o caducó. Vuelve a conectar el servidor (la mayoría de los clientes lo renuevan solos; si no, quítalo y agrégalo de nuevo) |
La llamada a la herramienta devuelve isError que nombra un alcance | La conexión se autorizó sin ese alcance. Desconecta y vuelve a conectar, concediendo el permiso en la pantalla de consentimiento |
create_scan_pin falla con un error de permiso | Exige el argumento enterpriseId y solo funciona para cuentas que sean dueñas de ese Enterprise activo |
429 | Se alcanzó el límite de 1.000 peticiones por hora y por cuenta; espera a que se reinicie la ventana |
¿Armas tu propio cliente MCP contra Ocean? El servidor implementa OAuth 2.1 con PKCE obligatorio (S256) y sigue la especificación de autorización de MCP.
| Detalle | Valor |
|---|---|
| Metadatos del servidor de autorización | https://api.anticheat.ac/.well-known/oauth-authorization-server |
| Metadatos del recurso protegido | https://api.anticheat.ac/.well-known/oauth-protected-resource/mcp |
| Registro de cliente | Dynamic Client Registration para clientes públicos, o Client ID Metadata Documents |
| PKCE | Obligatorio, S256 |
| Vida del access token | 15 minutos |
| Refresh tokens | Se rotan en cada uso |