TikTok MCP Server
TikTok MCP Server
호스팅형 Model Context Protocol (MCP) 서버로, Claude, Cursor, Windsurf 및 기타 모든 MCP 클라이언트에 4개의 읽기 전용 TikTok 도구를 제공합니다. 공개 프로필을 조회하고, 계정의 동영상을 탐색하고, 동영상의 댓글을 읽고, TikTok에서 동영상이나 크리에이터를 검색할 수 있습니다. 모두 구조화된 JSON으로 제공되며 TikTok 개발자 계정이나 OAuth가 필요 없습니다.
로그아웃한 방문자가 볼 수 있는 공개 데이터만 읽습니다. 로그인하거나 게시하거나 계정으로 작동하지 않습니다.
https://mcp.hasdata.com/api/mcp?apis=tiktok
Contents
Related MCP server: tiktok-mcp
필요한 것
MCP 클라이언트와 대시보드에서 무료로 만들 수 있는 HasData API 키가 필요합니다. 이 서버는 원격 서버이므로 가장 간단한 방법은 URL과 x-api-key 헤더를 사용하는 것입니다. 실행할 컨테이너도 없고 어디에도 TikTok 개발자 계정이 필요 없습니다. stdio만 지원하는 클라이언트는 아래에 표시된 것처럼 npm의 @hasdata/tiktok-mcp, PyPI의 hasdata-tiktok-mcp로 게시된 얇은 런처를 통해 도달합니다.
빠른 시작
서버 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"설정(Settings)에서 커넥터(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" }
}
}
}Node 대신 Python인가요? 런처를 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/mcp_config.json. Windsurf는 이 필드를 url이 아닌 serverUrl로 부릅니다:
{
"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크레딧. 프로필이 한 번, 동영상 페이지마다 각각 한 번의 호출입니다.
"cold brew coffee" 관련 크리에이터를 TikTok에서 검색하고 팔로워 수 기준 상위 10명을 각자의 소개와 함께 순위로 보여주세요.
한 번의 호출, 10크레딧. 사용자 검색에는 이미 팔로워 수와 소개가 포함되므로 프로필별 후속 호출이 필요 없습니다.
여기 동영상 URL이 있습니다. 상위 댓글을 읽고 전반적인 반응과 가장 좋아요를 많이 받은 답글 3개를 알려주세요.
한 번의 호출, 10크레딧. URL의 숫자 id만 있으면 댓글 도구가 작동합니다.
같은 동영상에서 가장 좋아요를 많이 받은 댓글의 답글을 펼쳐 보세요.
두 번의 호출, 20크레딧. 먼저 최상위 댓글을 가져온 다음 해당 댓글의 id로 답글을 가져오는 두 번째 호출이 필요합니다.
"asmr" 동영상을 검색한 다음 조회수가 가장 높은 세 동영상의 작성자 프로필을 가져오세요.
네 번의 호출, 40크레딧. 검색 한 번, 그다음 프로필 각각 한 번입니다. 검색 결과의 모든 작성자는 프로필 엔드포인트로 바로 연결되는 링크를 포함하므로 에이전트가 핸들을 추측할 필요가 없습니다.
페이지를 넘길 때마다 호출이 소모됩니다. 프로필을 읽은 다음 동영상 5페이지를 탐색하는 크리에이터 감사는 6회 호출, 60크레딧입니다. 평가판은 개방형 크롤링보다 좁은 질문에 더 오래 사용할 수 있습니다.
도구
4개의 도구, 모두 읽기 전용입니다. 아래 샘플은 실제 호출에서 일부를 잘라낸 것이며 숫자는 TikTok 업데이트에 따라 달라집니다. 형태를 참고하세요. 각 도구 이름은 전체 필드 목록을 담은 엔드포인트 문서에 연결됩니다.
샘플은 전체 응답이 아니라 페이로드입니다. tools/call 결과에는 텍스트 블록 하나가 포함되며, 그 텍스트 자체가 url, status, text, json을 담은 JSON이고 스크랩된 데이터는 json 아래에 있습니다. 원시 JSON-RPC 응답에서 경로는 result.content[0].text를 파싱한 다음 .json입니다. 채팅 클라이언트는 이를 자동으로 풀어주지만 엔드포인트에 직접 접속하는 코드는 그렇지 않습니다.
핸들, 동영상 id, 댓글 id는 서로 연결됩니다. 프로필은 게시물로 연결되고, 각 게시물은 댓글 도구용 자체 동영상 id를 담고 있으며, 댓글과 검색 결과의 모든 작성자는 프로필로 가는 hasdataLink와 동영상으로 가는 hasdataPostsLink를 포함합니다. 에이전트는 URL을 직접 만들 필요 없이 키워드에서 크리에이터, 동영상, 댓글로 이어집니다.
Get TikTok profile
hasdata_tiktok_profile_getTikTokProfile
핸들 하나로 공개 계정 하나를 조회합니다.
매개변수 | 유형 | 필수 여부 | 참고 |
| string | 예 | 사용자 이름. 앞의 |
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
}Get TikTok posts
hasdata_tiktok_posts_getTikTokPosts
핸들로 계정의 동영상 한 페이지를 최신순으로 조회합니다.
매개변수 | 유형 | 필수 여부 | 참고 |
| string | 예 | 사용자 이름. 앞의 |
| string | 이전 응답의 |
한 번의 호출로 약 30개의 동영상과 함께 pagination이 반환됩니다. pagination에는 hasMore와 계정 기록을 한 페이지씩 탐색할 때 다시 전달하는 nextPageToken이 포함됩니다. 각 동영상에는 id, description, url, duration, 커버 및 재생 가능한 동영상 URL, music, 그리고 정수로 된 likes, comments, shares, plays, collects, reposts 수가 포함됩니다.
hashtags와mentions는 이를 사용하는 동영상에만 존재합니다. 실제 27개 동영상 페이지에서 4개는hashtags배열을, 10개는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 }
}Get TikTok comments
hasdata_tiktok_comments_getTikTokComments
공개 동영상의 댓글 또는 한 댓글 아래의 답글을 조회합니다.
매개변수 | 유형 | 필수 여부 | 참고 |
| string | 예 | 숫자 id로, TikTok URL에서 |
| string | 이 값을 전달하면 동영상의 최상위 댓글 대신 해당 댓글의 답글을 가져옵니다. | |
| string | 이전 응답의 토큰. 첫 페이지에서는 생략합니다. |
각 댓글에는 text, likes, createTime, replyCount, author가 포함되고, 모든 작성자는 프로필로 가는 hasdataLink와 동영상으로 가는 hasdataPostsLink를 포함합니다. pagination.total은 동영상의 전체 댓글 수를 알려주므로 페이지를 넘기기 전에 깊이를 알 수 있습니다. replyCount가 0이 아닌 댓글에는 답글이 있으며, 해당 댓글의 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"
}
}Search TikTok
hasdata_tiktok_search_getTikTokSearch
동영상 또는 크리에이터에 대한 키워드 검색입니다.
매개변수 | 유형 | 필수 여부 | 참고 |
| string | 예 | 검색할 문구 |
| string | 기본값은 | |
| string | 이전 응답의 토큰. 첫 페이지에서는 생략합니다. |
type: video를 사용하면 응답은 posts 도구가 반환하는 것과 같은 형태로 각각 작성자가 포함된 동영상을 담습니다. 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로 설정되고 data 키만 누락된 일반 결과로 반환됩니다. 본문 어디에도 결과가 비어 있었다는 표시는 없습니다. 오류를 검사하지 말고 필요한 필드를 검사하세요.
플랫폼이 거부하는 식별자는 400을 반환하며 requestMetadata.status는 error로 설정됩니다.
데이터를 포함하는 결과에는 지원 문의에서 인용할 만한 requestMetadata.id도 포함됩니다.
요금제, 무료 티어 및 한도
모든 TikTok 도구는 성공적인 호출당 10크레딧이 소요됩니다. 응답 크기에 따라 가격이 변하지 않습니다. 동영상 전체 페이지도 필드가 하나뿐인 프로필과 같은 비용입니다.
무료 체험판은 카드 없이 30일 동안 1,000크레딧이며, 이는 TikTok 호출 100회에 해당합니다. 그 이후에는 활성 계정의 잔액이 100 미만으로 떨어질 때마다 매일 100크레딧이 충전되므로, 트래픽이 적은 에이전트는 무료 티어에서 무기한 실행될 수 있습니다.
유료 요금제는 200,000크레딧(20,000회 호출)에 월 $49부터 시작합니다. 단가는 규모에 따라 낮아집니다. 엔트리 요금제의 1,000회 호출당 $2.45에서 Business $0.99, Growth $0.83, 그리고 최대 규모의 대용량 요금제에서는 $0.75까지입니다.
요금제는 동시 실행 수도 결정합니다. 무료 체험판은 한 번에 1개 요청, Startup은 15, Business는 30, Growth는 50, 대용량 요금제는 200~1,500입니다. 무인으로 실행되는 어떤 작업에서든 오버플로 상황을 방어적으로 처리하세요. 분기(fan-out)하는 에이전트는 여러분보다 먼저 한도에 도달하기 때문입니다.
200이 아닌 상태로 돌아온 요청은 청구되지 않습니다. 아무것도 찾지 못한 성공적인 호출도 여전히 한 번의 호출입니다.
도구 선택
apis 쿼리 매개변수는 에이전트가 보게 될 도구를 결정합니다. 도구가 적을수록 도구 정의에 소모되는 컨텍스트가 줄어들고, 모델이 잘못된 도구를 선택할 가능성도 줄어듭니다.
?apis=tiktok the four tools in this repo
?apis=tiktok,instagram a social bundle
?apis=tiktok,google_serp add Google search이 매개변수는 tiktok 같은 공급자 이름과 tiktok_search 같은 개별 API 이름을 받습니다. 철자가 틀린 이름은 무시됩니다. 모든 이름이 틀리면 요청이 400으로 실패하며, 본문에는 인식하지 못한 이름과 모든 유효한 값이 함께 나열됩니다. 매개변수를 생략하면 동일한 엔드포인트가 HasData의 57개 도구를 모두 노출합니다.
비교
TikTok 자체 개발자 프로그램은 공개 콘텐츠의 일반적인 조회를 다루지 않습니다. Research API는 신청 절차를 거쳐야 하며 제한된 지역에서 승인된 학계 및 비영리 연구자에게만 공개됩니다. Display API는 OAuth로 로그인한 계정의 콘텐츠만 반환합니다. 어느 쪽도 임의의 공개 프로필, 그 동영상들, 또는 동영상의 댓글을 읽어야 하는 에이전트에는 맞지 않습니다.
공식 TikTok API | 이 서버 | |
접근 | 신청 기반 Research API, 또는 본인 계정용 Display API | 키 하나와 URL 하나 |
범위 | 승인된 연구자, 또는 본인의 인증된 계정 | 모든 공개 프로필, 동영상 또는 검색 |
인증 | 애플리케이션 심사 또는 OAuth |
|
소유하지 않은 동영상의 댓글 | 제한됨 | 예, 답글 스레드 포함 |
설정 | 개발자 계정 및 승인 | 없음 |
쓰기 및 비공개 데이터 | OAuth를 통한 게시 및 본인 계정 데이터 | 읽기 전용, 공개 데이터만 |
대부분의 다른 TikTok MCP 서버는 단일 비공식 엔드포인트를 감쌉니다. 이 서버는 에이전트가 실제로 연쇄적으로 사용하는 네 가지 읽기 작업(프로필→게시물→댓글)과 검색까지 다루므로, 전체 리서치 과정이 하나의 서버에서 실행됩니다.
이 서버가 하지 않는 일. 게시, 직접 메시지, 팔로워 전용 또는 비공개 콘텐츠, 소유하지 않은 계정의 분석은 없습니다. 로그아웃한 방문자가 볼 수 있는 것만 읽습니다.
자주 묻는 질문
공식 TikTok MCP 서버가 있나요?
TikTok은 공식 서버를 발행하지 않습니다. 모든 옵션은 다른 누군가가 만든 것입니다. 이 서버는 HasData가 유지 관리하며 공개 페이지를 읽으므로 TikTok 개발자 계정이 필요하지 않습니다.
TikTok MCP 서버란 무엇인가요?
AI 클라이언트가 호출할 수 있는 도구로 TikTok 데이터를 노출하는 서버입니다. 클라이언트는 Model Context Protocol을 통해 도구 호출을 보내고, 서버는 데이터를 가져와 구조화된 JSON으로 반환하며, 모델은 그 결과를 가지고 작업하고 HTML 페이지는 결코 보지 않습니다. 이 서버는 네 가지 도구를 노출하며 원격으로 실행됩니다. 클라이언트는 URL에 연결할 뿐 로컬 프로세스를 시작하지 않습니다.
TikTok API 키나 개발자 계정이 필요한가요?
아니요. 유일한 자격 증명은 HasData 키입니다. 제출할 개발자 신청도, OAuth 동의 화면도 없습니다. 도구가 TikTok 개발자 API가 아닌 공개 TikTok 페이지를 읽기 때문입니다.
호스팅하거나 실행해야 할 것이 필요한가요?
아니요. 이 서버는 streamable HTTP 기반의 원격 MCP 서버입니다. 설치할 것도, 유지할 컨테이너도, 재시작할 프로세스도 없습니다.
데이터는 실시간인가요, 아니면 캐시된 것인가요?
실시간입니다. 각 호출은 요청 시점에 데이터를 가져오며 고유한 requestMetadata.id를 담습니다. 조회수나 좋아요 같은 카운터는 페이지를 따라가므로 페이지가 움직이면 함께 움직입니다.
비공개 계정을 읽을 수 있나요?
아니요. 도구는 로그아웃한 방문자가 보는 것만 반환합니다. 비공개 계정의 동영상은 공개된 것이 아니므로 어떤 응답에도 포함되지 않습니다.
최상위 댓글뿐 아니라 댓글 답글도 읽을 수 있나요?
네. 댓글의 id를 commentId로 지정해 comments 도구를 호출하면 해당 댓글의 답글이 반환됩니다. 댓글의 replyCount로 답글이 있는지 알 수 있습니다.
다른 HasData API와 함께 사용할 수 있나요?
네. apis 매개변수는 목록을 받으며, ?apis=tiktok,instagram은 에이전트에게 TikTok 도구 네 개에 Instagram을 더한 것을 제공합니다. 매개변수를 생략하면 모든 것을 얻을 수 있습니다.
규정 준수 및 개인 데이터
HasData는 공개적으로 이용 가능한 데이터에만 접근합니다. 플랫폼 약관이 자동화된 접근을 제한할 수 있으며, 규정 준수는 사용자 본인의 책임입니다. 수집하는 데이터에 개인 정보가 포함된 경우, GDPR, CCPA 또는 해당 관할 구역의 동등한 규정에 따른 적법한 근거가 있는지 확인하세요.
HasData 링크
제품 페이지 및 요청 빌더 | |
서버 문서 | |
하나의 서버에 담긴 57개 도구 | |
클라이언트 둘러보기 | |
우리가 스크레이핑하는 그 밖의 모든 것 | |
요금제 및 크레딧 비용 | |
키 및 사용량 | |
npm의 Node 런처 | |
PyPI의 Python 런처 |
개발
이 저장소는 원격 서버를 위한 구성(configuration)과 문서입니다. 빌드 단계도 없고 컨테이너화할 것도 없습니다.
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에서 실행되고, 예약에 따라 주 1회 실행됩니다. 누구도 이 저장소를 건드리지 않아도 업스트림 도구 목록이 변경될 수 있기 때문입니다. 실패는 도구 목록이 변경되었거나, 키가 작동을 멈췄거나, 엔드포인트에 도달할 수 없음을 의미하며, 단언(assertion) 메시지가 그 원인을 알려줍니다.
기여
도구 테이블과 응답 샘플에 대한 수정이 가장 유용한 기여입니다. 그것들이 시간이 지나면서 달라지는 부분이기 때문입니다. 수행한 호출과 받은 응답을 포함해 주세요. 포크에서 온 풀 리퀘스트는 키 없이 테스트 묶음을 실행하며, 실시간 검사는 빨간불이 켜지는 대신 건너뜁니다.
라이선스
MIT. LICENSE를 참조하세요.
Available Tools
4 toolshasdata_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.
| Name | Required | Description | Default |
|---|---|---|---|
| videoId | Yes | The numeric id of the video (the number after `/video/` in a TikTok URL). | |
| commentId | No | When provided, returns the replies to this comment instead of the video's top-level comments. | |
| nextPageToken | No | Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The TikTok username of the account whose videos you want to scrape, with or without the `@` symbol. | |
| nextPageToken | No | Defines 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The TikTok username of the profile you want to scrape, with or without the `@` symbol. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | What to search for — videos or users. Defaults to video. | |
| keyword | Yes | The phrase to search for on TikTok. | |
| nextPageToken | No | Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page. |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
hasdata_tiktok_comments_getTikTokComments - First observed
hasdata_tiktok_posts_getTikTokPosts - First observed
hasdata_tiktok_profile_getTikTokProfile - First observed
hasdata_tiktok_search_getTikTokSearch
TDQS
Scored across 4 tools
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.
Every tool follows the same strict pattern: hasdata_tiktok_<resource>_getTikTok<Resource>. The verb-first camelCase naming is applied uniformly across the entire set.
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.
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
Related MCP Connectors
Unified social scraper MCP — profiles, posts, videos across ~40 platforms via Streamable HTTP.
TikTok videos, profiles, hashtags, search, comments and followers as JSON. No login. $0.35/1k videos
One MCP endpoint for 414 data APIs across 90 platforms, including TikTok, Instagram, YouTube, Amazon, Xiaohongshu (RedNote) and Douyin, plus 17 web search tools and CAPTCHA solving for 52 types. Pay per call from $0.56 per 1,000 calls; failed or empty calls are not charged.
TikTok profiles, video stats and transcripts by handle or URL. No login. Pay per result.
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.1010MIT
- FlicenseBqualityDmaintenanceMCP 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-
- AlicenseAqualityBmaintenanceEnables 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.53 npm1MIT
- AlicenseAqualityAmaintenanceA hosted Model Context Protocol server providing read-only YouTube tools for search, video/channel data, and transcripts, with no Google Cloud project or API key required.4103 npm31 PyPI7MIT