Skip to main content
Glama
williamcorrea23

AndroidBuilder MCP Server

AndroidBuilder MCP Server

Local Model Context Protocol server for MIT App Inventor, AndroidBuilder, Kodular, Niotron, and AppyBuilder. It connects to a Chrome/Chromium session through the Chrome DevTools Protocol and can safely inspect AIA/AIX archives offline.

The server is safe by default: read tools are available immediately, while write tools require explicit environment flags.

Tools

Tool

Mode

Notes

get_project_info

Read

Project, active screen, view, IDE type, URL

list_screens

Read

Lists available screens

switch_screen

Read/navigation

Switches active screen

get_component_tree

Read

Designer component tree

get_component_properties

Read

Selects component by name when possible

get_blocks_xml

Read

Exports Blockly XML

update_component_property

Write

Requires ANDROIDBUILDER_ALLOW_WRITE=1

add_blocks

Write

Requires ANDROIDBUILDER_ALLOW_WRITE=1

clear_blocks

Destructive

Requires ANDROIDBUILDER_ALLOW_WRITE=1 and confirm: "CLEAR_BLOCKS"

<<<<<<< Updated upstream

click_element

Unsafe fallback

Requires both write flags and confirm: "CLICK_ELEMENT"

=======

click_element

Unsafe fallback

Requires ANDROIDBUILDER_ALLOW_UNSAFE_CLICK=1 and confirm: "CLICK_ELEMENT"

Stashed changes | list_ide_tabs / select_ide_tab | Navigation | Explicit trusted-tab selection | | inspect_aia / validate_aia / diff_aia | Offline read | Safe project archive inspection | | inspect_aix / validate_aix | Offline read | Safe extension metadata inspection | | read_archive_entry | Offline read | Bounded single-entry read | | get_component_catalog / get_component_schema / search_components | Read | Provider-discovered component metadata | | get_block_diagnostics | Read | Counts, warnings, and orphaned value blocks | | take_screenshot | Read | Designer, blocks, or full-page PNG | | update_component_properties | Write | Verified sequential batch update |

All tool results include success. Errors include a stable code; mutation timeouts include outcome: "unknown" and must be verified before retrying.

Related MCP server: Chrome DevTools MCP

Requirements

  • Node.js >=22.12

  • Chrome or Chromium launched with remote debugging enabled

chrome.exe --remote-debugging-port=9222

Open your App Inventor-family IDE and load the project in that Chrome session.

Install

npm install
npm run build

Run the server:

node dist/index.js

MCP Config

Use .mcp.json in this repository for local development:

{
  "mcpServers": {
    "androidbuilder-mcp": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "BROWSER_DEBUG_PORT": "9222",
        "ANDROIDBUILDER_ALLOW_WRITE": "0"
      }
    }
  }
}

For clients that do not resolve relative paths from the repository root, replace dist/index.js with an absolute path.

Environment

Variable

Default

Description

BROWSER_DEBUG_PORT

9222

Chrome remote debugging port

EVAL_TIMEOUT_MS

15000

Max time for page evaluation

ANDROIDBUILDER_DEBUG

0

Verbose stderr logging

ANDROIDBUILDER_ALLOW_WRITE

0

Enables property/block mutations

ANDROIDBUILDER_ALLOW_UNSAFE_CLICK

0

Enables arbitrary CSS click fallback

ANDROIDBUILDER_PROJECT_ROOT

empty

Dedicated root for relative AIA/AIX paths

BLOCKLY_XML_MAX_BYTES

1048576

Maximum Blockly XML mutation size

Multi-IDE compatibility

<<<<<<< Updated upstream The server recognizes IDEs by exact hostname and exposes provider capabilities and a validated flag through get_project_info. Providers currently share conservative GWT/Blockly fallbacks; AppyBuilder is read-only. A recognized provider is not automatically validated—run live contract tests against a disposable project before advertising production support.

