Skip to main content
Glama

DesyncedMCP

MCP-сервер для разработки модов Desynced. Предоставляет ИИ-ассистенту (Claude Code или любому MCP-клиенту) прямой доступ к справочнику Lua API игры, исходному коду базовой игры, живым журналам игры и установленным модам.

Инструменты

Статические (файловая система)

Инструмент

Назначение

search_lua_api

Поиск по официальному справочнику Lua API (включён в docs/lua-api.txt)

search_game_source

Регулярный поиск по исходникам базовой игры (main/) и модам Lua/JSON в рабочей области

get_game_logs

Чтение хвоста файла журнала игры, если он существует (см. примечание -abslog ниже)

list_mods

Список модов, которые загрузит игра, по сравнению с модами в рабочей области

read_game_file

Чтение любого файла исходников рабочей области по относительному пути с диапазоном строк

Живые (связь с отладчиком lrdb, игра запущена с -moddev)

Инструмент

Назначение

game_status

Живой снимок: тик, фракция игрока, количество сущностей, активные настройки модов

game_logs

Вывод, захваченный в реальном времени (print/errors/BOOT); переживает сбои вплоть до момента смерти

game_eval

Выполнение произвольного Lua внутри запущенной игры и возврат результата

game_reload

Debug.Reload() — горячая перезагрузка всех модов Lua, точно так же, как нажатие F7

Связь использует протокол satoren lrdb (JSON-RPC с разделителями строк, без init) на 127.0.0.1:21110. Отладочный сервер игры принимает команды от одного клиента: пока этот сервер подключён, внутриигровая консоль журнала замолкает (вывод перенаправляется на связь), и VS Code не может подключиться. Виртуальная машина отвечает на eval только во время выполнения Lua, поэтому простаивающее меню может привести к тайм-ауту.

Related MCP server: ReforgerForge MCP

Мост симуляции (компаньон-мод)

game_eval выполняется в UI Lua VM игры, где мутации симуляции заблокированы. Управление игрой (перемещение, развёртывание, добыча, строительство...) требует компаньон-мода Desynced MCP Bridge в Steam Workshop, который предоставляет FactionAction.MCPSimCmd в контекст симуляции. Этот сервер работает без него для инструментов только для чтения (журналы, статус, чтение eval, горячая перезагрузка).

Настройка

npm install
npm test   # smoke test

Зарегистрируйте в Claude Code (область проекта):

claude mcp add desynced --scope project -- node <path-to>/DesyncedMCP/server.js

Конфигурация (переменные окружения)

Переменная

По умолчанию

DESYNCED_WORKSPACE

текущая рабочая директория — укажите папку с исходниками ваших модов

DESYNCED_GAME_MODS

C:/Program Files (x86)/Steam/steamapps/common/Desynced/Desynced/Content/mods — установите, если Steam находится в другом месте (пользовательская папка библиотеки)

DESYNCED_SAVED

%LOCALAPPDATA%/Desynced/Saved

Поиск по базовой игре (необязательно)

Игра поставляется со всей базовой игрой в виде main.zip внутри папки модов и всегда загружает её в сжатом виде — при обычной установке она никогда не извлекается. Чтобы search_game_source и read_game_file видели Lua базовой игры, распакуйте main.zip в папку main/ внутри вашей рабочей области с помощью любого zip-инструмента. Это чисто для удобства разработки; игре не нужна и не используется извлечённая копия.

Требования на стороне игры

Сам сервер работает вне игры — в игру ничего устанавливать не нужно. Чтобы журналы существовали, запустите Desynced с этими параметрами запуска Steam:

-moddev -log

-moddev включает режим разработчика модов (горячая перезагрузка с F7, строгие проверки данных, консоль журнала); -log записывает файл журнала, который читает этот сервер.

План развития

  • deploy_mod: копирование мода из рабочей области в папку модов игры (заменяет ручной шаг копирования)

  • Живой мост через отладочный протокол lrdb (localhost:21110 в -moddev): выполнение Lua в запущенной игре, проверка сущностей/фракций, запуск Debug.Reload()

  • Публикация в Workshop через DesyncedModUploader

Available Tools

9 tools
game_evalEval Lua in the running gameA

Execute a Lua chunk inside the running game's VM through the debugger and return its result. Use 'return ' to get values back. Full game API available (Map, Game, data, UI...). The VM answers only while executing Lua (in menu or paused game it can time out). Simulation writes from here can desync multiplayer — fine in single player.

