Kling MCP Server
October 16, 2026
Table of contents
The useapi.net Kling MCP server lets an AI assistant such as Claude Code, Cursor or VS Code Copilot use Kling AI on your own Kling accounts. It is a hosted Model Context Protocol server with 44 tools: generate video from text, images, keyframes or references with Kling 4.0, v3 and Omni, make talking avatars and motion-control videos, lip-sync, add sound and extend clips, generate and enhance images, and manage elements, voices, avatars and uploads. Each tool calls the Kling API, so the same rules and limits apply. Nothing needs to be installed or hosted.
Endpoint and authorization
https://api.useapi.net/v1/kling/mcp
- Transport: Streamable HTTP.
- Authorization: your useapi.net API token in the
Authorization: Bearer …header, see Setup useapi.net. - You need at least one Kling account added with Setup Kling. Adding and removing accounts is not available over MCP: use POST /accounts or the setup page.
Setup
Replace YOUR_API_TOKEN with your useapi.net API token.
Claude Code
claude mcp add --transport http useapi-kling https://api.useapi.net/v1/kling/mcp --header "Authorization: Bearer YOUR_API_TOKEN"
Cursor
In ~/.cursor/mcp.json:
{
"mcpServers": {
"useapi-kling": {
"url": "https://api.useapi.net/v1/kling/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
VS Code
In .vscode/mcp.json:
{
"servers": {
"useapi-kling": {
"type": "http",
"url": "https://api.useapi.net/v1/kling/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Windsurf and other clients
Any client that supports remote MCP servers over HTTP with custom headers works. The usual JSON shape:
{
"mcpServers": {
"useapi-kling": {
"serverUrl": "https://api.useapi.net/v1/kling/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Some clients name the address field url instead of serverUrl.
Test it with curl
curl -s https://api.useapi.net/v1/kling/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://api.useapi.net/v1/kling/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
The first call answers with the server’s name useapi-kling and its instructions for the assistant, the second with the 44 tools.
Tools
Generations run as tasks on one Kling account. When you don’t name the account with email, the tool picks the one with the most free job slots and every answer says which account it used. Uploaded files, elements, voices, avatars and task ids belong to one account, so pass the same email when you use them.
Videos
| Tool | What it does | Main parameters |
|---|---|---|
kling_text_to_video | Generates a video from a prompt, or from custom multi-shot prompts on kling-v3-0 and kling-v4-0. | prompt, model_name, mode, duration, aspect_ratio, enable_audio, shot_N_prompt |
kling_image_to_video | Animates a start image, optionally to an end image, with Kling 4.0 keyframes in between or kling-v3-0 elements. | image, image_tail, keyframe_1..9, element_1..3, prompt, model_name, mode, duration |
kling_omni_video | Kling Omni (o1, v3 or v4): a video from a prompt with images, elements, reference videos and voices named in it as @image_1, @element_1, @video_1, @voice_1. | prompt, omni_version, image_N, element_N, video_N, voice_N, duration, mode |
kling_motion_control | Makes the person in an image perform the movement of a motion video. | imageUrl, motionUrl, model_name, mode |
kling_avatar_video | A talking-head video from an avatar or a portrait, speaking an audio file or text. | avatarId or imageUrl, audioUrl or text + speakerId, mode |
kling_lipsync | Makes the face in a video speak an audio track. | video, audio |
kling_add_sound | Generates sound effects and ambience for a video. | video |
kling_extend_video | Continues a finished video by about 5 seconds. It works on kling-v1-6 videos. | task_id, prompt |
kling_effect_video | Turns an image into a video with one of Kling’s effects. | effect, image, mode |
kling_elements_video | A video combining images and elements. | prompt, image_0..3, element_1..3, model_name |
The parameters match POST /videos/text2video, POST /videos/image2video-frames, POST /videos/omni and the other video endpoints.
Images
| Tool | What it does | Main parameters |
|---|---|---|
kling_omni_image | Omni images with up to 10 reference images and elements. | prompt, omni_version, resolution, image_N, element_N, imageCount |
kling_kolors_image | Kolors images, with reference images on v3 or subject, face and restyle references on older versions. | prompt, version, imageCount, aspect_ratio, image_N |
kling_kolors_elements_image | Combines up to 4 subjects with a scene and a style image. | prompt, subjectImage1..4, sceneImage, styleImage |
kling_virtual_try_on | Dresses a person in clothes from images. | humanImage, dressInput or upperInput / lowerInput |
kling_upscale_image | Upscales an image from a finished Kling image task. | task_id, workId |
kling_enhance_image | Improves and restores the detail of any image, to 2k or 4k. | image, resolution |
kling_recognize_faces | Finds the faces in an image. | imageReference |
Tasks and files
| Tool | What it does | Main parameters |
|---|---|---|
kling_get_task | Reads a task and its results, and with wait: true waits for it to finish. | task_id, email, wait |
kling_list_tasks | Lists an account’s recent tasks with their results. | email, contentType, pageSize |
kling_list_running | Lists the tasks still running and each account’s free job slots. | |
kling_stop_tracking | Stops tracking a stuck task and frees its slot. The task keeps running at Kling. | task_id |
kling_delete_task | Deletes every result of a finished task. | task_id, email |
kling_upload_asset | Uploads an image, video or audio file from a public https URL or as contentBase64, and returns the Kling URL to use as an input. | url or contentBase64, mimeType, email |
kling_list_uploads, kling_delete_uploads | List and delete your uploaded files. | email, contentType, ids |
kling_get_download_url | Returns a result’s file without the Kling watermark (paid Kling plans). | workId, fileType |
Elements, voices, avatars and accounts
| Tool | What it does | Main parameters |
|---|---|---|
kling_list_elements, kling_get_element, kling_create_element, kling_delete_element | Manage reusable elements: characters, props and scenes made from an image or a video. | name, coverImage or video, tag, voice |
kling_list_element_tags, kling_list_element_voices | List the tags and the voices an element can have. | email |
kling_list_voices, kling_save_voice, kling_delete_voice | List, save and delete Kling 4.0 voices for kling_omni_video v4. | audioUrl, name, voiceId |
kling_list_tts_voices, kling_text_to_speech | List the text-to-speech voices and read text aloud. | speakerId, text, speed, emotion |
kling_list_avatars, kling_create_avatar, kling_delete_avatar | List, create and delete avatars for kling_avatar_video. | imageUrl, nickname, ttsSpeaker |
kling_list_effects, kling_list_motions | List the video effects and the ready-made motion videos. | email, mine |
kling_list_accounts, kling_get_account | List your Kling accounts and read one account’s credit balance. | email |
The full input schema of every tool comes from tools/list.
Long-running work
MCP clients usually give up on a tool call after about a minute, so a tool waits up to about 50 seconds:
- An image usually finishes in that time, and the tool returns it as an image the assistant can see.
- A video takes a few minutes. The tool returns the
task_idandemail, andkling_get_taskwith both andwait: truepicks it up. Ask the assistant to keep checking until it is done. The tool reads the task when Kling’s own estimate says it may be ready.
Clients that ask for progress notifications get one about every 10 seconds while a tool waits.
Results come back as Kling CDN links, which may carry a watermark. A finished video also comes back with its cover as an image.
Example prompts
- “Make a 5-second video of a golden retriever running on a beach at sunset, the cheapest way.”
- “Upload this photo and animate it: she smiles and turns her head slowly.”
- “Make a 10-second Kling 4.0 video from these three images as keyframes.”
- “Create an element of this character, then use it in an Omni video walking through a market.”
- “Make a talking avatar from this portrait that says: ‘Welcome to our store.’”
- “How many Kling credits are left on my accounts?”
Limits and notes
- The tools use your Kling accounts and the same rules as the REST API, such as
maxJobs. Everything uses the account’s Kling credits, and prices differ a lot by model and mode, see the cost calculator on the Kling API page. - Custom connectors on claude.ai need OAuth sign-in, which this server does not support yet. Use Claude Code or another client that can send an
Authorizationheader. - A client may send up to 20 JSON-RPC requests in one batch.
- If the client sends an
MCP-Protocol-Versionheader, it must be one of the supported versions:2025-06-18,2025-03-26or2024-11-05. - Every tool call shows in your usage stats (
bot=kling) as modelmcp, with the tool name as its status, orfailed.