The server recognizes IDEs by exact hostname and exposes provider capabilities and a validated flag through get_project_info. MIT App Inventor, AndroidBuilder, Kodular, and Niotron adapters use isolated strategies; AppyBuilder is experimental and read-only. A recognized provider is not automatically considered validated—run the live contract suite against a disposable project before advertising production support.

Stashed changes

Codex, Claude, and Antigravity

  • Codex plugin manifest: .codex-plugin/plugin.json

  • Portable MCP config: .mcp.json

  • Open Agent Skill: skills/androidbuilder-mcp/SKILL.md

See docs/compatibility.md for client-specific setup notes.

Comparison with appinventor-mcp

The useful transport-independent features from rhyumiranda/appinventor-mcp were adapted to the existing CDP bridge. See docs/appinventor-mcp-comparison.md for the architectural comparison, adopted features, and rejected high-risk RPC mutations.

Development

npm run build
npm test
npm pack --dry-run

npm test builds the server, runs a real MCP SDK smoke test, verifies write tools are gated, checks the no-Chrome error path, and validates package metadata.

Troubleshooting

  • Failed to connect to Chrome CDP: start Chrome with --remote-debugging-port=9222.

  • No active AndroidBuilder/App Inventor tab found: open a project in the debug Chrome session.

  • Component tree (.gwt-Tree) not found: switch to Designer view.

  • Blockly is not available: switch to Blocks view.

  • Write tool rejected: restart the MCP server with ANDROIDBUILDER_ALLOW_WRITE=1.

Recognized IDEs

  • AndroidBuilder

  • MIT App Inventor 2

  • MIT App Inventor Code

  • Niotron

  • Kodular

  • AppyBuilder

License

MIT

Available Tools

10 tools
add_blocksA

Injects Blockly XML blocks into the Blocks workspace. Validates the XML before injection to prevent silent failures. Requires the IDE to be in Blocks view.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlStringYesBlockly XML string (must be valid XML starting with <xml> or <block>)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It discloses validation behavior ('Validates the XML before injection to prevent silent failures') and a prerequisite, but omits details like whether blocks are appended or overwritten, and what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy. The action verb is first, and every sentence adds value: purpose, validation behavior, prerequisites.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a single-parameter tool but lacks details about return values or confirmation, especially since no output schema exists. It covers purpose, validation, and prerequisite.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with explicit parameter description. The description adds 'Validates the XML before injection', reinforcing the parameter's requirement but not significantly extending meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'injects' and the resource 'Blockly XML blocks into the Blocks workspace', distinguishing it from siblings like get_blocks_xml (retrieve) and clear_blocks (remove). It also adds context about validation and a prerequisite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a clear prerequisite ('Requires the IDE to be in Blocks view'), guiding when to use the tool. It does not explicitly list alternatives, but the purpose clarity implicitly differentiates it from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_blocksA

Clears ALL blocks from the current Blockly workspace. This action cannot be undone via MCP. Requires Blocks view.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the scope (all blocks), irreversibility, and precondition (Blocks view). However, it doesn't mention any side effects like undo history or events.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two short sentences. The main action is front-loaded, and every sentence adds value with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description adequately covers the essential aspects: what it does, irreversibility, and a precondition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description adds meaning by specifying 'ALL blocks' and 'current workspace', clarifying the scope of the operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it clears ALL blocks from the current Blockly workspace, using a specific verb and resource. It distinguishes itself from sibling tools like add_blocks or get_blocks_xml.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by warning that the action cannot be undone via MCP and requires Blocks view, but does not explicitly mention when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_elementA

Clicks an arbitrary element on the IDE page using a CSS selector. Useful as a last-resort fallback for IDE actions not covered by other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector of the element to click

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must fully disclose behavior. It only states it clicks an element, but does not mention whether it waits, what happens on failure, or if it triggers navigation or destructive actions. Lacks important behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the core purpose and usage context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one parameter and no output schema, the description covers basic purpose and guidance. However, it lacks information on return value or behavior in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the 'selector' parameter. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool clicks an arbitrary element using a CSS selector, and distinguishes itself as a fallback for actions not covered by other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says it's a last-resort fallback, implying use only when other tools cannot cover the action. Provides clear context for when to use, though does not enumerate specific exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blocks_xmlA

