mcpField
T
TikTok MCP Server

TikTok MCP Server

已认证精选远程服务
hasdata.com数据与分析12今天更新

关于 TikTok MCP Server

面向创作者研究的托管式 MCP 服务,可读取 TikTok 公开主页、视频和评论,并搜索创作者或视频。提供 4 种只读工具,返回结构化 JSON,无需 TikTok 开发者账号或 OAuth。

主要功能

  1. 01查询公开主页
  2. 02分页浏览账号视频
  3. 03读取评论与回复
  4. 04搜索视频或创作者
  5. 05返回结构化 JSON

适用场景

  1. 01查看创作者主页和视频记录
  2. 02按主题查找创作者并比较粉丝数
  3. 03分析视频评论及回复

MCP 相关

通过托管 HTTP 服务向 MCP 客户端提供 4 种只读 TikTok 数据工具。使用 HasData API 密钥进行访问。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.hasdata.com/mcp?apis=tiktok
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.hasdata.com/mcp?apis=tiktok需要授权
安装包
npm@hasdata/tiktok-mcp1.0.7
pypihasdata-tiktok-mcp1.0.7

工具

4
参数类型必填说明
videoIdstring是视频的数字 ID(TikTok URL 中 `/video/` 后面的数字)。
commentIdstring否提供此参数时,返回该评论的回复,而不是视频的顶级评论。
nextPageTokenstring否指定下一页令牌。请使用上一次响应返回的 `nextPageToken` 值。省略此参数可获取第一页。

详细介绍

TikTok MCP Server

一款托管式模型上下文协议(MCP)服务,为 Claude、Cursor、Windsurf 和任何其他 MCP 客户端提供 4 种只读 TikTok 工具。查询公开主页、浏览账号的视频、查看视频评论,以及搜索 TikTok 视频或创作者,并以结构化 JSON 返回结果,无需 TikTok 开发者账号或 OAuth。

它读取已退出登录的访客能够看到的公开数据。它不会登录、发布内容或以任何账号身份执行操作。

每月免费提供 1,000 个额度,无需银行卡,可调用 TikTok 100 次。

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

Glama score tool contract MCP Tools

目录

所需条件

一个 MCP 客户端,以及一个可从控制面板免费创建的 HasData API 密钥。这是一个远程服务,因此最简单的接入方式是使用 URL 和 x-api-key 标头,无需运行容器,整个流程也不需要 TikTok 开发者账号。只支持 stdio 的客户端可通过一个轻量启动器访问该服务;启动器已发布到 npm,包名为 @hasdata/tiktok-mcp,也发布到了 PyPI,包名为 hasdata-tiktok-mcp,如下所示。

快速开始

所有客户端使用相同的服务器 URL。我们已在 Claude Code 和 Claude Desktop 中亲自运行验证。其他配置块则遵循各客户端文档中针对远程服务的格式。

字段值
URLhttps://mcp.hasdata.com/mcp?apis=tiktok
传输方式HTTP,流式传输
认证标头x-api-key: HASDATA_API_KEY

支持 OAuth 的客户端可以将相同的 URL 添加为连接器,然后登录,无需在配置文件中填写密钥。

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

依次点击 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=tiktok 并登录。

对于配置文件方式,Claude Desktop 仅加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/tiktok-mcp 包就是这个启动器,它会从环境中读取密钥。将以下内容添加到 claude_desktop_config.json:

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

想用 Python 而不是 Node?将启动器替换为 PyPI 包,uvx 可以运行它,无需手动安装:

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

所有项目都使用 ~/.cursor/mcp.json,单个项目则使用 .cursor/mcp.json:

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

使用 ~/.codeium/windsurf/mcp_config.json。Windsurf 将此字段称为 serverUrl,而不是 url:

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

工作区中的 .vscode/mcp.json:

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

~/.codex/config.toml:

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

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

~/.gemini/settings.json:

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

示例提示词

这些是提示词,不是代码。粘贴其中一条,Agent 就会自行选择工具。每条都注明了所需的调用次数,因为在 MCP 中,由模型决定调用次数,每次成功调用会消耗 10 个积分。

查看 @mrbeast。获取其个人资料,然后遍历前两页视频,告诉我这些视频的播放次数中位数。

