BlenderBlender and AI

Measuring Blender MCP token use: the same job three times each, and how to save

With Claude Code and the official Blender MCP, we ran 'place five cylinders' in three question styles, three times each, nine runs in all. We measured input and output tokens, time, and estimated cost, and compared with real numbers how much it helps to skip screenshot checks and to give exact values.

AZTechnology12 min read

한국어English

Based on: Claude Code 2.1.318 (model Claude Opus 5.5), Blender 5.2 LTS (screenshots from 5.2.1, English interface), the Blender Lab official MCP server and add-on 1.0.3, and the cost guide in the Claude Code Docs. Checked in November 2026. Figure 1 is a real Blender screen. Figure 2 is a chart drawn from the values measured for this guide.

Even for a tiny job like placing five cylinders with Blender MCP, the AI read 140,000 to 220,000 tokens per run. Most of that was the same content read again and again. In this guide, we ran the same job in three question styles, three times each, nine runs in all, measured the numbers, and used them to sum up how to save.

A token is the unit AI reads and writes in. Think of it as a small piece of text. AI tools count usage and price in these pieces. For more, see What tokens and context windows mean.

When you finish this guide, you will be able to do the following.

  1. Explain why one MCP job uses so many tokens.
  2. Get the token count of one run in Claude Code as numbers.
  3. Tell apart "input read from cache," "input written to cache," and "output."
  4. Use less by changing how you check and how you ask.

1. The reason it uses so many

Every time the AI calls a tool, it sends the whole conversation so far again and gets an answer. Each time Claude uses tools, another request goes out carrying the tool results. Placing cylinders calls tools a few times, such as "look at the scene → run code → check," so the system instructions, the tool list, and the earlier conversation are read again each time.

Luckily there is the prompt cache. It remembers the part already read for a while and counts it at a lower price when read again. It is like reopening a book you already borrowed instead of buying it again every time. So how much of the input is new matters more for cost than the total token count.

2. How to measure

2-1. During a conversation: /usage

Type /usage in a Claude Code conversation and the Session block shows the token count and estimated cost of the current session. This amount is an estimate computed on your PC from token counts at list price. On subscription plans such as Pro and Max, usage is included in the subscription, so this amount is not what you are billed, and the same screen shows plan usage bars separately.

The /usage screen also shows plan and account details, so cover them if you share the screen.

2-2. Measuring one run exactly: claude -p and JSON

To compare the same job several times, a mode that runs once and exits is easier than a conversation. claude -p "question" handles one question and exits, and adding --output-format json prints the token counts and estimated cost as JSON.

This is the shape of the command used in this guide (replace the work folder and config file name with your own).

