Skip to main content
Glama

youtube-summarize

MCP-сервер, который извлекает транскрипты видео с YouTube и при необходимости создает их краткое содержание.

Демонстрация — создание краткого содержания видео с YouTube в Claude

Возможности

  • Извлечение транскриптов в различных форматах (текст, JSON, SRT, WebVTT, красивый вывод)

  • Метаданные видео — название, описание, канал, дата загрузки, длительность, количество просмотров, главы (через yt-dlp)

  • Опциональные временные метки в текстовых транскриптах

  • Создание краткого содержания видео — возвращает транскрипт с четко выделенным промптом для проверки человеком перед тем, как LLM начнет работу

  • Список видео в плейлисте — быстрое перечисление любого публичного плейлиста с возможностью сортировки

  • Список доступных языков для транскриптов любого видео

  • Гибкий парсинг URL — принимает полные URL YouTube (youtube.com/watch?v=, youtu.be/, youtube.com/embed/, youtube.com/shorts/) или просто ID видео

  • Поддержка нескольких языков — запрос транскриптов на конкретных языках с приоритетом резервных вариантов

Related MCP server: ytt-mcp

Инструменты

get_transcript

Извлечение транскрипта видео с YouTube. По умолчанию ответ предваряется блоком [METADATA] (название, канал, дата публикации, длительность, просмотры, описание); передайте include_metadata=false для вывода только транскрипта.

Параметр

Тип

По умолчанию

Описание

url

string

обязательно

URL видео YouTube или ID видео

languages

string[]

["en"]

Предпочитаемые языки в порядке приоритета

format

string

"text"

Формат вывода: text, json, pretty, webvtt, srt

preserve_formatting

boolean

false

Сохранять HTML-теги форматирования в транскрипте

include_timestamps

boolean

false

Если true при format="text", добавляет [ЧЧ:ММ:СС] перед каждой строкой. Игнорируется для других форматов (они уже содержат временные метки).

include_metadata

boolean

true

Добавлять блок [METADATA] перед транскриптом. Передайте false для вывода только транскрипта.

summarize_transcript

Извлечение транскрипта и возврат его с инструкциями по созданию краткого содержания. Ответ структурирован по четко обозначенным разделам ([INSTRUCTIONS], [PROMPT_SOURCE], [VIDEO], [METADATA], [TRANSCRIPT]), чтобы человек мог проверить промпт перед тем, как позволить LLM действовать.

Параметр

Тип

По умолчанию

Описание

url

string

обязательно

URL видео YouTube или ID видео

prompt

string

(промпт по умолчанию)

Пользовательские инструкции по созданию краткого содержания

languages

string[]

["en"]

Предпочитаемые языки в порядке приоритета

include_timestamps

boolean

false

Добавлять [ЧЧ:ММ:СС] перед каждой строкой транскрипта.

include_metadata

boolean

true

Включить блок [VIDEO] с названием, каналом, датой публикации, длительностью, просмотрами и описанием.

get_video_metadata

Извлечение метаданных (название, описание, канал, дата загрузки, длительность, просмотры, теги, главы и т.д.) для видео на YouTube. Работает на базе yt-dlp.

Параметр

Тип

По умолчанию

Описание

url

string

обязательно

URL видео YouTube или ID видео

list_playlist_videos

Список видео в плейлисте YouTube (название, ID, канал, длительность, просмотры, URL). Метаданные для каждого видео намеренно сокращены, чтобы вызов оставался быстрым даже для больших плейлистов; используйте get_video_metadata с конкретным ID видео для получения полной информации.

Параметр

Тип

По умолчанию

Описание

url

string

обязательно

URL плейлиста YouTube (с ?list=...) или ID плейлиста

limit

integer

500

Максимальное количество видео для возврата

sort_by

string

"index"

Одно из: index (порядок в плейлисте), title, duration, views. upload_date не поддерживается.

order

string

"asc"

asc или desc

list_transcripts

Список доступных языков транскриптов для видео.

Параметр

Тип

По умолчанию

Описание

url

string

обязательно

URL видео YouTube или ID видео

Установка

Быстрый старт (рекомендуется)

uvx youtube-summarize

Claude Desktop

Добавьте в ваш claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "youtube-summarize": {
      "command": "uvx",
      "args": ["youtube-summarize"]
    }
  }
}

Claude Code

claude mcp add youtube-summarize -- uvx youtube-summarize

Другие MCP-клиенты

Запустите сервер через stdio:

uvx youtube-summarize

Предварительные требования

  • Python 3.13+

  • Менеджер пакетов uv

Разработка

# Install dependencies
uv sync

# Launch the MCP inspector (web UI for testing tools)
uv run mcp dev main.py

Лицензия

MIT


mcp-name: io.github.zlatkoc/youtube-summarize

Available Tools

6 tools
get_transcriptA

Fetch a YouTube video's transcript.

