sketchup-mcp
Allows AI agents to directly interact with and control Sketchup for 3D modeling, scene creation, and manipulation.
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., "@sketchup-mcpCreate a simple house model with a roof"
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.
SketchupMCP - Sketchup Model Context Protocol Integration
SketchupMCP connects Sketchup to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Sketchup. This integration enables prompt-assisted 3D modeling, scene creation, and manipulation in Sketchup.
Big Shoutout to Blender MCP for the inspiration and structure.
Features
Two-way communication: Connect Claude AI to Sketchup through a TCP socket connection
Component manipulation: Create, modify, delete, and transform components in Sketchup
Material control: Apply and modify materials and colors
Scene inspection: Get detailed information about the current Sketchup scene
Selection handling: Get and manipulate selected components
Ruby code evaluation: Execute arbitrary Ruby code directly in SketchUp for advanced operations
Related MCP server: SketchupMCP
Components
The system consists of two main components:
Sketchup Extension: A Sketchup extension that creates a TCP server within Sketchup to receive and execute commands
MCP Server (
sketchup_mcp/server.py): A Python server that implements the Model Context Protocol and connects to the Sketchup extension
Installation
Python Packaging
We're using uv so you'll need to brew install uv
Sketchup Extension
Download or build the latest
.rbzfileIn Sketchup, go to Window > Extension Manager
Click "Install Extension" and select the downloaded
.rbzfileRestart Sketchup
Usage
Starting the Connection
In Sketchup, go to Extensions > SketchupMCP > Start Server
The server will start on the default port (9876)
Make sure the MCP server is running in your terminal
Using with Claude
Configure Claude to use the MCP server by adding the following to your Claude configuration:
"mcpServers": {
"sketchup": {
"command": "uvx",
"args": [
"sketchup-mcp"
]
}
}This will pull the latest from PyPI
Once connected, Claude can interact with Sketchup using the following capabilities:
Tools
get_scene_info- Gets information about the current Sketchup sceneget_selected_components- Gets information about currently selected componentscreate_component- Create a new component with specified parametersdelete_component- Remove a component from the scenetransform_component- Move, rotate, or scale a componentset_material- Apply materials to componentsexport_scene- Export the current scene to various formatseval_ruby- Execute arbitrary Ruby code in SketchUp for advanced operations
Example Commands
Here are some examples of what you can ask Claude to do:
"Create a simple house model with a roof and windows"
"Select all components and get their information"
"Make the selected component red"
"Move the selected component 10 units up"
"Export the current scene as a 3D model"
"Create a complex arts and crafts cabinet using Ruby code"
Troubleshooting
Connection issues: Make sure both the Sketchup extension server and the MCP server are running
Command failures: Check the Ruby Console in Sketchup for error messages
Timeout errors: Try simplifying your requests or breaking them into smaller steps
Technical Details
Communication Protocol
The system uses a simple JSON-based protocol over TCP sockets:
Commands are sent as JSON objects with a
typeand optionalparamsResponses are JSON objects with a
statusandresultormessage
Development
Running from source
Point your MCP client at the checkout instead of PyPI:
"mcpServers": {
"sketchup": {
"command": "uv",
"args": ["--directory", "/path/to/sketchup-mcp", "run", "python", "-m", "sketchup_mcp"]
}
}Install the extension by copying su_mcp/su_mcp.rb and su_mcp/su_mcp/ into your
SketchUp/Plugins folder. The server starts on load; the Extensions > MCP Server
menu can stop and restart it.
SKETCHUP_MCP_TIMEOUT (seconds, default 60) caps how long the client waits for a
reply, for models heavy enough to need more.
Tests
ruby test/socket_test.rbThis exercises the extension's socket layer with Sketchup stubbed out and the timer driven by hand, which makes the awkward cases cheap to check: a client that connects and says nothing, a peer that disappears mid-reply, ten clients at once, and a large reply that must not be dumped into the Ruby Console. Those first and last cases each froze Sketchup at some point, so they are worth keeping honest.
Point it at a different file to compare implementations:
MAIN_RB=/path/to/other/main.rb ruby test/socket_test.rbContributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Available Tools
10 toolscreate_componentC
Create a new component in Sketchup
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | cube | |
| position | No | ||
| dimensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotions are provided, so the description carries the full burden of behavioral disclosure. It only says 'create', which implies mutation, but does not disclose default behavior (e.g., creation of a cube), coordinate/unit conventions, what happens to the selection, or side effects on the SketchUp model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is direct and front-loaded, with no wasted words. However, the extreme terseness reads as under-specification rather than efficient completeness for a tool with three undocumented parameters and no annotation support.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers only the core purpose. With no annotations, 0% schema coverage, undocumented parameters, and no usage or behavior context, an agent would have to guess how to invoke this tool correctly. The output schema may clarify return values, but it does not compensate for missing input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three parameters but zero description coverage, and the tool description names none of them. An agent cannot determine valid values for 'type', the expected format or units for 'position' and 'dimensions', or the meaning of the defaults beyond what the schema literally states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and object: 'Create a new component in Sketchup'. It is distinct from delete_component, transform_component, and get_selection at the action level. However, it does not differentiate against the other create_* siblings like create_mortise_tenon or specify what kind of component, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus delete_component, transform_component, or the other create_* tools. The description simply restates the action without mentioning alternatives, preconditions, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dovetailC
Create a dovetail joint between two components
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| depth | No | ||
| width | No | ||
| height | No | ||
| pin_id | Yes | ||
| tail_id | Yes | ||
| offset_x | No | ||
| offset_y | No | ||
| offset_z | No | ||
| num_tails | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only states that a joint is created. It does not say whether the source components are modified irreversibly, whether a new component is produced, how pin/tail IDs relate to the two components, or what errors or side effects may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with no filler. However, for a 10-parameter tool it is under-specified, so the brevity reflects minimal information rather than a well-structured, comprehensive description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters, required IDs, no annotations, and no parameter explanations; the description leaves most of the invocation semantics to inference. The presence of an output schema reduces the need to describe return values, but it does not compensate for the missing usage and parameter context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no explicit parameter meaning, so the burden falls entirely on property names. It offers only a weak hint that pin_id and tail_id are the two components; angle, depth, width, height, offsets, and num_tails remain semantically underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Create') and resource ('dovetail joint') and clarifies the scope ('between two components'), so an agent can tell it from create_component or export_scene. It does not explicitly name sibling joint tools, but the unique joint type distinguishes it from create_mortise_tenon and create_finger_joint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over the sibling joint tools or when not to use it. The only implied context is the dovetail resource itself, and there are no exclusions, prerequisites, or alternative routing tips.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_finger_jointB
Create a finger joint (box joint) between two components
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| width | No | ||
| height | No | ||
| offset_x | No | ||
| offset_y | No | ||
| offset_z | No | ||
| board1_id | Yes | ||
| board2_id | Yes | ||
| num_fingers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It only names the primary action and does not disclose whether the operation mutates source components, how dimensions/offsets are interpreted, what happens with incompatible geometry, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states verb, object, and operands with zero filler. The parenthetical synonym adds clarity without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, zero schema descriptions, no annotations, and sibling tools for other joint types, a one-sentence purpose statement is far from sufficient. Missing parameter semantics, behavior, and usage conditions make it impossible for an agent to invoke this tool correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds almost no parameter meaning. The phrase 'between two components' hints that board1_id and board2_id identify the two boards, but depth, width, height, offsets, and num_fingers have no explained units, coordinate frames, or geometric constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create'), a specific artifact ('finger joint (box joint)'), and the operand ('between two components'). The parenthetical disambiguates the joint type and distinguishes it from sibling joinery tools like create_dovetail and create_mortise_tenon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: select this when you need a box/finger joint between two components. However, it gives no explicit when/when-not guidance, prerequisites, or pointers to sibling joinery tools, so routing is left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mortise_tenonC
Create a mortise and tenon joint between two components
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| width | No | ||
| height | No | ||
| offset_x | No | ||
| offset_y | No | ||
| offset_z | No | ||
| tenon_id | Yes | ||
| mortise_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It merely says 'Create', implying a mutation, but does not explain whether components are modified irreversibly, whether material is removed, or if any side effects occur. This is minimal transparency for a creation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the core action front-loaded and no wasted words. It is appropriately brief, though this brevity sacrifices necessary detail that could have been included, a gap already penalized in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with zero parameter documentation and no annotations, this description is far from complete. It does not explain parameter semantics, prerequisites, or behavioral effects. The existence of an output schema helps with return values, but the missing operational context remains a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter meaning. It does not clarify what depth, width, height, or offsets represent, in what units, or how mortise_id and tenon_id relate to the operation. The agent must guess parameter semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create a mortise and tenon joint between two components.' This is a clear verb+resource combination that distinguishes this tool from sibling joint-creating tools like create_dovetail and create_finger_joint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as create_dovetail or create_finger_joint, nor any mention of prerequisites like whether the components must already exist or be selected. The description leaves all usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_componentB
Delete a component by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool deletes a component, but does not disclose whether deletion is irreversible, whether child or related components are also removed, what permissions are required, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant elaboration. Every word contributes to understanding the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is minimally adequate for basic invocation. However, because it is a destructive operation and annotations are absent, the lack of information about irreversibility or cascading effects leaves a meaningful completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The phrase 'by ID' does add some meaning by indicating that the required id parameter identifies the component to delete, but it does not explain the ID format, where to obtain it, or any constraints on its value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (delete), the resource (component), and the identifying mechanism (by ID). It is also easily distinguished from sibling tools, none of which perform deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus alternatives, nor are prerequisites mentioned such as needing a valid existing component ID or whether the component must be selected. The usage context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eval_rubyB
Evaluate arbitrary Ruby code in Sketchup
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that arbitrary Ruby code is evaluated, which implies potential mutability and side effects, but it does not disclose whether the code can modify the Sketchup model, whether changes are undoable, or whether there are safety implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes meaning: 'Evaluate', 'arbitrary', 'Ruby code', and 'in Sketchup' all add essential context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary code, the description is too sparse. It lacks critical context about side effects, execution environment, error behavior, and scope of access. The presence of an output schema helps with return values, but not with the many implicit risks of arbitrary code execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. 'Arbitrary Ruby code' adds meaning to the otherwise bare 'code' parameter by defining its language and scope. However, it does not specify how the code should be structured, whether a return value is expected, or how results are returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Evaluate'), a clear resource ('arbitrary Ruby code'), and the execution context ('in Sketchup'). This immediately distinguishes it from the specialized sibling tools like create_component or set_material, which operate on specific Sketchup entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus the alternatives. There is no mention of whether it should be used as a fallback when no dedicated tool exists, or whether it is intended for advanced users only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_sceneC
Export the current scene
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | skp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says 'Export the current scene.' It does not state whether this writes a file, overwrites an existing file, returns a download, requires specific permissions, or has side effects. The agent is left without key behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words, which is good, but it is also under-specified. It provides only the bare action and fails to front-load any parameter or behavior information that would help an agent use the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and has an output schema, the description omits important context such as supported formats, default behavior, output meaning, and side effects. With one parameter and no annotations, this minimal description is not enough for an agent to confidently select and invoke the tool without external assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'format' parameter at all. The schema only provides the parameter name and a default of 'skp', so the agent is not told what formats are supported or what the default implies. The parameter name is mildly self-explanatory, but the description adds no real semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Export the current scene.' This is unambiguous and distinguishes it from the sibling tools, which are all about component creation/deletion/transformation, materials, joints, or Ruby evaluation. However, it does not explicitly contrast with any other export-like tool, so it loses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus an alternative, nor any mention of prerequisites or context such as whether a scene must be selected or active. The description simply states the action, leaving the agent to infer suitable invocation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionB
Get currently selected components
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation, but the description says nothing about error behavior when nothing is selected, return format, or side-effect guarantees beyond the verb. The output schema may cover return structure, but this is not disclosed in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero filler. It is front-loaded and appropriately sized for a zero-parameter read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters and an output schema, the minimal description is almost complete. The only missing context is an explicit read-only/no-mutation guarantee, but that is reasonably inferable from the verb 'get' and the sibling tool list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is nothing for the description to add about parameter meaning, and the schema already fully covers the empty parameter list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'get' and names the resource 'currently selected components', clearly distinguishing this read-only tool from the sibling tools which create, delete, transform, or export. It lacks a tiny bit of scope clarification (e.g., 'in the active scene'), but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool or when to prefer an alternative. While the sibling list implies it is the only read tool for the selection, that is left to inference rather than stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_materialC
Set material for a component
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| material | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Set' implies a mutating operation, but the description does not reveal whether the material is overwritten, whether validation occurs, whether the component must exist, or what errors may arise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundancy. It is easily parsed and front-loads the core action, though it may be too terse to fully support the other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-parameter setter with an output schema, this is minimally viable: an agent can infer id and material are needed. However, it lacks information about material value semantics, existence requirements, and side effects, which leaves meaningful gaps for a mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only restates the operation without explaining what 'id' refers to or what format/values 'material' accepts. The parameter names are self-descriptive at a basic level, but no additional meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('material for a component'), which distinguishes it from sibling tools like transform_component or delete_component. However, it doesn't specify how the material is identified (name, ID, path), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. While the operation seems self-evident, the context in which set_material should be preferred over other component tools is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_componentC
Transform a component's position, rotation, or scale
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| scale | No | ||
| position | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies mutation but does not state whether the transform fully replaces existing values, whether the component must already exist, or whether the operation is reversible. No errors, permissions, or side effects are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or irrelevant content. It conveys the core purpose in eight words, and every word contributes to the meaning. This is an appropriately concise and efficiently structured definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters (one required, three optional arrays) and no annotations, the description is underspecified. It lacks details about array formats, whether multiple transforms can be combined in one call, and the meaning of default null values. Though an output schema exists, key operational details remain missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers minimal compensation. It repeats the parameter names 'position', 'rotation', and 'scale' without explaining array structure, units, coordinate order, or whether rotation is Euler angles or a quaternion. This gives an agent slightly more context than the schema alone, but not enough to construct valid parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Transform') and resource ('a component'), and explicitly lists the affected properties: position, rotation, or scale. This clearly identifies the tool's function and separates it from siblings like create_component or set_material. However, it does not explicitly differentiate from alternatives or state whether it modifies an existing component versus creating a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as create_component, delete_component, or set_material. The description only states what the tool does, leaving usage conditions entirely implicit. No exclusions, prerequisites, or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.17- First observed
create_component - First observed
create_dovetail - First observed
create_finger_joint - First observed
create_mortise_tenon - First observed
delete_component - First observed
eval_ruby - First observed
export_scene - First observed
get_selection - First observed
set_material - First observed
transform_component
TDQS
Scored across 10 tools
Most tools have clearly distinct purposes (selection, CRUD, materials, export). The three joint creation tools are similar in structure and verb, differing only by joint type, which could be ambiguous for agents unfamiliar with woodworking terminology.
All tools follow a consistent verb_noun pattern using snake_case, such as create_component, delete_component, export_scene. Even eval_ruby is verb_noun, and joint tools consistently use create_<joint_type>, making the naming highly predictable.
10 tools is within the ideal 3-15 range. Each tool serves a distinct purpose, and the three joint tools represent specific sub-types rather than redundant operations. eval_ruby provides a general escape hatch, so no tool feels unnecessary.
The set covers core component lifecycle (create, delete, transform, set material), selection, scene export, and specialized joints. Missing a direct get_component or list_components operation is a minor gap, but get_selection and eval_ruby can bridge it, so most workflows are supported.
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Create projects, nodes, and tasks in UluP Spaces by conversation with Claude.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseBqualityFmaintenanceConnects Sketchup to Claude AI through the Model Context Protocol, allowing Claude to directly interact with and control Sketchup for prompt-assisted 3D modeling and scene manipulation.10409MIT
- AlicenseBqualityCmaintenanceIntegration that connects Sketchup to Claude AI through the Model Context Protocol, allowing Claude to directly interact with and control Sketchup for prompt-assisted 3D modeling, scene creation, and manipulation.1025MIT
- AlicenseBqualityDmaintenanceConnects Blender to Claude AI through the Model Context Protocol (MCP), enabling prompt-assisted 3D modeling, scene creation, and manipulation.17MIT
- AlicenseBqualityDmaintenanceEnables direct interaction and control of SketchUp through Claude AI using the Model Context Protocol and a TCP socket connection. It allows for prompt-assisted 3D modeling, component manipulation, and the execution of arbitrary Ruby code within the SketchUp environment.10MIT