ably
MCP server for Ably — channel history, presence, occupancy, stats, publish, and app management.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
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-httpQué puede hacer
Inventario de herramientas
Herramientas (15)
🟢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
ably_get_channel_historyably_get_channel_historyably_list_channelsably_list_channelsably_list_channelsably_get_channel_historyComunidad
Evidencia