ParametersJSON Schema
NameRequiredDescriptionDefault
chunkYesLua code, e.g. 'return Map.GetTick()' or 'return data.frames.f_bot_1s_a.name'
timeout_msNo

TDQS

A4.2/5.0
Behavior4/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 timeout behavior, the multiplayer desync side effect, and the debugger context. It doesn't specify return serialization or error behavior, but the critical operational caveats are covered.

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?

Three sentences, each purposeful: the core action, the usage pattern, and the behavioral caveats. Front-loads the main purpose and avoids redundancy; every sentence adds value.

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 an eval tool with no output schema, it explains how to obtain values and flags side effects. It doesn't detail error handling or result formatting, but given the tool's open-ended nature, the essential usage and risks are covered. Slightly more on timeout_ms would push it to 5.

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 description effectively explains that chunk should contain Lua code and demonstrates the 'return' pattern, which maps to the schema's example. It touches on timeout indirectly via the 'can time out' note, but timeout_ms itself is not explicitly described. Since schema coverage is only 50%, this partial compensation is acceptable but not complete.

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: executing a Lua chunk in the game's VM via the debugger and returning the result. It gives a concrete pattern ('return <expr>') and distinguishes from sibling tools that search or read files, making the intent unambiguous.

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?

It instructs to use 'return <expr>' for output, warns that the VM only responds during Lua execution (timeout in menu/paused), and flags multiplayer desync—implicitly saying when not to use it. However, it does not explicitly contrast with alternatives like search_lua_api, so a small gap remains.

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

game_logsLive game logsA

Return the recent output captured live from the running game (print(), errors, warnings, BOOT lines) via the debugger link. The buffer accumulates while this MCP server stays connected; it survives game crashes up to the moment of death.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoHow many entries from the end
filterNoRegex to filter entries, e.g. 'error|assert|WARNING'

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the buffer accumulates while the server is connected and survives crashes up to the moment of death, which are useful behavioral traits. It does not explicitly state the operation is read-only or mention side effects, but the nature of the tool implies no mutation. Given the lack of annotations, this is a solid disclosure.

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 sentences, tightly written, with the core purpose front-loaded. The secondary sentence adds meaningful behavioral context about buffer accumulation and crash survival. Every part earns its place with no unnecessary wording.

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 log-retrieval tool with no output schema and no annotations, the description covers the essential aspects: what it returns, how it behaves, and the connection requirement. It does not address potential differences from the similarly named sibling get_game_logs, which is a minor gap, but overall the agent has enough to call it correctly.

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%: both 'lines' and 'filter' are well-documented with types, defaults, ranges, and examples. The tool description adds no additional parameter context beyond what the schema already provides, so the baseline of 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 clear verb and resource: 'Return the recent output captured live from the running game' with specific content types (print, errors, warnings, BOOT lines). However, it does not differentiate from the sibling tool 'get_game_logs', which appears to serve a similar purpose, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is implied: the agent can infer this is the tool to retrieve live game logs. But there is no explicit guidance on when to choose this over alternatives like get_game_logs, nor any mention of exclusions or prerequisites (e.g., must have debugger link). It provides context about buffer behavior but stops short of routing the agent.

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

game_reloadHot reload mods (remote F7)A

Trigger Debug.Reload() in the running game: reloads all mod Lua from disk exactly like pressing F7 in-game. Use after deploying mod changes to the game's mods directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 full burden of disclosing behavior. It states the effect ('reloads all mod Lua from disk') and the context ('in the running game'), which conveys that the tool mutates the running game's state. However, it does not mention potential side effects (e.g., resetting mod state, losing unsaved changes) or prerequisites beyond a running game, which would be helpful for a state-changing tool. The description is functional but not fully transparent about consequences.

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 fluff. It front-loads the core action ('Trigger Debug.Reload()'), then explains the effect and the recommended usage. Every sentence contributes necessary information, making it concise and well-structured.

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 no parameters and no output schema, the description covers the essential context: what it does, when to use it, and the operational context (running game). It implicitly distinguishes itself from sibling tools by its purpose. Minor gaps like failure behavior or idempotency are not critical for this action, so the description is sufficiently complete.

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 zero parameters and the schema coverage is 100% (vacuously, as there is nothing to cover). The description does not need to add parameter meaning, and none is missing. The baseline for zero parameters is 4, which is appropriate here.

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: 'Trigger Debug.Reload()' and the resource: 'reloads all mod Lua from disk'. It also provides a precise analogy to pressing F7 in-game, which makes the purpose unambiguous. Among sibling tools (game_status, game_logs, list_mods, etc.), this is the only one that performs a reload, so it is easily distinguished.

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 gives explicit when-to-use context: 'Use after deploying mod changes to the game's mods directory.' This is a clear trigger condition. However, it does not mention when not to use it or name alternative tools, though the unique action makes that less critical. The guidance is sufficient for an agent to decide when this tool is appropriate.

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

