Los servidores MCP brindan a los agentes de IA acceso estructurado a datos externos, pero la mayoría se entrega solo con herramientas de búsqueda web o de sistema de archivos. Agregar puntos finales de datos de TikTok permite a los agentes investigar a los creadores, analizar el rendimiento del video y monitorear las menciones de marca directamente dentro de Claude, Cursor o cualquier cliente compatible con MCP. La API de Scavio TikTok proporciona puntos finales para la búsqueda de usuarios, búsqueda de videos, datos de perfil, publicaciones de usuarios, comentarios de videos y videos hashtag, todo a través de la autenticación de token de portador. Este tutorial muestra cómo agregar definiciones de herramientas TikTok a un servidor MCP existente utilizando el patrón de registro de herramientas estándar.
Requisitos previos
- Un servidor MCP existente (Node.js o Python)
- Una clave API de Scavio con acceso a TikTok
- Comprensión básica de las definiciones de herramientas MCP
- Node.js 18+ o Python 3.10+
Guia paso a paso
Paso 1: Definir el asistente de API de TikTok
Cree una función auxiliar que maneje la autenticación y el enrutamiento al punto final de TikTok correcto. Todos los puntos finales de TikTok utilizan POST con autenticación de token de portador.
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
TIKTOK_BASE = "https://api.scavio.dev/api/v1/tiktok"
def tiktok_request(endpoint: str, payload: dict) -> dict:
r = requests.post(
f"{TIKTOK_BASE}/{endpoint}",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json=payload
)
r.raise_for_status()
return r.json()Paso 2: Registrar la herramienta de búsqueda de usuarios
Agregue una definición de herramienta que permita al agente buscar usuarios de TikTok por palabra clave. La herramienta acepta una cadena de consulta y devuelve perfiles coincidentes.
# In your MCP server tool registration:
def handle_tiktok_search_users(params: dict) -> dict:
query = params.get("query", "")
results = tiktok_request("search-users", {"query": query})
return {"content": [{"type": "text", "text": json.dumps(results, indent=2)}]}
# Register with your MCP server:
# server.add_tool(
# name="tiktok_search_users",
# description="Search TikTok users by keyword",
# input_schema={"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]},
# handler=handle_tiktok_search_users
# )Paso 3: Registrar herramientas de perfil y búsqueda de vídeos
Agregue herramientas para buscar videos por palabra clave y obtener un perfil de usuario. Estos cubren los patrones de investigación de agentes más comunes.
def handle_tiktok_search_videos(params: dict) -> dict:
results = tiktok_request("search-videos", {"query": params["query"]})
return {"content": [{"type": "text", "text": json.dumps(results, indent=2)}]}
def handle_tiktok_profile(params: dict) -> dict:
results = tiktok_request("profile", {"username": params["username"]})
return {"content": [{"type": "text", "text": json.dumps(results, indent=2)}]}
def handle_tiktok_video_comments(params: dict) -> dict:
results = tiktok_request("video-comments", {"video_id": params["video_id"]})
return {"content": [{"type": "text", "text": json.dumps(results, indent=2)}]}Paso 4: Actualice la configuración de MCP para pasar credenciales
Agregue la variable de entorno SCAVIO_API_KEY a su archivo de configuración de MCP para que el servidor tenga acceso a los puntos finales de TikTok en tiempo de ejecución.
// In .mcp.json or claude_desktop_config.json:
{
"mcpServers": {
"my-data-server": {
"command": "python",
"args": ["server.py"],
"env": {
"SCAVIO_API_KEY": "your_scavio_api_key"
}
}
}
}Ejemplo en Python
import os
import json
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
TIKTOK_BASE = "https://api.scavio.dev/api/v1/tiktok"
def tiktok_request(endpoint: str, payload: dict) -> dict:
r = requests.post(
f"{TIKTOK_BASE}/{endpoint}",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json=payload
)
r.raise_for_status()
return r.json()
def search_users(query: str) -> dict:
return tiktok_request("search-users", {"query": query})
def search_videos(query: str) -> dict:
return tiktok_request("search-videos", {"query": query})
def get_profile(username: str) -> dict:
return tiktok_request("profile", {"username": username})
def get_comments(video_id: str) -> dict:
return tiktok_request("video-comments", {"video_id": video_id})
def get_user_posts(username: str) -> dict:
return tiktok_request("user-posts", {"username": username})
if __name__ == "__main__":
users = search_users("productivity tips")
print(f"Found {len(users.get('users', []))} users")
videos = search_videos("ai tools 2026")
print(f"Found {len(videos.get('videos', []))} videos")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const BASE = "https://api.scavio.dev/api/v1/tiktok";
async function tiktokRequest(endpoint, payload) {
const res = await fetch(`${BASE}/${endpoint}`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
}
async function main() {
const users = await tiktokRequest("search-users", { query: "productivity tips" });
console.log(`Users: ${(users.users || []).length}`);
const videos = await tiktokRequest("search-videos", { query: "ai tools 2026" });
console.log(`Videos: ${(videos.videos || []).length}`);
const profile = await tiktokRequest("profile", { username: "charlidamelio" });
console.log(`Profile: ${profile.user?.nickname}`);
}
main().catch(console.error);Salida esperada
{
"users": [
{
"username": "productivityguru",
"nickname": "Productivity Guru",
"followers": 284000,
"following": 150,
"likes": 1200000,
"bio": "Daily tips to get more done"
}
]
}