三次调用,共 30 个积分。获取个人资料需要一次调用,每页视频还需要一次调用。

搜索 TikTok 上与“冷萃咖啡”相关的创作者,按粉丝数列出前十名,并附上每个人的简介。

一次调用,共 10 个积分。用户搜索结果已包含粉丝数和简介,无需逐个获取个人资料。

这是一个视频 URL。阅读其热门评论,告诉我整体情绪倾向以及最受喜欢的三条回复。

一次调用,共 10 个积分。URL 中的数字 ID 就是评论工具所需的全部信息。

查看同一个视频,然后展开其最受喜欢的评论下方的回复。

两次调用,共 20 个积分。先获取顶层评论,再使用该评论的 ID 进行第二次调用以获取回复。

搜索“asmr”视频,然后获取播放次数最高的三条视频的作者个人资料。

四次调用,共 40 个积分。一次搜索,然后每位作者各调用一次。搜索结果中的每位作者都带有直达其个人资料端点的链接,因此 Agent 无需猜测用户名。

每翻一页都需要一次调用。对某位创作者进行审查,如果要读取个人资料并遍历五页视频,就需要六次调用,共 60 个积分。相比漫无目的地爬取数据,免费套餐更适合回答范围明确的问题。

工具

工具返回内容
hasdata_tiktok_comments_getTikTokComments根据数字视频 ID 获取公开 TikTok 视频的评论;如果提供了 commentId,则获取特定评论的回复。每次调用 10 个积分
hasdata_tiktok_posts_getTikTokPosts返回约 35 个视频的一页结果,以及一个 nextPageToken;将该令牌传回即可逐页遍历账号历史记录。每次调用 10 个积分
hasdata_tiktok_profile_getTikTokProfile根据用户名(账号名)获取公开 TikTok 个人资料,并返回昵称、简介、简介链接、头像 URL、认证/私密标记、账号创建时间,以及……。每次调用 10 个积分
hasdata_tiktok_search_getTikTokSearch按关键词搜索 TikTok,并返回视频(包括描述、话题标签、提及、点赞/评论/分享/播放次数、封面和可播放视频 URL、音乐,以及……)。每次调用 10 个积分

这四个工具均为只读。以下示例摘自真实调用,但其中的数字会随着 TikTok 更新而变化。请将它们视为数据结构示例。每个工具名称都链接到其端点参考文档,其中列出了完整字段。

示例展示的是有效载荷,而非完整响应。tools/call 结果包含一个文本块,该文本本身是含有 url、status、text 和 json 的 JSON,抓取的数据位于 json 中。在原始 JSON-RPC 响应中,路径为 result.content[0].text,解析后再访问 .json。聊天客户端会为你拆解这些内容,直接与端点交互的代码则不会。

账号名、视频 ID 和评论 ID 可以串联使用。个人资料会链接到其帖子,每个帖子都包含评论工具所需的视频 ID,而评论和搜索结果中的每位作者都带有指向其个人资料的 hasdataLink,以及指向其视频的 hasdataPostsLink。Agent 可以从关键词一路查找到创作者、视频和评论,而无需构造 URL。

获取 TikTok 个人资料

hasdata_tiktok_profile_getTikTokProfile

根据账号名获取一个公开账号。

参数类型必填说明
handlestring是用户名,可带或不带开头的 @

返回 username、nickname、biography、bioLink、verified、language、createTime、头像 URL,以及作为整数的 followers、follows、likes、videos 和 friends 计数。这些计数已解析为数值,因此 followers > 1000000 比较的是数字,而不是显示字符串。

即使账号名不存在,响应中的 requestMetadata.status 仍会设为 ok,只是不会包含 profile 对象。读取 username 或其他字段前,请先检查该对象是否存在;否则,执行 profile.username 的 Agent 会因访问空值而抛出错误。

{
  "username": "mrbeast",
  "nickname": "MrBeast",
  "verified": true,
  "biography": "Checkout My New Book!👇",
  "bioLink": "http://themostdangerousgames.com",
  "createTime": "2018-10-20T19:26:16.000Z",
  "followers": 138387571,
  "follows": 354,
  "likes": 1427086888,
  "videos": 466,
  "friends": 285
}
获取 TikTok 帖子

