API ВЕГА

TikTok MCP Server

Хостируемый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и другим MCP-клиентам четыре инструмента для чтения общедоступных данных TikTok. С его помощью можно просматривать публичные профили, постранично получать видео аккаунта, читать комментарии к видео и искать видео или авторов в TikTok. Все данные возвращаются в виде структурированного JSON. Аккаунт разработчика TikTok и OAuth не требуются.

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

1 000 бесплатных кредитов в месяц, банковская карта не требуется — этого хватит на 100 запросов к TikTok.

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

Содержание

  • Требования

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

  • Примеры запросов

  • Инструменты

  • Ошибки и сценарии сбоев

  • Цены, бесплатный тариф и ограничения

  • Выбор инструмента

  • Сравнение с другими решениями

  • Часто задаваемые вопросы

  • Ссылки HasData

  • Разработка

  • Участие в проекте

  • Лицензия

Требования

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

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

URL сервера одинаков для всех клиентов. Мы проверили подключение в Claude Code и Claude Desktop. В остальных примерах использован формат удалённого сервера, указанный в документации соответствующего клиента.

ПолеЗначение
URLhttps://mcp.hasdata.com/mcp?apis=tiktok
ТранспортHTTP, потоковый
Заголовок авторизацииx-api-key: HASDATA_API_KEY

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

Claude Code

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

Claude Desktop

Откройте Settings, выберите Connectors, затем Add custom connector. Вставьте https://mcp.hasdata.com/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

Файл ~/.cursor/mcp.json задаёт настройки для всех проектов, а .cursor/mcp.json — для одного:

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

Windsurf

Файл конфигурации: ~/.codeium/windsurf/mcp_config.json. В Windsurf поле называется serverUrl, а не url:

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

Cline

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

VS Code

Добавьте файл .vscode/mcp.json в рабочую область:

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

Codex CLI

Файл ~/.codex/config.toml:

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

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

Gemini CLI

Файл ~/.gemini/settings.json:

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

Примеры запросов

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

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

Три вызова, 30 кредитов. Для профиля нужен один вызов, а для каждой страницы видео — ещё по одному.

Найди в TikTok авторов, публикующих материалы о «кофе холодного заваривания», и составь рейтинг из десяти лидеров по числу подписчиков, добавив описание профиля каждого.

Один вызов, 10 кредитов. Поиск пользователей уже возвращает число подписчиков и описание профиля, поэтому отдельно запрашивать каждый профиль не нужно.

Вот URL видео. Прочитай самые популярные комментарии, определи общее настроение и назови три ответа с наибольшим числом отметок «Нравится».

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

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

Два вызова, 20 кредитов. Сначала получи комментарии верхнего уровня, затем сделай второй вызов с идентификатором нужного комментария, чтобы получить ответы.

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

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

Каждый переход к следующей странице требует отдельного вызова. Например, аудит аккаунта, в ходе которого агент получает профиль и просматривает пять страниц видео, обойдётся в шесть вызовов и 60 кредитов. Бесплатного тарифа хватит на большее число узких запросов, чем на масштабный сбор данных без конкретной цели.

Инструменты

