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
Оглавление
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 |
|
Транспорт | HTTP, streamable |
Заголовок авторизации |
|
Клиенты с поддержкой 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
Один открытый профиль по имени пользователя.
Параметр | Тип | Обязателен | Примечания |
| 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
Одна страница видео одной записи аккаунта по имени, сначала новые.
Параметр | Тип | Обязателен | Примечания |
| string | да | Имя пользователя, с лидирующим |
| string | нет | Поле |
Один вызов возвращает около тридцати видео плюс 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
Комментарии к публичному видео, или ответы под одним комментарием.
Поле | Тип | Обязательно | Примечание |
| string | да | Числовой идентификатор, часть после |
| string | Передайте его, чтобы получить ответы на этот комментарий, а не верхнеуровневую. Строка по той же самой причине 64-битного safe-а, что и | |
| 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
Поиск по ключевому слову по видео или по авторам.
Поле | Тип | Обязательно | Примечание |
| string | да | Фраза для поиска. |
| string |
| |
| 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 | Заголовок |
Комментарии к чужим видео | Ограничено | Да, с ветками ответов |
Настройка | Аккаунт разработчика и одобрение | Не требуется |
Запись и приватные данные | Публикация и данные собственного аккаунта через 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
Страница продукта и конструктор запросов | |
Документация сервера | |
Все 57 инструментов в одном сервере | |
Клиентская экспозиция | |
Всё остальное, что Мы собираем | |
Тарифы и стоимость кредитов | |
Ключи и использование |
Разработка
Это 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.
Maintenance
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables access to TikTok data without watermarks, including trending users, hashtags, post analytics, user profiles, and download links for specific countries. Supports searching by username, user ID, or post links.10MIT
- FlicenseBqualityCmaintenanceMCP 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
- FlicenseNot gradedqualityCmaintenanceA 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.
- FlicenseNot gradedqualityCmaintenanceProvides 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.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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