hasdata_tiktok_posts_getTikTokPosts

根据账号名获取该账号按时间从新到旧排列的一页视频。

参数类型必填说明
handlestring是用户名,可带或不带开头的 @
nextPageTokenstring上一条响应中的 pagination.nextPageToken。第一页请省略

每次调用会返回大约 30 个视频以及包含 hasMore 和 nextPageToken 的 pagination;将 nextPageToken 传回即可逐页遍历账号历史记录。每个视频都包含 id、description、url、duration、封面和可播放视频 URL、music,以及作为整数的 likes、comments、shares、plays、collects 和 reposts 计数。

只有带有话题标签或提及的视频才会包含 hashtags 和 mentions,其出现频率取决于账号,而非端点。抽样的信息流中,既有完全没有标记帖子的账号,也有每条帖子都带标记的账号。读取前请先检查键是否存在;如果数组缺失,则表示该账号不会添加标记。

{
  "id": "7677375185028271391",
  "description": "would you take the car or nah?",
  "url": "https://www.tiktok.com/@mrbeast/video/7677375185028271391",
  "createTime": "2026-08-23T23:36:59.000Z",
  "duration": 41,
  "likes": 129500,
  "comments": 6670,
  "shares": 2033,
  "plays": 1100000,
  "collects": 4986,
  "music": { "title": "original sound", "authorName": "MrBeast", "original": true }
}
获取 TikTok 评论

hasdata_tiktok_comments_getTikTokComments

公开视频下的评论,或某条评论下的回复。

参数类型必填说明
videoId字符串是数字 ID,即 TikTok URL 中 /video/ 后面的部分。请将其保留为字符串。该 ID 是一个 64 位数字,如果经过 JavaScript Number 处理,末尾数字可能会丢失
commentId字符串传入此参数可获取该评论的回复,而不是视频的顶级评论。由于同样的 64 位原因,该值应为字符串
nextPageToken字符串上一条响应中的令牌。获取第一页时请省略

每条评论都包含 text、likes、createTime、replyCount 和一个 author;每位作者都带有指向其个人资料的 hasdataLink,以及指向其视频的 hasdataPostsLink。pagination.total 会报告该视频的评论总数,让你在翻页前了解评论数量。replyCount 非零的评论有可获取的回复:再次调用时,将其 id 作为 commentId 传入即可。

{
  "id": "7677377150003053325",
  "text": "How could someone turn down a car",
  "createTime": "2026-08-23T23:45:06.000Z",
  "likes": 3802,
  "replyCount": 22,
  "author": {
    "username": "hohce.verggr",
    "nickname": "Sasori",
    "hasdataLink": "https://api.hasdata.com/scrape/tiktok/profile?handle=hohce.verggr",
    "hasdataPostsLink": "https://api.hasdata.com/scrape/tiktok/posts?handle=hohce.verggr"
  }
}
搜索 TikTok

hasdata_tiktok_search_getTikTokSearch

按关键词搜索视频或创作者。

参数类型必填说明
keyword字符串是要搜索的短语
type字符串默认为 video;使用 user 可搜索创作者
nextPageToken字符串上一条响应中的令牌。获取第一页时请省略

当 type: video 时,响应中会包含视频,其结构与帖子工具返回的相同,每个视频都带有作者信息。当 type: user 时,响应中会包含创作者,每位创作者都带有 username、nickname、signature(个人简介)、avatarUrl、followers,以及可用于继续查看个人资料或其视频的 hasdataLink 和 hasdataPostsLink。带有认证标记的账号还会包含 verified 标记。

{
  "username": "la.mooncoldbrew",
  "nickname": "lamoon cold brew coffee",
  "signature": "อยากได้สูตรชงเมนูไหน Comment ไว้เลยน้า",
  "followers": 48000,
  "hasdataLink": "https://api.hasdata.com/scrape/tiktok/profile?handle=la.mooncoldbrew",
  "hasdataPostsLink": "https://api.hasdata.com/scrape/tiktok/posts?handle=la.mooncoldbrew"
}

提示词和资源

该服务提供 2 个提示词,这是可供客户端直接使用的现成工作流,用户无需自行编写工具调用。

