Skip to main content
Glama

minimal-godot-mcp

MCP server bridging Godot's native LSP to AI coding assistants for GDScript validation

npm License: MIT Node.js

Table of Contents

Related MCP server: Gear

Quick Start

Prerequisites: Node.js 22+, Godot 3.2+ or 4.x with LSP enabled

Configure your MCP client to run the server with npx (see examples below). Start Godot with your project open, and your MCP client will connect automatically.

Configuration

MCP Client Setup

Add to ~/.claude.json:

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@ryanmazzolini/minimal-godot-mcp"]
    }
  }
}

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@ryanmazzolini/minimal-godot-mcp"]
    }
  }
}

Configure your client to run:

npx -y @ryanmazzolini/minimal-godot-mcp

All optional — defaults work for most setups.

Variable

Description

Default

GODOT_LSP_PORT

Override LSP port

Tries 6007, 6005, 6008

GODOT_WORKSPACE_PATH

Godot project path

Auto-detected from cwd

GODOT_DAP_PORT

Override DAP port

Tries 6006, 6010

GODOT_DAP_BUFFER_SIZE

Max console entries to buffer

1000

Pass these as env in your MCP client config:

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@ryanmazzolini/minimal-godot-mcp"],
      "env": {
        "GODOT_WORKSPACE_PATH": "/path/to/your/godot/project"
      }
    }
  }
}

Features

  • Zero-config LSP - Uses Godot's native Language Server, no plugins required

  • Fast diagnostics - Single-file checks return quickly

  • Minimal footprint - Lightweight responses to minimize token usage

  • Resilient connections - Handles Godot restarts automatically

  • Workspace scanning - Bulk check all .gd files in a project

MCP Tools

get_diagnostics

Check a single GDScript file for errors.

// Input
{ "file_path": "/path/to/script.gd" }

// Output
{
  "diagnostics": {
    "/path/to/script.gd": [
      { "line": 5, "column": 14, "severity": "error", "message": "Expected identifier", "code": "parse-error" }
    ]
  }
}

scan_workspace_diagnostics

Scan all .gd files in the workspace (excludes addons/ and .godot/).

// Input
{}

// Output
{
  "files_scanned": 150,
  "files_with_issues": 3,
  "scan_time_seconds": 1.5,
  "diagnostics": { ... }
}

get_console_output

Get console output from Godot debug session. Requires a running scene (F5 in Godot).

// Input (all optional)
{
  "limit": 50,
  "category": "console",
  "since": 1706000000000
}

// Output
{
  "entries": [
    { "timestamp": 1706000001234, "category": "console", "message": "Player spawned", "source": "/project/player.gd", "line": 42 }
  ],
  "total_buffered": 150
}

Categories: console (print statements), stdout, stderr (errors/warnings).

clear_console_output

Clear the console output buffer.

// Input
{}

// Output
{ "cleared": true }

Development

Architecture

flowchart LR
    MCP[MCP Client] <-->|stdio| Server[minimal-godot-mcp]
    Server <-->|LSP :6007| Godot[Godot Editor]
    Server <-.->|DAP :6006| Godot
  • LSP (Language Server Protocol, solid line): Always connected for diagnostics

  • DAP (Debug Adapter Protocol, dotted line): Lazy-connects when get_console_output is called with a running scene

See also:

Building from Source

Prerequisites: npm 12.0.1 with a supported Node.js release (^22.22.2, ^24.15.0, or >=26)

git clone https://github.com/ryanmazzolini/minimal-godot-mcp.git
cd minimal-godot-mcp
npm install && npm run build

Then use node /path/to/minimal-godot-mcp/dist/index.js instead of npx in your MCP client config.

Commands

npm test          # Run tests
npm run lint      # ESLint + Prettier
npm run build     # Compile TypeScript

Contributing

  1. Run npm run format && npm test before submitting

  2. Test with a real Godot project

  3. Keep scope focused on diagnostics

Troubleshooting

See docs/troubleshooting.md for connection issues, missing diagnostics, and debug logging.

Works Well With

godot-mcp by @satelliteoflove provides runtime control, scene manipulation, screenshots, stack traces, and direct editor interaction through a Godot addon. This project handles the LSP and DAP side — diagnostics and console output with no addon needed.

The two servers are complementary and can run side by side.

References

License

MIT - see LICENSE

Available Tools

4 tools
clear_console_outputA

Clear the console output buffer. Use to reset output collection before running a specific test or action.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

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

The description accurately describes the destructive action but provides no additional behavioral context beyond the basic operation, such as irreversibility 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 concise sentences that front-load the core action and follow with usage guidance, 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?

Given the tool's simplicity (no parameters, no output schema), the description fully covers its purpose and when to use it, leaving no gaps.

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?

With zero parameters, the description has no parameter information to add, but schema coverage is 100%, so baseline 4 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 action ('Clear the console output buffer') and the resource, distinguishing it from sibling tools like get_console_output.

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