game_statusLive game statusA

Connect to the running game's Lua debugger and report a live snapshot: tick, whether a map is loaded, player faction, entity counts. Fails gracefully when the game is not running with -moddev.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 must carry the full burden of behavioral disclosure. It does add value by explaining the connection mechanism (Lua debugger) and the graceful failure behavior when the game isn't running. However, it does not explicitly state whether the operation is read-only or if any side effects occur, and it doesn't describe error behavior beyond the graceful failure. This provides some context but leaves gaps.

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 sentences with zero fluff. The first sentence front-loads the main purpose and the exact fields reported, while the second sentence adds the failure condition. This is appropriately sized and well-structured, with 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?

The tool is simple with no parameters and no output schema. The description covers what it does, what it returns, and the graceful failure mode. However, it does not mention whether the tool has side effects or if it's safe for read-only use, which might be expected given the absence of annotations. For its simplicity, it is fairly complete, but not exhaustive.

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 input schema is empty, so there are no parameters to document. The description doesn't need to add parameter semantics, and the baseline for 0 parameters is 4. Since there is nothing to clarify, this score 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 states a specific action (connect to Lua debugger and report) and a resource (live game status) with concrete output fields (tick, map loaded, player faction, entity counts). This is clearly distinct from sibling tools like game_logs or game_eval, which focus on logs or evaluation rather than current state.

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 provides no guidance on when to use this tool versus alternatives. It only mentions the failure condition when the game isn't running with -moddev, which is a precondition, not a usage recommendation. There's no mention of selecting this over other tools for specific scenarios, leaving the agent without direction on tool choice.

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

get_game_logsRead Desynced game logsC

Tail the newest Desynced log file (game must run with -log for a log file to be written; -moddev recommended too). Shows Lua errors, warnings and print() output. Optionally filter lines by regex.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoHow many lines from the end
filterNoRegex to filter lines, e.g. 'error|warning|Lua'

TDQS

C2.9/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 burden. It discloses that a log file must exist and what the tool shows (errors, warnings, print output), but it does not mention behavioral traits such as whether the operation is read-only, what the return format is, or potential side effects (e.g., if the tool could block or incur costs). This is insufficient for a tool with no annotation support.

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?

The description is three sentences with no waste. The core purpose is front-loaded, followed by prerequisites and capabilities. The first sentence contains a parenthetical requirement that is helpful but slightly verbose. Overall, it is efficient and structured for quick scanning.

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 tail-and-filter tool with two optional parameters and no output schema, the description covers the basics: what it does, prerequisites, and filter option. However, it omits any description of the return value (the log content format) and does not clarify how this tool differs from the sibling 'game_logs', which may be critical for correct selection. Given the tool's relative simplicity, a 3 reflects the gaps.

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 documents both parameters ('lines' as integer count, 'filter' as regex). The description adds a brief mention of optional regex filtering (e.g., 'error|warning|Lua') which mirrors the schema, but provides no additional semantic meaning beyond what the schema offers. Thus a 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 clearly states a specific action: 'Tail the newest Desynced log file'. It identifies the resource (Desynced log file) and purpose (show Lua errors, warnings, print output). However, it does not explicitly distinguish itself from the sibling tool 'game_logs' or other log-related tools, so it lacks the explicit differentiation that would warrant a 5.

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 provides useful prerequisites (game must run with -log; -moddev recommended) but gives no guidance on when to use this tool versus the sibling 'game_logs' or others. It does not state when not to use it or mention any alternative conditions. The agent is left to infer appropriate usage.

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

list_modsList installed Desynced modsA

List mods in the game's mods directory (what the game will actually load) with id/name/version from each def.json, plus mods present in the workspace, to spot version drift between both.

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?

