sendbird
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
使うべきか
品質と安全性
検出事項(2)
- LOWsendbird_list_group_channel_members 内
- LOWsendbird_list_group_channels_by_user 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"sendbird": {
"url": "https://sendbird.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://sendbird.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(14)
🟢sendbird_list_users(token, limit, active_mode, show_bot, user_ids, ...)
List the users in the application. Supports filtering by activity, nickname, ids, and metadata. Platform API: GET /users. Returns { users[], next }.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"description": "Pagination token from a previous response's `next`.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"active_mode": {
"description": "Filter by activation state. Default activated.",
"type": "string",
"enum": [
"activated",
"deactivated",
"all"
]
},
"show_bot": {
"description": "Include bot users. Default true.",
"type": "boolean"
},
"user_ids": {
"description": "Comma-separated user ids to fetch specific users.",
"type": "string"
},
"nickname": {
"description": "Exact nickname match.",
"type": "string"
},
"nickname_startswith": {
"description": "Prefix match on nickname.",
"type": "string"
},
"metadatakey": {
"description": "Metadata key to filter on (pair with metadatavalues_in).",
"type": "string"
},
"metadatavalues_in": {
"description": "Comma-separated metadata values matching metadatakey.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_get_user(user_id, include_unread_count, custom_types, super_mode)
Fetch a single user by user_id. Platform API: GET /users/{user_id}.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"include_unread_count": {
"description": "Include the user's total unread message count.",
"type": "boolean"
},
"custom_types": {
"description": "Comma-separated channel custom types to scope the unread count.",
"type": "string"
},
"super_mode": {
"description": "Scope unread count by Supergroup vs. group channels.",
"type": "string",
"enum": [
"all",
"super",
"nonsuper"
]
}
},
"required": [
"user_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_list_group_channels(token, limit, show_member, show_frozen, order, ...)
List group channels in the application, with rich filtering (name, members, distinct/public/super mode). Platform API: GET /group_channels. Returns { channels[], next }.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"description": "Pagination token from a previous response's `next`.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"show_member": {
"description": "Include the member list in each channel.",
"type": "boolean"
},
"show_frozen": {
"description": "Include frozen channels. Default true.",
"type": "boolean"
},
"order": {
"description": "Sort order. Default chronological.",
"type": "string",
"enum": [
"chronological",
"latest_last_message",
"channel_name_alphabetical",
"metadata_value_alphabetical"
]
},
"custom_types": {
"description": "Comma-separated channel custom types to filter on.",
"type": "string"
},
"name_contains": {
"description": "Substring match on channel name.",
"type": "string"
},
"members_include_in": {
"description": "Comma-separated user ids; returns channels including any of them.",
"type": "string"
},
"distinct_mode": {
"description": "Filter by distinct flag. Default all.",
"type": "string",
"enum": [
"all",
"distinct",
"nondistinct"
]
},
"public_mode": {
"description": "Filter by public/private. Default all.",
"type": "string",
"enum": [
"all",
"private",
"public"
]
},
"super_mode": {
"description": "Filter by Supergroup vs. group. Default all.",
"type": "string",
"enum": [
"all",
"super",
"nonsuper"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_get_group_channel(channel_url, show_member, show_read_receipt, show_delivery_receipt)
Fetch a single group channel by URL, optionally with members and receipts. Platform API: GET /group_channels/{channel_url}.
入力スキーマ
{
"type": "object",
"properties": {
"channel_url": {
"type": "string",
"description": "Group channel URL (percent-encoded automatically)."
},
"show_member": {
"description": "Include the member list.",
"type": "boolean"
},
"show_read_receipt": {
"description": "Include per-member read receipts.",
"type": "boolean"
},
"show_delivery_receipt": {
"description": "Include per-member delivery receipts.",
"type": "boolean"
}
},
"required": [
"channel_url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_list_group_channel_members(channel_url, token, limit, order, operator_filter, ...)
List the members of a group channel. Platform API: GET /group_channels/{channel_url}/members. Returns { members[], next }.
入力スキーマ
{
"type": "object",
"properties": {
"channel_url": {
"type": "string",
"description": "Group channel URL (percent-encoded automatically)."
},
"token": {
"description": "Pagination token from a previous response's `next`.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"order": {
"description": "Sort order of members.",
"type": "string",
"enum": [
"member_nickname_alphabetical",
"operator_then_member_alphabetical"
]
},
"operator_filter": {
"description": "Filter by operator status. Default all.",
"type": "string",
"enum": [
"all",
"operator",
"nonoperator"
]
},
"member_state_filter": {
"description": "Filter by invitation/join state (e.g. joined, invited, invited_by_friend).",
"type": "string"
},
"show_read_receipt": {
"description": "Include each member's read receipt.",
"type": "boolean"
},
"show_delivery_receipt": {
"description": "Include each member's delivery receipt.",
"type": "boolean"
}
},
"required": [
"channel_url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_list_group_channels_by_user(user_id, token, limit, order, show_member, ...)
List the group channels a given user belongs to. Platform API: GET /users/{user_id}/my_group_channels. Returns { channels[], next }.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"token": {
"description": "Pagination token from a previous response's `next`.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"order": {
"description": "Sort order. Default chronological.",
"type": "string",
"enum": [
"chronological",
"latest_last_message",
"channel_name_alphabetical",
"metadata_value_alphabetical"
]
},
"show_member": {
"description": "Include the member list in each channel.",
"type": "boolean"
},
"custom_types": {
"description": "Comma-separated channel custom types to filter on.",
"type": "string"
},
"distinct_mode": {
"description": "Filter by distinct flag. Default all.",
"type": "string",
"enum": [
"all",
"distinct",
"nondistinct"
]
},
"public_mode": {
"description": "Filter by public/private. Default all.",
"type": "string",
"enum": [
"all",
"private",
"public"
]
},
"hidden_mode": {
"description": "Filter by hidden state (e.g. unhidden_only, hidden_only, all).",
"type": "string"
}
},
"required": [
"user_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_list_open_channels(token, limit, custom_types, name_contains, url_contains)
List open (public, participant-based) channels. Platform API: GET /open_channels. Returns { channels[], next }.
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"description": "Pagination token from a previous response's `next`.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"custom_types": {
"description": "Comma-separated channel custom types to filter on.",
"type": "string"
},
"name_contains": {
"description": "Substring match on channel name.",
"type": "string"
},
"url_contains": {
"description": "Substring match on channel URL.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_get_open_channel(channel_url, participants_count)
Fetch a single open channel by URL. Platform API: GET /open_channels/{channel_url}.
入力スキーマ
{
"type": "object",
"properties": {
"channel_url": {
"type": "string",
"description": "Open channel URL (percent-encoded automatically)."
},
"participants_count": {
"description": "Include the current participant count.",
"type": "boolean"
}
},
"required": [
"channel_url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_list_messages(channel_type, channel_url, message_ts, message_id, prev_limit, ...)
List messages in a channel, anchored at a timestamp or message id. Provide EITHER message_ts (unix ms) OR message_id. Platform API: GET /{channel_type}/{channel_url}/messages. Returns { messages[] }.
入力スキーマ
{
"type": "object",
"properties": {
"channel_type": {
"type": "string",
"enum": [
"group_channels",
"open_channels"
],
"description": "Channel type: group_channels (member-based) or open_channels (public, participant-based)."
},
"channel_url": {
"type": "string",
"description": "Channel URL (percent-encoded automatically)."
},
"message_ts": {
"description": "Anchor timestamp in unix milliseconds. Provide this OR message_id.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"message_id": {
"description": "Anchor message id. Provide this OR message_ts.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"prev_limit": {
"description": "Number of messages before the anchor, 0-200.",
"type": "integer",
"minimum": 0,
"maximum": 200
},
"next_limit": {
"description": "Number of messages after the anchor, 0-200.",
"type": "integer",
"minimum": 0,
"maximum": 200
},
"include": {
"description": "Include the anchor message itself.",
"type": "boolean"
},
"reverse": {
"description": "Return in reverse chronological order.",
"type": "boolean"
},
"message_type": {
"description": "Filter by message type: MESG (text), FILE, or ADMM (admin).",
"type": "string",
"enum": [
"MESG",
"FILE",
"ADMM"
]
},
"user_ids": {
"description": "Comma-separated sender user ids to filter on.",
"type": "string"
},
"custom_types": {
"description": "Comma-separated message custom types to filter on.",
"type": "string"
}
},
"required": [
"channel_type",
"channel_url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sendbird_request(path, params)
Power-user escape hatch: issue a raw GET to any Chat Platform API v3 path not wrapped by a dedicated tool (e.g. /group_channels/{url}/messages/{id}, /report, /applications/settings_global). READ-ONLY — GET only. Platform API: GET {path}.
入力スキーマ
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "API path beginning with \"/\", relative to the /v3 base (e.g. \"/users/alex%40x.com/blocked_users\")."
},
"params": {
"description": "Optional JSON object (as a string) of query params, e.g. '{\"limit\":50}'.",
"type": "string"
}
},
"required": [
"path"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴sendbird_send_message(channel_type, channel_url, message_type, user_id, message, ...)
MUTATES Sendbird data: sends a message into a channel as a user (MESG) or as an admin (ADMM). File/multipart messages are not supported. Platform API: POST /{channel_type}/{channel_url}/messages.
入力スキーマ
{
"type": "object",
"properties": {
"channel_type": {
"type": "string",
"enum": [
"group_channels",
"open_channels"
],
"description": "Channel type: group_channels (member-based) or open_channels (public, participant-based)."
},
"channel_url": {
"type": "string",
"description": "Channel URL (percent-encoded automatically)."
},
"message_type": {
"description": "MESG (user text, default) or ADMM (admin message, no sender).",
"type": "string",
"enum": [
"MESG",
"ADMM"
]
},
"user_id": {
"description": "Sender user id. REQUIRED when message_type is MESG.",
"type": "string"
},
"message": {
"type": "string",
"description": "The message text."
},
"custom_type": {
"description": "Custom type tag for the message.",
"type": "string"
},
"data": {
"description": "Additional structured data as a string (often JSON).",
"type": "string"
},
"mention_type": {
"description": "Mention scope: specific users or the whole channel.",
"type": "string",
"enum": [
"users",
"channel"
]
},
"mentioned_user_ids": {
"description": "User ids to mention (when mention_type=users).",
"type": "array",
"items": {
"type": "string"
}
},
"is_silent": {
"description": "If true, does not update channel's last message / unread counts.",
"type": "boolean"
},
"send_push": {
"description": "Whether to send push notifications. Default true.",
"type": "boolean"
}
},
"required": [
"channel_type",
"channel_url",
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴sendbird_create_user(user_id, nickname, profile_url, issue_access_token, metadata)
MUTATES Sendbird data: creates a new user. Platform API: POST /users.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Unique user id to create."
},
"nickname": {
"description": "Display nickname.",
"type": "string"
},
"profile_url": {
"description": "Profile image URL (may be empty).",
"type": "string"
},
"issue_access_token": {
"description": "If true, issues an access token for the user in the response.",
"type": "boolean"
},
"metadata": {
"description": "Arbitrary key/value metadata object stored on the user.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"user_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴sendbird_update_user(user_id, nickname, profile_url, issue_access_token)
MUTATES Sendbird data: partially updates a user's profile. Only provided fields change. Platform API: PUT /users/{user_id}.
入力スキーマ
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"nickname": {
"description": "New display nickname.",
"type": "string"
},
"profile_url": {
"description": "New profile image URL.",
"type": "string"
},
"issue_access_token": {
"description": "If true, issues a new access token for the user.",
"type": "boolean"
}
},
"required": [
"user_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴sendbird_create_group_channel(user_ids, name, channel_url, cover_url, custom_type, ...)
MUTATES Sendbird data: creates a group channel with the given members. Platform API: POST /group_channels.
入力スキーマ
{
"type": "object",
"properties": {
"user_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to add as members of the new channel."
},
"name": {
"description": "Channel name.",
"type": "string"
},
"channel_url": {
"description": "Custom channel URL; auto-generated if omitted.",
"type": "string"
},
"cover_url": {
"description": "Channel cover image URL.",
"type": "string"
},
"custom_type": {
"description": "Custom type tag for the channel.",
"type": "string"
},
"is_distinct": {
"description": "If true, reuse an existing channel with the same members instead of creating a duplicate.",
"type": "boolean"
},
"is_public": {
"description": "If true, the channel is public (joinable without invitation).",
"type": "boolean"
},
"data": {
"description": "Additional structured data as a string (often JSON).",
"type": "string"
}
},
"required": [
"user_ids"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}コミュニティ
エビデンス