Skip to main content
Glama
CalabiYauGames

CalabiYau Map Engine MCP

Official

CalabiYau Map Engine MCP

通过本机 MCP 服务连接 CalabiYau Map Engine 浏览器编辑器。

支持 STDIO、Streamable HTTP 和旧 HTTP+SSE。

MCP 架构:STDIO、SSE、Streamable HTTP 与本地浏览器 WebSocket 桥接

环境

  • Python 3.11 或更新版本。

  • uv。

  • 支持本地网络访问授权和 WebSocket 的桌面浏览器,推荐更新后的 Chrome 或 Edge。

Map Engine 站点:https://klbqmap.miyo.wiki

Related MCP server: Godot AI

安装与配对

在本项目目录执行:

uv sync --python 3.11
uv run python -m calabiyau_map_engine_mcp pair

pair 在当前用户的配置目录读取或首次生成凭据,并在终端显示 JSON:

字段

用途

bridge_url

浏览器 WebSocket 地址,默认为 ws://127.0.0.1:8765/bridge

mcp_url

Streamable HTTP 地址,默认为 http://127.0.0.1:8765/mcp

sse_url

旧 SSE 地址,默认为 http://127.0.0.1:8765/sse

pairing_token

仅填入浏览器的配对凭据

http_token

仅用于 MCP HTTP 客户端的 Bearer 认证

allowed_origins

服务允许连接的网页来源

两个 token 相互独立。再次执行 pair 不会轮换已保存的凭据。

启动服务后,在更新后的 Map_Engine 中打开“设置 → MCP”,填写 bridge_url 和 pairing_token,点击“连接并配对”。首次连接可能出现浏览器的本地网络访问授权提示,需要用户手动允许。

启动方式

# 默认模式。由 MCP 客户端启动时使用,stdout 专供 MCP 消息。
uv run python -m calabiyau_map_engine_mcp --transport stdio

# Streamable HTTP。
uv run python -m calabiyau_map_engine_mcp --transport streamable-http

# 兼容只支持旧 HTTP+SSE 的客户端。
uv run python -m calabiyau_map_engine_mcp --transport sse

# STDIO、Streamable HTTP 和旧 SSE 同时启用。
uv run python -m calabiyau_map_engine_mcp --transport all

也可以显式使用 serve 子命令。STDIO 模式同样会启动本机 WebSocket 桥接端口,但不启用 MCP 的 HTTP 端点。

路径

用途

启用模式

/mcp

Streamable HTTP

streamable-http、all

/sse

旧 SSE 事件流入口

sse、all

/messages/

旧 SSE 的消息提交端点,由 SSE 客户端自动发现

sse、all

/bridge

浏览器 WebSocket 桥接

全部模式

/healthz

最小健康检查

全部模式

HTTP 客户端应在 /mcp,或旧 SSE 的事件流和消息提交请求中携带:

Authorization: Bearer <http_token>

/sse 是兼容旧客户端的独立传输,不是 /mcp 的别名。/mcp 根据 MCP 协议和请求内容返回 JSON 或 SSE;

stdio 和 all 将标准输入 EOF 视为进程退出信号,随后关闭桥接和 HTTP 监听。希望服务在关闭某个 MCP 客户端后独立常驻时,使用 streamable-http 或 sse 模式。

参数

参数

默认值

说明

--transport

stdio

stdio、sse、streamable-http 或 all

--port

8765

MCP HTTP 和浏览器桥接共用的本机端口

--allowed-origin

见下文

可重复传入,追加精确的网页来源

--config-dir

当前用户的应用配置目录

自定义凭据存储目录

--request-timeout

30

浏览器请求的超时秒数

--log-level

服务默认日志级别

日志写入 stderr

服务始终监听 127.0.0.1,没有开放公网或局域网监听的 --host 参数。默认网页来源:

http://127.0.0.1:5173
http://localhost:5173
https://klbqmap.miyo.wiki

自定义开发端口时,增加对应的来源,例如:

uv run python -m calabiyau_map_engine_mcp --transport streamable-http --allowed-origin http://127.0.0.1:5174

--config-dir 也可通过 CALABIYAU_MCP_CONFIG_DIR 环境变量配置。pair、serve 和 MCP 客户端必须使用相同目录,否则会读取到不同凭据。

客户端配置

参见 examples/mcp-clients.json。该文件展示三种连接方式,使用的是占位路径和占位 token,需按实际客户端支持的配置格式选择条目。

示例中的 STDIO 条目使用 all,因此后续 HTTP 与 SSE 条目可连接它启动的同一个进程。只需要一个 STDIO 客户端时,将该条目的 all 改为 stdio。

如果 MCP 客户端找不到 uv,将 command 改为本机 uv 的绝对路径。--directory 必须指向本项目的绝对路径。不同客户端可能使用不同的远程传输类型名称,地址和 Bearer header 保持不变。

地图工具

先调用 list_sessions 获得 browser_session_id,再针对选定浏览器调用 get_state。同一服务支持多个浏览器标签页。

工具

行为

list_sessions

列出已连接并完成配对的浏览器会话

get_state

返回当前地图和编辑状态、地图会话及修订号

list_items

分页查询可用物品

list_actors

分页查询当前地图中的 Actor

select_actors

按编辑器 Actor 标识设置选区

place_actor

在地图格子中放置物件

move_actors

按格子增量移动物件

delete_actors

删除指定物件

undo、redo

使用现有编辑器撤销和重做历史

具体桥接消息和错误约定参见 docs/protocol.md。

凭据与撤销配对

浏览器中的“忘记配对”只清除该网页来源下本浏览器保存的连接设置,不轮换服务端 token。

若凭据泄露或需要撤销全部已配对页面:

  1. 停止正在运行的服务。

  2. 在相同配置目录下执行 uv run python -m calabiyau_map_engine_mcp reset-pairing。

  3. 再执行 pair 获取新凭据,更新 HTTP 客户端并重新配对浏览器。

  4. 重新启动服务。

HTTPS 页面连接本机服务

网页仍连接本机的 http://127.0.0.1:8765 和 ws://127.0.0.1:8765。浏览器可能要求用户授予本地网络访问权限,权限被拒绝时,应在浏览器站点设置中恢复权限,再手动连接。

站点若配置 Content Security Policy,connect-src 需要明确允许本机 HTTP 健康检查地址和 WebSocket 地址。使用自定义端口时,也需要相应更新 CSP 和连接设置。

浏览器策略、组织策略或网页 CSP 可能阻止连接;此时先通过本地开发页面诊断。

Available Tools

10 tools
delete_actorsC
Destructive

Delete ordinary actors. Linked partners may also be deleted by existing editor rules.

NameRequiredDescriptionDefault
actor_idsYes
map_session_idYes
expected_revisionYes
browser_session_idYes

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: that linked partners may be deleted as a side effect via editor rules. It says nothing, however, about batch size limits, partial failure, or what happens when the expected revision mismatches.

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 short sentences with no filler, and the primary action is front-loaded. The second sentence is dense but earns its place by disclosing the cascade side effect.

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?

For a destructive batch mutation with four required, wholly undocumented parameters and no output schema, the description leaves out too much: revision-conflict behavior, atomicity, and the practical size limit. Only the cascade-to-partners warning is supplied.

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 0% across four required parameters, so the description carries the full burden and covers none of them. The critical expected_revision optimistic-concurrency parameter and the 256-item cap on actor_ids go entirely unexplained.

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 ('Delete ordinary actors'), which clearly separates it from siblings like place_actor, move_actors, and list_actors. The phrase 'ordinary actors' versus 'linked partners' is not defined anywhere, so the scope boundary is only partially clear.

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 guidance on when to choose this tool over alternatives, no mention of prerequisites, and no mention of undo/redo as a recovery path even though both are sibling tools. The agent must infer all usage context from the name alone.

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

get_stateB
Read-onlyIdempotent

Read current map, revision, grid, selection, editability, dirty and combined history.

NameRequiredDescriptionDefault
browser_session_idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and non-destructive, so the safety profile is covered. The description usefully enumerates the state fields returned, but does not describe their shape or how 'combined history' is composed, which matters since there is no output schema.

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 no filler, leading with the verb and then the payload. The field list is dense but every term earns its place.

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 single-parameter read with no output schema, the description is close to sufficient because it enumerates the returned state components. The gap is the unexplained session parameter and the ambiguous 'combined history' field.

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?

There is one required parameter, browser_session_id, with 0% schema description coverage, and the description never mentions it or explains what a session id scopes the read to. With low coverage the description should compensate, and it does not.

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 gives a specific verb ('Read') plus an enumerated set of returned fields (map, revision, grid, selection, editability, dirty, combined history), which makes it clearly a state-inspection tool. It is implicitly distinct from mutating siblings like place_actor or delete_actors, but no sibling is named.

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: reading current state before/after edits. There is no explicit statement of when to call this versus list_items, list_actors, or select_actors, and no stated prerequisites beyond the required session id.

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

list_actorsB
Read-onlyIdempotent

Page live actors using editor_id. Pin session and revision for consistent pagination.

NameRequiredDescriptionDefault
limitNo
offsetNo
item_idNo
selected_onlyNo
map_session_idNo
expected_revisionNo
browser_session_idYes

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already cover read-only, idempotent, non-destructive behavior, and the description adds a meaningful pagination-consistency note. It still does not explain what 'live actors' means, what is returned, or what happens when session/revision are not pinned.

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 definition is two short sentences with the primary purpose front-loaded and little wasted text. The reference to 'editor_id' is a minor structural weakness because it does not map to any schema field.

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?

For a seven-parameter list tool with no output schema and no parameter descriptions, the description is too sparse. It provides pagination guidance but does not explain filtering, selection, map/session scoping, or the shape of returned actor data.

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 across seven parameters, the description must do more work, but it only vaguely references 'session and revision' and mentions an 'editor_id' that is not a parameter. It leaves limit, offset, item_id, selected_only, map_session_id, and browser_session_id unexplained.

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/resource pair: paging live actors. It distinguishes itself from list_items and list_sessions by naming actors specifically, though the reference to 'editor_id' is confusing because no such parameter exists in the schema.

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?

It gives useful pagination advice to pin session and revision for consistent pagination. However, it does not explicitly say when to use this tool versus list_items or get_state, so 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.

list_itemsB
Read-onlyIdempotent

Search the editor's baked item catalog. Some items are queryable but not placeable.

NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
browser_session_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the catalog is static ('baked') and includes entries that are queryable but not placeable, warning the agent about a downstream failure mode. It says nothing about result ordering, default result set size (limit defaults to 100), or whether the catalog is scoped to the browser session.

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 short sentences with the resource statement front-loaded and no filler. It is efficient, though the brevity is part of why parameter and usage details are missing rather than a sign of disciplined editing.

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?

Four parameters, no output schema, and no parameter descriptions mean the agent gets almost no information about what comes back or how to use the results. Critically, the description does not say whether returned items carry the identifiers needed by place_actor, which is the natural next step in this workflow.

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 0% across all four parameters, so the description carries the full burden and does not meet it. It never explains what 'query' matches against (name, tag, type), how 'limit'/'offset' interact, or why 'browser_session_id' is required for a read-only catalog lookup.

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 ("Search the editor's baked item catalog"), which is enough to distinguish it from the actor-oriented siblings (list_actors, place_actor). The verb "Search" versus the tool name "list_items" creates mild ambiguity about whether results are filtered or enumerated, but the resource is unambiguous.

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 clause "Some items are queryable but not placeable" implies a downstream constraint that matters when choosing between this tool and place_actor, but it never states when to call this instead of get_state or list_actors. There is no guidance on pagination strategy or the required browser_session_id.

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

list_sessionsA
Read-onlyIdempotent

List paired browser tabs. Explicitly choose a browser_session_id for other tools.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation. The description adds useful workflow guidance about explicitly choosing a browser_session_id for other tools, but does not describe the return shape, empty results, or whether multiple sessions may be listed.

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 short sentences, front-loaded with the action and resource. Every sentence adds usable information, with no filler or redundant restatement.

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-parameter list tool with rich read-only annotations and no output schema, the description is nearly complete. It identifies the resource and explains how the result is used, though it could clarify the return shape more explicitly.

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 full schema coverage, so there are no parameter semantics to explain. The description appropriately focuses on the tool’s purpose and prerequisite usage rather than redundant parameter details.

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 paired browser tabs." This clearly identifies the tool’s function and distinguishes it from the mutation-oriented siblings, though it uses "browser tabs" rather than explicitly saying "sessions."

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?

Adds clear workflow context by saying to choose a browser_session_id for other tools, which implies this tool is the prerequisite for session-scoped operations. It does not state exclusions or alternatives, but none are obviously needed for a zero-parameter list tool.

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

move_actorsC
Destructive

Move ordinary actors by integer grid cells; inspect actual returned positions.

NameRequiredDescriptionDefault
deltaYes
actor_idsYes
map_session_idYes
expected_revisionYes
browser_session_idYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered. The description adds genuinely useful behavior — that returned positions may differ from the requested delta and should be inspected — which is valuable given there is no output schema. It still omits concurrency semantics (expected_revision conflicts), whether a move is all-or-nothing across actor_ids, and what happens on collision.

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 tight sentence with the operation front-loaded and no filler. The second clause is slightly cryptic ('inspect actual returned positions') but it earns its place by flagging a non-obvious behavior.

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?

For a destructive, non-idempotent, five-required-parameter mutation with no output schema and no schema documentation, the description is too thin. An agent cannot tell from it how to handle a revision mismatch, partial application, or invalid coordinate targets.

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 0%, so the description must carry the load for five required parameters. It explains only that movement is in integer grid cells (clarifying delta's semantics) and implies actor_ids is a list; it says nothing about expected_revision acting as an optimistic-concurrency token, nor the roles of browser_session_id and map_session_id.

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 ('Move ordinary actors') plus the unit of movement ('integer grid cells'), which distinguishes it from placement (place_actor) and selection (select_actors). The qualifier 'ordinary' hints at an actor-type restriction but never names the alternative or what non-ordinary actors would use.

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 explicit when-to-use versus place_actor/select_actors/undo, and no mention of prerequisites such as needing a prior select or a fresh revision. The only implicit guidance is the word 'ordinary', which suggests some actors are excluded but leaves the agent to guess.

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

place_actorC
Destructive

Place one ordinary item in an empty grid cell. Color is linear RGB, not sRGB.

NameRequiredDescriptionDefault
cellYes
item_idYes
map_session_idYes
rotation_indexNo
color_linear_rgbNo
expected_revisionYes
browser_session_idYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the danger profile is covered. The description adds genuine value with the single-item limit and the empty-cell precondition, but omits what the destructive operation affects, how expected_revision conflicts are handled, and whether sessions must be pre-attached.

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 short sentences, front-loaded with the action and followed by the one non-obvious format rule. There is no filler, though the brevity is arguably under-specification rather than tight editing on a 7-parameter mutation tool.

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?

For a destructive, non-idempotent mutation with 5 required parameters, 0% schema coverage, and no output schema, the description is far too thin. Nothing explains the revision-check contract, the two session identifiers, or the failure modes an agent must anticipate before calling it.

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 0% across 7 parameters, so the description carries the full burden and largely fails: expected_revision (optimistic-concurrency token), rotation_index, browser_session_id, map_session_id, and item_id are never explained. Only color_linear_rgb gets meaning beyond the schema, via the 'linear RGB, not sRGB' note, and 'cell' is only implied by 'empty grid cell'.

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 ('Place one ordinary item') plus a placement constraint ('empty grid cell'), which is enough to tell it apart from move_actors and delete_actors. However, the tool is named place_actor while the description says 'item', leaving a naming ambiguity an agent must resolve on its own.

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 when-to-use/when-not guidance and never names the obvious alternatives (move_actors for existing actors, select_actors, undo). The 'empty grid cell' phrase implies a precondition but does not say what happens if the cell is occupied or when an agent should prefer a different sibling.

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

redoC
Destructive

Redo the editor's latest combined history entry.

NameRequiredDescriptionDefault
map_session_idYes
expected_revisionYes
browser_session_idYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered, but the description adds nothing about what gets discarded, whether the call fails or no-ops when nothing is available to redo, or what expected_revision guards against. For a state-mutating history operation this is thin.

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?

One front-loaded sentence with no filler or repetition. It is efficient, though its brevity is part of the under-specification problem rather than a virtue here.

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?

For a three-required-parameter mutation tool with no output schema and no parameter documentation, the description leaves the agent without the revision-guard contract, session scoping, or failure behavior. Terms like 'combined history entry' are unexplained jargon.

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

Parameters1/5

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

Schema description coverage is 0% across three required parameters, and the description never references any of them. Critically, 'expected_revision' is clearly an optimistic-concurrency token and 'browser_session_id' versus 'map_session_id' are two distinct session scopes, none of which is explained anywhere.

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 (redo) and a specific target (the editor's latest combined history entry), which is enough to distinguish it from the read/list siblings. It stops short of naming its counter-operation 'undo', so the pairing must be inferred from the tool name alone.

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 statement of when to call this versus undo, no prerequisite such as 'only valid immediately after an undo', and no mention of what to do when the redo stack is empty. The agent must guess the ordering semantics.

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

select_actorsC
Destructive

Select up to 256 editor IDs. An empty replace clears selection.

NameRequiredDescriptionDefault
modeNoreplace
actor_idsYes
map_session_idYes
expected_revisionYes
browser_session_idYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotency; the description adds real value by explaining that an empty replace-mode call clears the selection, which justifies the destructive flag. However, it never explains what add or toggle do, nor the concurrency role of expected_revision, so the mutation behavior remains partly opaque.

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 short, front-loaded sentences with no filler. It is efficiently written, though the brevity comes at the cost of coverage rather than being a virtue in itself.

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?

This is a 5-parameter, 4-required mutation tool with no output schema and no annotation-level detail about revision semantics or mode behavior; the description covers only a fraction of that burden. An agent could not reliably invoke add/toggle modes or satisfy expected_revision from this text.

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 0%, so the description must carry parameter meaning and largely doesn't. It mentions the 256 cap (already encoded as maxItems) and one mode edge case, but leaves mode's add/toggle values, expected_revision, browser_session_id, and map_session_id entirely unexplained.

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

Purpose3/5

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

The description uses a specific verb ("Select") and states a capacity limit, but it refers to "editor IDs" rather than actors, leaving the agent to infer that the resource is actors in the map editor. It also doesn't distinguish selection-state mutation from siblings like list_actors or place_actor.

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 guidance on when to use this versus list_actors, place_actor, or move_actors. The only usage-adjacent statement is "An empty replace clears selection," which explains one edge case but not the decision context.

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

undoB
Destructive

Undo the editor's latest combined history entry, including a human edit.

NameRequiredDescriptionDefault
map_session_idYes
expected_revisionYes
browser_session_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description does add real value by disclosing that it can revert a human edit and only the latest combined entry, but it omits what happens on revision mismatch, whether the undo is reversible, and any concurrency/permission expectations for a destructive operation.

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 no filler; the verb and scope come first. It is slightly under-specified rather than bloated, but there is no wasted wording.

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?

For a destructive, non-idempotent mutation with three fully undocumented required parameters and no output schema, the description is too thin. It leaves the agent without the meaning of `expected_revision`, the granularity of a 'combined history entry', or the outcome of a failed undo.

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 0% across three required parameters, so the description must compensate and largely does not. It never mentions `browser_session_id`, `map_session_id`, or `expected_revision` — the last of which is clearly a concurrency guard the agent needs to understand. 'Latest' vaguely gestures at revision semantics but gives no syntax or failure behavior.

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: undoes the editor's latest combined history entry. It is distinguishable from the sibling `redo`, but the phrase 'combined history entry' is jargon that leaves the exact unit of reversal ambiguous. The clarifying clause 'including a human edit' hints at scope without fully defining it.

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?

Implied usage (revert the most recent edit) is apparent, but there is no explicit when-to-use/when-not guidance and no mention of the obvious alternative `redo`. Nothing tells the agent how this behaves relative to state-reading siblings like `get_state`.

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. 10 tool updatesv0.1.0
    • First observeddelete_actors
    • First observedget_state
    • First observedlist_actors
    • First observedlist_items
    • First observedlist_sessions
    • First observedmove_actors
    • First observedplace_actor
    • First observedredo
    • First observedselect_actors
    • First observedundo

TDQS

B3.3/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct action: reading state, listing sessions/catalog/actors, selecting/placing/moving/deleting actors, and undo/redo. The only mild ambiguity is item vs. actor terminology, since place_actor mentions placing an 'ordinary item' while list_items is a non-placeable catalog, but descriptions largely clarify the boundary.

Naming Consistency4/5

Seven tools follow a consistent snake_case verb_noun pattern, and singular/plural usage is natural for place_actor vs. move_actors/delete_actors. The verb-only undo and redo are standard and understandable, but they are the minor deviation from the verb_noun pattern.

Tool Count5/5

Ten tools is well-scoped for a map editor MCP server. Each tool covers a meaningful operation across state, sessions, catalog, actors, selection, and history, with no obvious redundancy.

Completeness4/5

The surface covers the core actor lifecycle (list, select, place, move, delete) plus state reading, catalog search, sessions, and undo/redo. Minor gaps remain around richer actor property editing and explicit save behavior, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes any stdio-based MCP server to the internet via HTTP/SSE transport, enabling remote agents to access MCP tools over a network.
    7 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Connects MCP clients directly to a live Godot editor, enabling AI assistants to build scenes, edit nodes, and control the editor through over 120 operations.
    47
    17,600 PyPI
    3,171
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connects MCP clients to a running hx-multianim game via DevBridge for scene inspection, state manipulation, input injection, and diagnostics.
    38
    45 npm
    BSD 3-Clause
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to explicitly pair with a Web64 browser IDE tab and, with separate user approval, read working-copy project sources, create and atomically edit native projects, import files, save/export, and run asynchronous PRG/Exomizer/D64 build jobs. It also exposes capability discovery and public SDK/documentation/schema lookups over local stdio or authenticated loopback Streamable HTTP.
    -