tensorart-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tensorart-mcp how many credits to generate a 30-step 832x1216 image with checkpoint 123456?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tensorart-mcp
An MCP server for the Tensor.Art TAMS API. It lets Claude (Claude Code, Claude Desktop, Cursor, any MCP client) generate images on Tensor.Art with any public checkpoint or your own private LoRA, run img2img and ComfyUI workflows, and estimate credits before spending them.
Unofficial project, not affiliated with Tensor.Art. It only uses the official, documented API (TAMS docs): no scraping of the website.
Before you start: TAMS is billed on its own
TAMS credits are separate from the tensor.art website subscription (Pro/Premium credits cannot be used through
the API). TAMS gives 1,000 free credits on first login, then credits are prepaid (about $0.003 each; a 30-step image
is usually 1–2 credits). Use estimate_credits to check before generating.
Related MCP server: Photo AI Studio MCP Server
Setup
Sign in at tams.tensor.art and create an app. Note its endpoint and either an API key (Bearer) or the app id plus an RSA key pair:
openssl genrsa -out private_key.pem 2048 openssl rsa -in private_key.pem -pubout -out public_key.pem # paste public_key.pem in the app settingsInstall:
git clone https://github.com/giacomodiguida/tensorart-mcp && cd tensorart-mcp uv venv && uv pip install -e .Add it to your MCP client. Claude Code:
claude mcp add tensorart --env TAMS_ENDPOINT=https://<your-app-endpoint> --env TAMS_API_KEY=<key> \ -- /path/to/tensorart-mcp/.venv/bin/tensorart-mcpClaude Desktop (
claude_desktop_config.json):{"mcpServers": {"tensorart": { "command": "/path/to/tensorart-mcp/.venv/bin/tensorart-mcp", "env": {"TAMS_ENDPOINT": "https://<your-app-endpoint>", "TAMS_APP_ID": "<app id>", "TAMS_PRIVATE_KEY_PATH": "/path/to/private_key.pem"}}}}
Variable | Meaning |
| your app endpoint (default |
| Bearer key (simple auth) |
| path to a file containing the key (keeps it out of your MCP config) |
| signed requests (TAMS-SHA256-RSA) instead of the key |
| where images are saved (default |
| checkpoint id used when a call has no |
Tools
Tool | What it does |
| text-to-image; checkpoint + LoRAs (with |
| cost of a text-to-image job without running it |
| uploads a local image and re-renders it |
| ComfyUI-style node map ( |
| a saved Tensor.Art workflow template with field values |
| status, images, cancel |
| info on a checkpoint or LoRA id |
| upload a file, get a resource id |
Model ids are the numbers in a model page URL (tensor.art/models/<id>). For a private model, copy the
accessKey from its page and pass it (model_access_key, or access_key inside a LoRA item).
Example prompt for Claude: "Generate with tensorart: checkpoint 123…, LoRA 456… weight 1.0 access key …, 30 steps, CFG 4, 832×1216, prompt 'ohwx woman, mirror selfie…'".
Development
uv pip install -e ".[dev]" && .venv/bin/python -m pytest -qMIT license.
Available Tools
9 toolscancel_jobB
Cancel a pending or running job.
Inputs: job_id (required).
estimate_creditsA
Ask TAMS how many credits a text-to-image job would cost, without running it.
Inputs: prompt (required), count, loras, steps, +5 more.
generate_imageC
Text-to-image on Tensor.Art (TAMS).
model_id: checkpoint id (number from the model page URL). loras: list of {"id": "", "weight": 1.0, "access_key": ""}. model_access_key: for a private checkpoint. extra_diffusion: any additional DIFFUSION fields TAMS accepts (e.g. {"scheduleName": "simple", "guidance": 3.5}). With wait=True it polls until the job ends and saves the images locally.
Inputs: prompt (required), vae, seed, wait, +14 more.
get_jobC
Status of a job; with download=True saves its images locally.
Inputs: job_id (required), download.
get_modelB
Info on a model (checkpoint or LoRA) by id: type, base model, whether it can be used.
Inputs: model_id (required).
image_to_imageC
Image-to-image: uploads a local image and re-renders it with the prompt (and LoRA).
Inputs: prompt (required), image_path (required), seed, wait, +10 more.
run_workflowC
Run a ComfyUI-style workflow on TAMS. params is the node map {"": {"classType": "...", "inputs": {...}}}; private models need "access_key" in the loader inputs.
Inputs: params (required), wait, timeout_sec.
run_workflow_templateC
Run a saved Tensor.Art workflow template. fields: [{"nodeId": "27", "fieldName": "text", "fieldValue": "..."}].
Inputs: fields (required), template_id (required), wait, timeout_sec.
upload_imageA
Upload a local image to TAMS and return its resource id (for workflows or img2img).
Inputs: image_path (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Most tools target clearly distinct operations: generation (generate_image, image_to_image), workflow execution (run_workflow, run_workflow_template), and job/model management (get_job, cancel_job, get_model, upload_image, estimate_credits). The only mild overlap is run_workflow vs run_workflow_template, but descriptions distinguish raw node maps from saved templates.
All names use snake_case and mostly follow a verb_noun pattern (get_job, generate_image, estimate_credits, run_workflow, cancel_job, get_model, upload_image). image_to_image is a noun-style domain term that slightly breaks the verb_noun convention, but it's conventional and readable.
Nine tools is well within the ideal 3-15 range for an image-generation service. Each tool covers a distinct capability (generation, workflows, job control, model info, upload) without obvious redundancy.
The surface covers the core lifecycle: generate, img2img, workflows, job status/cancel, credit estimation, model info, and upload. The main gap is model/LoRA discovery—get_model requires a known id and there's no list/search tool—but agents can work around this with ids from the web UI.
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Generate AI images and videos from any compatible MCP client.
Connect Claude or any MCP client to Wireflow, the AI canvas for image, video and audio workflows. List, build, inspect and run your workflows and published apps, browse templates, check models, prices and credits, edit a video node's timeline, and plan or schedule social posts. Drafts and edits cost no credits; run tools spend the user's credits.
Generate images from Claude, ChatGPT, Cursor and Codex with 12 top AI image models. Up to 4 images per call, SVG vectorization, background removal, upscaling and image-to-video. Remote MCP with OAuth, no API keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to generate images through a local ComfyUI instance using Stable Diffusion and SDXL models via natural language. Users can trigger image generation, list available checkpoint models, and monitor the ComfyUI queue status directly from their MCP client.MIT
- AlicenseAqualityCmaintenanceEnables AI photo generation, editing, and video creation from MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.87 npmMIT
- AlicenseNot gradedqualityDmaintenanceIntegrates Leonardo AI image generation capabilities into MCP-compatible clients like Cursor, Claude Desktop, and VS Code, allowing natural language commands to generate, upscale, vary, and manage images.1MIT
- AlicenseAqualityBmaintenanceWraps OpenAI-compatible text-to-image APIs as MCP tools, enabling image generation directly from conversations in Claude Code, Codex, Cursor, or Claude Desktop using the user's own API key.61Apache 2.0