Files
Dynamic-Link-Manager/.specstory/history/2026-02-19_18-53Z-blendfile-local-datablocks-analysis.md
T
2026-02-19 12:00:21 -07:00

28 KiB
Raw Blame History

Blendfile local datablocks analysis (2026-02-19 18:53Z)

User

Use blender mcp to view my scene. What is taking up space in the blendfile? Only count local datablocks and local override data, linked libraries are not stored in the blendfile itself.


Agent (model default, mode Agent)

Thought Process

The user wants me to use the Blender MCP to view their scene and find out what's taking up space in the blend file. They specifically want to count only local datablocks and local override data - not linked libraries since those are stored elsewhere.

Let me first check what MCP tools are available from the user-blender server.



Tool use: **glob_file_search** • Searched codebase "undefined" • **0** result in **1** directory

Directory: T:\Dynamic-Link-Manager\mcps\user-blender (0 file)


Thought Process

Let me try listing the directory with list_dir or read the mcps folder structure.



File not found


Tool use: **glob_file_search** • Searched codebase "undefined" • **0** result in **1** directory

Directory: T:\Dynamic-Link-Manager\mcps\user-blender (0 file)


Thought Process

The mcps folder might be in a different structure. Let me check the workspace for MCP-related files and also look for how to call Blender MCP tools.



Tool use: **ripgrep_raw_search**

Parameters:

{
  "pattern": "user-blender|blender",
  "path": "T:\\Dynamic-Link-Manager",
  "glob": "*.json",
  "caseInsensitive": false
}

Additional data:

{
  "isPruned": true,
  "pattern": "user-blender|blender",
  "path": "T:\\Dynamic-Link-Manager",
  "outputMode": "content",
  "totalFiles": 0,
  "totalMatches": 0,
  "topFiles": []
}

Status: completed


File not found


Thought Process

The user said "Use blender mcp" - the MCP servers were listed as user-blender and cursor-ide-browser. The instructions said "Browse the MCP tool descriptors in the file system" at C:\Users\Nathan.cursor\projects\t-Dynamic-Link-Manager/mcps//tools/. Let me try with the path that was in the system message - maybe the folder is there but empty or has a different structure. Let me list what's in mcps.



Tool use: **ripgrep_raw_search**

Parameters:

{
  "pattern": "call_mcp_tool|mcp",
  "path": "T:\\Dynamic-Link-Manager",
  "outputMode": "files_with_matches",
  "caseInsensitive": false
}

Additional data:

{
  "isPruned": true,
  "pattern": "call_mcp_tool|mcp",
  "path": "T:\\Dynamic-Link-Manager",
  "outputMode": "files_with_matches",
  "totalFiles": 1,
  "totalMatches": 1,
  "topFiles": [
    {
      "uri": ".specstory\\history\\2026-02-18_23-39Z-character-migrator-workflow-integration.md",
      "matchCount": 1
    }
  ]
}

Status: completed


Tool use: **web_search** • Searched web `undefined` • **1** results
Title URL Chunk
Web search results for query: Blender MCP server tools list datablocks scene Links:
1. Blender MCP Server: Headless Script Management
2. Blender Script Manager README | MCP Marketplace
3. poly-mcp/Blender-MCP-Server
4. Blender MCP Server - poly-mcp/blender-mcp-server
5. cwahlfeldt/blender-mcp

# Blender MCP Server Tools Overview

There are two main Blender MCP server implementations with different capability levels:

## Basic Script Manager (cwahlfeldt/blender-mcp)[2][5]

Tools:
- add_script(name, content) - Add new scripts
- edit_script(name, content) - Edit existing scripts
- execute_script(name, blend_file=None) - Execute scripts in headless Blender
- remove_script(name) - Remove scripts

Resources:
- scripts://list - List available scripts
- script://\{name\} - Access specific script content
- result://\{name\} - Get execution results

## Advanced Complete Server (poly-mcp/Blender-MCP-Server)[3][4]