提示词功能
tiktok_trend查看 TikTok 上关于某个主题的帖子。
tiktok_profile查找公开的 TikTok 个人资料。

此外,该服务还提供一个资源,其中列出了唯一一个取值固定的参数的可接受值。读取该资源比从被拒绝的调用中了解这些取值更省力,而且不消耗额度。

参数值选择内容
type2要搜索的内容——视频或用户。默认为视频。

其 URI 为 hasdata://tiktok/type。

这两个列表均无需 API 密钥即可读取,因此客户端可在用户注册前获取它们。

错误和失败路径

客户端几乎不会从工具调用中收到 HTTP 错误代码。MCP 层会返回 200,并将失败信息放在结果中,设置 isError 为 true,并以文本说明原因。Agent 读到的是一条消息,而不是你可能预期的状态行。

密钥错误时,错误会显示为工具输出,而不是连接失败。 tools/list 接受任何非空密钥,并返回全部四个工具,因此客户端可以完成握手并显示绿色状态。随后首次工具调用会返回 isError: true,文本为 HasData API error: 401 Unauthorized。请留意这段字符串,因为此前流程中的任何环节都不会报告问题。

缺少密钥是唯一真正的 HTTP 错误。 授权会在调用任何工具前执行,连接本身会因 401 而失败。系统会附带 CORS 标头,浏览器客户端可以读取状态,而不会只收到不透明的网络错误。

参数违反工具架构时,会在发起抓取前被拒绝。 服务会返回 isError: true,文本为 MCP error -32602: Input validation error,并指出有问题的字段。不会抓取任何内容,也不会扣费。

调用成功但没有找到内容,是最容易让人困惑的情况。 如果某个句柄不存在,服务会返回普通结果,其中 requestMetadata.status 为 ok,而数据键会直接缺失。响应正文中没有任何内容表明结果为空。请检查所需字段是否存在,而不是检查是否报错。

平台拒绝的标识符会返回 400,其中 requestMetadata.status 为 error。

包含数据的结果也会附带 requestMetadata.id,在联系支持时值得引用。

定价、免费额度和限制

每次成功调用 TikTok 工具需 10 个额度。响应大小不会影响价格。获取一整页视频的费用与获取仅含一个字段的个人资料相同。

免费套餐每月提供 1,000 个额度,无需银行卡,相当于 100 次 TikTok 调用。额度会随计费周期续期,因此低用量的 Agent 可以一直使用免费套餐。

付费套餐起价为每月 $59,包含 200,000 个额度,相当于 20,000 次调用。用量越大,单价越低:入门套餐每 1,000 次调用 $2.95,Basic 为 $1.19,Growth 各档为 $0.83。当前价格请见定价页面。

套餐还会决定并发数。免费套餐允许同时处理 1 个请求,Startup 为 5 个,Basic 为 15 个,Growth 各档为 50 到 500 个。在任何无人值守的工作流中,都要妥善处理超出并发限制的情况,因为并行发起多个请求的 Agent 会比你更早触及上限。

未返回 200 的请求不会计费。成功但没有找到内容的调用仍然会计费。

工具选择

apis 查询参数决定 Agent 能看到哪些工具。工具越少,用于工具定义的上下文就越少,模型选错工具的机会也越少。

?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 失败,响应正文会列出无法识别的名称以及所有有效值。移除该参数后,同一端点会公开全部 57 个 HasData 工具。

对比

TikTok 自己的开发者计划不支持普遍读取公开内容。Research API 需要申请,且仅向有限地区内获批的学术和非营利研究人员开放。Display API 只会返回通过 OAuth 登录的账号内容。这两者都不适用于需要读取任意公开个人资料、视频或视频评论的 Agent。

官方 TikTok API此服务
访问方式通过申请使用 Research API,或通过 Display API 访问自己的账号一个密钥和一个 URL
范围获批的研究人员,或经身份验证的自己的账号任意公开个人资料、视频或搜索结果
身份验证应用审核或 OAuthx-api-key 请求头
非本人视频的评论受限支持,包括回复串
设置开发者账号和审批无
写入和私人数据通过 OAuth 发布内容并访问自己的账号数据只读,仅限公开数据