Exports the entire current Blockly workspace as a pretty-printed XML string. Use this to read existing blocks or back them up. Requires Blocks view.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses export behavior, pretty-printing, and prerequisite. Does not mention side effects (none expected) or return details, but sufficient for a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first explains function, second adds usage and prerequisite. No redundancy, well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless export tool, the description covers what it does, why to use it, and a prerequisite. No output schema needed, but the return value is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; description adds value by explaining the output (XML string) and purpose. Baseline 4 for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports the entire Blockly workspace as a pretty-printed XML string, with verb 'Exports', resource 'Blockly workspace', and output format. It distinguishes from siblings like add_blocks and clear_blocks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides usage context: 'Use this to read existing blocks or back them up' and mentions prerequisite 'Requires Blocks view.' Lacks explicit when-not-to-use or alternative names, but adequate for a single-purpose tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_propertiesA

Reads all visible property values for a component from the Properties sidebar panel. You must click the component in the Designer first to populate the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the component (e.g. Button1)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it reads visible properties from a UI panel that requires prior user interaction. No annotations provided, so description carries the burden; it adequately conveys read-only behavior and state dependency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy. First sentence states purpose, second adds critical usage condition. Highly efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers purpose, prerequisite, and data source. Missing details on return format or error states, but not necessary for effective use given low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for componentName. Description adds no extra parameter details beyond the schema, which is acceptable; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool reads property values for a component from the Properties sidebar. It distinguishes from siblings like update_component_property (write) and get_component_tree (tree structure) by specifying the action and source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear prerequisite: the component must be clicked in the Designer first. This tells the agent when the tool can be invoked. No explicit when-not-to-use or alternatives, but guidance is sufficient for a straightforward tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_treeA

Returns the full component hierarchy from the Designer view as a tree of {name, type, uid, children}. Requires the IDE to be in Designer view.

ParametersJSON Schema
NameRequiredDescriptionDefault
screenNameNoOptional screen name to inspect (defaults to active screen)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adequately discloses the tool's read-only behavior, the output format, and the required IDE state. However, it does not detail potential errors if not in Designer view or screen not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences (25 words) that are front-loaded with the core action and add a critical precondition. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one optional parameter and no output schema, the description covers the main behavior and precondition. It lacks details on error handling or differentiation from siblings, but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the optional screenName parameter. The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the full component hierarchy from the Designer view, specifies the output structure as a tree of {name, type, uid, children}, and is distinct from siblings like get_component_properties which deals with properties, not hierarchy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear precondition (requires Designer view) but does not offer guidance on when to use this tool versus alternatives like get_component_properties or list_screens.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_infoA

Returns the current project name, active screen, view mode (Designer vs Blocks), IDE type (AndroidBuilder, App Inventor, Niotron, Kodular…), and page URL. Use this first to understand the context before calling other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must cover behavioral traits. It lists the returned fields but does not disclose potential side effects, whether it requires an active connection, or failure modes. As a read-only info tool, side effects are unlikely, but the description could be more explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence lists the outputs, the second provides usage guidance. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description fully covers what it returns and how to use it. It is complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline is 4. The description adds meaning by explaining what the tool does, which is sufficient since there are no parameters to document beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns project name, active screen, view mode, IDE type, and page URL. The verb 'Returns' is specific, and the scope is well-defined, distinguishing it from sibling tools which are action-oriented or retrieve specific data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool first to understand context before calling other tools. While it does not list when not to use it, the advice is clear and appropriate given its role as a context gatherer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_screensA

