ably
MCP server for Ably — channel history, presence, occupancy, stats, publish, and app management.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"ably": {
"url": "https://ably.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://ably.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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}.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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#"
}권장 프롬프트
ably_get_channel_historyably_get_channel_historyably_list_channelsably_list_channelsably_list_channelsably_get_channel_history커뮤니티
증거