大多数其他 TikTok MCP 服务都只封装一个非官方端点。此服务覆盖了 Agent 实际会串联使用的四种读取操作:从个人资料到帖子,再到评论,另外还支持搜索,因此整个研究流程都能通过一个服务完成。

此服务不支持的功能。 不支持发布内容、发送私信、访问仅限关注者可见或私密的内容,也不支持查看非本人账号的分析数据。它只能读取未登录访客可见的内容。

常见问题

是否有官方 TikTok MCP 服务?

TikTok 没有发布官方 MCP 服务。所有选项都由第三方构建。此服务由 HasData 维护,读取公开页面,因此无需 TikTok 开发者账号。

什么是 TikTok MCP 服务?

它是一种将 TikTok 数据作为工具提供、供 AI 客户端调用的服务。客户端通过 Model Context Protocol 发送工具调用,服务获取数据并返回结构化 JSON,模型处理结果,而不会看到 HTML 页面。此服务提供四种工具,并以远程方式运行。客户端连接到一个 URL,无需启动本地进程。

我需要 TikTok API 密钥或开发者账号吗?

不需要。唯一需要的凭据是你的 HasData 密钥。无需提交开发者应用,也无需 OAuth 授权页面,因为这些工具读取的是 TikTok 公开页面,而不是 TikTok 开发者 API。

我需要自行托管或运行任何东西吗?

不需要。这是一个基于可流式传输 HTTP 的远程 MCP 服务。无需安装任何东西,无需保持容器运行,也无需重启进程。

数据是实时的还是缓存的?

数据是实时的。每次调用都会在请求时获取数据,并带有自己的 requestMetadata.id。播放量和点赞数等计数会随页面内容变化而更新。

我可以读取私密账号吗?

不可以。这些工具返回未登录访客可见的内容。私密账号的视频并非公开内容,因此不会出现在任何响应中。

我可以读取评论回复,而不只是顶层评论吗?

可以。调用评论工具时,将某条评论的 id 作为 commentId 传入,即可获取该评论的回复。评论的 replyCount 会告诉你是否有回复。

我可以将此服务与其他 HasData API 一起使用吗?

可以。apis 参数接受一个列表,使用 ?apis=tiktok,instagram 即可为你的 Agent 提供四种 TikTok 工具以及 Instagram。 移除该参数,即可获取全部内容。

合规与个人数据

HasData 只访问公开可用的数据。平台条款可能会限制自动化访问,你需要自行负责遵守相关规定。如果你收集的数据包含个人信息,请确保根据 GDPR、CCPA 或所在司法辖区的同等规定,拥有合法的处理依据。

HasData 链接

产品页面和请求构建器TikTok Scraper API
服务文档MCP 服务文档
一个服务中包含全部 57 个工具HasData/hasdata-mcp
客户端使用指南MCP 客户端和集成
我们抓取的其他所有内容TikTok Scraper API 及另外 54 个 API
套餐和积分费用套餐和积分费用
密钥和用量HasData 控制面板
npm 上的 Node 启动器@hasdata/tiktok-mcp
PyPI 上的 Python 启动器hasdata-tiktok-mcp

开发

此仓库包含远程服务的配置和文档。无需构建,也无需容器化。

test/ 中的测试会验证工具契约,这是无需提交此仓库的更改也可能发生问题的部分。测试会检查 ?apis=tiktok 是否恰好返回四个工具、每个工具是否仍声明了必需参数、工具名称是否有变化,以及所用密钥是否确实有效。最后一项检查会实际调用一个工具,耗费 10 个积分,这是为了一项能在原因正当时失败的金丝雀检查所需的成本。

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

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

同一套测试会在每次推送时于 CI 中运行,并按计划每周运行一次,因为上游工具列表可能在无人更改此仓库的情况下发生变化。失败意味着工具列表发生变化、密钥停止工作,或端点无法访问;断言消息会指出具体原因。

贡献

修正工具表格和响应示例是最有价值的贡献,因为这些内容最容易过时。请附上你发出的调用和收到的响应。来自复刻仓库的拉取请求会在不使用密钥的情况下运行测试套件;实时检查会跳过,而不会导致测试失败。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。