Minimal Godot MCP
The Minimal Godot MCP server bridges Godot's native Language Server Protocol (LSP) and Debug Adapter Protocol (DAP) to AI coding assistants for GDScript validation and debugging.
Check individual GDScript files for syntax errors, type errors, and code quality issues using
get_diagnostics(fast, <1s)Scan entire Godot projects for problems across all
.gdfiles withscan_workspace_diagnostics(excludesaddons/and.godot/directories; slower, 5-30s for 100+ files)Get real-time console output from running Godot scenes including print statements, stdout, and stderr messages via
get_console_output, with options to filter by category, time range, or limit entriesClear console buffer to manage memory and focus on new output using
clear_console_outputAuto-detect Godot workspace and connect to LSP/DAP ports without manual configuration, or use environment variables for custom setups
Handle Godot editor restarts automatically with resilient connection management
Minimize token usage with lightweight, focused responses optimized for AI coding assistants
Zero-config integration works with Godot 3.2+ or 4.x without requiring additional plugins
Uses ESLint for code linting during development of the MCP server
Built with Node.js runtime for executing the MCP server implementation
Distributed as an npm package for easy installation and dependency management
Uses Prettier for code formatting during development of the MCP server
Uses Shields.io badges to display package version and license information in documentation
Implemented in TypeScript for type-safe development of the MCP server
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., "@Minimal Godot MCPcheck this GDScript for syntax errors"
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.
minimal-godot-mcp
MCP server bridging Godot's native LSP to AI coding assistants for GDScript validation
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-mcpAll optional — defaults work for most setups.
Variable | Description | Default |
| Override LSP port | Tries 6007, 6005, 6008 |
| Godot project path | Auto-detected from cwd |
| Override DAP port | Tries 6006, 6010 |
| Max console entries to buffer |
|
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
.gdfiles 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| GodotLSP (Language Server Protocol, solid line): Always connected for diagnostics
DAP (Debug Adapter Protocol, dotted line): Lazy-connects when
get_console_outputis 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 buildThen 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 TypeScriptContributing
Run
npm run format && npm testbefore submittingTest with a real Godot project
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
Model Context Protocol - Protocol specification
Godot LSP - Language Server setup
License
MIT - see LICENSE
Available Tools
4 toolsclear_console_outputA
Clear the console output buffer. Use to reset output collection before running a specific test or action.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entries to return (most recent). Default: all buffered. | |
| category | No | Filter by output category. console=print(), stdout=standard out, stderr=errors. | |
| since | No | Unix timestamp (ms). Only return entries after this time. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the GDScript (.gd) file to analyze for errors, warnings, and issues. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.1- Added
clear_console_output - Added
get_console_output
2 tool updates
- First observed
get_diagnostics - First observed
scan_workspace_diagnostics
TDQS
Scored across 4 tools
Each tool has a clearly distinct scope: single-file diagnostics, workspace-wide diagnostics, console retrieval, and console clearing. The two diagnostics tools are explicitly differentiated by their descriptions.
All tool names follow a consistent verb_noun snake_case pattern: get_diagnostics, scan_workspace_diagnostics, get_console_output, clear_console_output. The naming convention is uniform and predictable.
Four tools is a well-scoped size for a minimal Godot-focused server. Each tool serves a necessary function without redundant bloat.
The diagnostics side is complete with both single-file and workspace coverage, and the console side covers retrieval and clearing. The only minor gap is that starting a debug session is not provided, so console output depends on an external action in the Godot editor.
Maintenance
Related MCP Connectors
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
MCP server for AI dialogue using various LLM models via AceDataCloud
The official Svelte MCP server providing docs and autofixing tools for Svelte development
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server providing 15 semantic analysis tools for GDScript, powered by Godot's built-in Language Server.3326 PyPI8Apache 2.0
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.3321 npm2MIT
- AlicenseBqualityDmaintenanceAdvanced MCP server for Godot 4.6+ with 63 professional tools, enabling AI-assisted game development with backup/rollback, deep script validation, and project health diagnostics.63131 npm5MIT
- AlicenseAqualityBmaintenanceA Godot 4 MCP server for AI-assisted project inspection, editing, validation, and runtime automation via stdio and optional WebSocket bridge.390MIT