ably

MCP server for Ably — channel history, presence, occupancy, stats, publish, and app management.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
99%
Integridad del esquema
88%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,329Tokens (definiciones de herramientas)
~1.1 KBTamaño de respuesta típico
Impacto moderado en la atención (1.82% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "ably": {
      "url": "https://ably.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://ably.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (15)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢ably_get_channel_history(channel, start, end, limit, direction)

Retrieve historical messages published to a channel, newest-first by default. REST: GET /channels/{channel}/messages.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name, e.g. 'chat:room1'."
    },
    "start": {
      "description": "Earliest message time, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "end": {
      "description": "Latest message time, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max messages (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "direction": {
      "description": "forwards (oldest-first) or backwards (newest-first, default).",
      "type": "string",
      "enum": [
        "forwards",
        "backwards"
      ]
    }
  },
  "required": [
    "channel"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_presence(channel, clientId, connectionId, limit)

List the members currently present on a channel (who is online now). REST: GET /channels/{channel}/presence.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name."
    },
    "clientId": {
      "description": "Filter to a specific clientId.",
      "type": "string"
    },
    "connectionId": {
      "description": "Filter to a specific connectionId.",
      "type": "string"
    },
    "limit": {
      "description": "Max members (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    }
  },
  "required": [
    "channel"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_presence_history(channel, start, end, limit, direction)

Retrieve historical presence events (enter/leave/update) for a channel. REST: GET /channels/{channel}/presence/history.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name."
    },
    "start": {
      "description": "Earliest event time, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "end": {
      "description": "Latest event time, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max events (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "direction": {
      "description": "forwards or backwards (default backwards).",
      "type": "string",
      "enum": [
        "forwards",
        "backwards"
      ]
    }
  },
  "required": [
    "channel"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_channel_details(channel)

Get status and occupancy metrics for a single channel (connections, publishers, subscribers, presence members). REST: GET /channels/{channel}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name."
    }
  },
  "required": [
    "channel"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_channels(prefix, limit, by)

Enumerate channels that are currently active in the app. Requires the API key to have the 'channel-metadata' capability. REST: GET /channels.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "prefix": {
      "description": "Only return channels whose name starts with this prefix.",
      "type": "string"
    },
    "limit": {
      "description": "Max channels per page (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "by": {
      "description": "Return channel ids only ('id', default) or full details ('value').",
      "type": "string",
      "enum": [
        "id",
        "value"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_stats(start, end, unit, limit, direction)

Retrieve message/connection/channel usage statistics for the app tied to the API key, bucketed by time. REST: GET /stats.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "start": {
      "description": "Start of range, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "end": {
      "description": "End of range, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "unit": {
      "description": "Bucket size: minute | hour | day | month. Default minute.",
      "type": "string",
      "enum": [
        "minute",
        "hour",
        "day",
        "month"
      ]
    },
    "limit": {
      "description": "Max buckets (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "direction": {
      "description": "forwards or backwards (default backwards).",
      "type": "string",
      "enum": [
        "forwards",
        "backwards"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_service_time

Return the current Ably service time in ms since epoch. Useful for aligning start/end windows to the server clock. REST: GET /time.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴ably_publish_message(channel, data, name, clientId)

WRITE: publish a message to a channel. Every connected subscriber receives it in real time. This is a real, outward-facing side effect — confirm the channel and payload before calling. REST: POST /channels/{channel}/messages.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name to publish to, e.g. 'chat:room1'."
    },
    "data": {
      "type": "string",
      "description": "Message payload (string; send JSON as a stringified value)."
    },
    "name": {
      "description": "Optional event name for the message.",
      "type": "string"
    },
    "clientId": {
      "description": "Optional clientId to attribute the message to.",
      "type": "string"
    }
  },
  "required": [
    "channel",
    "data"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_whoami

Return details about the configured control token: the account and user it belongs to and its capabilities. Good first call to confirm control-plane access. Control API: GET /me.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_apps(account_id)

List all apps in the account (id, name, status, tls-only). Account id is resolved automatically from the control token when ABLY_ACCOUNT_ID is unset. Control API: GET /accounts/{account_id}/apps.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "account_id": {
      "description": "Override the account id (defaults to the token's account).",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_keys(app_id)

List the API keys for an app, including their capabilities (but not the full secret). Control API: GET /apps/{app_id}/keys.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "App id (from ably_list_apps)."
    }
  },
  "required": [
    "app_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_namespaces(app_id)

List the channel namespaces (channel-rule prefixes) configured for an app, e.g. persistence and push settings. Control API: GET /apps/{app_id}/namespaces.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "App id (from ably_list_apps)."
    }
  },
  "required": [
    "app_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_queues(app_id)

List the Ably Queues (AMQP/STOMP message queues) provisioned for an app, with their state and messaging stats. Control API: GET /apps/{app_id}/queues.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "App id (from ably_list_apps)."
    }
  },
  "required": [
    "app_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_list_rules(app_id)

List the integration rules (reactor rules: webhooks, AWS Lambda/SQS/Kinesis, Kafka, Pulsar, etc.) configured for an app. Control API: GET /apps/{app_id}/rules.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "App id (from ably_list_apps)."
    }
  },
  "required": [
    "app_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ably_get_account_stats(account_id, start, end, unit, limit)

Retrieve aggregated usage statistics across the whole account, bucketed by time. Account id is resolved from the control token when ABLY_ACCOUNT_ID is unset. Control API: GET /accounts/{account_id}/stats.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "account_id": {
      "description": "Override the account id (defaults to the token's account).",
      "type": "string"
    },
    "start": {
      "description": "Start of range, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "end": {
      "description": "End of range, ms since epoch (inclusive).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "unit": {
      "description": "Bucket size: minute | hour | day | month. Default minute.",
      "type": "string",
      "enum": [
        "minute",
        "hour",
        "day",
        "month"
      ]
    },
    "limit": {
      "description": "Max buckets (<=1000). Default 100.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Prompts recomendados

retrieve_data
Get details about [item] from ably
Herramientas esperadas: ably_get_channel_history
fetch_info
Fetch [information type] using ably
Herramientas esperadas: ably_get_channel_history
list_items
List all [items] available in ably
Herramientas esperadas: ably_list_channels
browse_collection
Show me the [collection] from ably
Herramientas esperadas: ably_list_channels
explore_workflow
List available [items], then get details for each one using ably
Herramientas esperadas: ably_list_channelsably_get_channel_history

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada15 herramientas