Usage Guidelines5/5

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

Explicitly advises to use before running a specific test or action, providing clear context for when to invoke this tool over alternatives.

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

get_console_outputA

Get console output from Godot debug session. Returns print() statements, errors, and warnings captured during scene execution. Requires an active debug session (run a scene with F5 in Godot). Use to debug runtime behavior, check print output, or monitor warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of entries to return (most recent). Default: all buffered.
categoryNoFilter by output category. console=print(), stdout=standard out, stderr=errors.
sinceNoUnix timestamp (ms). Only return entries after this time.

TDQS

A4.2/5.0
Behavior4/5

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

Describes it as a read operation returning specific data types, and mentions a prerequisite. No annotations are present, so the description carries the burden and does so adequately without contradictions.

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 main action and provide necessary context without waste.

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 tool with 3 optional parameters and no output schema, the description explains the return value and a prerequisite, covering most gaps. Could mention limits or default behavior but is sufficient.

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 the baseline is 3. The description adds no additional meaning beyond the schema, but the schema itself is clear.

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 'Get' and the resource 'console output from Godot debug session', and distinguishes from sibling tools like clear_console_output and get_diagnostics.

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 clear use cases (debug runtime behavior, check print output, monitor warnings) and a prerequisite (active debug session), but does not explicitly mention when not to use or alternatives.

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

get_diagnosticsA

Check GDScript files for errors after editing or when analyzing code. Returns syntax errors, type errors, undefined variables, missing functions, and code quality issues from Godot LSP (<1s). Use this tool when: user references .gd files, requests GDScript modifications, or reports code errors. For workspace-wide validation, use scan_workspace_diagnostics instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the GDScript (.gd) file to analyze for errors, warnings, and issues.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It lists the types of issues returned and mentions execution time (<1s) and the use of Godot LSP. It does not explicitly state side effects (likely none), but it is clear that the operation is a diagnostic check.

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 three sentences with no wasted words. It front-loads the purpose and output, then provides usage context and alternatives. Every sentence adds value.

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 simple one-parameter diagnostic tool without an output schema, the description covers the purpose, return types (listing specific errors), usage conditions, and alternatives. No gaps are apparent.

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 the schema already describes the parameter. The description does not add any additional semantics about the file_path parameter beyond what the schema provides, meeting the baseline of 3.

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 'Check', the resource 'GDScript files', and the specific outputs (syntax errors, type errors, etc.). It also distinguishes from the sibling tool 'scan_workspace_diagnostics' by directing workspace-wide validation to that tool.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool: when user references .gd files, requests modifications, or reports errors. Also explicitly states when not to use it and directs to the sibling tool for workspace-wide validation.

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

scan_workspace_diagnosticsA

Scan entire workspace for GDScript errors across all .gd files (~1-2s for 100+ files). Returns errors from all .gd files excluding addons/ and .godot/. Use to find all errors/warnings in the project. For single-file checks, use get_diagnostics instead (<1s).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries burden. It discloses scope, exclusions, and performance (~1-2s). While it implies a read operation, it does not explicitly state non-destructiveness, but context suggests 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?

Two sentences, front-loaded with key information, no wasted words. Efficiently conveys purpose, scope, performance, and alternative.

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 no parameters, no output schema, and simple operation, the description covers all needed context: what, where, when, performance, and alternative.

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, so schema coverage is 100%. The description adds context about what is scanned and excluded, which is sufficient.

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 scans the entire workspace for GDScript errors across all .gd files, excluding addons/ and .godot/. It distinguishes from the sibling tool get_diagnostics for single-file checks.

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

Usage Guidelines5/5

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

It provides explicit guidance: use for finding all errors/warnings in the project, and for single-file checks, use get_diagnostics instead. Also includes time estimates.

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. 2 tool updatesv1.0.1
    • Addedclear_console_output
    • Addedget_console_output
  2. 2 tool updates
    • First observedget_diagnostics
    • First observedscan_workspace_diagnostics

TDQS

A4.3/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: get_diagnostics targets individual GDScript files, while scan_workspace_diagnostics covers the entire workspace. Their descriptions explicitly differentiate them and advise on when to use each, eliminating any potential for confusion.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (get_diagnostics and scan_workspace_diagnostics) with clear, descriptive names that reflect their scope and function. There are no deviations in naming style.

Tool Count3/5

With only 2 tools, the server feels thin for a Godot MCP, as it covers only diagnostics retrieval without broader operations like code execution, project management, or asset handling. However, the tools are well-defined for their specific diagnostic purpose.

Completeness2/5

The server is severely incomplete for a Godot development environment, lacking tools for core tasks such as running projects, editing scenes, managing nodes, or handling assets. It only provides diagnostics, which is a narrow slice of the domain, leaving significant gaps for agent workflows.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

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/ryanmazzolini/minimal-godot-mcp'

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