Args: url: YouTube video URL or video ID languages: Preferred languages in priority order (e.g. ["en", "de"]). Defaults to English. format: Output format — one of: text, json, pretty, webvtt, srt preserve_formatting: Keep HTML formatting tags in the transcript text include_timestamps: When True with format="text", prefix each line with [HH:MM:SS]. Ignored for json/srt/webvtt/pretty (those formats already include timestamps). include_metadata: When True (default), prepend a [METADATA] block (title, channel, published, duration, views, description) before the transcript. Pass False for transcript-only output.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
formatNotext
languagesNo
include_metadataNo
include_timestampsNo
preserve_formattingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the behavior of all parameters, including interactions (e.g., 'include_timestamps' ignored for certain formats) and defaults. However, it does not disclose potential failure cases (e.g., invalid URL or unavailable transcript).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence and a bullet-style Args list. It is informative without excessive verbosity, though the Args section could be slightly condensed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), the description does not need to detail return values. It covers all parameters and their behavior comprehensively. Minor missing context includes error handling and prerequisites (e.g., valid URL).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 6 parameters with defaults, accepted values (e.g., format options), and behavioral nuances (e.g., 'include_timestamps' interaction with format). This adds significant meaning beyond the schema's bare titles and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a YouTube video's transcript,' which is a specific verb and resource. It distinguishes itself from siblings like 'list_transcripts' (which lists available transcripts) and 'summarize_transcript' (which summarizes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like 'list_transcripts' or 'summarize_transcript.' It provides parameter details but lacks context on exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_video_metadataA

Fetch metadata (title, description, channel, upload date, duration, views, chapters, etc.) for a YouTube video.

Args: url: YouTube video URL or video ID

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral aspects such as authentication, rate limits, or error handling. It only lists the metadata fields returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences and a bullet for args, but it could be more structured (e.g., separating description and args more formally).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and sibling tools, the description lists enough fields to understand what is returned. However, missing behavioral details like auth prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies that the url parameter accepts a YouTube video URL or video ID, adding meaning beyond the schema which only specifies type string. Since schema coverage is 0%, this is valuable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it fetches metadata for a YouTube video and lists specific fields (title, description, channel, etc.), which distinguishes it from sibling tools like get_transcript and summarize_transcript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is given; usage is implied by the purpose but lacks differentiation from siblings or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_playlist_videosA

List the videos in a YouTube playlist (titles, IDs, channels, durations, views).

Per-video metadata is intentionally lean so the call stays fast even for big playlists. For full metadata on a specific video, call get_video_metadata with that video's ID.

