ably
MCP server for Ably — channel history, presence, occupancy, stats, publish, and app management.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"ably": {
"url": "https://ably.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://ably.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Empfohlene Prompts
ably_get_channel_historyably_get_channel_historyably_list_channelsably_list_channelsably_list_channelsably_get_channel_historyCommunity
Nachweis