tiktok_ads_loginLABSCO SUMMARY
Read-only on purpose, so an agent can analyse spend but not change it.
Nothing in the registry creates campaigns, ad groups or creatives — the surface stops at reporting and lookups, which makes it a comfortable thing to point an assistant at during a spend review. The wasted-spend audit is the one tool that goes beyond raw reporting: it walks campaigns, ad groups and the report API to surface spend and clicks with nothing to show for them.
What it is
A local MCP server for the TikTok Ads API. It runs the OAuth flow from inside your MCP client, stores the tokens on your machine, and exposes read tools for campaigns, ad groups, ads, reporting, audiences and pixels.
What you get
- Authentication from the client:
tiktok_ads_login,tiktok_ads_complete_auth,tiktok_ads_auth_status,tiktok_ads_switch_ad_account - Campaign structure:
tiktok_ads_get_campaigns,tiktok_ads_get_campaign_details,tiktok_ads_get_adgroups,tiktok_ads_get_adgroup_details,tiktok_ads_get_ads,tiktok_ads_get_ad_details - Reporting at every level:
tiktok_ads_get_campaign_performance,tiktok_ads_get_adgroup_performance,tiktok_ads_get_ad_performance, andtiktok_ads_get_audience_breakdown tiktok_ads_wasted_spend_audit— a read-only pass over spend and clicks with no conversion signal- Account and tracking data:
tiktok_ads_get_custom_audiences,tiktok_ads_get_advertiser_info,tiktok_ads_get_location_info,tiktok_ads_get_pixel_list,tiktok_ads_get_pixel_event_stats - Every listed tool is wired to a real API call — there are no placeholder tools in the registry
Requirements
Python 3.10 or newer, uv for dependencies, a TikTok For Business account with Marketing API access, and a developer app whose App ID and App Secret go into the client config as TIKTOK_APP_ID and TIKTOK_APP_SECRET. The app's redirect URI must match the one the server uses. Run the server through uv, not system Python, or the MCP client will start an interpreter without the dependencies. Tokens land in a local file under your home directory — treat it like a password.
Setup effort
Build from source — git clone https://github.com/AdsMCP/tiktok-ads-mcp-server.git
USE CASES
Finding where the budget is leaking
Run the wasted-spend audit and get the campaigns and ad groups spending with no conversion signal.
Reviewing last month's performance
Pull campaign-level metrics, then drill into the ad groups and ads that moved.
Understanding who the spend reached
Break performance down by audience dimension instead of exporting to a spreadsheet.
Checking tracking is actually firing
List the pixels on the account and read their event activity for the period.
Working across several advertiser accounts
Authenticate once, then switch the active advertiser account between questions.
20 tools
Listed in project docs. Your client may show a different list.
tiktok_ads_complete_authtiktok_ads_auth_statustiktok_ads_switch_ad_accounttiktok_ads_get_campaignstiktok_ads_get_campaign_detailstiktok_ads_get_adgroupstiktok_ads_get_adgroup_detailstiktok_ads_get_adstiktok_ads_get_ad_detailstiktok_ads_get_campaign_performancetiktok_ads_get_adgroup_performancetiktok_ads_get_ad_performancetiktok_ads_get_audience_breakdowntiktok_ads_wasted_spend_audittiktok_ads_get_custom_audiencestiktok_ads_get_advertiser_infotiktok_ads_get_location_infotiktok_ads_get_pixel_listtiktok_ads_get_pixel_event_statsBEFORE YOU INSTALL
What to know first
Tools you get
20 tools named in the project's documentation.
Requires
- uv on PATH
- Python 3.10 or later
- TIKTOK_APP_ID in your environment
- TIKTOK_APP_SECRET in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/AdsMCP/tiktok-ads-mcp-server.git
cd tiktok-ads-mcp-server
uv syncMCP Clients
Claude Desktop — macOS/Linux
{
"mcpServers": {
"tiktok-ads": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_TIKTOK_ADS_MCP_SERVER>",
"run",
"python",
"run_server.py"
],
"env": {
"TIKTOK_APP_ID": "<YOUR_TIKTOK_APP_ID>",
"TIKTOK_APP_SECRET": "<YOUR_TIKTOK_APP_SECRET>"
}
}
}
}