Run 100+ AI models on cnaps.ai with a single natural-language request — directly from Claude.
1. What is the CNAPS.ai MCP Server?
The Model Context Protocol (MCP) is a standardized interface that lets AI assistants call external services and tools directly. Once you connect the CNAPS.ai MCP Server, Claude can build and run CNAPS.ai's image, video, and text pipelines mid-conversation — no dashboard, no manual node-wiring.
💡 Core value Describe what you want in plain language — "upscale this photo 4x," "remove the person in the background," "extract text from this contract and summarize it" — and the assistant selects the right model(s), wires them into a pipeline, and runs it for you.
2. Quick Start (5 minutes)
Step 1: Connect the MCP Server
Claude.ai (Web)
- Go to claude.ai → Settings → Connectors
- Click Add custom connector
- Enter the server URL:
https://mcp.cnaps.ai/mcp- Complete authentication with your CNAPS.ai account when prompted.
Claude Desktop (local config)
Add the following to claude_desktop_config.json:
json
{
"mcpServers": {
"cnaps-ai": {
"url": "https://mcp.cnaps.ai/mcp",
"transport": "http"
}
}
}📁 Config file location
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json- Windows:
%APPDATA%\Claude\claude_desktop_config.json
Step 2: Your first run — natural-language upscaling
Once connected, just ask:
💬 Example prompt "Upscale this image 4x at the highest quality you can."
The assistant will typically:
- Call
upload_image(no token) → get an upload link → show it to you - Call
upload_imageagain (with token) → wait for your upload → get the file URL - Call
suggest_pipeline(or go straight tocreate_and_run_pipeline) with the task description - Poll
get_flow_statusuntil the run completes, then return the result URL
3. MCP Tool Reference
The CNAPS.ai MCP Server currently exposes 48 tools, grouped below.
Pipeline building & discovery
Tool | Description |
suggest_pipeline | Recommended first step. Turns a natural-language task (any language) into a suggested model pipeline with parameter recommendations and wiring. |
check_pipeline_compatibility | Validates that a sequence of model IDs can be wired together before creating a flow. |
find_compatible_models | Finds models that can come before/after a given model in a pipeline. |
create_pipeline | Creates a flow from a simple ordered list of model IDs — the easiest way to build a multi-model pipeline. |
create_and_run_pipeline | Creates and immediately runs a pipeline in one call. |
create_flow | Advanced flow creation with custom nodes/connections (for cases create_pipeline can't express). |
dry_run_flow | Previews the full node graph and wiring without creating anything. |
Flow lifecycle management
Tool | Description |
get_flow / list_flows | Get details on one flow / list flows in the workspace. |
update_flow | Update node parameters in an existing flow. |
update_flow_tags | Update a flow's tags. |
rename_flow | Rename a flow. |
duplicate_flow | Duplicate an existing flow. |
delete_flow / restore_flow | Move a flow to trash / restore it. |
describe_flow | Human-readable summary of what a flow does. |
validate_flow | Validate a flow before running it. |
diagnose_error | Analyzes a failed run and suggests fixes. |
optimize_flow | Analyzes a flow for performance/cost optimization opportunities. |
Execution
Tool | Description |
run_flow | Executes a flow (asynchronous). |
get_flow_status | Polls a running/completed flow for status and output URLs. |
cancel_flow | Cancels a running flow. |
run_batch / get_batch_status | Runs a flow across multiple input sets / checks batch progress. |
File I/O
Tool | Description |
upload_image | Two-step browser upload: call once to get an upload link, call again with the returned token to wait for and retrieve the file URL. This is the default way to get files from users — assistants cannot transfer chat attachments directly. |
upload_file | Uploads a file from a public URL for use as pipeline input. |
Model & parameter discovery
Tool | Description |
list_models | Lists/filters the model catalog by category, sub-category, input/output type, or tag. |
get_model | Gets full details on a specific model. |
get_model_parameters | Gets the configurable parameter schema for a model. |
list_llm_providers | Lists external LLM providers and whether the workspace has API keys configured for them. |
Community & templates
Tool | Description |
search_community | Searches publicly shared community workflows. |
get_community_post | Gets details on a community post. |
fork_community_flow | Copies a community workflow into your workspace. |
create_community_post | Publishes one of your flows to the community. |
list_templates / fork_template | Lists curated workflow templates / forks one into your workspace. |
Workspace, account & notifications
Tool | Description |
get_me | Gets your user profile. |
get_workspace_info | Gets workspace details (plan, seats, status). |
get_usage | Gets GPU usage for the workspace. |
list_api_keys / create_api_key / delete_api_key | Manages workspace API keys. |
get_notifications / get_unread_notification_count | Reads notifications. |
mark_notification_read / mark_all_notifications_read | Marks notifications as read. |
report_issue | Reports a tool failure or point of confusion to the CNAPS.ai team. |
4. Core Concepts
Flow vs. Pipeline
- A flow is the underlying workflow object — a graph of input, model, and output nodes with explicit connections.
create_flowgives you full control over this graph. - A pipeline is a shorthand: an ordered list of model IDs.
create_pipeline/create_and_run_pipelineauto-generate the input/output nodes and wire everything by matching port types (e.g., a model's image output connects to the next model's image input). Use pipelines for the vast majority of tasks; drop down tocreate_flowonly for custom wiring.
Recommended build order
suggest_pipeline({ task: "..." })— let the assistant figure out the model sequence and parameterscheck_pipeline_compatibility(optional, if you assembled the model list yourself) — verify it wires updry_run_flow(optional) — preview the graph before committingcreate_and_run_pipeline— build and run in one stepget_flow_status— poll untilstate: "completed"(or"failed")
Two-step upload pattern
Files always upload in two calls: the first call (no token) returns an upload link; the second call (with the returned token) blocks until the user finishes uploading and returns the file URL(s).
js
// Step 1: create an upload session
upload_image()
→ { upload_url: '...', token: 'abc123' }
// → show upload_url to the user
// Step 2: wait for the upload to complete
upload_image({ token: 'abc123' })
→ { file_urls: ['https://storage.../image.png'] }5. Model Catalog Highlights
The full catalog is queryable live via list_models (with category, sub_category, input_type, output_type, and tag filters) and get_model_parameters. Below is a curated overview; treat model IDs as illustrative — always confirm current parameters with get_model_parameters before assuming defaults.
Image Upscaling (Super Resolution)
Model ID | Notes |
SISR-PiSA-SR | Sharpest on-device upscaler (2x/4x). Avoid on inputs >2K — very slow. |
SISR-Swin2SR-Classical | Balanced quality/speed (2x/4x). |
SISR-SwinIR-Classical-DIV2K-M | Widest scale range: 2x/3x/4x/8x. |
SISR-LatticeNet | Lightest/fastest — best choice for large (>2K) inputs. |
Image Restoration
Model ID | Notes |
Denoise-SwinIR | Noise/grain removal, configurable noise-level preset. |
Restoration-SwinIR-Jpeg | JPEG compression-artifact removal. |
Deblur-MIMO-UNet / Deblur-MSSNet | Fast / balanced motion-blur removal. |
Deblur-DeblurDiff | Highest-quality diffusion-based deblurring; slow, avoid on >2K images. |
Colorization-DISCO | Automatic B&W photo colorization. |
Image Generation & Editing
Model ID | Notes |
Txt2Img-ZImageTurbo | Fastest text-to-image (~3s), photoreal. |
Txt2Img-FluxSchnell | High-fidelity photoreal, strong at portraits/hands. |
Txt2Img-GLMImage | Best choice when in-image text (posters, signage, logos) must render correctly. |
Txt2Img-OmniGen2 | Unified text-to-image + instruction-guided editing + multi-reference composition. |
QWEN-Image-Edit-2511 / QWEN-Image-Edit-2509-4bit | Natural-language image editing (higher fidelity / lighter VRAM footprint respectively). |
FireRed-Image-Edit-1.1 | Best identity preservation for portrait/subject edits. |
QWEN-Image-Edit-Inpaint | Prompt-driven, mask-conditioned inpainting (object/text replace). |
Inpainting-LatentDiffusion | Mask-based object removal. |
Img2Img-ControlNetXL-Canny / Img2Img-ControlNetXL-Union | Structure-guided generation (edges, depth, pose, segmentation). |
Detection, Segmentation & Classification
Model ID | Notes |
ObjDet-HuggingFace-facebook-detr-resnet-50 / ObjDet-RF-DETR-Medium | General object detection (91/80 COCO classes). |
Segmentation-SAM2 | Automatic "segment everything," no labels required. |
Segmentation-SAM3.1 | Natural-language–prompted segmentation ("person," "red car," etc.). |
Segmentation-BiRefNet | Clean single-subject cutout/background removal. |
Classification-HuggingFace-microsoft-resnet | 1000-category ImageNet classification. |
OCR & Image Understanding
Model ID | Notes |
OCR-DeepSeek-OCR-LT | Multilingual, handwriting, complex layouts. |
OCR-GLM-OCR | Best for structured documents (tables, formulas). |
OCR-PaddleOCR-Korean | Fast, GPU-free Korean printed-text OCR. |
Img2Txt-HuggingFace-Salesforce-blip-image-captioning-large | Automatic image captioning. |
ImgTxt2Txt-Qwen3.6-35B-A3B / ImgTxt2Txt-Gemma4 | Flagship-tier vision-language models for VQA and reasoning. |
Video Generation & Upscaling
Model ID | Notes |
Txt2Video-Helios-Base / Txt2Video-Helios-Distilled | On-device text/image-to-video, up to 60s (Distilled ≈2-3x faster). |
Txt2Video-Cosmos3-Nano | NVIDIA world model, up to ~8s clips with optional synced audio. |
VideoUpscaling-SeedVR2-7B / -3B | Video super-resolution up to 4K. |
VideoUpscaling-FlashVSR-v1.1 | Fast one-step 4x video upscaling. |
External (Cloud) Models — require an API key on the workspace
Model ID | Notes |
llm-claude | Claude by Anthropic — reasoning, coding, long-document analysis. |
llm-openai | GPT by OpenAI — general text generation. |
llm-gemini | Gemini by Google — multilingual, multimodal reasoning. |
llm-openai-gpt-image / llm-gemini-nano-banana-pro | Cloud image generation/editing. |
llm-openai-sora2 / llm-gemini-veo | Cloud text/image-to-video, up to 4K with audio (VEO). |
llm-gemini-video | Video understanding — transcripts, timestamps, scene summaries. |
Supporting Tool Nodes
46 additional lightweight tool nodes cover blending, masking, cropping/resizing, color adjustments, text overlay, list/frame extraction, and Shorts/Reels editing utilities (reframe to 9:16, subtitle burn-in, silence removal, cold-open hooks). These are typically inserted automatically by create_pipeline when models need to be connected through a compatible intermediate step.
6. Example Recipes
Recipe 1: 4x upscale
💬 "Upscale this photo 4x, highest quality."
1. upload_image() → upload link
2. upload_image({ token }) → file_url
3. create_and_run_pipeline({
models: ["SISR-PiSA-SR"],
parameters: { "SISR-PiSA-SR": { scale_factor: 4 } },
input_files: [file_url]
})
4. get_flow_status({ flow_id }) → result image URL⚠️SISR-PiSA-SRdefaults toscale_factor: 2. Specifyscale_factor: 4explicitly for 4x.
Recipe 2: Remove the background, keep the subject
💬 "Cut this person out with a clean transparent background."
create_and_run_pipeline({
models: ["Segmentation-BiRefNet"],
parameters: { "Segmentation-BiRefNet": { extract_foreground: true } },
input_files: [file_url]
})Recipe 3: Contract OCR → summary
💬 "Pull the text from this contract photo and summarize the key clauses in 3 lines."
create_and_run_pipeline({
models: ["OCR-DeepSeek-OCR-LT", "llm-claude"],
parameters: {
"llm-claude": {
system_prompt: "Summarize the key clauses of this contract text in 3 lines.",
model: "claude-sonnet-4-5"
}
},
input_files: [file_url]
})Recipe 4: Batch processing
💬 "Upscale all five of these photos the same way."
input_urls = ["https://.../img1.jpg", "https://.../img2.jpg", /* ... */]
run_batch({
flow_id: "my-upscale-flow",
inputs: { "1001": input_urls }
})
→ { batch_run_id: "batch_abc" }
get_batch_status({ batch_run_id: "batch_abc" })7. Tips & Common Mistakes
Model selection cheat sheet
Situation | Recommended model |
Best-quality upscale, input <2K | SISR-PiSA-SR (scale_factor: 4) |
Upscale a large (2K+) image | SISR-LatticeNet |
Balanced upscale | SISR-Swin2SR-Classical |
Fast blur removal | Deblur-MIMO-UNet |
Best-quality blur removal (<2K) | Deblur-DeblurDiff |
Korean-only printed OCR | OCR-PaddleOCR-Korean |
Multilingual/handwritten OCR | OCR-DeepSeek-OCR-LT |
In-image text (posters, signage) | Txt2Img-GLMImage |
Fastest text-to-image | Txt2Img-ZImageTurbo |
Identity-preserving portrait edit | FireRed-Image-Edit-1.1 |
Asynchronous polling pattern
All model runs are asynchronous. Poll get_flow_status after run_flow / create_and_run_pipeline until it resolves:
js
while (true) {
const status = await get_flow_status({ flow_id })
if (status.state === "completed") break
if (status.state === "failed") throw new Error(status.error)
await sleep(3000)
}💡 GPU-heavy models (QWEN Edit, DeblurDiff, video generation) can take 1-10 minutes. For 4K+ images, preferLatticeNetoverPiSA-SR.
Common mistakes
- ⚠️ Not specifying
scale_factorleavesSISR-PiSA-SRat its 2x default. - ⚠️ Running
PiSA-SRorDeblurDiffon 2K+ images can be very slow or run out of memory. - ⚠️ Some models require a paid plan tier — check
min_required_planvialist_modelsorget_model. - ⚠️ External models (
llm-claude,llm-openai,llm-gemini-*, etc.) require the corresponding provider's API key to be configured on the workspace — check withlist_llm_providersfirst. - ⚠️ Chat attachments cannot be transferred to CNAPS.ai directly — always use
upload_image/upload_file, even if the assistant can "see" the image in the conversation.
8. FAQ
Q: Can I attach an image directly in the chat?
No. MCP does not support transferring file bytes from the chat to CNAPS.ai. Always use upload_image to get an upload link, or upload_file if the file already has a public URL.
Q: How many times can I run the same flow?
As many as you like. Create it once with create_pipeline/create_flow, then reuse the same flow_id with run_flow for subsequent runs.
Q: How do I add external models like Claude, GPT, or Gemini to a pipeline?
Register the provider's API key in your workspace settings, then check availability with list_llm_providers before referencing llm-claude, llm-openai, llm-gemini, etc. as a model ID.
Q: A run failed — how do I debug it?
Check get_flow_status for state: "failed" and its error message, then call diagnose_error for a suggested fix. Common causes are GPU unavailability or input images exceeding a model's supported resolution.
Q: What's the difference between create_pipeline and create_flow?create_pipeline takes a simple ordered list of model IDs and auto-wires everything — use this for almost everything. create_flow exposes the full node/connection graph for cases that need custom wiring create_pipeline can't express.
© 2026 CNAPS.ai Inc. · mcp.cnaps.ai · cnaps.ai