With no annotations provided, the description carries the full burden of disclosure. It states exactly what data is extracted (id/name/version from def.json) and from where (game mods and workspace mods). It does not explicitly mention that it is a read-only operation, but that is strongly implied and no side effects are suggested. It adequately discloses scope and output content.

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, focused sentence that front-loads the action ('List mods in the game's mods directory') and then adds necessary detail (def.json fields, workspace comparison, purpose). No unnecessary words; every clause earns its place.

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 tool with no output schema, the description is remarkably complete. It explains what is listed, the sources (game mods directory and workspace), the extracted fields (id/name/version), and the practical use case (spotting version drift). An agent can call this tool correctly with full confidence in its behavior and expected result.

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 zero parameters, and the schema coverage is 100% (empty properties). Per the guidelines, the baseline for 0 parameters is 4. The description adds context about what data is listed, which complements the empty schema adequately.

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 'List', the resource 'mods' (in the game's mods directory and workspace), and specifics like 'id/name/version from each def.json'. It explicitly distinguishes its scope from sibling tools (game status, logs, LUA API, etc.) by focusing on mods and version drift.

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 purpose statement 'to spot version drift between both' implies a clear use case. It does not explicitly say 'use this when you need to compare installed mods vs workspace mods', but the context and sibling tooling make that evident. It lacks explicit when-not-to-use guidance, but the single purpose is clear enough.

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

read_game_fileRead a game/workspace source fileB

Read a file from the workspace (base game 'main' package or any mod) by relative path, with optional line range. Example: 'main/ui/FrameView.lua'.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_lineNo
from_lineNo
relative_pathYes

TDQS

B3.3/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 burden. It does not disclose that reading is a non-destructive operation, what happens if the file is missing, whether path is case-sensitive, or what the return format is. The mention of line range is the only behavioral hint.

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 concise—two sentences—with the core purpose front-loaded and an example serving as a concrete anchor. Every word earns its place; no filler.

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 no annotations, no output schema, and three parameters, the description is incomplete. It fails to describe the return format (full file content? line array?), the semantics of line ranges (inclusive boundaries), error conditions (missing file, out-of-range lines), and any limits (file size). An agent would need to infer or probe these details.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain parameter meanings. It mentions 'relative path' and 'optional line range' but does not clarify that from_line defaults to 1, what to_line does (inclusive/exclusive), or how they interact. The example path helps relative_path but not the line parameters.

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 states a clear verb ('Read') and resource ('file from the workspace'), specifies allowed packages ('main' or any mod), and provides a concrete example path. This clearly differentiates it from siblings like search_game_source (searching vs. reading a known file).

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 context by describing read scope and optional line range, but it does not explicitly advise when to use this tool versus alternatives such as search_game_source or when not to use it. It gives context but no explicit routing.

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

search_game_sourceSearch Desynced game/mod sourceA

Regex search over the Lua/JSON source of the base game ('main' package) and all mods in the workspace. Returns file:line matches with context. Use to find how the base game defines/uses something before overriding it in a mod.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesRegex (case-insensitive). Literal fallback if invalid regex.
max_resultsNo
path_filterNoSubstring filter on file path, e.g. 'main/ui', 'ExplorableHacker'
context_linesNo

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 must disclose side effects and limitations. It states it returns matches with context, implying a read-only search, but does not explicitly say it is non-destructive or mention any caveats (e.g., regex performance, indexing behavior, or that it searches the full workspace). The description is adequate for safety but does not go beyond the obvious.

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 sentences, front-loading the core function (regex search over source) and then the primary use case. Every word adds value, with no fluff or redundant phrases. It is efficiently structured for an agent to parse quickly.

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 search tool with four parameters and no output schema, the description covers the essential context: what is searched, what is returned, and when to use it. It does not explain parameter details or explicitly differentiate from search_lua_api, but the core usage is clear. The gaps are minor given the tool's simplicity and the schema's partial coverage.

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

Parameters2/5

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

Schema description coverage is 50% (query and path_filter have descriptions; max_results and context_lines have defaults but no descriptions). The description does not explain these parameters, their defaults, or how they interact (e.g., what 'context' refers to). It only hints at context via 'with context' but does not clarify the context_lines parameter. The description fails to compensate for the missing schema descriptions.

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 states the exact verb ('Regex search'), the resource ('Lua/JSON source of the base game and all mods'), and the output ('file:line matches with context'). It is specific enough to distinguish from sibling tools like search_lua_api (API search) and read_game_file (single file read). No ambiguity.

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?

It explicitly gives a use case: 'find how the base game defines/uses something before overriding it in a mod.' This tells the agent when to use it, but it does not name alternatives directly or explain when not to use it (e.g., for API docs vs source). The guidance is clear but lacks explicit exclusions or sibling routing.

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

search_lua_apiSearch Desynced Lua APIA

Search the official Desynced Lua API reference (modules Action/Debug/Game/Input/Map/Tool/Twitch/UI/View and metatables Component/Entity/Faction/ItemSlot/ModPackage/Register/Widget). Returns matching lines with trailing context (signatures + descriptions).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFunction/property name or keyword, e.g. 'SetRegister', 'CreateEntity', 'on_update'
max_resultsNo
context_linesNo

TDQS

A3.5/5.0
Behavior3/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. It does disclose the return shape (matching lines plus trailing context of signatures and descriptions), which is useful. However, it does not explicitly state that this is a read-only, non-destructive lookup, nor does it disclose search behavior such as case sensitivity, matching semantics, or the effect of the context_lines and max_results parameters.

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?

Two tight sentences with the core purpose front-loaded and the scope (modules/metatables) enumerated efficiently. The sentence about return format is necessary context. It is focused with no filler, though it could be slightly more compact given the long module list.

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 search tool, the description covers what is searched (modules and metatables) and what is returned (signatures + descriptions). The three parameters are documented through names and defaults in the schema. The main gap is the absence of contrast with search_game_source and lack of search-behavior detail, which prevents a 5 but the tool remains usable.

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 only 33%; only 'query' carries an example in the schema, while max_results and context_lines have no prose. The description adds nothing about parameters. This gap is partially mitigated by the fact that max_results and context_lines are self-explanatory from their names and defaults, so a 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 (search) and resource (official Desynced Lua API reference), enumerates the exact modules and metatables covered, and describes the return format (matching lines with signatures + descriptions). It is clear and specific, though it does not explicitly differentiate itself from the closely named sibling search_game_source, which searches game source rather than API 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 description makes it clear this is for looking up API reference documentation, which implies usage context. However, it gives no explicit when-to-use or when-not-to-use guidance, and it does not mention the alternative sibling search_game_source or state the condition that would select one over the other. The distinction between API docs and game source is left for the agent to infer.

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. 9 tool updatesv1.0.0
    • First observedgame_eval
    • First observedgame_logs
    • First observedgame_reload
    • First observedgame_status
    • First observedget_game_logs
    • First observedlist_mods
    • First observedread_game_file
    • First observedsearch_game_source
    • First observedsearch_lua_api

TDQS

A3.7/5.0
Disambiguation4/5

Most tools are clearly distinct: game_status, game_reload, and game_eval each target different game actions, while search_lua_api and search_game_source have separate scopes. The only potential confusion is between game_logs (live debugger buffer) and get_game_logs (tail log file), but their descriptions clarify the difference. Overall, boundaries are well-defined with one minor overlap.

Naming Consistency4/5

The naming pattern is largely verb_noun in snake_case (e.g., search_lua_api, list_mods, read_game_file), but there is a minor inconsistency: game_logs vs get_game_logs both refer to logs but use different prefixes. The game_ prefix for three tools and separate prefixes for others is slightly mixed but still predictable and readable.

Tool Count5/5

With 9 tools, the set is well-scoped for a game modding/debugging server. Each tool serves a concrete function—checking status, reloading, evaluating, searching, reading files, listing mods, and retrieving logs—without unnecessary bloat. This falls comfortably within the ideal 3-15 range.

Completeness4/5

The tool surface covers the core workflows for mod development and debugging: connecting, inspecting state, executing code, searching reference and source, retrieving logs from two sources, and managing mods. Minor gaps include lack of write/update operations for game files and no direct tool to manage mod installation, but these are not essential for the stated purpose and can be worked around.

Maintenance

ActivityMaintained
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

  • F
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with running Roblox game instances by inspecting the game hierarchy, reading client-side scripts, and executing Lua code directly within the Roblox client through a WebSocket bridge.
    4
    37
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to inspect, create, edit, debug, and playtest projects inside the Roblox editor via 29 lean tools, with push-based SSE transport, editor-safe script edits, and batched undoable writes.
    29
    613
    5
    MIT

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/angeldeejay/DesyncedMCP'

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