TikTok MCP Server
TikTok MCP Server
Un servidor alojado de Model Context Protocol (MCP) que ofrece a Claude, Cursor, Windsurf y cualquier otro cliente MCP cuatro herramientas de solo lectura para TikTok. Puedes consultar un perfil público, recorrer los vídeos de una cuenta, leer los comentarios de un vídeo y buscar en TikTok vídeos o creadores; todo en JSON estructurado sin necesidad de cuenta de desarrollador de TikTok ni OAuth.
Lee los datos públicos que un visitante sin sesión puede ver. No inicia sesión, no publica y no actúa como una cuenta.
https://mcp.hasdata.com/api/mcp?apis=tiktok
Contenido
Related MCP server: tiktok-mcp
Qué necesitas
Un cliente MCP y una clave de API de HasData desde el panel de control, que se puede crear gratis. Se trata de un servidor remoto, así que la vía más sencilla es una URL y una cabecera x-api-key, sin contenedor que ejecutar y sin cuenta de desarrollador de TikTok en ningún paso. Un cliente que solo hable stdio llega a él a través de un lanzador ligero, publicado como @hasdata/tiktok-mcp en npm y hasdata-tiktok-mcp en PyPI, como se muestra abajo.
Inicio rápido
La URL del servidor es la misma para todos los clientes. Lo hemos probado a mano en Claude Code y Claude Desktop. Los demás bloques siguen el formato documentado por cada cliente para un servidor remoto.
Campo | Valor |
URL |
|
Transporte | HTTP, transmisible |
Cabecera de autenticación |
|
Los clientes con soporte para OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.
claude mcp add --transport http tiktok "https://mcp.hasdata.com/api/mcp?apis=tiktok" \
--header "x-api-key: HASDATA_API_KEY"Ajustes, luego Conectores, luego Añadir conector personalizado, pega https://mcp.hasdata.com/api/mcp?apis=tiktok e inicia sesión.
Para la opción del archivo de configuración, Claude Desktop solo carga servidores locales (stdio), por lo que accede a un servidor remoto mediante un lanzador stdio. El paquete @hasdata/tiktok-mcp es ese lanzador y lee la clave del entorno. Añade esto a claude_desktop_config.json:
{
"mcpServers": {
"tiktok": {
"command": "npx",
"args": ["-y", "@hasdata/tiktok-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}¿Usas Python en lugar de Node? Cambia el lanzador por el paquete PyPI, que uvx ejecuta sin instalación manual:
{
"mcpServers": {
"tiktok": {
"command": "uvx",
"args": ["hasdata-tiktok-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}~/.cursor/mcp.json para cada proyecto, o .cursor/mcp.json para uno solo:
{
"mcpServers": {
"tiktok": {
"url": "https://mcp.hasdata.com/api/mcp?apis=tiktok",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no 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 en el espacio de trabajo:
{
"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" }
}
}
}Ejemplos de indicaciones
Prompts, no código. Pega uno en el cliente y el agente elegirá la herramienta adecuada por su cuenta. Cada uno indica las llamadas que implica, porque en MCP el modelo decide cuántas llamadas hacer y cada llamada correcta cuesta 10 créditos.
Toma el usuario @mrbeast. Obtén el perfil y luego recorre las dos primeras páginas de vídeos para darme la mediana de reproducciones entre esos vídeos.
Tres llamadas, 30 créditos. El perfil es una llamada, y cada página de vídeos es otra.
Busca en TikTok creadores relacionados con "cold brew coffee" y clasifica los diez primeros por número de seguidores, con su biografía.
Una llamada, 10 créditos. Una búsqueda de usuarios ya trae el recuento de seguidores y la biografía, así que no se necesita ninguna llamada posterior por perfil.
Aquí tienes la URL de un vídeo. Lee sus comentarios principales y dime la sensación general y las tres respuestas con más "me gusta".
Una llamada, 10 créditos. El id numérico de la URL es todo lo que necesita la herramienta de comentarios.
Toma ese mismo vídeo y luego expande las respuestas debajo del ARRIBA de más "me gusta".
Dos llamadas, 20 créditos. Primero los coments de primer nivel y, después, una segunda llamada con el id de ese comentario para sus respuestas.
Busca vídeos de "asmr" y luego obtén el perfil del autor de los tres con más reproducciones.
Cuatro llamadas, 40 créditos. Una búsqueda y luego un perfil por cada resultado. Cada autor de un resultado de búsqueda incluye un enlace directo a su endpoint de interés, así que el agente nunca tiene que adivinar un handle.
Paginación cuesta una llamada en cada ocasión. Una auditoría de creador que lee un perfil y luego recorre cinco páginas de vídeos es seis llamadas y 60 créditos. La prueba llega más jóvenes con preguntas concretas que con rastreos abiertos.
Herramientas
Cuatro herramientas, todas de solo lectura. Las muestras a continuación están recortadas de llamadas reales y los números varían según cómo se buen provea en TikTok. Léelo como aproximaciones. Cada nombre de herramienta enlaza con la referencia de su endpoint, que contiene la lista completa de campos.
Las muestras son el payload, no la respuesta completa. Un resultado tools/call devuelve un bloque de texto, y ese texto es un JSON que contiene url, status, text y json, con los datos recopilados bajo json. Desde una respuesta JSON-RPC cruda el camino es result.content[0].text, parseado para luego acceder a .json. Un cliente de chat te lo desenreda, mientras que el código que habla directamente con el endpoint no.
Los identificadores, los ids de vídeo y los ids de comentario encadenan entre sí. Un perfil tiene enlaces a sus publicaciones, cada publicación es un videoId para la herramienta de comentarios, y cada autor en los comentarios y en los resultados de búsqueda lleva un hasdataLink a su perfil y un hasdataPostsLink a sus vídeos. Un agente puede ir de una palabra clave a un creador, a un vídeo y a sus comentarios sin construir una URL.
Get TikTok profile
Obtén información de un perfil público a partir del nombre de usuario.
hasdata_tiktok_profile_getTikTokProfile
Parámetro | Tipo | Requerido | Descripción |
| string | sí | El nombre de usuario, con o sin el carácter inicial. |
Devuelve username, nickname, biography, bioLink, verified, language, createTime, las URLs de los avatares y los contadores de followers, follows, likes, videos y friends como números enteros.
Un nombre de usuario que no existe todavía devuelve
requestMetadata.statuscon valorok; el objetoprofile, simplemente. Comprueba que existe antes de acceder ausernameo cualquier otro campo, porque una agente que hagaprofile.usernamesobre un valor inexistente provocará un error.
{
"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
}Get TikTok posts
hasdata_tiktok_posts_getTikTokPosts
Una página de los vídeos de una cuenta, del más reciente al más antiguo, mediante el handle.
Parámetro | Tipo | Requerido | Notas |
| string | sí | El nombre de usuario, con o sin el carácter inicial. |
| string | El |
Una llamada devuelve alrededor de treinta vídeos más pagination, que incluye hasMore y el nextPageToken que debes volver a usar para recorrer la historia de la cuenta página a página. Cada vídeo incluye id, description, url, duration, las URLs de la miniatura y del vídeo reproducible, music, y los contadores likes, comments, shares, plays, collects y reposts como enteros.
hashtagsymentionssolo aparecen si el vídeo los usa. En una página demuestra de 27 vídeos, 4 tenían un arrayhashtagsy 10 conteníanmentions. Comprueba el campo antes de acceder, en lugar de asumir que ambos estarán en todas los vídeos.
{
"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 }
}Get TikTok comments
Los comentarios de un vídeo público, o las respuestas de un comentario.
hasdata_tiktok_comments_getTikTokComments
Parámetro | Tipo | Requerido | Notas |
| string | sí | El id numérico, la parte posterior a |
| string | Pásalo para obtener las respuestas a ese comentario en lugar del nivel de vice. Un texto, por lo mismo que | |
| string | La misma |
Cada comentario lleva text, likes, createTime, replyCount y un autor. Cada objeto author tiene un hasdataLink a su perfil y un hasdataPostsLink a sus vídeos. pagination.total indica el número total de comentarios de un vídeo, para que sepas la profundidad antes de paginar. Un comentario con replyCount distinto de cero tiene respuestas, a las que llegas llamando de nuevo con su id como 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"
}
}Search TikTok
Una búsqueda por palabras clave en vídeos o usuarios.
hasdata_tiktok_search_getTikTokSearch
Parámetro | Tipo | Requerido | Notas |
| string | sí | La frase de la búsqueda |
| string |
| |
| string | el token de la respuesta anterior. A veces. |
Con type: video obtienes los mismos datos de vídeo que en la herramienta de publicaciones, incluyendo el autor de cada uno. Con type: user obtienes perfiles de creadores avec username, nickname, signature (la bio), avatarUrl, followers, y los mismos hasdataLink y hasdataPostsLink para seguir hacia el perfil o sus vídeos. En las cuentatas está presente una marca 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"
}Errores y rutas de fallo
Tu cliente casi nunca ve un código de error HTTP en una llamada a una herramienta. La capa MCP responde con 200 y coloca el fallo dentro del resultado, con el isError establecido en true y el motivo como texto. El agente lee un mensaje donde cabría esperar una línea de estado.
Una clave incorrecta se presenta como la salida de la herramienta, no como una conexión fallida. tools/list acepta cualquier clave no vacía y devuelve las cuatro herramientas, así que el cliente completa el handshake y se marca en verde. La primera llamada a una herramienta vuelve entonces con isError: true y el texto HasData API error: 401 Unauthorized. Fíjate en esa cadena, porque nada en el flujo anterior informa del problema.
Una clave ausente es el único error HTTP real. La autorización se ejecuta antes que cualquier herramienta y la propia conexión falla con 401. Los encabezados CORS están presentes, de modo que un cliente de navegador lee el estado y no un fallo de red opaco.
Un argumento que rompe el esquema de una herramienta se rechaza antes de que se haga scraping. El servidor responde con isError: true y el texto MCP error -32602: Input validation error, indicando el campo que infringe la validación. No se obtiene nada y no se cobra nada.
Una llamada que tiene éxito y encuentra algo es el caso que confunde a la gente. Un usuario que no existe devuelve un resultado normal con requestMetadata.status en ok y la clave de datos simplemente ausente. Nada en el cuerpo dice que el resultado estaba vacío. Comprueba el campo que necesitas, no si ha devuelto un error.
Un identificador que la plataforma rechaza devuelve un 400 con requestMetadata.status establecido en error.
Los resultados con datos incluyen también un requestMetadata.id que conviene citar al hablar con el soporte.
Precios, plan gratuito y límites
Cada herramienta de TikTok cuesta 10 créditos por llamada correcta. El tamaño de la respuesta no cambia el precio. Una página completa de vídeos cuesta lo mismo que un perfil con un único campo.
La prueba gratuita son 1,000 créditos durante 30 días sin tarjeta, es decir, 100 llamadas a TikTok. Después de eso, una cuenta activa sigue recibiendo 100 créditos diarios cuando su saldo baja de 100, así que un agente de bajo volumen se ejecuta en el plan gratuito de forma indefinida.
Los planes de pago empiezan en $49 al mes por 200,000 créditos, lo que equivalería a 20,000 llamadas. El precio unitario baja con el volumen, desde $2.45 por cada 1,000 llamadas en el plan inicial hasta $0.99 en Business, $0.83 en Growth y $0.75 en los planes de alto volumen.
hace dos planes de alto volumen
La concurrencia también forma determinada por tu plan. La prueba gratuita permite 1 petición a la vez, Startup 15, Business 30, Growth 50 y los planes de alto volumen de 200 a 1,500. En cualquier proceso no supervisado, gestiona el desbordamiento de forma defensiva, porque un agente que se lanza en paralelo no alcanzará el techo antes que tú.
Una petición que no devuelve un 200 no se factura. Una llamada con éxito que no encuentra nada sigue siendo una llamada.
Selección de herramientas
El parámetro query api determina qué herramientas ve tu agente. Cuando menos ha dies herramientas, menos contexto se gasta en sus definiciones y menos probabilidades hay de que el modelo elija una.
?apis=tiktok the four tools in this repo
?apis=tiktok,instagram a social bundle
?apis=tiktok,google_serp add Google searchEl parámetro dice que tipos de nombres como tiktok y subjects individual like tiktok_search. Las wrong names get ignored. Si todos los nombre fallan, la petición detecta un 400 y el cuerpo enumera both what no se ha reconocido as all valid values. Si retiras el parámetro, el mismo endpoint expone las 57 herramientas de HasData.
Comparativa
El propio programa de desarrollo de TikTok no cubre la lectura general de contenido público. La Research API se limita a una autorización y está abierta a investigadores académicos y sin ánimo de lucro aprobados en un grupo limitado de regiones. La Display API solo devuelve el contenido de la cuenta que inicia sesión mediante OAuth. Ninguna de las dos vale para un agente que necesite leer un perfil público indistincto, itsvídeos o los comentarios de un vídeo.
APIs oficiales de TikTok | Este servidor | |
Acceso | Research API por solicitud, o Display API para tu propia cuenta | Una clave y una URL |
Alcance | Investigadores aprobados, o tu propia cuenta autenticada | Cualquier perfil, vídeo o búsqueda pública |
Autenticación | Revisión de la solicitud u OAuth | Cabecera |
Comentarios de vídeos ajenos | Restringido | Sí, con hilos de respuestas |
Configuración | Cuenta de desarrollador y aprobación | Ninguna |
Escrituras y datos privados | Publicar y tus propios datos por autenticación con OAuth | Solo lectura, solo datos públicos |
The majority of remaining TikTok MCP servers wrap a singly unofficial endpoint. Este gut includes the four reads an agent actually strings to string: profile to posts and to comments, plus search; in this way an entire research against a single server.
What this server does not do: No post publ, no messages direct, no content for followers or private and no analytics of accounts that aren't yours. Reads the same thing that a non-authenticated visitor can see.
FAQ
¿Hay un servidor MCP oficial de TikTok?
TikTok no publica . The only options are from third parties. This server is maintained by HasData and reads public pages, so does not require any TikTok developer account.
¿Qué es un TikTok MCP server?
A remote server that exposes TikTok data as AI client calls. El cliente envía una llamada de herramienta through the Model Context Protocol, the remote server retrieves the specified data and returns structured JSON, and the model works with results without ever seeing a page of HTML. This one exposes 4 paid endpoints and runs remotely. El cliente connects to a URL and no local process starts.
¿Necesito una API key de TikTok o una developer account?
No. The only credential is your HasData key. No hay que presentarse solicitud de aplicación ni OEM consent screen, because the tools read public pages TikTok, no developer API of TikTok.
¿Do I need to host them in my own or run anything?
No. This is a remote MCP server over streamable HTTP. No need to install anything, no container to keep "caliente", no process to restart.
¿Is data live and cached or not?
Live. Every call fetches at the time of the request and has its own requestMetadata ID. Play and like counters follow them page, and therefore move when the page moves.
¿Puedo leer una cuenta private?
No. Results fallback the case acontece a non-authenticated visitor. Videos from a private account are not public, so they are not included in any response.
¿Can I read replies to comments and not just the top-level comments?
Yes. Call the comments tool with the id of a message lover as commentId and it returns the replies to that message. The number of replyCount of a comment tells you if there be any.
¿Se puede usar junto con other HasData APIs?
Yes. The apis param takes a list; ?apis=tiktok,instagram gives your them the four TikTok guides plus Instagram. If you remove the `error parameter passes all available get all.
Compliance and personal data
HasData only accesses unhidden data that is public. The terms of a platform can restrict automated access, and you are responsible for its compliance. When data includes personal data, ensure have a lawful basis under GDPR, CCPA or other equivalent rules in your jurisdiction.
HasData links
Página product and request generator | |
Documentation of the server | |
All other tools on a single server | |
Customer guides | |
Inventories all we are captivate | |
Plans and credit costs. | |
Keys and usage |
Development
Este repositorio is configuration and documentation for a remote server, no build step, no containerization.
Test test/ asserts contract of the tool the part safe of all commits. You check that ?apis=tiktok returns exactly four tools; every tool still declares its mandatory parameter; no name changed; and that the actual key is accepted. That last check calls to real tool and costs 10 credits, the price for a "canary" that can fail for correct reason.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm testThe same harness also runs in CI on every push and once a week as planned, because the list of tool can change without anyone messing repository. fail means that the list of tool moved, the key stopped working, or the endpoint was unreachable, and the assertion message reveals which.
Contributing
Bellas & Spell fix to tools and sample outputs are the most precious contribution, because that is what easiest to get outdated. Include the call you emitted and received response. Pull requests from fork run the suite without API keys, and live assertions are ignored instead of turning red in pulse.
License
MIT. See 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