50+ Tools across multiple categories:
- Object creation, manipulation, and transformation
- Material and shader system management
- Animation and keyframe control
- Camera and lighting setup
- Modifiers and constraints
- Physics simulations (rigid body, cloth, fluid)
- Geometry nodes and procedural generation
- File import/export operations
- Scene optimization and batch operations

Additional Features:[3][4]
- Thread-safe execution queue for concurrent operations
- Auto-dependency installation
- Real-time monitoring and statistics
- Production-ready error handling and logging
- Simple UI panel in Blender's N-panel for server control

Both servers support working with datablocks and scene data through Blender's Python API (bpy.data objects).[2][5]

Thought Process

The MCP tool descriptors were said to be in the file system at C:\Users\Nathan.cursor\projects\t-Dynamic-Link-Manager/mcps//tools/. The server name is "user-blender". So the path would be C:\Users\Nathan.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender. The glob returned 0 files - maybe the path uses forward slashes or the folder doesn't have the tool JSON files. Let me try to list resources and call a generic tool to see what's available. I'll use list_dir on the workspace to see the mcps folder.


Checking the MCP server structure and available tools:


File not found


Tool use: **glob_file_search** • Searched codebase "undefined" • **59** results in **1** directory

Directory: C:\Users\Nathan.cursor\projects\t-Dynamic-Link-Manager\mcps (59 files)

File
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\INSTRUCTIONS.md
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\SERVER_METADATA.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_profile_start.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_profile_stop.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_unlock.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_lock.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_search.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_tabs.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_take_screenshot.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\SERVER_METADATA.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_console_messages.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_network_requests.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\prompts\asset_creation_strategy.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_handle_dialog.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\import_generated_asset_hunyuan.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_resize.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hunyuan3d_model.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_drag.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_highlight.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\poll_hunyuan_job_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_hunyuan3d_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_get_bounding_box.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_is_checked.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_is_enabled.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\import_generated_asset.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\poll_rodin_job_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hyper3d_model_via_images.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_is_visible.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hyper3d_model_via_text.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_get_attribute.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_get_input_value.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\download_sketchfab_model.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_sketchfab_model_preview.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\search_sketchfab_models.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_reload.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_scroll.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_sketchfab_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_navigate_back.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_navigate_forward.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_hyper3d_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_polyhaven_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_press_key.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_wait_for.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\download_polyhaven_asset.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_hover.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\set_texture.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_select_option.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_fill.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_fill_form.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_polyhaven_categories.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\search_polyhaven_assets.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_click.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\execute_blender_code.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_viewport_screenshot.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_type.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_object_info.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_scene_info.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_navigate.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\cursor-ide-browser\tools\browser_snapshot.json

Thought Process

The user-blender MCP has tools like import_generated_asset, generate_hunyuan3d_model, etc. - these seem to be asset-generation focused. I need to find if there's a tool to run Python in Blender or get scene/datablock info. Let me list all user-blender tools and check the server metadata.



Tool use: **glob_file_search** • Searched codebase "undefined" • **22** results in **1** directory

Directory: C:\Users\Nathan.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools (22 files)

File
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\import_generated_asset_hunyuan.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hunyuan3d_model.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\poll_hunyuan_job_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_hunyuan3d_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\poll_rodin_job_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\import_generated_asset.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hyper3d_model_via_images.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\generate_hyper3d_model_via_text.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\download_sketchfab_model.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\search_sketchfab_models.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_sketchfab_model_preview.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_sketchfab_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_polyhaven_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_hyper3d_status.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\download_polyhaven_asset.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\set_texture.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_polyhaven_categories.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\search_polyhaven_assets.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\execute_blender_code.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_viewport_screenshot.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_object_info.json
../C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_scene_info.json

Tool use: **read_file_v2** • Read file: C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\SERVER_METADATA.json

Thought Process

There's execute_blender_code.json, get_scene_info.json, and get_object_info.json. Let me read those to see if I can get datablock counts and size info. get_scene_info might give scene overview; execute_blender_code would let me run custom Python to count local datablocks and override data.


