LamaTok — TikTok MCP
LamaTok MCP provides read-only TikTok data tools for AI assistants via the LamaTok API (requires LAMATOK_KEY).
Look up TikTok user profiles by username.
Fetch following, followers, suggested users, and playlists by username or secUid.
Retrieve media/video details by ID or TikTok URL.
List media comments and comment replies with pagination.
Get video download links/headers (with or without watermark) by ID or URL.
Get music/audio download links/headers by ID or URL.
Get hashtag info and media for a hashtag.
Paginate with count/page_id/cursor; default core set ~23 tools,
LAMATOK_TOOLS=allexposes all non-deprecated endpoints.
Provides tools for interacting with the LamaTok TikTok data API, enabling AI agents to retrieve TikTok user profiles, media info, comments, and hashtag-based video searches.
lamatok-mcp
MCP server for LamaTok — TikTok data API. Available on npm: lamatok-mcp.
Generates MCP tools from the LamaTok OpenAPI spec at startup. Tools map 1:1 to REST endpoints (GET /v1/user/by/username → get_v1_user_by_username). By default you get a core set of ~23 tools, one per task, each with a description that tells the assistant when to use it; LAMATOK_TOOLS=all exposes every non-deprecated endpoint.
Get 100 Free API Requests
Sign up with this link and get 100 free LamaTok requests — no credit card required. Enough to wire up the MCP server, try a few prompts in Claude/Cursor/Codex, and evaluate the data quality before committing.
Related MCP server: DataLikers — Instagram & TikTok MCP
Quick start
Get an API key at lamatok.com.
Add the server to your AI assistant.
Ask your assistant something like:
"Get the TikTok profile for @nasa."
"List the last 10 videos by user_id 6707206320333226502."
"Find recent TikTok videos for the hashtag
photography."
Claude Code
claude mcp add lamatok -e LAMATOK_KEY=your-api-key -- npx -y lamatok-mcpClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"lamatok": {
"command": "npx",
"args": ["-y", "lamatok-mcp"],
"env": {
"LAMATOK_KEY": "your-api-key"
}
}
}
}Cursor / Windsurf
Same shape as Claude Desktop — put the block under mcpServers in the app's MCP config file.
Zed
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"lamatok": {
"command": "npx",
"args": ["-y", "lamatok-mcp"],
"env": {
"LAMATOK_KEY": "your-api-key"
}
}
}
}OpenAI Codex
Append to ~/.codex/config.toml:
[mcp_servers.lamatok]
command = "npx"
args = ["-y", "lamatok-mcp"]
[mcp_servers.lamatok.env]
LAMATOK_KEY = "your-api-key"Tools
Tools are generated at startup from the live LamaTok OpenAPI spec. The default core set keeps one endpoint per task and drops version duplicates:
Group | Tools | Examples |
Profiles and audience | 12 |
|
Videos and comments | 4 |
|
Download links | 4 |
|
Hashtags and search | 3 |
|
Core tools carry hand-written descriptions (what the tool does, when to prefer a sibling, pagination, billing) and every tool is annotated read-only. The list lives in src/curated.ts.
Set LAMATOK_TOOLS=all to expose every non-deprecated endpoint instead — same tool names as before, so existing prompts keep working. Tool names mirror their endpoint (GET /v1/user/by/username → get_v1_user_by_username); call tools/list over MCP for the current list with parameter schemas. /sys, Legacy, and System tag groups are excluded in both modes.
Configuration
Variable | Description | Required |
| Your LamaTok access key (sent as | yes |
| Base URL. Default: | no |
| OpenAPI spec URL. Default: | no |
|
| no |
| Whitelist: only include operations with these tags (comma-separated) | no |
| Blacklist: additional tags to exclude (on top of | no |
| Per-request timeout for API calls. Default: | no |
| Timeout for the startup spec fetch. Default: | no |
| Base delay between the 3 startup spec fetch attempts. Default: | no |
| Max bytes read from each API response. Default: | no |
| Max bytes read from the OpenAPI spec. Default: | no |
Legacy, System, and /sys tags are excluded by default. Deprecated operations are also skipped.
If LAMATOK_URL points to a host other than api.lamatok.com, the server prints a warning on startup — your key will be sent there, so only use it for a self-hosted or proxied LamaTok.
Requests are sent with User-Agent: lamatok-mcp/<version>.
How it works
AI Assistant ←stdio→ lamatok-mcp ──https──> api.lamatok.com
│
└─ fetches /openapi.json once on startup,
builds one MCP tool per GET endpoint
(core set by default)Tool arguments map to the endpoint's query and path parameters. The response body is returned as-is (JSON text). Non-2xx responses are surfaced as tool errors with the HTTP status and body.
Development
git clone https://github.com/subzeroid/lamatok-mcp.git
cd lamatok-mcp
npm install
npm run build
LAMATOK_KEY=your-key node dist/index.jsRun in watch mode:
LAMATOK_KEY=your-key npm run devRun tests (unit + stdio smoke tests against a local mock server, no network/API key required):
npm testLicense
MIT
Available Tools
23 toolsget_v1_hashtag_infoARead-only
Get a TikTok hashtag (challenge) by name: pass hashtag without #. Use it to get the hashtag id that get_v1_hashtag_medias needs. Live request to TikTok, billed per call. (GET /v1/hashtag/info)
Inputs: hashtag (required).
get_v1_hashtag_mediasARead-only
List videos under a TikTok hashtag, one page per call. Pass the hashtag id (from get_v1_hashtag_info, not the name); count sets the page size (default 30) and cursor pages through. Use get_v2_search to search by free text instead. Live request to TikTok, billed per call. (GET /v1/hashtag/medias)
Inputs: id (required), count, cursor.
get_v1_media_by_idARead-only
Get a TikTok video by numeric video id. Use it when you have the id from another tool; use get_v1_media_by_url when you have a link. Returns the video object; use get_v1_media_comments_by_id for its comments. Live request to TikTok, billed per call. (GET /v1/media/by/id)
Inputs: id (required).
get_v1_media_by_urlARead-only
Get a TikTok video by its link. Use it when you have a tiktok.com URL; use get_v1_media_by_id when you already have the numeric video id. Returns the video object; pass its id to the comment tools. Live request to TikTok, billed per call. (GET /v1/media/by/url)
Inputs: url (required).
get_v1_media_comment_replies_by_idARead-only
Get replies under one comment of a TikTok video, one page per call. Use it to read a thread; use get_v1_media_comments_by_id for the top-level comments. Pass media_id and comment_id (both from the comments tool); count sets the page size and cursor pages through. Live request to TikTok, billed per call. (GET /v1/media/comment/replies/by/id)
Inputs: media_id (required), comment_id (required), count, cursor.
get_v1_media_comments_by_idARead-only
Get comments on a TikTok video, one page per call. Use get_v1_media_comment_replies_by_id for replies under one comment. Pass the video id; count sets the page size (default 30) and cursor pages through. Live request to TikTok, billed per call. (GET /v1/media/comments/by/id)
Inputs: id (required), count, cursor.
get_v1_media_music_download_by_idARead-only
Get a download link for the audio track of a TikTok video, by video id. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. Use get_v1_media_music_download_by_url when you have a link and get_v1_media_video_download_by_id for the video file. Live request to TikTok, billed per call. (GET /v1/media/music/download/by/id)
Inputs: id (required).
get_v1_media_music_download_by_urlARead-only
Get a download link for the audio track of a TikTok video, by the video's URL. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. Use get_v1_media_music_download_by_id when you have the video id and get_v1_media_video_download_by_url for the video file. Live request to TikTok, billed per call. (GET /v1/media/music/download/by/url)
Inputs: url (required).
get_v1_media_video_download_by_idARead-only
Get a download link for a TikTok video by video id. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. watermark (default true) selects the watermarked version. Use get_v1_media_video_download_by_url when you have a link and get_v1_media_music_download_by_id for the audio track only. Live request to TikTok, billed per call. (GET /v1/media/video/download/by/id)
Inputs: id (required), watermark.
get_v1_media_video_download_by_urlARead-only
Get a download link for a TikTok video by its URL. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. watermark (default true) selects the watermarked version. Use get_v1_media_video_download_by_id when you have the video id and get_v1_media_music_download_by_url for the audio track only. Live request to TikTok, billed per call. (GET /v1/media/video/download/by/url)
Inputs: url (required), watermark.
get_v1_user_by_usernameARead-only
Get a TikTok profile by username (without @). Use it first for any account; if it answers 404 ProfileUnavailable, use get_v3_user_by_username, which also returns profiles TikTok does not serve on the web. Returns the user object; take the user's secUid from it for the by-secUid tools. Live request to TikTok, billed per call. (GET /v1/user/by/username)
Inputs: username (required).
get_v1_user_followers_by_secUidARead-only
List a TikTok user's followers by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_followers_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/followers/by/secUid)
Inputs: secUid (required), count, page_id.
get_v1_user_followers_by_usernameARead-only
List a TikTok user's followers by username, one page per call. Use it when you have a handle; use get_v1_user_followers_by_secUid when you already have the secUid and get_v1_user_following_by_username for accounts the user follows. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/followers/by/username)
Inputs: username (required), count, page_id.
get_v1_user_following_by_secUidARead-only
List accounts a TikTok user follows by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_following_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/following/by/secUid)
Inputs: secUid (required), count, page_id.
get_v1_user_following_by_usernameARead-only
List accounts a TikTok user follows by username, one page per call. Use it when you have a handle; use get_v1_user_following_by_secUid when you already have the secUid and get_v1_user_followers_by_username for the user's followers. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/following/by/username)
Inputs: username (required), count, page_id.
get_v1_user_playlists_by_secUidARead-only
List a TikTok user's playlists by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_playlists_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/playlists/by/secUid)
Inputs: secUid (required), count, page_id.
get_v1_user_playlists_by_usernameARead-only
List a TikTok user's playlists by username, one page per call. Use it when you have a handle; use get_v1_user_playlists_by_secUid when you already have the secUid, and get_v2_user_medias_by_secUid for all of the user's videos. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/playlists/by/username)
Inputs: username (required), count, page_id.
get_v1_user_suggested_by_secUidARead-only
List the accounts TikTok suggests as related to a user, by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_suggested_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/suggested/by/secUid)
Inputs: secUid (required), count, page_id.
get_v1_user_suggested_by_usernameARead-only
List the accounts TikTok suggests as related to a user, by username, one page per call. Use it to find similar accounts when you have a handle; use get_v1_user_suggested_by_secUid when you already have the secUid and get_v2_search to search by keyword instead. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/suggested/by/username)
Inputs: username (required), count, page_id.
get_v2_searchARead-only
Search TikTok by keyword, one page per call. Use it when you have a topic rather than a handle, link or id; use get_v1_user_by_username for an exact handle and get_v1_hashtag_info for a hashtag. For the next page pass next_page_id from the previous response as page_id; offset is superseded and cannot page on its own. Live request to TikTok, billed per call. (GET /v2/search)
Inputs: keyword (required), count, offset, page_id.
get_v2_user_likes_by_secUidARead-only
List videos a TikTok user has liked, one page per call. Use get_v2_user_medias_by_secUid for the user's own videos. Pass the user's secUid (from the profile tool); count sets the page size and cursor pages through. Live request to TikTok, billed per call. (GET /v2/user/likes/by/secUid)
Inputs: secUid (required), count, cursor.
get_v2_user_medias_by_secUidARead-only
List a TikTok user's videos, one page per call. Use it to read an account's content; use get_v2_user_likes_by_secUid for videos the user liked and get_v1_media_by_id for one video's details. Pass the user's secUid (from the profile tool); count sets the page size and max_cursor pages through. Live request to TikTok, billed per call. (GET /v2/user/medias/by/secUid)
Inputs: secUid (required), count, max_cursor.
get_v3_user_by_usernameARead-only
Get a TikTok profile by username, including profiles TikTok does not serve on the web (the ones get_v1_user_by_username answers with 404 ProfileUnavailable). Use it as the fallback when the v1 tool fails; the response has the same shape. Live request to TikTok, billed as 1 request per call and 2-3 for a restored profile. (GET /v3/user/by/username)
Inputs: username (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Tools are mostly distinct by resource and identifier type (username vs secUid, id vs url), and descriptions explicitly cross-reference alternatives. However, the many near-duplicate pairs (e.g. following by username vs secUid, download by id vs url) require careful reading to avoid misselection.
All tool names follow a highly consistent snake_case pattern: get_<version>_<resource>_<action>_<qualifier>. The version prefixes (v1, v2, v3) are the only variation and clearly reflect API endpoints.
23 tools is on the heavy side for a single MCP server, falling into the 16-25 borderline range. While each tool maps to a distinct TikTok API endpoint, the set feels large and could overwhelm an agent without strong routing guidance.
The surface covers user profiles, relationships, playlists, media, downloads, comments, hashtags, and search well. Minor gaps exist, such as no direct user lookup by secUid and no trending/live endpoints, but core read-only TikTok workflows are supported.
Maintenance
Related MCP Connectors
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Real-time TikTok videos, profiles, comments, trends & Creative Center ads MCP. OAuth or API key.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Tokfluence's hosted MCP server connects Claude, ChatGPT, Cursor or any MCP client to the Tokfluence TikTok creator index. Give your agent a brief and it plans the search, pages through keyword and structured results, reads creators' latest posts as evidence, ranks the pool, and saves the list to your Tokfluence dashboard. For niches the index doesn't cover yet, it can start a crawl (it asks you first and shows the credit cost) or hand the brief to Ultra Search for a judged list with a tier, fit and reason for each creator. It's a remote server with nothing to install: sign in with OAuth, or use an API key. Free accounts include 50 API credits; paid plans add more. Creators whose bio states an age under 18 are always excluded.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for HikerAPI — auto-generates 100+ Instagram tools (profiles, posts, reels, stories, comments, hashtags, locations) from the live OpenAPI spec. Local stdio via npx -y hikerapi-mcp, requires only HIKERAPI_KEY.44130 npm9MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for DataLikers — 51 tools for Instagram & TikTok data: Instagram user search by demographics (gender/age/race/country/city), profiles, engagement, posts, comments, hashtags, locations, stories, business accounts; TikTok users, videos, comments, hashtags, playlists. Local stdio via npx -y datalikers-mcp, requires only DATALIKERS_API_KEY.64 npm9MIT

CutPro MCPofficial
AlicenseNot gradedqualityBmaintenanceMCP server exposing the full CutPro v1 API as 34 tools for AI clients — analyze videos, submit clipping jobs, manage clips, render, and publish posts. Supports stdio, Streamable HTTP, and OAuth 2.1.953 npm3MIT- AlicenseNot gradedqualityCmaintenanceAn MCP server that exposes FortiCNAPP (formerly Lacework) API 2.0 operations as typed, auth-aware tools generated from the API spec at startup, supporting both local stdio and remote Streamable HTTP transports.MIT