Returns all screens available in the current project as an array of strings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states it returns an array of strings, implying a read operation, but it does not disclose potential side effects, authorization needs, or performance characteristics. The description is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. Every word adds value: 'Returns', 'all screens', 'available in the current project', 'array of strings'. It is concise and structured well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no output schema, no annotations), the description is minimally complete. It explains the return value but lacks context about assumptions (e.g., requires an open project) or error conditions. Could be expanded slightly for clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema is fully covered. According to calibration, a score of 4 is baseline for 0 parameters. The description adds no parameter info beyond the schema, but that is expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns all screens available in the current project as an array of strings. The verb 'Returns' and resource 'screens' are specific. It distinguishes from siblings like switch_screen and get_project_info by focusing on listing only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing screens but provides no explicit guidance on when to use it versus alternatives like switch_screen or get_project_info. No when-not-to-use conditions are mentioned, which is a gap even for a simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_screenA

Switches the active screen in the IDE. Uses the GWT select element or tab bar to navigate. Call list_screens first to see available screen names.

ParametersJSON Schema
NameRequiredDescriptionDefault
screenNameYesName of the screen to switch to (e.g. Screen2)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Mentions use of GWT select element or tab bar, but lacks details on error handling, return values, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no wasted words. Front-loaded with purpose, then usage advice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simplicity and single parameter, description covers prerequisite and mechanism adequately. Could mention response behavior but not critical for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, so baseline is 3. Description adds an example value (e.g. Screen2), but no additional meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it switches the active screen in the IDE, with a specific verb and resource. Differentiates from sibling list_screens by recommending to call it first.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit prerequisite to call list_screens first. Could be improved by mentioning when not to use, but the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_component_propertyA

Updates a property of a component. Uses 3 strategies in order: (1) GWT BlocklyPanel_setComponentProperty API, (2) top-frame API (iframe-hosted IDEs), (3) DOM input field in the Properties sidebar. Requires Designer view.

ParametersJSON Schema
NameRequiredDescriptionDefault
propNameYesProperty name (e.g. Text, BackgroundColor, Width)
propValueYesNew value
screenNameYesScreen that owns the component (e.g. Screen1)
componentNameYesTarget component name (e.g. Button1)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the three strategies and the order, which is valuable. However, it lacks details on error handling, side effects, or what happens if a strategy fails. The mutation nature demands more transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the action and then provide the strategy details. Every sentence earns its place with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a mutation operation with 4 required parameters and no output schema, the description is incomplete. It does not mention return values, error conditions (e.g., invalid component name), or success indicators. The strategies are listed but not explained in enough depth to guide an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds examples for propName (Text, BackgroundColor, Width) but does not elaborate on constraints or behavior beyond what the schema provides. It offers marginal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates a property of a component, listing three specific strategies, and explicitly mentions the requirement for Designer view. This distinguishes it from sibling tools like get_component_properties, which only retrieves properties.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides contextual usage guidance by stating the requirement for Designer view and the order of strategies. However, it does not explicitly state when not to use this tool or suggest alternatives for cases like not being in Designer view.

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. Dates show when Glama detected each change.

  1. 10 tool updatesv1.1.1
    • First observedadd_blocks
    • First observedclear_blocks
    • First observedclick_element
    • First observedget_blocks_xml
    • First observedget_component_properties
    • First observedget_component_tree
    • First observedget_project_info
    • First observedlist_screens
    • First observedswitch_screen
    • First observedupdate_component_property

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose: blocks manipulation, component inspection/editing, screen management, project context, and a fallback click. No overlapping or ambiguous tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_blocks, get_component_tree), making it easy to predict functionality.

Tool Count5/5

10 tools is well-scoped for an IDE automation server, covering blocks, components, screens, and project info without being overwhelming or incomplete.

Completeness3/5

Covers core read/update operations for blocks, components, and screens, but lacks create/delete for components and screens, and a dedicated view-switching tool, leaving notable gaps that may force reliance on the fallback click_element.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.
    3,288,165
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI coding assistants to control and inspect a live Chrome browser for automated debugging, performance analysis, and web interaction. It leverages Puppeteer and Chrome DevTools to provide capabilities like network monitoring, console logging, and automated browser actions.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/williamcorrea23/androidbuilder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server