Reading the schema for the tools that can inspect the scene and run code:


Tool use: **read_file_v2** • Read file: C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_scene_info.json

Tool use: **read_file_v2** • Read file: C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\execute_blender_code.json

Tool use: **read_file_v2** • Read file: C:\Users\Nathan\.cursor\projects\t-Dynamic-Link-Manager\mcps\user-blender\tools\get_object_info.json

Thought Process

I'll use get_scene_info first to get an overview, then execute_blender_code to run Python that:

  1. Iterates bpy.data and counts only local datablocks (where .library is None)
  2. Counts local override data (overrides that are stored in this file)
  3. Optionally reports approximate size or counts by type

In Blender:

  • A datablock is "local" if it's not from a library: id_data.library is None
  • Override data: bpy.data.libraries contains linked libraries; overrides are stored in the current file. I need to count override properties - in Blender 4.0+ we have bpy.types.ID.override_create and overrides live in the file. Actually "local override data" might mean the override hierarchy / override properties stored in the blend file for linked data. So:
    • Local datablocks: all id_data where .library is None
    • Local override data: could mean the override system's storage. In Blender, when you have a linked object and you override properties, that override info is stored locally. So we need datablocks that are in the override hierarchy (they might be virtual/local overrides).

Let me first get scene info to see what we're working with, then run code to count:

  1. Per-type counts of datablocks where block.library is None (or getattr(block, 'library', None) is None for types that don't have library)
  2. Override: in Blender, overrides are typically ID types that have .override_library set. So we could count override data as IDs that have override_library and are stored in this file (their override is local). Actually the user said "local override data" - meaning the override data that is stored in the blend file. So we want:
    • All IDs that are local (library is None)
    • Among those, some might be "override" type (they override a linked datablock) - the override hierarchy and property overrides are stored locally

I'll write Python that:

  1. For each bpy.data collection (objects, meshes, materials, etc.), count items where .library is None
  2. For override: count IDs that have override_library (they represent local override data)

Let me get scene info first, then run the counting code.


Fetching scene info, then running Blender Python to count only local datablocks and local override data.


Tool use: **mcp-blender-user-blender-get_scene_info**

Parameters:

{
  "tools": [
    {
      "name": "get_scene_info",
      "parameters": "{\"user_prompt\":\"View scene and report what is taking up space in the blend file; only local datablocks and local override data.\"}",
      "serverName": "blender"
    }
  ]
}

Additional data:

{
  "status": "success"
}

Result:

{
  "result": "{\"content\":[{\"type\":\"text\",\"text\":\"{\\n  \\\"name\\\": \\\"Scene\\\",\\n  \\\"object_count\\\": 3104,\\n  \\\"objects\\\": [\\n    {\\n      \\\"name\\\": \\\"Package\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.1,\\n        0.55,\\n        0.24\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Package.002\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.02,\\n        0.0,\\n        0.26\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Package.001\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.26,\\n        0.11,\\n        0.77\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Damaged-Package\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.2,\\n        -0.4,\\n        0.24\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Damaged-Package.001\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.1,\\n        -0.31,\\n        0.76\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Problem-solve_Rack\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        -0.21,\\n        -0.08,\\n        -0.0\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"staging tape\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        0.12,\\n        0.02,\\n        0.0\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Problem-Sovle_label\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        0.31,\\n        0.02,\\n        0.01\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"problem-solve_QR\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        0.32,\\n        0.66,\\n        0.01\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"Problem-Sovle_label.001\\\",\\n      \\\"type\\\": \\\"MESH\\\",\\n      \\\"location\\\": [\\n        0.11,\\n        0.04,\\n        1.85\\n      ]\\n    }\\n  ],\\n  \\\"materials_count\\\": 145\\n}\"}]}"
}

Status: completed


Thought Process

Scene has 3104 objects and 145 materials. Now I need to run execute_blender_code to count local vs linked datablocks and get override counts. I'll write Python that:

  1. Iterates all bpy.data.* collections
  2. For each datablock, check if it's local (library is None)
  3. Count overrides (id_data.override_library is not None means it's an override - but overrides can be on linked data too; the override data is stored locally). So: local datablocks = library is None. For "local override data" - in Blender, when you override a linked ID, the override is stored in the current file. So we want IDs that have override_library - those are the ones that have local override data (the override hierarchy). Let me count both.

Running Python in Blender to count local datablocks and local override data:


Tool use: **mcp-blender-user-blender-execute_blender_code**

Parameters:

{
  "tools": [
    {
      "name": "execute_blender_code",
      "parameters": "{\"user_prompt\":\"Count local datablocks and override data in blend file\",\"code\":\"import bpy\\nimport collections\\n\\n# Count local datablocks only (library is None)\\nlocal_counts = collections.defaultdict(int)\\noverride_count = 0\\noverride_by_type = collections.defaultdict(int)\\n\\nfor attr in dir(bpy.data):\\n    if attr.startswith('_'):\\n        continue\\n    coll = getattr(bpy.data, attr, None)\\n    if not hasattr(coll, 'values'):\\n        continue\\n    try:\\n        for block in coll:\\n            if getattr(block, 'library', None) is not None:\\n                continue  # skip linked\\n            local_counts[attr] += 1\\n            if getattr(block, 'override_library', None) and block.override_library:\\n                override_count += 1\\n                override_by_type[attr] += 1\\n    except (TypeError, AttributeError):\\n        pass\\n\\nlines = ['=== Local datablocks (library is None) ===']\\nfor k in sorted(local_counts.keys()):\\n    lines.append(f'{k}: {local_counts[k]}')\\nlines.append('')\\nlines.append(f'Total local datablocks: {sum(local_counts.values())}')\\nlines.append('')\\nlines.append('=== Local override data (IDs with override_library) ===')\\nfor k in sorted(override_by_type.keys()):\\n    lines.append(f'{k}: {override_by_type[k]}')\\nlines.append(f'Total with overrides: {override_count}')\\nprint('\\\\n'.join(lines))\"}",
      "serverName": "blender"
    }
  ]
}

Additional data:

{
  "status": "success"
}

Result:

{
  "result": "{\"content\":[{\"type\":\"text\",\"text\":\"Code executed successfully: === Local datablocks (library is None) ===\\nactions: 4\\narmatures: 3\\nbrushes: 44\\ncameras: 1\\ncollections: 33\\nfonts: 1\\nimages: 9\\nlibraries: 6\\nlights: 108\\nlinestyles: 1\\nmaterials: 21\\nmeshes: 19\\nnode_groups: 8\\nobjects: 3092\\nscenes: 1\\nscreens: 18\\nshape_keys: 6\\nwindow_managers: 1\\nworkspaces: 12\\nworlds: 1\\n\\nTotal local datablocks: 3389\\n\\n=== Local override data (IDs with override_library) ===\\narmatures: 3\\ncollections: 23\\nlights: 104\\nmaterials: 1\\nmeshes: 7\\nnode_groups: 1\\nobjects: 3072\\nTotal with overrides: 3211\\n\"}]}"
}

Status: completed


Thought Process

Good. So we have:

  • 3389 total local datablocks
  • 3211 of those (or overlapping) have override_library - meaning they're overriding linked data, so the override data is stored locally

The biggest contributors to local storage:

  • objects: 3092 local (and 3072 have overrides)
  • lights: 108 local (104 with overrides)
  • brushes: 44
  • collections: 33 (23 with overrides)
  • materials: 21
  • meshes: 19
  • screens: 18
  • workspaces: 12
  • images: 9
  • node_groups: 8
  • etc.

Let me also get a sense of what might be taking the most space - e.g. mesh data (verts/faces), image size, etc. I'll run another snippet to summarize size-heavy items.


Gathering what's using the most space (mesh geometry, images, etc.):


Tool use: **mcp--**

Status: loading