claude -p "question" --output-format json `
  --strict-mcp-config --mcp-config blender_only.json `
  --allowedTools mcp__blender__execute_blender_code mcp__blender__get_objects_summary `
    mcp__blender__get_screenshot_of_window_as_image mcp__blender__get_screenshot_of_area_as_image
OptionWhat it does
-pHandles one question and exits
--output-format jsonPrints the result as JSON with usage numbers
--mcp-configReads the MCP servers for this run from a file
--strict-mcp-configUses only the servers in that file and ignores servers registered elsewhere
--allowedToolsTools that may run without asking

We used --strict-mcp-config because mixing in other MCP servers would change the conditions between runs. blender_only.json lists only the official Blender MCP server.

If the first run ends with a connection timeout: our first try ended with an answer saying the MCP server did not respond within 30 seconds. With -p, Claude Code waits for MCP servers to connect for up to MCP_TIMEOUT (30 seconds by default). After starting the server once in advance and raising the environment variable MCP_TIMEOUT to 90000 (90 seconds), all nine runs finished normally.

These are the fields to look at in the JSON (real values from run A1).

"total_cost_usd": 0.2088,
"num_turns": 5,
"duration_ms": 34833,
"usage": {
  "input_tokens": 12,
  "cache_creation_input_tokens": 17876,
  "cache_read_input_tokens": 161599,
  "output_tokens": 1671
}
FieldMeaning
input_tokensNew input not related to the cache
cache_creation_input_tokensInput newly written to the cache this time
cache_read_input_tokensInput read again from the cache
output_tokensThe AI's answer and tool calls (including thinking)
num_turnsNumber of back-and-forth turns
total_cost_usdEstimated cost at list price (USD)

3. The test: one job, three question styles

Starting point: before each run, Blender was reset to a new file (File > New > General).

The job is always the same: delete the default cube and place five cylinders along the X axis, 1 m apart. Only the question style changes.

StyleQuestion sent
A: check with a screenshot"In Blender, delete the default cube and place five cylinders in a row along the X axis, 1 m apart. When done, take a screenshot and check the result."
B: check with the object list(Same start as A) + "Instead of a screenshot, check only names and positions with get_objects_summary."
C: exact values, short answer"In Blender, delete the default cube and place five cylinders, radius 0.3 m and height 2 m, at X=0,1,2,3,4 m. Check only with get_objects_summary, not a screenshot, and answer in three lines or fewer."

We ran A1, A2, A3, B1, B2, B3, C1, C2, C3 in that order, back to back. The questions were sent in Korean; the lines above are translations.

The Blender screen after run C3. Five gray cylinders stand along the red X axis 1 m apart, and the Object tab on the right shows Cylinder_4 at Location X 4 m Figure 1. The result of run C3. Five cylinders placed at X 0 to 4 m (Blender screenshot)

Do this: pick one of the questions above, run it with the command in section 2-2, and compare the usage fields in the JSON with the table in this guide.

4. Results

RunTurnsTime (s)Total inputOf which written to cacheOutputEstimated cost (USD)
A1534.8179,48717,8761,6710.209
A2534.5181,5786,1181,6910.118
A3731.0219,2607,3501,9890.141
B1524.3175,18817,5781,7100.206
B2624.2211,5712,4811,6640.095
B3622.2211,4022,4141,5940.093
C1511.2174,81317,3287860.186
C2515.3139,4792,0831,0490.065
C3516.5174,9911,6238800.065

Total input is new input plus input written to the cache plus input read from the cache.

Two bar charts. Left: tokens per run, mostly light blue (input read from cache), with a thick dark blue part (input written to cache) only in the first runs A1, B1, and C1. Right: estimated cost, with A1, B1, and C1 high at 0.19 to 0.21 dollars and C2 and C3 lowest at 0.065 dollars Figure 2. Tokens and estimated cost for the nine runs (chart)

Do this: in the left chart of Figure 2, look at how thick the dark blue part of each bar is, and compare it with the height of the same run in the right chart. The thicker the dark blue part, the higher the cost.

5. What the numbers say

5-1. Most input is re-read

All nine runs read 140,000 to 220,000 input tokens, and 130,000 to 210,000 of those came from the cache. The AI's output was only 800 to 2,000 tokens. MCP usage depends less on how long the AI answers and more on how many turns there are and how long the conversation is that gets re-read each time.

5-2. The first run of a group costs more

A1, B1, and C1 were the first runs after the question changed. Each wrote about 17,000 tokens to the cache and cost 0.19 to 0.21 dollars. In the second and third runs of the same question, input written to the cache dropped to 1,600 to 7,000 tokens, and cost dropped to 0.065 to 0.141 dollars. Doing similar work back to back keeps the cache warm and costs less. If you come back after a long break, the cache may have expired and it can cost more again.

5-3. Screenshot checks are expensive

Comparing the second and third runs, which had similar conditions:

StyleAverage estimated costAverage timeInput written to cache
A: screenshot0.130 dollars32.8 s6,118 to 7,350
B: object list0.094 dollars23.2 s2,414 to 2,481
C: exact values + short answer0.065 dollars15.9 s1,623 to 2,083

A screenshot is an image, so it is new input every time. Switching to the object list cut cost by about 28% and time by about 10 seconds. C, with exact values and a short answer, cost about half of A.

5-4. Vague questions give shifting results

A1 shrank the cylinder radius to 0.3 m and placed them at X 0 to 4 m. A2 used a radius of 0.4 m and centered them at X −2 to 2 m. Same question, different results. With "1 m apart," default cylinders (2 m wide) would overlap, so the AI chose a size on its own each time. When the radius and positions were given, as in C, all three runs used the same radius of 0.3 m and X 0 to 4 m, and the answers were shorter. Only the height (Z) differed: C2 put them at 1 m (bottoms on the floor), while C1 and C3 used 0. Values you do not give are still chosen by the AI.

5-5. A limit of the list tool

B1's answer said that "get_objects_summary returns only name, type, selection, and visibility, not position." So it reported positions from the values it had put in the code. If you must check positions, ask for it separately, for example: "Read each cylinder's Location with code and tell me."

6. How to save, in short

MethodBasis
Check with lists and numbers; use screenshots only when needed5-3: A → B about 28% less
Put values such as size and position in the question5-3 and 5-4: C is half of A, and results stay the same
Set the answer length, such as "three lines or fewer"C's output is about half of A and B
Do similar work back to back5-2: cost drops a lot after the first run
Use /clear when moving to unrelated workOfficial guide: old conversation is re-read on every request
Turn off unused MCP servers in /mcpOfficial guide: server names and instructions enter the conversation
Use /context to see what takes up spaceOfficial guide

MCP tool definitions are loaded only when needed by default, so at first only tool names and server instructions enter the conversation. Even so, many servers take up space with just their names and instructions.

A note on reading the numbers: these values were measured on one PC, on one day, with one model. If the model, the Claude Code version, the MCP servers you have on, or the order of questions changes, the numbers change too. Use them to compare methods, and measure in your own setup. Costs are estimates at list price, not the amount billed on a subscription plan.

Practice

  1. Run question C from section 3 twice in a row on your PC, and see whether cache_creation_input_tokens is lower in the second run.
  2. Run question A, take a break of more than an hour (the cache in this test lasted one hour), run the same question again, and write down how input written to the cache changes.
  3. Run question C without only "answer in three lines or fewer," and check how much output_tokens goes up.

Common mistakes and fixes

SymptomCauseFix
A -p run ends with "the MCP server did not respond"Server startup takes longer than the default 30 secondsStart the server once in advance and raise MCP_TIMEOUT
Numbers vary a lot between runsFirst runs, and runs after a break, write to the cacheLeave out first runs and compare back-to-back runs
The /usage amount differs from the billIt is a list-price estimate, and subscriptions are counted separatelyOn a subscription, look at the plan usage bars
Same question, different sizes in the resultNo size or position in the question, so the AI chosePut the values in the question
Tools from other MCP servers get calledAll registered servers are onUse --strict-mcp-config or turn them off in /mcp

Summary

MCP usage grows with "number of turns × conversation re-read" → check with lists and numbers instead of screenshots, put values in the question and keep answers short, and do similar work back to back. The more repetition a job has, as in the previous guide Turntable renders with AI, the bigger this difference gets.

Further reading

References

KEEP EXPLORING

Read next

EEVEE render of a grey fighter-jet model sitting at an angle on a beige floor, with a shadow to the lower rightBlender
Blender and AI11 min read

Cleaning up an AI-generated 3D model in Blender: merge split points, set the size, reduce faces

Import a fighter-jet model GLB made with Meshy into Blender 5.2, read its state from the statistics, merge split points with Merge by Distance, tidy normals and smooth shading, set the size, and cut the face count to one tenth with Decimate.

A PowerShell window. Running blender-mcp through uv with --transport http --port 9191 prints Started server process, StreamableHTTP session manager started, and Uvicorn running on http://127.0.0.1:9191 (terminal screenshot)Blender
Blender and AI11 min read

Using Blender MCP with ChatGPT: custom MCP servers in ChatGPT on the web, secure tunnels, and how Codex differs

What to know when you want to use Blender MCP with GPT: why the official Blender MCP cannot plug straight into ChatGPT on the web, the two routes OpenAI's docs describe (a public HTTPS address or Secure MCP Tunnel), and how they compare with Codex, the easiest way to drive Blender with a GPT model.

A 960x540 EEVEE render. A red cube on a gray floor with a smooth gray monkey head resting on it by the tip of its chin, and a shadow falling back to the left (Blender render)Blender
Blender and AI15 min read

Ten first prompts for Blender MCP: from reading the scene to rendering, seen through the real answers

After connecting the official Blender MCP to an AI app, we sent ten first prompts in order: read, create, edit, render, and review. This guide shows what the AI did for each one and what a person still needs to check, with screenshots.

EEVEE render of a bright gold metal monkey head on a grey floor, with sharp reflections on the brows, eyeballs, and ears and an interior photo background with beige wallpaper and a dark window (Blender render)Blender
Blender and AI14 min read

Letting AI set up lights and materials: three-point lighting and PBR over MCP, compared in renders

Through the official Blender MCP, hand the three-point lighting and the gold metal and matte floor materials of a monkey head scene to AI, read the real result in the panels, and compare three EEVEE renders (default light, the AI's result, and a hand-tuned version) to learn why metal looks dull and which values are worth changing by hand.

EEVEE render of a low-poly room with two walls and a wooden floor. A bookshelf with books on its shelves at front left, a bed with a blue blanket, a pinkish rug, a desk, chair, and desk lamp under the window, and a potted plant in the right corner (Blender render)Blender
Blender and AI13 min read

Building a low-poly room with Blender MCP: the order of questions and what to fix by hand

Send five questions in one conversation through the official Blender MCP to build a low-poly room with walls, a window, furniture, props, and lights, then use the AI's notes, a check that does not change the scene, and the first render to fix the bookshelf direction, the default light left on, and a dim desk lamp by hand.

Front view of twelve fence pickets selected with an orange outline, standing at even spacing on the red X axis, with Count 6 in the Array panel of the Modifiers tab on the right (Blender screenshot)Blender
Blender and AI14 min read

Letting AI build a modifier stack: Array, Mirror, and Bevel over MCP, then fixing it by hand

Through the official Blender MCP, ask AI to stack Array, Mirror, and Bevel modifiers on one fence picket, read the real result in the Modifiers tab, and fix the picket count the AI read differently with one number. Two common mistakes, unapplied scale and the Mirror origin, are covered too.