Args: url: YouTube playlist URL (with ?list=...) or bare playlist ID limit: Maximum videos to return (default 500). Pass a smaller value to truncate. sort_by: Sort key — "index" (playlist order, default), "title", "duration", "views". "upload_date" is not supported in this fast-mode tool. order: "asc" (default) or "desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
orderNoasc
sort_byNoindex

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses lean/fast behavior and intentionally sparse per-video metadata. Notes that upload_date sorting is unsupported. With no annotations, the description sufficiently informs about the tool's nature, though it could mention auth or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear opening, rationale, and labeled Args section. Efficiently uses sentences to convey intent and parameter details. Minor improvement would be combining some lines, but overall very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a listing tool with output schema present: explains return metadata, why it's lean, how to get more detail, and covers all parameters. No gaps given the context signals (4 params, no annotations, output schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant meaning beyond the input schema: explains url format (with ?list= or bare ID), limit usage (default 500, can truncate), available sort keys (including unsupported upload_date), and order options. Schema coverage is 0%, but description covers all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists videos in a YouTube playlist and specifies the metadata included (titles, IDs, channels, durations, views). It distinguishes from sibling tool 'get_video_metadata' by noting this is a fast, lean alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly guides when to use this tool vs alternatives: 'For full metadata on a specific video, call get_video_metadata with that video's ID.' Also clarifies limitations (no upload_date sort) and suggests truncating with limit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_transcriptsA

List available transcript languages for a YouTube video.

Args: url: YouTube video URL or video ID

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It omits any information about read-only nature, error handling, authentication needs, or side effects. For a listing tool, basic safety context is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short sentences. It is front-loaded with the main action. The parameter documentation is separate but minimal. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to detail return values. However, it lacks context on prerequisites (e.g., video must exist) and does not guide the agent on when to use this vs. get_transcript. For a simple tool, this is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning beyond the input schema by specifying that the url parameter accepts 'YouTube video URL or video ID', which the schema lacks. This clarifies acceptable input formats despite the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists available transcript languages for a YouTube video. This verb+resource phrasing distinguishes it from sibling tools like get_transcript (retrieves a specific transcript) and get_video_metadata (metadata).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for discovering transcript languages before fetching one, but it does not explicitly state when to use this tool versus alternatives like get_transcript or provide any when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_videosA

Search YouTube for videos and return a clean ranked result list.

Unlike the YouTube website, results contain only actual videos — no ads, recommendation shelves, or personalization. Relevance ordering still comes from YouTube's backend. Pair with get_transcript or summarize_transcript on a result's ID or URL.

Args: query: Search terms limit: Maximum results to return (default 10) sort_by: Result order — "relevance" (default), "date" (newest first), "views", "rating" uploaded: Filter by upload time — "any" (default), "hour", "today", "week", "month", "year" duration: Filter by length — "any" (default), "short" (<4 min), "medium" (4-20 min), "long" (>20 min)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
sort_byNorelevance
durationNoany
uploadedNoany

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses that results exclude ads and personalization and that relevance ordering comes from YouTube's backend. However, it omits details on rate limits, authentication, error handling, or pagination behavior, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a brief purpose paragraph followed by a clear argument-style list of parameters. Every sentence adds information, and the structure is front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values are handled. The description covers behavior and parameters well, but lacks details on pagination, result limits (beyond default), or edge cases (e.g., no results). Slightly incomplete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides comprehensive explanations for all five parameters, including default values and allowed options (e.g., sort_by: relevance, date, views, rating). This adds significant value beyond the input schema, which has no parameter descriptions (0% coverage).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search YouTube for videos and return a clean ranked result list,' specifying the verb and resource. It distinguishes from the YouTube website by mentioning no ads or personalization, and the parameter list reinforces the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description suggests pairing with get_transcript or summarize_transcript, but does not explicitly mention alternatives among siblings (e.g., list_playlist_videos, get_video_metadata) or when not to use this tool. The guidance is present but limited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarize_transcriptA

Fetch a YouTube video's transcript and return it with summarization instructions.

The LLM client should use the returned instructions and transcript to produce a summary. The output is structured into clearly-labeled sections so a human can review the prompt before letting the LLM act on it.

Args: url: YouTube video URL or video ID prompt: Custom summarization instructions. If omitted, a default summary prompt is used. languages: Preferred languages in priority order (e.g. ["en", "de"]). Defaults to English. include_timestamps: When True, prefix each transcript line with [HH:MM:SS]. include_metadata: When True (default), include a [VIDEO] block with title, channel, published date, duration, views, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
promptNo
languagesNo
include_metadataNo
include_timestampsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does carry the burden. It explains that the tool returns instructions and transcript for the LLM to produce a summary, and output is structured. However, it does not disclose potential errors, rate limits, or prerequisites like authentication. The key behavior is transparent but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then uses a clear 'Args' list for parameters. It is slightly verbose but every sentence provides value. Could be tightened slightly but remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given five parameters, no annotations, and presence of an output schema, the description covers the main behaviors and parameter details. It explains the output structure but misses error handling or return format specifics (likely covered by output schema). Comprehensive enough for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description includes a detailed 'Args' section explaining each parameter's purpose, defaults, and behavior (e.g., languages in priority order, timestamps format). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches a YouTube transcript and returns it with summarization instructions, distinguishing it from siblings like get_transcript which returns raw transcript. The purpose is specific: to provide a meta-output for LLM summarization, not a direct summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied from the description (use when you want a summary with instructions), but there is no explicit guidance on when to choose this over get_transcript or other siblings. No exclusions or alternatives are mentioned, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.6.0
    • Addedsearch_videos
  2. 4 tool updatesv0.3.0
    • Changedget_transcript2 fields changed
      • addedInput schema / properties / include_metadata
        Added value: +{
        +  "default": true,
        +  "title": "Include Metadata",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_timestamps
        Added value: +{
        +  "default": false,
        +  "title": "Include Timestamps",
        +  "type": "boolean"
        +}
    • Addedget_video_metadata
    • Addedlist_playlist_videos
    • Changedsummarize_transcript2 fields changed
      • addedInput schema / properties / include_metadata
        Added value: +{
        +  "default": true,
        +  "title": "Include Metadata",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_timestamps
        Added value: +{
        +  "default": false,
        +  "title": "Include Timestamps",
        +  "type": "boolean"
        +}
  3. 3 tool updatesv0.1.0
    • First observedget_transcript
    • First observedlist_transcripts
    • First observedsummarize_transcript

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a clear and distinct aspect: listing transcript languages, fetching transcripts, summarizing with instructions, fetching metadata, listing playlist videos, and searching. Overlap between get_transcript and summarize_transcript is clarified by the latter's added summarization step, and descriptions make the difference explicit.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase snake_case (e.g., list_transcripts, get_transcript, summarize_transcript). The naming is predictable and intuitive.

Tool Count5/5

Six tools cover the core functionality of a YouTube summarization service (transcript retrieval, summarization, metadata, search, playlist listing) without unnecessary redundancy. The scope is well-balanced.

Completeness5/5

The tool surface provides end-to-end coverage: listing available transcripts, fetching them in multiple formats, summarizing with custom prompts, retrieving video metadata, searching videos, and listing playlist contents. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zlatkoc/youtube-summarize'

If you have feedback or need assistance with the MCP directory API, please join our Discord server