Skip to main content
Glama

ultimate-construct3-mcp

Unified MCP server for Construct 3 — offline documentation, project read/write, analysis, and scripting support. 44 tools in a single server.

Quick start

With a Construct 3 project (all features)

{
  "mcpServers": {
    "construct3": {
      "command": "node",
      "args": ["path/to/ultimate-construct3-mcp/dist/index.js", "path/to/your/c3-project"]
    }
  }
}

Documentation only (no project)

{
  "mcpServers": {
    "construct3-docs": {
      "command": "npx",
      "args": ["-y", "ultimate-construct3-mcp"]
    }
  }
}

Related MCP server: GMS2 MCP Server

Tools (44 total)

Documentation (6 tools — always available)

Tool

Description

search_docs

Full-text search across all Construct 3 documentation

get_doc

Get full markdown content of a documentation topic

list_topics

List all available documentation topics

list_categories

List categories with topic counts

get_ace_reference

Get Actions/Conditions/Expressions for a plugin or behavior

get_examples

Search for code examples from the documentation

Project Query (9 tools)

Tool

Description

list_objects

List all object types (with optional filter)

list_eventsheets

List all event sheets

list_layouts

List all layouts

list_families

List all families

get_object_details

Get full JSON of an object type

get_eventsheet_details

Get full JSON of an event sheet

get_layout_details

Get full JSON of a layout

search_objects

Search objects by name pattern

get_project_summary

Get project metadata and statistics

Project Mutation (14 tools)

Tool

Description

create_object

Create a new object type (Sprite, Text, Audio, etc.)

update_object_properties

Add/remove variables, behaviors, change global status

delete_object

Delete an object (with reference checking)

create_event_sheet

Create a new event sheet

add_event_to_sheet

Add group/function/variable/include/comment events

add_event_block

Add block events with conditions + actions (recursive)

update_event_block

Modify existing block events

delete_event_sheet

Delete an event sheet (with reference checking)

delete_event_from_sheet

Delete individual events by SID

create_layout

Create a new layout

add_instance_to_layout

Place object instances on layout layers

update_layout

Update layout properties

delete_layout

Delete a layout (with reference checking)

update_project_metadata

Update project name, version, author, description

Animation (2 tools)

Tool

Description

add_animation_to_sprite

Add animations with auto-generated placeholder PNGs

update_animation_properties

Update speed, looping, ping-pong settings

Analysis (8 tools)

Tool

Description

get_eventsheet_flow

Event sheet include hierarchy (Mermaid/JSON)

get_function_map

Function definitions and call sites

get_object_dependencies

Object usage graph (events, layouts, families)

find_orphaned_objects

Find unused objects

get_asset_usage

Track asset usage (sound, image, font, video)

analyze_performance

Heuristic performance audit

validate_project

13-check integrity validation

get_group_settings

Group active/disabled status across event sheets

Scripting & Files (5 tools)

Tool

Description

list_scripts

List all JavaScript files in the project

read_script

Read a script file's contents

write_script

Create or modify a JavaScript file

read_project_file

Read any project file (JSON or text)

write_project_file

Write a JSON file to the project

Resources (6)

  • project-info — Project metadata

  • project-structure — Full project structure overview

  • project-addons — Used plugins, behaviors, effects

  • object-details — Object type details (template)

  • eventsheet-details — Event sheet details (template)

  • layout-details — Layout details (template)

Prompts (6)

  • analyze_project — Full project analysis

  • find_object_usage — Find where an object is used

  • explain_eventsheet — Explain an event sheet's logic

  • review_game_logic — Review game architecture

  • document_object — Generate object documentation

  • optimize_project — Get optimization suggestions

Multi-language Documentation

Supported: en, es, pt-br, fr, de, it, ja, ko, zh, ru, tr

All doc tools accept a lang parameter. Falls back to English if a topic isn't translated.

Update Documentation

c3-docs-scrape --all --lang en
c3-docs-scrape --category plugins --lang en
c3-docs-scrape --topic sprite --lang es

Development

git clone <repo>
cd ultimate-construct3-mcp
npm install
npm run build
npm test

License

MIT


Construct 3 is developed by Scirra Ltd. This project is not affiliated with Scirra.

