📝

MCP User Guide

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)

  1. Go to claude.ai → Settings → Connectors
  2. Click Add custom connector
  3. Enter the server URL:
   https://mcp.cnaps.ai/mcp
  1. 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:

  1. Call upload_image (no token) → get an upload link → show it to you
  2. Call upload_image again (with token) → wait for your upload → get the file URL
  3. Call suggest_pipeline (or go straight to create_and_run_pipeline) with the task description
  4. Poll get_flow_status until 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_flow gives you full control over this graph.
  • A pipeline is a shorthand: an ordered list of model IDs. create_pipeline / create_and_run_pipeline auto-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 to create_flow only for custom wiring.

Recommended build order

  1. suggest_pipeline({ task: "..." }) — let the assistant figure out the model sequence and parameters
  2. check_pipeline_compatibility (optional, if you assembled the model list yourself) — verify it wires up
  3. dry_run_flow (optional) — preview the graph before committing
  4. create_and_run_pipeline — build and run in one step
  5. get_flow_status — poll until state: "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-SR defaults to scale_factor: 2. Specify scale_factor: 4 explicitly 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, prefer LatticeNet over PiSA-SR.

Common mistakes

  • ⚠️ Not specifying scale_factor leaves SISR-PiSA-SR at its 2x default.
  • ⚠️ Running PiSA-SR or DeblurDiff on 2K+ images can be very slow or run out of memory.
  • ⚠️ Some models require a paid plan tier — check min_required_plan via list_models or get_model.
  • ⚠️ External models (llm-claude, llm-openai, llm-gemini-*, etc.) require the corresponding provider's API key to be configured on the workspace — check with list_llm_providers first.
  • ⚠️ 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