Skip to main content
Glama
HasData

TikTok MCP Server

TikTok MCP Server

Размещённый сервер Model Context Protocol (MCP), который даёт Claude, Cursor, Windsurf и любому другому MCP-клиенту четыре инструмента только для чтения для TikTok. Получение публичного профиля, листание видео аккаунта, чтение комментариев к видео и поиск в TikTok видео или авторов — всё это в виде структурированного JSON, без аккаунта разработчика TikTok и без OAuth.

Он читает только публичные данные, которые видит посетитель, не выполнивший вход. Он не входит в систему, не публикует записи и не действует от имени аккаунта.

https://mcp.hasdata.com/api/mcp?apis=tiktok

Glama score tool contract MCP Tools License

Оглавление

Related MCP server: tiktok-mcp

Что вам нужно

MCP-клиент и ключ API HasData из дашборда — его можно создать бесплатно. Это удалённый сервер, поэтому самый простой способ — URL и заголовок x-api-key, без запуска контейнера и без аккаунта разработчика TikTok на любом этапе. Клиент, который говорит только по stdio, добирается до сервера через тонкий лаунчер, опубликованный как @hasdata/tiktok-mcp на npm и hasdata-tiktok-mcp на PyPI, как показано ниже.

Быстрый старт

URL сервера одинаков для всех клиентов. Мы проверили его в Claude Code и Claude Desktop. Остальные блоки следуют документированному формату удалённого сервера для соответствующего клиента.

Поле

Значение

URL

https://mcp.hasdata.com/api/mcp?apis=tiktok

Транспорт

HTTP, streamable

Заголовок авторизации

x-api-key: HASDATA_API_KEY

Клиенты с поддержкой OAuth могут добавить тот же URL как коннектор и войти в систему, не помещая ключ в конфигурационный файл.

claude mcp add --transport http tiktok "https://mcp.hasdata.com/api/mcp?apis=tiktok" \
  --header "x-api-key: HASDATA_API_KEY"

Настройки, затем Connectors, затем Add custom connector, вставьте https://mcp.hasdata.com/api/mcp?apis=tiktok и войдите.

Для пути через конфигурационный файл: Claude Desktop загружает только локальные (stdio) серверы, поэтому к удалённому серверу он подключается через stdio-лаунчер. Пакет @hasdata/tiktok-mcp и есть этот лаунчер, он читает ключ из внешнего окружения. Добавьте следующее в claude_desktop_config.json:

{
  "mcpServers": {
    "tiktok": {
      "command": "npx",
      "args": ["-y", "@hasdata/tiktok-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Python вместо Node? Замените лаунчер на пакет из PyPI, который uvx запускает без ручной установки:

{
  "mcpServers": {
    "tiktok": {
      "command": "uvx",
      "args": ["hasdata-tiktok-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

~/.cursor/mcp.json для всех проектов или .cursor/mcp.json для одного:

{
  "mcpServers": {
    "tiktok": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcm_config.json. Windsurf называет поле serverUrl, а не url:

{
  "mcpServers": {
    "tiktok": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
{
  "mcpServers": {
    "tiktok": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}

.vscode/mcp.json в рабочей области:

{
  "servers": {
    "tiktok": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codex/config.toml:

[mcp_servers.tiktok]
url = "https://mcp.hasdata.com/api/mcp?apis=tiktok"

[mcp_servers.tiktok.headers]
"x-api-key" = "HASDATA_API_KEY"

~/.gemini/settings.json:

{
  "mcpServers": {
    "tiktok": {
      "httpUrl": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Примеры промптов

Промпты, а не код. Вставьте один, и агент сам выберет нужный инструмент. Каждый помечен числом выполняемых вызовов, потому что в MCP модель сама решает, сколько вызовов сделать, и каждый успешный вызов стоит 10 кредитов.

Возьми @mrbeast. Получи его профиль, затем пройди первые две страницы видео и дай мне медиану по числу просмотров на них.

Три вызова, 30 кредитов. Профиль — один вызов, и каждая страница видео — ещё один.

Найди в TikTok авторов по запросу «cold brew coffee» и ранжий лучших десять по числу подписчиков, с био для каждого.

Один вызов, 10 кредитов. Поиск по авторам уже содержит количество подписчиков и био, поэтому отдельные переходы к каждому профилю не нужны.

Есть URL видео. Прочитай его главные комментарии и скажи, какой характер общей тональности и какие три ответа получили больше всего лайков.

Один вызов, 10 кредитов. Инструменту комментарием достаточно числового идентификатора из URL.

Возьми то же самое видео, затем раскрой ответное комментарий под самым популярным комментарием.

Два вызовав, 20 кредитов. Главные комментарии сначала, затем второй вызов с id этого комментария для его ответов.

Найди видео по запросу «asmr», затем вытащи профили авторов трёх роликов с самым большим числом просмотров.

Четыре вызова, 40 кредитов. Один поиск, затем по профилю на кажд автора. У каждого автора в результатах поиска есть прямая ссылка на его профиль, поэтому агенту не нужно угадывать ник.

Переходы между страницами стоят по одному вызову каждый. Аудит автора, который читает его профиль, а затем проходит пять страниц видео, — это шесть вызовов и 60 кредитов. Триального периода хватает больше для точных вопросов, чем для открытых обходов.

Инструменты

Четыре инструмента, все только на чтение. Примеры ниже сокращены из реальных вызовов, а данные в них меняются по мере обновления TikTok. Сотрите с них как с формы. Каждое название инструмента ведёт к справочнику API, в котором указана полная структура полей.

Примеры — это payload, а не полный ответ. Результат tools/call находится в одном текстовом блоке, и этот текст сам является JSON с ключами url, status, text и json. Данные, извлечённые из ответа, лежат в JSON RPC от этого текста: полный путь — result.content[0].text (распарсенное), а затем значение под ключом .json. Чат-клиент это разворачивает для вас, а код, который напрямую обращается к эндпоинт, — нет.

Имена пользователей, id видео и id комментариев связаны между собой. Профиль ведёт на свои публикации, каждая публикация содержит id для инструмента комментариев, а каждый автор в комментариях и результатаx поиска несёт hasdataLink на свой профиль и hasdataPostsLink на свои видео. Агент идёт от ключевого слова по к автору и видео и далее к комментариям, не собирая ни одного URL вручную.

Получить профиль TikTok

hasdata_tiktok_profile_getTikTokProfile

Один открытый профиль по имени пользователя.

Параметр

Тип

Обязателен

Примечания

handle

string

да

Имя пользователя, с лидирующим @ или без него.

Возвращает username, nickname, biography, bioLink, verified, language, createTime, URL-адреса аватаров и количество followers, follows, likes, tiktok в виде целых чисел. Считатели уже подготовлены: поэтому выражение followers > 1000000 сравнивает числа, а не отображаемые строки.

Несуществующий ник всё равно вернёт ответ с requestMetadata.status равным ok, только объект profile будет отсутствовать. Проверяйте, что объект существует, перед чтением того username или любого другого поля, иначе агент сделает profile.username и упадёт на пустоте.

{
  "username": "mrbeast",
  "nickname": "MrBeast",
  "verified": true,
  "biography": "Checkout My New Book!👇",
  "bioLink": "http://themostdangerousgames.com",
  "createTime": "2018-10-20T19:26:16.000Z",
  "followers": 138387571,
  "follows": 354,
  "likes": 1427086888,
  "videos": 466,
  "friends": 285
}

Получить посты TikTok

hasdata_tiktok_posts_getTikTokPosts

Одна страница видео одной записи аккаунта по имени, сначала новые.

Параметр

Тип

Обязателен

Примечания

handle

string

да

Имя пользователя, с лидирующим @ или без него.

nextPageToken

string

нет

Поле pagination.nextPageToken из предыдущего ответа. Для первой страницы упустите это поле.

Один вызов возвращает около тридцати видео плюс pagination, которое содержит hasMore и nextPageToken — вы передаёте эту значение обратно, чтобы проходить историю аккаунта по одной странице за раз. Каждое видео содержит id, description, url, duration, URL-сер cover image и video для проигрывания, music, а также количество likes, comments, shares, plays, collects и reposts как целые числа.

hashtags и mentions присутствуют только на видео, которое их использует. В одной живой странице из 27 видео у четырёх был массив hashtags, и у десяти были mentions. Проверяйте ключ перед его чтением, а не предполагайте, что каждый видео содержит оба поля.

{
  "id": "7677375185028271391",
  "description": "would you take the car or nah?",
  "url": "https://www.tiktok.com/@mrbeast/video/7677375185028271391",
  "createTime": "2026-08-23T23:36:59.000Z",
  "duration": 41,
  "likes": 129500,
  "comments": 6670,
  "shares": 2033,
  "plays": 1100000,
  "collects": 4986,
  "music": { "title": "original sound", "authorName": "MrBeast", "original": true }
}

Получить комментарии TikTok

[hasdata_tiktok_comments_getTikTokComments

Комментарии к публичному видео, или ответы под одним комментарием.

Поле

Тип

Обязательно

Примечание

videoId

string

да

Числовой идентификатор, часть после /video/ в URL TikTok. Должен остаться строкой. Это 64-битное число, которое теряет последние цифры, если когда-либо пройдет через javaScript Number

commentId

string

Передайте его, чтобы получить ответы на этот комментарий, а не верхнеуровневую. Строка по той же самой причине 64-битного safe-а, что и videoId.

nextPageToken

string

Токен из предыдущего ответа. Не нужен для первой страницы.

Каждый комментарий содержит text, likes, createTime, replyCount и author, и у каждого автора есть hasDataLink на его профиль и hasDataPostsLink на его видео. pagination.total устанавливает полное количество комментариев к видео, поэтому вы знаете глубину до того, как листать дальше. Комментарий с ненулевым replyCount имеет ответы: их можно получить, вызвав метод ещё раз с его id как commentId.

{
  "id": "7677377150003053325",
  "text": "How could someone turn down a car",
  "createTime": "2026-08-23T23:45:06.000Z",
  "likes": 3802,
  "replyCount": 22,
  "author": {
    "username": "hohce.verggr",
    "nickname": "Sasori",
    "hasdataLink": "https://api.hasdata.com/scrape/tiktok/profile?handle=hohce.verggr",
    "hasdataPostsLink": "https://api.hasdata.com/scrape/tiktok/posts?handle=hohce.verggr"
  }
}

Найти ишь в TikTok

hasdata_tiktok_search_getTikTokSearch

Поиск по ключевому слову по видео или по авторам.

Поле

Тип

Обязательно

Примечание

keyword

string

да

Фраза для поиска.

type

string

video по умолчанию, либо user, чтобы искать авторов.

nextPageToken

string

Токен из предыдущего ответа. Упустить при первой странице.

При type: video ответ содержит видео в той же форме, что и при запросе постов, каждое со своим автором. При type: user он содержит авторов: username, nickname, signature (био), avatarUrl, followers, а также соторную же ссылка hasdataLink и hasdataPostsLink для то, чтобы перейти к профилю или запросить его видео. Флаг verified присутствует на учётках, которые он включаеют.

{
  "username": "la.mooncoldbrew",
  "nickname": "lamoon cold brew coffee",
  "signature": "อยากได้สูตรชงเมนูไหน Comment ไว้เลยน้า",
  "followers": 48000,
  "hasdataLink": "https://api.hasdata.com/scrape/tiktok/profile?handle=la.mooncoldbrew",
  "hasdataPostsLink": "https://api.hasdata.com/scrape/tiktok/posts?handle=la.mooncoldbrew"
}

Ошибки и сценарии отказа

Ваш клиент почти никогда не видит HTTP-код ошибки при вызове инструмента. Слой MCP отвечает 200 и помещает сбой внутрь результата, с isError равным true и причиной в виде текста. Агент читает сообщение там, где вы могли бы ожидать строку состояния.

Неверный ключ проявляется как вывод инструмента, а не как неудачное соединение. tools/list принимает любой непустой ключ и возвращает все четыре инструмента, поэтому клиент завершает рукопожатие и показывает зелёный индикатор. Первый вызов инструмента возвращается с isError: true и текстом HasData API error: 401 Unauthorized. Следите за этой строкой, потому что ничего раньше по ходу работы об этой проблеме не сообщает.

Отсутствующий ключ — единственная настоящая HTTP-ошибка. Авторизация выполняется раньше любого инструмента, и само соединение завершается ошибкой 401. Заголовки CORS присутствуют, поэтому браузерный клиент читает статус, а не получает непрозрачный сетевой сбой.

Аргумент, нарушающий схему инструмента, отклоняется до того, как он станет скрейпингом. Сервер отвечает с isError: true и текстом MCP error -32602: Input validation error, называя поле, вызвавшее проблему. Ничего не загружается и ничего не списывается.

Вызов, который успешно выполняется, но ничего не находит, — это случай, который ставит людей в тупик. Несуществующий ник возвращается как обычный результат с requestMetadata.status равным ok, а сам ключ с данными просто отсутствует. Ничто в теле ответа не говорит, что результат пуст. Проверяйте наличие нужного поля, а не ошибку.

Идентификатор, который отклоняет платформа, возвращает 400 со значением requestMetadata.status равным error.

Результаты с данными также содержат requestMetadata.id, который стоит указывать в обращении в поддержку.

Цены, бесплатный тариф и лимиты

Каждый инструмент TikTok стоит 10 кредитов за успешный вызов. Размер ответа не меняет цену. Полная страница с видео стоит столько же, сколько профиль с одним полем.

Бесплатная пробная версия — 1 000 кредитов на 30 дней без карты, то есть 100 вызовов TikTok. После этого активный аккаунт каждый день получает пополнение из 100 кредитов, если его баланс опустился ниже 100, так что агент с низким объёмом запросов может работать на бесплатном тарифе бессрочно.

Платные тарифы начинаются от $49 в месяц за 200 000 кредитов — это 20 000 вызовов. Цена за единицу снижается с объёмом: от $2.45 за 1 000 вызовов на начальном тарифе до $0.99 на Business, $0.83 на Growth и $0.75 на самых крупных high-volume планах.

Ваш тариф также задаёт параллелизм. Бесплатный trial позволяет 1 запрос одновременно, Startup — 15, Business — 30, Growth — 50, а высокообъёмные планы — от 200 до 1 500. Предусмотрительно обрабатывайте случай превышения лимита в любом неавтоматическом процессе, потому что агент, который разворачивается на множество параллельных запросов, упрёт в потолок раньше вас.

Запрос, который получает не-200, не тарифицируется. Успешный вызов, который ничего не нашёл, всё равно остаётся вызовом.

?apis=tiktok                     the four tools in this repo
?apis=tiktok,instagram           a social bundle
?apis=tiktok,google_serp         add Google search

Параметр принимает имена провайдеров, например tiktok, и имена отдельных API, например tiktok_search. Имена с опечатками игнорируются. Если все имена указаны неверно, запрос завершается с ошибкой 400, и в теле ответа перечислены и те значения, что не были распознаны, и каждое допустимое значение. Уберите параметр — и эта же точка API откроет все 57 инструментов HasData.

В таблице — сравнение на "How it compares".

Как это сравнивается

Собственная программа разработчика TikTok не покрывает обычное чтение публичного контента. Research API закрыт за заявку и работает только для одобренных академических и некоммерческих исследователей в ограниченном наборе регионов. Display API возвращает только контент того аккаунта, который вошёл через OAuth. Ни один из них не подходит агенту, которому нужен произвольный публичный профиль, его видео или комментарии к видео.

Официальные TikTok API

Этот сервер

Доступ

Research API по заявке или Display API для собственного аккаунта

Один ключ и один URL

Область применения

Одобренные исследователи или свой авторизованный аккаунт

Любой публичный профиль, видео или поиск

Авторизация

Заявка разработчика или OAuth

Заголовок x-api-key

Комментарии к чужим видео

Ограничено

Да, с ветками ответов

Настройка

Аккаунт разработчика и одобрение

Не требуется

Запись и приватные данные

Публикация и данные собственного аккаунта через OAuth

Только чтение, только публичные данные

Большинство других MCP-серверов TikTok оборачивают один неофициальный эндпоинт. Этот сервер покрывает четыре операции чтения, которые агент реально связывает в цепочку: профиль -> посты -> комментарии, плюс поиск, так что весь исследовательский проход выполняется на одном сервере.

Что этот сервер не делает. Никакой публикации, никаких лирных сообщений, никакого контента только для подписчиков или приватного материала, никакой аналитика для чужих аккаунтов. Он читает то, что видит неавторизованный посетитель.

Частые вопросы

Есть ли официальный MCP-сервер TikTok?

Нет, TikTok не публикует такое. Каждый вариант создан кем-то другим. Этот поддерживается HasData и читает публичные страницы — поэтому ему не нужен аккаунт разработчика TikTok.

Что такое MCP-сервер TikTok?

Это сервер, который предоставляет данные TikTok в виде инструментов, которые может вызывать AI-клиент. Клиент отправляет вызов инструмента через Model Context Protocol, сервер получает данные и возвращает структурированная JSON, а модель работает с результатом, не видя страницу HTML. Этот сервер даётя четыре инструмента и работает как удалённый. Клиент подключается к URL, и никакой локальный процесс не запускается.

Нужен ли ключ TikTok API или аккаунт разработчика?

Нет. Единственный секрет — ваш ключ HasData. Никакой заявки разработчика и никакого экрана согласия OAuth нет, потому что инструменты читают публичные страницы TikTok, а не открытые API-разработки TikTok.

Нужно ли что-то хостить или запускать?

Нет. Это удалённый MCP-сервер на streamable HTTP. Нечего устанавливать, нечего поддерживать в активном состоянии, нечего перезапускать.

Данные живые или кэшированные?

Живые. Каждый вызов получает данные в момент запроса и отдаёт собственный requestMetadata.id. Счётчики, такие как просмотры и лайки, соответствуют странице, поэтому они двигаются вместе с ней.

Могу ли я читать приватный аккаунт?

Нет. Инструменты возвращают то, что видит посетитель без входа. Видео из приватного аккаунта не публичны, поэтому их нет ни в одном ответе. Это означает, что вы делите чужие приватные данные.

Могу ли я читать ответы на комментарии, не только верхнеуровневые?

Да. Вызовите инструмент комментариев с id комментария как commentId, и он вернёт ответы на этот комментарий. Из replyCount комментария вы узнаете, есть ли такие ответы.

Можно ли использовать это вместе с другими API HasData?

Да. Параметр apis принимает список, и ?apis=tiktok,instagram выдаёт вашему агенту четыре инструмента TikTok плюс Instagram. Если опустите параметр](#tool-selection) — получите полный набор всех инструментов.

Соответствие требованиям и персональные данные

HasData использует только общедоступные данные. Условия платформы могут ограничивать автоматический доступ, и за вашим соответствием вы отвечаете сами. Если ваши данные содержат персональную информацию, убедитесь, что у вас есть законное основание в соответствии с GDPR, CCPA или аналогичным законодательством вашей страны.

Ссылки HasData

Страница продукта и конструктор запросов

TikTok Scraper API

Документация сервера

MCP server docs

Все 57 инструментов в одном сервере

HasData/hasdata-mcp

Клиентская экспозиция

MCP clients and integrations

Всё остальное, что Мы собираем

TikTok Scraper API and 54 more

Тарифы и стоимость кредитов

Plans and credit costs

Ключи и использование

HasData dashboard

Разработка

Это repository — это конфигурация и документация для удалённого сервера. Нет этапа сборки и нечего контейнеризировать.

Тесты в test/ проверяют контракт инструментов — то, что может сломаться даже без изменения кода здесь. Они проверяют, что ?apis=tiktok возвращает ровно четыре инструмента, что каждый инструмент всё ещё объявляет обязательный параметр, что ни одно имя не изменилось и что используемый ключ действительно принимается. Последняя проверка реально делает вызов инструмента и стоит 10 кредитов — это цена проверки, которая может закончиться по настоящей причине.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

Тот же набор запускается CI при каждом пуше и раз вmonthweek по расписанию, потому что вышестоящий список инструментов может измениться без изменений в этом репозитории. Сбой означает — список инструментов сдвинулся, ключ перестал работать или точка недоступна, и сообщение проверки говорит, именно что.

Вклад

Исправление таблиц инструментов и примеров ответов — самое полезное, потому их точность уходит первым делом. Приложите факт вызова и полученный ответ. Pull request'ы из форков запускают набор без ключа, а «живые» проверки пропускаются вместо того, чтобы падать.

Лицензия

MIT. См. LICENSE.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    MCP server for TikTok that enables searching videos, users, hashtags, and fetching trending content, user profiles, and video details via official API or public scraping.
    8
  • F
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server that provides tools to query live Meta (Facebook+Instagram) and TikTok organic social data, such as follower counts, insights, recent posts, and aggregated overviews.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides unified access to social media data across nine networks (Instagram, TikTok, YouTube, etc.) through a set of MCP tools for profiles, posts, search, and comments, backed by the SocialBridge API.

View all related MCP servers

Related MCP Connectors

  • All HasData scraping tools in one MCP server: Google, TikTok, Instagram, maps, e-commerce and more.

  • One MCP for 160+ live web-data APIs — clean JSON from sites that block scrapers.

  • Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

View all MCP Connectors

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/HasData/tiktok-mcp'

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