Available Tools

6 tools
get_ace_referenceB

Get the Actions, Conditions, and Expressions (ACE) reference for a Construct 3 plugin or behavior.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)
pluginYesPlugin or behavior slug (e.g. 'sprite', 'platform', 'tween')

TDQS

B3.3/5.0
Behavior2/5

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 implies a read-only lookup but does not state whether the reference is static or version-specific, what happens if an unknown plugin is passed, or what form the response takes.

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 efficient sentence with the key resource and scope front-loaded. Every part of the sentence earns its place.

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?

For a simple two-parameter lookup tool with no output schema, the description covers the basic purpose but leaves behavioral and return-format gaps. Given the absence of annotations, it should say more about what the agent will receive and how errors are handled.

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 description coverage is 100%, so both parameters are already documented in the schema. The description adds only the expansion of the ACE acronym and confirms that the plugin parameter accepts either a plugin or behavior slug, which is a marginal addition over the schema.

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

Purpose4/5

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

The description states a specific verb and resource: retrieving the Actions, Conditions, and Expressions reference for a named Construct 3 plugin or behavior. It is clear what the tool returns, though it does not explicitly differentiate itself from sibling tools like get_doc or search_docs.

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 usage is implied: use this when you need ACE details for a specific plugin or behavior. However, the description does not say when to prefer this over search_docs or get_doc, nor does it mention prerequisites or exclusions.

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

get_docB

Get the full markdown content of a Construct 3 documentation topic.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)
topicYesTopic slug (e.g. 'sprite', 'platform', 'layouts')
categoryNoCategory to disambiguate topics with same slug

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations and no output schema, the description carries full burden. It does disclose the return format ('full markdown content'), which is genuinely useful, but says nothing about read-only safety, behavior for invalid/missing topics, or language fallback for the 'lang' parameter.

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?

A single front-loaded sentence with zero waste. The verb and the payload format both land immediately.

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 read-only retrieval tool with fully documented parameters, the definition covers purpose and return format adequately. The main missing piece is how to discover valid topic slugs, which matters for a lookup tool in a family that includes list_topics and search_docs.

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 description coverage is 100% — every parameter including the enum-constrained 'category' is documented inline. The description adds no parameter-level detail beyond what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Get the full markdown content of a Construct 3 documentation topic.' This clearly separates it from search_docs and list_topics by emphasizing full content retrieval of a single topic, though it doesn't explicitly name the siblings.

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

Usage Guidelines2/5

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 versus search_docs, list_topics, or get_examples, and doesn't say where valid topic slugs come from. The choice is left entirely to inference from the tool name.

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

get_examplesB

Search for code examples and snippets from the Construct 3 documentation.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)
limitNoMax results (default: 10)
queryYesSearch query for code examples (e.g. 'collision', 'tween', 'spawn')

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it delivers only one sentence. It does not disclose result ranking, what a returned snippet contains (title? code block? source URL?), whether results are truncated or paginated, or how the lang parameter affects matching.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler, and the resource type appears early. It is efficient but borders on under-specified rather than tight.

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?

Three well-documented parameters and no output schema mean the description should at least characterize the return shape for a search tool, which it does not. It is minimally adequate to call the tool but leaves an agent guessing about result format.

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 description coverage is 100%, so query, lang, and limit are already documented including defaults and bounds. The description adds nothing about parameter behavior (e.g. whether lang filters or translates results), so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Search') plus resource ('code examples and snippets') plus source scope ('Construct 3 documentation'), which differentiates it from generic doc-reading siblings like search_docs and get_doc. It stops short of explicitly naming the sibling it replaces, so an agent must infer the boundary.

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?

Usage is only implied by the resource type: reach for this when you need runnable snippets rather than prose docs. There is no explicit when/when-not statement and no mention of search_docs, get_ace_reference, or get_doc as alternatives for related needs.

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

list_categoriesB

List all documentation categories with descriptions and topic counts.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the burden. It does disclose the response composition (category descriptions and topic counts), which is genuinely useful since there is no output schema, but says nothing about ordering, pagination, or whether categories are scoped by workspace — 'list all' implies no pagination but does not confirm it.

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?