ИнструментЧто возвращает
hasdata_tiktok_comments_getTikTokCommentsПолучает комментарии к публичному видео TikTok по числовому идентификатору видео или ответы на конкретный комментарий, если передан commentId. 10 кредитов за вызов
hasdata_tiktok_posts_getTikTokPostsСтраницу примерно с 35 видео и токен nextPageToken. Передайте этот токен повторно, чтобы постранично просматривать историю аккаунта. 10 кредитов за вызов
hasdata_tiktok_profile_getTikTokProfileПолучает данные публичного профиля TikTok по имени пользователя (handle): никнейм, описание, ссылку в профиле, URL аватаров, признаки верификации и приватности, время создания аккаунта и…. 10 кредитов за вызов
hasdata_tiktok_search_getTikTokSearchИщет в TikTok по ключевому слову и возвращает видео (с описанием, хештегами, упоминаниями, числом отметок «Нравится», комментариев, репостов и просмотров, обложкой и URL для просмотра видео, музыкальным сопровождением и…. 10 кредитов за вызов

Все четыре инструмента работают только на чтение. Примеры ниже сокращены и взяты из реальных вызовов; значения в них меняются по мере обновления TikTok. Рассматривайте их как образцы структуры данных. Название каждого инструмента ведёт на справочную страницу его конечной точки со списком всех полей.

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

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

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

hasdata_tiktok_profile_getTikTokProfile

Получает данные одного публичного аккаунта по имени пользователя.

ПараметрТипОбязательныйПримечания
handlestringдаИмя пользователя — с начальным @ или без него

Возвращает username, nickname, biography, bioLink, verified, language, createTime, URL аватаров, а также целочисленные значения followers, follows, likes, videos и friends. Числовые показатели уже преобразованы в числа, поэтому условие 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

Страница с видео аккаунта, отсортированными по дате публикации — от новых к старым.

ПараметрТипОбязательныйПримечания
handlestringдаИмя пользователя с начальным символом @ или без него
nextPageTokenstringЗначение pagination.nextPageToken из предыдущего ответа. Для первой страницы не указывайте этот параметр

За один вызов возвращается около тридцати видео и объект pagination с полями hasMore и nextPageToken. Чтобы просмотреть историю аккаунта, передавайте полученный nextPageToken в следующем вызове и переходите от страницы к странице. Для каждого видео доступны id, description, url, duration, ссылки на обложку и видео для воспроизведения, данные о music, а также целочисленные значения likes, comments, shares, plays, collects и reposts.

Поля 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

Комментарии к общедоступному видео или ответы на отдельный комментарий.

ПараметрТипОбязательныйПримечания
videoIdstringдаЧисловой идентификатор — часть URL TikTok после /video/. Передавайте его как строку. Идентификатор представляет собой 64-битное число, которое потеряет последние цифры, если преобразовать его в JavaScript Number
commentIdstringПередайте этот параметр, чтобы получить ответы на указанный комментарий вместо комментариев верхнего уровня к видео. Используйте строку по той же причине, что и для videoId
nextPageTokenstringТокен из предыдущего ответа. Для первой страницы не указывайте этот параметр

Для каждого комментария возвращаются 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

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

ПараметрТипОбязательныйПримечания
keywordstringдаФраза для поиска
typestringПо умолчанию — video; чтобы искать авторов, укажите user
nextPageTokenstringТокен из предыдущего ответа. Для первой страницы не указывайте этот параметр

При значении 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 кредитов в месяц без привязки карты — этого хватит на 100 вызовов инструментов TikTok. Кредиты обновляются в соответствии с расчётным циклом, поэтому агент с небольшим объёмом запросов может пользоваться бесплатным тарифом неограниченно долго.

Платные тарифы начинаются от $59 в месяц за 200 000 кредитов — этого хватит на 20 000 вызовов. При увеличении объёма цена за единицу снижается: с $2.95 за 1 000 вызовов на начальном тарифе до $1.19 на Basic и $0.83 на тарифах Growth. Актуальные цены указаны на странице тарифов.

Тариф также определяет допустимое количество одновременных запросов. Бесплатный тариф позволяет выполнять 1 запрос за раз, Startup — 5, Basic — 15, а тарифы Growth — от 50 до 500. В автоматизированных сценариях обрабатывайте превышение лимита заранее: агент, отправляющий запросы параллельно, может достичь предела раньше, чем вы успеете это заметить.

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

Выбор инструментов

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

?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, а в теле ответа перечислены нераспознанные значения и все допустимые варианты. Если убрать параметр, та же конечная точка предоставит доступ ко всем 57 инструментам HasData.

Сравнение

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

Официальные API TikTokЭтот сервер
ДоступResearch API — по заявке, Display API — для собственного аккаунтаОдин ключ и один URL
Область доступаОдобренные исследователи или собственный аккаунт с авторизациейЛюбой публичный профиль, видео или поиск
АвторизацияПроверка заявки или OAuthЗаголовок x-api-key
Комментарии к чужим видеоОграниченный доступДа, включая ветки ответов
НастройкаАккаунт разработчика и одобрениеНе требуется
Публикация и приватные данныеПубликация и данные собственного аккаунта через OAuthТолько чтение публичных данных

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

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

Часто задаваемые вопросы

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

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

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

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

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

Нет. Вам потребуется только ключ HasData. Не нужно подавать заявку на регистрацию приложения или проходить экран согласия OAuth: инструменты считывают данные с публичных страниц TikTok, а не из API для разработчиков TikTok.

Нужно ли что-то размещать на своём сервере или запускать?

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

Данные актуальны или кэшируются?

Данные актуальны на момент запроса. При каждом вызове сервер получает их заново, и каждый ответ содержит собственный requestMetadata.id. Счётчики просмотров и отметок «Нравится» соответствуют данным на странице и меняются вместе с ними.

Можно ли просматривать приватный аккаунт?

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

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

Да. Передайте id комментария в параметре commentId при вызове инструмента для работы с комментариями, и сервер вернёт ответы на него. Параметр replyCount показывает, есть ли ответы.

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

Да. Параметр apis принимает список, поэтому запрос ?apis=tiktok,instagram предоставит агенту четыре инструмента TikTok и инструменты Instagram. Если не указывать этот параметр, будут доступны все инструменты.

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

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

Ссылки HasData

Страница продукта и конструктор запросовTikTok Scraper API
Документация сервераДокументация MCP-сервера
Все 57 инструментов на одном сервереHasData/hasdata-mcp
Руководства по клиентамКлиенты и интеграции MCP
Все остальные источники данныхTikTok Scraper API и ещё 54 API
Тарифы и стоимость кредитовТарифы и стоимость кредитов
Ключи и статистика использованияПанель HasData
Запуск Node через npm@hasdata/tiktok-mcp
Запуск Python через PyPIhasdata-tiktok-mcp

Разработка

Этот репозиторий содержит конфигурацию и документацию удалённого сервера. Сборка не требуется, как и упаковка в контейнер.

Тесты в 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 при каждом отправлении изменений и раз в неделю по расписанию: список инструментов во внешнем сервисе может измениться, даже если в этом репозитории ничего не менялось. Ошибка означает, что изменился список инструментов, ключ перестал работать или конечная точка недоступна. Сообщение проверки указывает, что именно произошло.

Участие в проекте

Наиболее полезный вклад — исправления в таблицах инструментов и примерах ответов, поскольку именно эти сведения чаще всего устаревают. Укажите выполненный вызов и полученный ответ. Для pull request из форков набор тестов запускается без ключа, а проверки в реальном времени пропускаются, чтобы сборка не завершалась ошибкой.

Лицензия

MIT. См. LICENSE.