Skip to main content
Glama
HasData

TikTok MCP Server

TikTok MCP Server

Ein gehosteter Model Context Protocol (MCP)-Server, der Claude, Cursor, Windsurf und jedem anderen MCP-Client vier schreibgeschützte TikTok-Tools bietet. Rufe ein öffentliches Profil ab, blättere durch die Videos eines Kontos, lies die Kommentare zu einem Video und durchsuche TikTok nach Videos oder Creatorn – alles als strukturiertes JSON, ohne TikTok-Entwicklerkonto und ohne OAuth.

Er liest öffentliche Daten, die ein abgemeldeter Besucher sehen kann. Er meldet sich nicht an, postet nicht und agiert nicht als Konto.

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

Glama score tool contract MCP Tools npm PyPI License

Inhalt

Related MCP server: tiktok-mcp

Was du brauchst

Einen MCP-Client und einen HasData-API-Schlüssel aus dem Dashboard, kostenlos zu erstellen. Das ist ein Remote-Server, also ist der einfachste Weg eine URL und ein x-api-key-Header, ohne Container, den du ausführen musst, und ohne TikTok-Entwicklerkonto irgendwo im Ablauf. Ein Client, der nur stdio spricht, erreicht ihn über einen schlanken Launcher, veröffentlicht als @hasdata/tiktok-mcp auf npm und hasdata-tiktok-mcp auf PyPI, wie unten gezeigt.

Schnellstart

Die Server-URL ist für jeden Client dieselbe. Wir setzen sie direkt in Claude Code und Claude Desktop ein. Die anderen Blöcke folgen dem jeweils dokumentierten Format des Clients für einen Remote-Server.

Feld

Wert

URL

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

Transport

HTTP, streamable

Auth-Header

x-api-key: HASDATA_API_KEY

Clients mit OAuth-Unterstützung können dieselbe URL als Connector hinzufügen und sich anmelden, ohne einen Schlüssel in eine Konfigurationsdatei zu setzen.

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

Einstellungen, dann Connectors, dann Add custom connector, dann füge https://mcp.hasdata.com/api/mcp?apis=tiktok ein und melde dich an.

Für den Konfigurationsdatei-Weg lädt Claude Desktop nur lokale (stdio) Server, also erreicht es einen Remote-Server über einen stdio-Launcher. Das Paket @hasdata/tiktok-mcp ist dieser Launcher und liest den Schlüssel aus der Umgebung. Füge das zu claude_desktop_config.json hinzu:

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

Python statt Node? Tausche den Launcher gegen das PyPI-Paket, das uvx ohne manuelle Installation ausführt:

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

~/.cursor/mcp.json für jedes Projekt, oder .cursor/mcp.json für eines:

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

~/.codeium/windsurf/mcp_config.json. Windsurf nennt das Feld serverUrl, nicht 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 im Arbeitsbereich:

{
  "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" }
    }
  }
}

Beispiel-Prompts

Prompts, kein Code. Füge einen ein und der Agent wählt selbst das Tool. Jeder ist mit den Aufrufen annotiert, die er benötigt, denn in MCP entscheidet das Modell, wie viele Aufrufe es macht, und jeder erfolgreiche Aufruf kostet 10 Credits.

Nimm @mrbeast. Rufe das Profil ab, blättere dann durch die ersten beiden Seiten der Videos und nenn mir die mediane Abspielzahl über sie hinweg.

Drei Aufrufe, 30 Credits. Das Profil ist ein Aufruf, und jede Videoseite ist ein weiterer.

Suche auf TikTok nach Creatorn zum Thema „cold brew coffee“ und reihe die Top Ten nach Followern ein, jeweils mit ihrer Bio.

Ein Aufruf, 10 Credits. Eine Benutzersuche enthält bereits Follower-Anzahl und Bio, daher ist kein weiterer Profilabruf nötig.

Hier ist eine Video-URL. Lies ihre Top-Kommentare und sag mir die Gesamtstimmung und die drei Antworten mit den meisten Likes.

Ein Aufruf, 10 Credits. Die numerische ID in der URL ist alles, was das Kommentare-Tool braucht.

Nimm dasselbe Video und klappe dann die Antworten unter seinem Kommentar mit den meisten Likes auf.

Zwei Aufrufe, 20 Credits. Zuerst die Kommentare auf oberster Ebene, dann ein zweiter Aufruf mit der ID dieses Kommentars für seine Antworten.

Suche nach „asmr“-Videos und rufe dann die Autorenprofile der drei mit den höchsten Abspielzahlen ab.

Vier Aufrufe, 40 Credits. Eine Suche, dann jeweils ein Profil. Jeder Autor in einem Suchergebnis trägt einen Link direkt zu seinem Profil-Endpunkt, sodass der Agent nie einen Handle erraten muss.

Paging kostet jedes Mal einen Aufruf. Ein Creator-Audit, das ein Profil liest und dann fünf Videoseiten durchläuft, sind sechs Aufrufe und 60 Credits. Mit der Testversion kommst du bei engen Fragen weiter als bei offenen Crawls.

Tools

Vier Tools, alle mit Leserecht. Die Beispiele unten sind aus echten Aufrufen gekürzt, und die Zahlen darin verändern sich, wenn TikTok aktualisiert. Lies sie als Formen. Jeder Toolname verlinkt auf seine Endpunkt-Referenz, die die vollständige Feldliste enthält.

Die Beispiele sind die Nutzlast, nicht die gesamte Antwort. Ein tools/call-Ergebnis trägt einen Textblock, und dieser Text ist selbst JSON, das url, status, text und json enthält, mit den gescrapten Daten unter json. Bei einer rohen JSON-RPC-Antwort ist der Pfad result.content[0].text, geparst, dann .json. Ein Chat-Client packt das für dich aus, Code, der direkt mit dem Endpunkt spricht, jedoch nicht.

Handles, Video-IDs und Kommentar-IDs bilden eine Kette. Ein Profil verlinkt auf seine Posts, jeder Post trägt seine eigene Video-ID für das Kommentare-Tool, und jeder Autor in Kommentaren und Suchergebnissen trägt einen hasdataLink zu seinem Profil und einen hasdataPostsLink zu seinen Videos. Ein Agent geht von einem Suchbegriff zu einem Creator, zu einem Video und zu dessen Kommentaren, ohne jemals eine URL zu erstellen.

TikTok-Profil abrufen

hasdata_tiktok_profile_getTikTokProfile

Ein öffentliches Konto per Handle.

Parameter

Typ

Erforderlich

Hinweise

handle

string

Ja

Der Benutzername, mit oder ohne führendes @

Gibt username, nickname, biography, bioLink, verified, language, createTime, die Avatar-URLs und die Anzahlen für followers, follows, likes, videos und friends als Ganzzahlen zurück. Die Anzahlen sind bereits geparst, sodass followers > 1000000 Zahlen vergleicht und keine Anzeigestrings.

Ein Handle, der nicht existiert, kommt weiterhin mit requestMetadata.status = ok zurück; das profile-Objekt fehlt lediglich. Prüfe, ob das Objekt vorhanden ist, bevor du username oder ein anderes Feld liest, sonst wirft ein Agent, der profile.username ausführt, eine Ausnahme ins Leere.

{
  "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-Posts abrufen

hasdata_tiktok_posts_getTikTokPosts

Eine Seite der Videos eines Kontos per Handle, neueste zuerst.

Parameter

Typ

Erforderlich

Hinweise

handle

string

Ja

Der Benutzername, mit oder ohne führendes @

nextPageToken

string

Der pagination.nextPageToken aus der vorherigen Antwort. Für die erste Seite weglassen

Ein Aufruf liefert etwa dreißig Videos plus pagination mit hasMore und dem nextPageToken, den du zurückspeist, um die Kontohistorie Seite für Seite durchzugehen. Jedes Video enthält id, description, url, duration, die Cover- und abspielbaren Video-URLs, music sowie die Anzahlen für likes, comments, shares, plays, collects und reposts als Ganzzahlen.

hashtags und mentions sind nur bei Videos vorhanden, die sie verwenden. Auf einer echten Seite mit 27 Videos hatten 4 ein hashtags-Array und 10 enthielten mentions. Prüfe den Key, bevor du ihn liest, statt anzunehmen, dass jedes Video beides hat.

{
  "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-Kommentare abrufen

hasdata_tiktok_comments_getTikTokComments

Die Kommentare zu einem öffentlichen Video oder die Antworten unter einem Kommentar.

Parameter

Typ

Erforderlich

Hinweise

videoId

string

Ja

Die numerische ID, der Teil nach /video/ in einer TikTok-URL. Behalte sie als String. Die ID ist eine 64-Bit-Zahl, die ihre letzten Ziffern verliert, wenn sie jemals durch eine JavaScript-Number läuft

commentId

string

Übergib sie, um die Antworten auf diesen Kommentar zu erhalten statt der Top-Level-Kommentare des Videos. Ein String, aus demselben 64-Bit-Grund wie videoId

nextPageToken

string

Token aus der vorherigen Antwort. Für die erste Seite weglassen

Jeder Kommentar trägt text, likes, createTime, replyCount und einen author, und jeder Autor trägt einen hasdataLink zu seinem Profil und einen hasdataPostsLink zu seinen Videos. pagination.total meldet die gesamte Kommentar-Anzahl des Videos, sodass du die Tiefe kennst, bevor du blätterst. Ein Kommentar mit einem replyCount ungleich null hat Antworten, die du erreichst, indem du erneut mit seiner id als commentId aufrufst.

{
  "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 durchsuchen

hasdata_tiktok_search_getTikTokSearch

Eine Stichwortsuche über Videos oder Creatorn.

Parameter

Typ

Erforderlich

Hinweise

keyword

string

Ja

Der Suchbegriff, nach dem gesucht werden soll

type

string

Standardmäßig video, oder user, um nach Creatorn zu suchen

nextPageToken

string

Token aus der vorherigen Antwort. Für die erste Seite weglassen

Mit type: video enthält die Antwort Videos in derselben Form, die das posts-Tool zurückgibt, jeweils mit seinem Autor. Mit type: user enthält sie Ersteller, jeweils mit username, nickname, signature (der Bio), avatarUrl, followers sowie denselben hasdataLink und hasdataPostsLink, um in ein Profil oder dessen Videos zu springen. Ein verified-Flag ist bei Konten vorhanden, die eines tragen.

{
  "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"
}

Fehler und Fehlerpfade

Ihr Client sieht bei einem Tool-Aufruf fast nie einen HTTP-Fehlercode. Die MCP-Ebene antwortet mit 200 und legt den Fehler in das Ergebnis, mit isError auf true und dem Grund als Text. Der Agent liest eine Meldung, wo man eine Statuszeile erwarten würde.

Ein falscher Schlüssel erscheint als Tool-Ausgabe, nicht als fehlgeschlagene Verbindung. tools/list akzeptiert jeden nicht-leeren Schlüssel und gibt alle vier Tools zurück, sodass der Client seinen Handshake abschließt und grün zeigt. Der erste Tool-Aufruf kommt dann mit isError: true und dem Text HasData API error: 401 Unauthorized zurück. Achten Sie auf diesen String, denn nichts früher im Ablauf meldet das Problem.

Ein fehlender Schlüssel ist der einzige echte HTTP-Fehler. Die Autorisierung läuft vor jedem Tool ab, und die Verbindung selbst schlägt mit 401 fehl. CORS-Header sind vorhanden, und ein Browser-Client liest den Status und keinen undurchsichtigen Netzwerkfehler.

Ein Argument, das das Schema eines Tools verletzt, wird abgewiesen, bevor es zu einem Scrape kommt. Der Server antwortet mit isError: true und dem Text MCP error -32602: Input validation error, wobei das fehlerhafte Feld benannt wird. Es wird nichts abgerufen und nichts in Rechnung gestellt.

Ein Aufruf, der erfolgreich ist und nichts findet, ist der Fall, über den viele stolpern. Ein Handle, das nicht existiert, kommt als gewöhnliches Ergebnis zurück, mit requestMetadata.status auf ok und dem einfach fehlenden Daten-Schlüssel. Nichts im Body sagt, dass das Ergebnis leer war. Testen Sie auf das Feld, das Sie benötigen, nicht auf einen Fehler.

Eine Kennung, die die Plattform ablehnt, gibt 400 zurück mit requestMetadata.status auf error.

Ergebnisse, die Daten enthalten, tragen auch eine requestMetadata.id, die es wert ist, im Support angegeben zu werden.

Preise, kostenloser Tarif und Limits

Jedes TikTok-Tool kostet 10 Credits pro erfolgreichem Aufruf. Die Antwortgröße ändert den Preis nicht. Eine volle Seite mit Videos kostet so viel wie ein Profil mit einem Feld.

Die kostenlose Testphase umfasst 1.000 Credits über 30 Tage ohne Karte, also 100 TikTok-Aufrufe. Danach erhält ein aktives Konto weiterhin täglich 100 Credits aufgestockt, sobald sein Kontostand unter 100 fällt, sodass ein Agent mit geringem Volumen dauerhaft auf dem kostenlosen Tarif läuft.

Bezahlte Tarife beginnen bei 49 $ pro Monat für 200.000 Credits, das sind 20.000 Aufrufe. Der Stückpreis sinkt mit dem Volumen, von 2,45 $ pro 1.000 Aufrufen im Einstiegstarif auf 0,99 $ bei Business, 0,83 $ bei Growth und 0,75 $ bei den größten High-Volume-Tarifen.

Ihr Tarif legt auch die Nebenläufigkeit fest. Die kostenlose Testphase erlaubt 1 Anfrage gleichzeitig, Startup 15, Business 30, Growth 50, und die High-Volume-Tarife liegen zwischen 200 und 1.500. Behandeln Sie den Überlauf-Fall in allem Unbeaufsichtigten defensiv, denn ein Agent, der verzweigt, erreicht die Obergrenze eher als Sie.

Eine Anfrage, die mit nicht-200 zurückkommt, wird nicht abgerechnet. Ein erfolgreicher Aufruf, der nichts findet, ist dennoch ein Aufruf.

Tool-Auswahl

Der Abfrageparameter apis entscheidet, welche Tools Ihr Agent sieht. Weniger Tools bedeuten weniger Kontext für Tool-Definitionen und weniger Chancen, dass das Modell zum falschen greift.

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

Der Parameter nimmt Anbieternamen wie tiktok und einzelne API-Namen wie tiktok_search. Falsch geschriebene Namen werden ignoriert. Wenn jeder Name falsch ist, schlägt die Anfrage mit 400 fehl, und der Body listet sowohl das, was er nicht erkannt hat, als auch jeden gültigen Wert. Wenn Sie den Parameter weglassen, legt derselbe Endpunkt alle 57 HasData-Tools offen.

Wie es sich vergleichen lässt

TikToks eigenes Entwicklerprogramm deckt das allgemeine Lesen öffentlicher Inhalte nicht ab. Die Research API ist durch ein Antragsverfahren abgeschirmt und steht genehmigten akademischen und gemeinnützigen Forschern in einer begrenzten Anzahl von Regionen offen. Die Display API gibt nur die Inhalte des Kontos zurück, das sich über OAuth anmeldet. Weder das eine noch das andere passt zu einem Agenten, der ein beliebiges öffentliches Profil, dessen Videos oder die Kommentare eines Videos lesen muss.

Offizielle TikTok-APIs

Dieser Server

Zugriff

Research API auf Antrag, oder Display API für Ihr eigenes Konto

Ein Schlüssel und eine URL

Umfang

Genehmigte Forscher oder Ihr eigenes authentifiziertes Konto

Jedes öffentliche Profil, jedes Video oder jede Suche

Authentifizierung

Antragsprüfung oder OAuth

Ein x-api-key-Header

Kommentare zu Videos, die Ihnen nicht gehören

Eingschränkt

Ja, mit Antwort-Threads

Einrichtung

Entwicklerkonto und Genehmigung

Keine

Schreiben und private Daten

Veröffentlichen und eigene Kontodaten über OAuth

Nur lesend, nur öffentliche Daten

Die meisten anderen TikTok-MCP-Server kapseln einen einzigen inoffiziellen Endpunkt. Dieser hier deckt die vier Lesevorgänge ab, die ein Agent tatsächlich verketet, Profil zu posts zu Kommentaren, plus Suche, sodass ein ganzer Recherchedurchlauf gegen einen einzigen Server läuft.

Was dieser Server nicht tut. Kein Veröffentlichen, keine Direktnachrichten, keine Nur-follower- oder privaten Inhalte, keine Analytik für Konten, die Ihnen nicht gehören. Er lesst, was ein abgemeldeter Besucher sehen kann.

FAQ

Gibt es einen offiziellen TikTok-MCP-Server?

TikTok veröffentlicht keinen. Jede Option wird von jemand anderem gebaut. Dieser wird von HasData gewartet und lesst öffentliche Seiten, weshalb er kein TikTok-Entwicklerkonto benötigt.

Was ist ein TikTok-MCP-Server?

Ein Server, der TikTok-Daten als Tools bereitstellt, die ein AI-Cliient aufrufen kann. Der Client sendet einen Tool-Aufruf über das Model Context Protocol, der Server holt die Daten und gibt strukturiertes JSON zurück, und das Modell arbeitet mit dem Ergebnis und sieht nie eine HTML-Seite. Dieser legt vier Tools offen und läuft remote. Der Client verbindet sich mit einer URL und startet keinen lokalen Prozess.

Brauche ich einen TikTok-API-Schlüssel oder ein Entwicklerkonto?

Nein. Die einzige Berechtigung ist Ihr HasData-Schlüssel. Es gibt kein Entwicklerantrag einzureichen und keinen OAuth-Zustimmungsbidschirm, weil die Tools öffentliche TikTok-Seiten lesen und nicht die TikTok-Entwickler-APIs.

Muss ich etwas hosten oder betreiben?

Nein. Dies ist ein Remote-MCP-Server auf streamable HTTP. Nichts zu installieren, kein Container, den man warm halten muss, kein Prozess, den man neu starten muss.

Sind die Daten live oder gecached?

Live. Jeder Aufruf holt die Daten zum Zeitpunkt der Anfrage und trägt seine eigene requestMetadata.id. Zähler wie Aufrufe und Likes folgen der Seite und bewegen sich also mit der Seite.

Kann ich ein privates Konto lesen?

Nein. Die Tools geben zurück, was ein abgemeldeter Besucher sieht. Die Videos eines privaten Kontos sind nicht öffentlich und daher in keiner Antwort enthalten.

Kann ich Antworten auf Kommentare lesen, nicht nur Kommentare auf oberster Ebene?

Ja. Rufen Sie das comments-Tool mit der id eines Kommentars als commentId auf, und es gibt die Antworten auf diesen Kommentar zurück. Der replyCount eines Kommentars sagt Ihnen, ob es welche gibt.

Kann ich das zusammen mit anderen HasData-APIs verwenden?

Ja. Der Parameter apis nimmt eine Liste, und ?apis=tiktok,instagram gibt Ihrem Agenten die vier TikTok-Tools plus Instagram. Lassen Sie den Parameter weg und Sie erhalten alles.

Compliance und personenbezogene Daten

HasData greift nur auf öffentlich verfügbare Daten zu. Die Nutzungsbedingungen einer Plattform können automatisierten Zugriff einschränken, und Sie sind für Ihre eigene Compliance verantwortlich. Wenn die von Ihnen erhobenen Daten personenbezogene Informationen enthalten, stellen Sie sicher, dass Sie eine rechtmäßige Grundlage dafür gemäß DSGVO, CCPA oder den entsprechenden Regelungen in Ihrer Jurisdiktion haben.

Produktseite und Anfrage-Builder

TikTok Scraper API

Server-Dokumentation

MCP-Server-Dokumentation

Alle 57 Tools in einem Server

HasData/hasdata-mcp

Client-Walkthroughs

MCP-Clients und Integrationen

Alles andere, was wir scrapen

TikTok Scraper API und 54 weitere

Tarife und Credit-Kosten

Tarife und Credit-Kosten

Schlüssel und Nutzung

HasData dashboard

Node-Launcher auf npm

@hasedata/tiktok-mcp

Python-Launcher auf PyPI

hasdata-tiktok-mcp

Entwicklung

Dieses Repository ist Konfiguration und Dokumentation für einen Remote-Server. Es gibt kein Build-Schrit und nichts zu containerisieren.

Die Tests in test/ prüfen den Tool-Vertrag, den Teil, der ohne einen Commit hier kappen kann. Sie prüfen, dass ?apis=tiktok genau vier Tools zurückgibt, dass jedes Tool weiterhin seinen erforderlichen Parameter deklariert, dass sich kein Name geändert hat und dass der verwendete Schlüssel tatsächlich akzeptiert wird. Die letzte Prüfung ruft ein Tool wirklich auf und kostet 10 Credits – das ist der Preis eines Kanarienvogels, der aus dem richtigen Grund scheitern kann.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

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

Dieselbe Suite läuft in CI bei jedem Push und einmal pro Woche planmäßig, weil sich die Upstream-Tool-Liste ändern kann, ohne dass jemand dieses Repository anfasst. Ein Fehler bedeutet, dass sich die Tool-Liste verschoben hat, der Schlüssel nicht mehr funktioniert oder der Endpunkt nicht erreichbar war, und die Assertion-Meldung sagt, welches.

Mitwirken

Korrekturen an den Tool-Tabellen und den Antwortbeispielen sind der nützlichste Beitrag, weil das die Teile sind, die abdriften. Geben Sie den Aufruf an, den Sie gemacht haben, und die Antwort, die Sie erhalten haben. Pull-Requests aus Forks lassen die Suite ohne Schlüssel laufen, und die Live-Prüfungen werden übersprungen, statt rot zu werden.

Lizenz

MIT. Siehe LICENSE.

Available Tools

4 tools
hasdata_tiktok_comments_getTikTokCommentstiktok_comments: GET /AInspect

Get TikTok Comments

Fetches the comments on a public TikTok video by its numeric video id, or the replies to a specific comment when commentId is given. Each comment returns text, like count, timestamp, reply count, and author (username, nickname, avatar, plus hasdataLink to the profile endpoint and hasdataPostsLink to the posts endpoint). Supports token-based pagination via nextPageToken. Use for sentiment analysis, engagement research, or building comment datasets from a video discovered via the posts or search APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesThe numeric id of the video (the number after `/video/` in a TikTok URL).
commentIdNoWhen provided, returns the replies to this comment instead of the video's top-level comments.
nextPageTokenNoDefines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden and explains read-only fetching of public comments, pagination via nextPageToken, and the returned comment fields. It does not mention rate limits or error behavior, but the disclosed behavior is clear.

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 compact, well-organized, and free of filler. Key information about input, output fields, pagination, and use cases is front-loaded.

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?

Although there is no output schema, the description enumerates returned comment fields and pagination behavior, which gives an agent enough context for typical use. It lacks response envelope or error details, but those are not essential for selection.

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?

All parameters have descriptive schema entries, and the description adds practical context: videoId is the number after /video/ in a TikTok URL, commentId selects replies, and nextPageToken uses the previous response value with omission for the first page.

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?

Clearly states it fetches TikTok comments by video ID or replies by comment ID, distinguishing it from sibling TikTok profile, posts, and search tools. The verb 'Fetches' and the resource 'comments on a public TikTok video' make the purpose specific.

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

Usage Guidelines4/5

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

Provides concrete use cases such as sentiment analysis, engagement research, and building comment datasets, and notes that videos may be discovered via posts or search APIs. It does not explicitly contrast with sibling tools, but the guidance is sufficient for typical selection.

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

hasdata_tiktok_posts_getTikTokPoststiktok_posts: GET /AInspect

Get TikTok Posts

Fetches a page of videos for a public TikTok account by username (handle) and returns each video with description, hashtags, mentions, like/comment/share/play/collect counts, cover and playable video URLs, music, duration, and timestamp. Returns a page of ~35 videos plus a nextPageToken; pass that token back to walk the account history one page at a time. Use to monitor competitor content, track engagement of creator videos, or build datasets of account content for vetting and analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe TikTok username of the account whose videos you want to scrape, with or without the `@` symbol.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page of results. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses pagination via nextPageToken, a page size of ~35 videos, and the public-account constraint. It does not mention rate limits or error cases, but the read-only nature is clearly implied by 'Fetches'.

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 dense and front-loaded, with the core behavior stated immediately and use cases at the end. The opening line repeats the title, but the rest of the content earns its place.

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?

For a simple two-parameter fetch tool with no output schema, the description covers what is returned, pagination, and typical use cases. It is complete enough for correct invocation, though it omits potential failure modes and rate-limit context.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are already well-documented in the schema. The description reinforces the handle and pagination concepts but does not add 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 the tool fetches a page of videos for a public TikTok account by username, and enumerates the returned fields. This distinguishes it from sibling tools focused on comments, profile, and search.

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

Usage Guidelines4/5

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

Explicit use cases are given: monitoring competitors, tracking engagement, and building datasets for analytics. It does not name alternative tools or exclusions, but the context is clear enough for selecting this tool over the siblings.

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

hasdata_tiktok_profile_getTikTokProfiletiktok_profile: GET /AInspect

Get TikTok Profile

Fetches a public TikTok profile by username (handle) and returns nickname, biography, bio link, avatar URLs, verified/private flags, account creation time, and followers, follows, likes, videos, and friends counts. Use to enrich CRM/lead records, verify influencer reach before outreach, monitor competitor accounts, or build datasets of creator metadata for vetting and analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe TikTok username of the profile you want to scrape, with or without the `@` symbol.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full behavioral burden. It accurately conveys that this is a read operation (fetches) on public profiles, but it does not disclose potential edge cases like errors for non-existent handles, rate limits, or authentication requirements. For a simple GET it is acceptable 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 compact, front-loaded with the tool's purpose, and avoids unnecessary fluff. The second sentence adds value by listing return fields and use cases. It is efficiently written without waste.

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?

For a single-parameter tool with no output schema, the description covers the essential information: what it does, what it returns, and typical use cases. It does not discuss error handling or output formatting, but given the simplicity of the operation, it is sufficiently complete for an agent to invoke it.

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

Parameters3/5

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

The single parameter 'handle' is fully documented in the schema with an explanation of format (with or without '@'). The description adds no additional semantics beyond restating the parameter name. Since schema coverage is 100%, the baseline of 3 applies.

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 public TikTok profile by username and enumerates the exact data returned (nickname, bio, counts, flags). It is specific about the resource and action, and its distinctness from sibling tools (comments, posts, search) is evident from the resource type.

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

Usage Guidelines4/5

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

The description provides clear usage contexts (CRM enrichment, influencer vetting, competitor monitoring) which implicitly distinguish it from siblings that handle posts, comments, or search. It does not explicitly state when not to use it or name alternatives, but the context is unambiguous enough for an agent to select it correctly.

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

hasdata_tiktok_search_getTikTokSearchtiktok_search: GET /AInspect

Search TikTok

Searches TikTok by keyword and returns either videos (with description, hashtags, mentions, like/comment/share/play counts, cover and playable video URLs, music, and author) or users (nickname, bio, avatar, verified flag, follower count). Each author and each user carries a hasdataLink to their profile endpoint and a hasdataPostsLink to their posts endpoint. Supports token-based pagination via nextPageToken. Use for content discovery, trend research, influencer discovery, or building datasets from a keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhat to search for — videos or users. Defaults to video.
keywordYesThe phrase to search for on TikTok.
nextPageTokenNoDefines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description should carry the full burden of disclosing behavioral traits. It does not state that the operation is read-only, nor does it mention rate limits, data modification, or other side effects. The absence of such details leaves behavioral transparency incomplete.

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 moderately concise and well-structured. It conveys the core functionality and relevant details without unnecessary verbosity, though it could be slightly tighter by removing redundant phrasing like repeating 'hasdataLink' and 'hasdataPostsLink'.

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 absence of an output schema, the description does well to enumerate the return fields (e.g., description, likes, comments, author) and explain pagination. It also gives practical use cases. Minor gaps include not explaining the structure of the nested author/user objects or the exact format of the response envelope.

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

Parameters3/5

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

The schema already covers all parameters with descriptions (100% coverage), and the tool description adds some context about pagination usage. However, it largely repeats the schema information without significantly deepening understanding, so it provides marginal added value.

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 searches TikTok by keyword and returns videos or users, with a list of fields. It also names specific use cases like content discovery and trend research, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides guidance on when to use the tool (content discovery, trend research, etc.) and explains pagination with nextPageToken. However, it does not explicitly contrast with sibling tools, though the distinct focus on search is implicit.

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.

  1. 4 tool updatesv0.1.0
    • First observedhasdata_tiktok_comments_getTikTokComments
    • First observedhasdata_tiktok_posts_getTikTokPosts
    • First observedhasdata_tiktok_profile_getTikTokProfile
    • First observedhasdata_tiktok_search_getTikTokSearch

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct data surface: search, profile metadata, account posts, and comments. Even though profile and posts are both keyed by username, their return shapes are clearly different, so an agent should not confuse them.

Naming Consistency5/5

Every tool follows the same strict pattern: hasdata_tiktok_<resource>_getTikTok<Resource>. The verb-first camelCase naming is applied uniformly across the entire set.

Tool Count5/5

Four tools is a focused, appropriate scope for a read-only TikTok data server. Each tool covers a distinct public-data API surface and none feel redundant.

Completeness4/5

The set covers the main public TikTok use cases: discovery via search, profile lookup, posts retrieval, and comment fetching. A direct get-video-by-ID tool is missing, but search and posts largely fill that gap.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    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
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables downloading TikTok videos and photos without watermarks, extracting metadata and analytics, and performing bulk downloads of user profiles via CLI or as an MCP server for AI assistants.
    5
    12 npm
    1
    MIT