One sentence, front-loaded with the verb and resource, with the return payload appended. Nothing superfluous.

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 zero-required-parameter read tool with no annotations and no output schema, the description covers what the tool does and what comes back, which is enough to call it correctly. Only language-fallback and ordering behavior are left unspecified.

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?

The single optional 'lang' parameter is fully documented in the schema (100% coverage), so the schema does the heavy lifting. The description adds nothing about language behavior — e.g. whether missing translations fall back to English — which is the one semantic gap the schema leaves open.

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

Purpose4/5

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

States a specific verb and resource ("List all documentation categories") plus the payload it returns (descriptions and topic counts). This is clearly separable from list_topics and search_docs by the resource noun alone, though it never names a sibling to sharpen the distinction.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no alternative is mentioned. An agent must infer that this is a discovery/overview call versus list_topics or search_docs entirely on its own.

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

list_topicsB

List all available Construct 3 documentation topics, optionally filtered by category.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)
categoryNoFilter by category

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden, and it does convey read-only intent via 'List' and the completeness claim 'all available'. However, it does not disclose the return shape, whether results are grouped or paginated, or how lang affects output.

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

Conciseness4/5

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

A single efficient sentence with the action front-loaded and zero repetition. It is slightly terse given it is the only source of behavioral detail.

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?

For a simple two-parameter read-only list tool with full schema coverage, the essentials are present, but the absence of an output schema means the description should say something about what is returned. That gap keeps it at minimum viable.

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 description coverage is 100%, so both lang and category are already documented in the schema with an enum for category. The description adds only the 'optional' framing, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('List all available Construct 3 documentation topics') with the optional category filter. It distinguishes the tool from search_docs and get_doc implicitly, but does not clarify how it differs from the sibling list_categories, leaving mild ambiguity.

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 phrase 'optionally filtered by category' implies when to apply the filter, but there is no explicit guidance on when to use this tool versus search_docs, list_categories, or get_doc. Usage is only implied.

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

search_docsA

Full-text search across Construct 3 documentation. Returns matching topics with relevance-scored snippets.

NameRequiredDescriptionDefault
langNoLanguage code (default: en)
limitNoMax results (default: 10)
queryYesSearch query
categoryNoFilter by category

TDQS

A3.6/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 behavioral burden. It discloses that results are matching topics with relevance-scored snippets, which is useful return context, but it does not discuss pagination, result ordering, or operational constraints beyond what the schema implies.

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 efficient sentences with the core operation front-loaded. Every sentence adds useful information, and there is no redundant or filler text.

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 low complexity, complete schema descriptions, and absence of an output schema, the description provides enough context to call the tool correctly. The main missing element is explicit routing guidance versus sibling tools.

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 description coverage is 100%, so all four parameters are already documented in the input schema. The description adds no parameter-specific semantics beyond the general idea of a full-text search, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: full-text search across Construct 3 documentation. It distinguishes the operation from list/get siblings by emphasizing search and relevance-scored snippets, but does not explicitly name alternatives such as get_doc or list_topics.

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?

Usage is implied by 'full-text search' and returning matching topics, so an agent can infer this is for query-based lookup. However, the description gives no explicit when-to-use guidance, exclusions, or comparison to sibling tools like get_doc or list_topics.

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.

  1. 6 tool updatesv2.0.0
    • First observedget_ace_reference
    • First observedget_doc
    • First observedget_examples
    • First observedlist_categories
    • First observedlist_topics
    • First observedsearch_docs

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct facet of the docs surface (search, browse topics, browse categories, fetch topic, ACE reference, examples). The only mild overlap is between search_docs and get_examples, since both are query-style lookups, but the example-specific description makes the boundary clear enough.

Naming Consistency5/5

All names follow a clean verb_noun snake_case pattern (search_*, list_*, get_*), with verbs matching the operation type. No mixed conventions.

Tool Count5/5

Six tools is a well-scoped set for a documentation lookup server — one query tool, one content fetcher, two browsing tools, plus ACE and example lookups. Each earns its place without redundancy.

Completeness4/5

The surface covers the full docs workflow: browse categories/topics, search, fetch full content, and specialized ACE/example lookups. Minor gaps exist (e.g. no versioned docs or plugin-name discovery for ACE), but agents can work around them via search.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers