arena-hero-mcp
The arena-hero-mcp server bridges your AI client to the browser's IndexedDB for the game arena-hero, enabling real-time queries of explored map cells (resources and obstacles) via WebSocket. It provides the following tools:
list_resources — Returns coordinates of all explored resource nodes. Data is refreshed on each call but may be stale.
list_obstacles — Returns coordinates of permanent obstacles. This data is reliable.
get_all_cells — Lists all non-empty cells (both resources and obstacles) in one call.
snapshot_info — Shows snapshot metadata: cell count, namespace, update time, kind distribution, and browser connection status.
refresh — Forces the browser to re-read IndexedDB and push an updated snapshot.
get_userscript — Provides the full Tampermonkey userscript for installation, even without an active browser connection.
The server establishes a WebSocket connection to the browser, retrieves data on demand, runs persistently until the client exits, and automatically reconnects if the connection drops.
Provides the Tampermonkey userscript that bridges the browser to the MCP server, enabling AI to query the arena-hero game's exploration memory (resource/obstacle coordinates) stored in IndexedDB.
Click on "Install 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., "@arena-hero-mcpList all resource coordinates I've explored"
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.
arena-hero MCP
让 AI 读取 Arena Hero 浏览器中的探索地图、移动目标、指令上下文,并预览路线。MCP 常驻于宿主的 stdio 生命周期,浏览器 bridge 只在调用相关工具时启动,空闲 2 分钟后退出。
安装
npx -y arena-hero-mcp install <agent> # 当前项目
npx -y arena-hero-mcp install <agent> --global # 全局支持 claude、claude-desktop、cursor、windsurf、cline、continue 和 codex。claude-desktop、codex 仅支持 --global。安装后重启 agent。
手动配置:
{
"mcpServers": {
"arena-hero-mcp": {
"command": "npx",
"args": ["-y", "arena-hero-mcp"]
}
}
}Related MCP server: mc-mcp-server
浏览器配置
安装 Tampermonkey 或 Violentmonkey。
点击 快速安装油猴脚本。也可调用 MCP 工具
get_userscript手动安装。在
https://app.arenahero.io的站点设置中允许“不安全内容”,使 HTTPS 页面可以连接本机ws://127.0.0.1:7790。登录并打开
https://app.arenahero.io/arena。右上角显示📡 已连 MCP 桥即可使用。
脚本自动识别当前用户名,无需修改配置。
用户脚本地址:https://raw.githubusercontent.com/vhxubo/arena-hero-mcp/main/tampermonkey.user.js
本地桥地址:
ws://127.0.0.1:7790(按需监听)
按需启动
tools/list、get_userscript、snapshot_info不启动浏览器 bridge。其它工具首次调用时自动启动 bridge;油猴脚本会在下一次重连时接入。
bridge 空闲 2 分钟自动退出并释放端口,MCP 配置无需增加第二个进程。
arena-hero-bridge仅供本地调试,普通用户无需手动启动。
工具
工具 | 用途 |
| 查询已探索的 |
| 查询 Web 保存的跨 Tick 移动目标 |
| 查询当前 Agent、Manual 和合并后的有效指令 |
| 查询 Tick、连接阶段、指令窗口剩余时间和移动目标 |
| 按 Web 规则预览对象到目标坐标的路线 |
| 查询探索记忆中的资源坐标 |
| 查询已知永久障碍坐标 |
| 查询所有非空探索记忆格 |
| 查询版本、namespace、格子统计和浏览器连接状态 |
| 强制浏览器重读 IndexedDB |
| 获取当前版本的用户脚本 |
首次安装可调用 snapshot_info 验证:
{
"bridgeRunning": true,
"browserConnected": true,
"versionMatch": true
}边界
未探索区域没有数据。
RESOURCE是探索记忆,可能已被采集、补充或移位;实时资源以游戏状态为准。preview_route在油猴脚本中复刻 Web 的视野、地形、占位和移动规则。selected_object_id无稳定浏览器资源来源,因此固定返回null。关闭 Arena 页面后浏览器桥会断开。
排错
bridgeRunning: false:尚未调用浏览器工具,属于正常按需状态。browserConnected: false:调用浏览器工具后,确认 Arena 页面已打开,并允许了不安全内容。“无探索数据”:先进入 Arena 探索地图。
脚本版本不匹配:重新调用
get_userscript并覆盖旧用户脚本。EADDRINUSE:端口 7790 已被另一实例占用。Codex 日志出现
listen EPERM:当前沙箱禁止监听本机端口,需要在允许本地监听的环境中运行 MCP server。
开发
需要 Node.js 18+。
npm install
PORT=17790 npm testPORT 默认是 7790;修改后需要同步修改用户脚本中的 WS_URL。
Available Tools
6 toolsget_all_cellsA
列出所有非 EMPTY 记忆格(RESOURCE + OBSTACLE).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently states what the tool returns (all non-EMPTY memory cells of the two types) without hiding any side effects. While it doesn't explicitly say it's read-only, the verb 'list' strongly implies a non-mutating operation, making this adequately transparent.
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 a single, concise sentence that conveys all necessary information without redundancy. Every word earns its place, and the structure is clear and front-loaded.
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 list tool with no parameters and no output schema, the description is fully complete. It specifies exactly what cells are returned (non-EMPTY, RESOURCE + OBSTACLE), which is sufficient for an agent to decide when to invoke it. No additional context is needed.
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?
The tool has zero parameters, and the input schema is empty. Per the rubric, a baseline of 4 is appropriate when there are no parameters to describe. The description adds no param-specific information, but none is needed.
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 uses the specific verb 'list' and clearly defines the resource as 'memory cells' with explicit filters (non-EMPTY, RESOURCE + OBSTACLE). This distinguishes it from sibling tools like list_resources and list_obstacles by covering both types in one call.
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?
The description clearly states the scope (non-EMPTY cells of both RESOURCE and OBSTACLE types), implying it should be used when both types are needed together. It does not explicitly name alternatives or exclusionary conditions, but the context is clear enough for an agent 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.
get_userscriptA
返回 Tampermonkey 油猴脚本全文, 供用户粘贴进扩展安装. 顶部 NAMESPACE 需用户改成自己的 arena-hero 用户名. 不依赖浏览器连接, 随时可调.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 a meaningful behavioral trait: "不依赖浏览器连接, 随时可调" (does not depend on browser connection, can be called anytime), indicating the tool is always available and performs a read-only retrieval. It also warns about the NAMESPACE caveat. This adds value beyond the name and purpose.
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 two sentences, front-loaded with the primary action and immediate usage. Every sentence adds value: the first states what it returns and for what purpose; the second includes the necessary caveat and availability. 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?
For a simple no-parameter tool with no output schema, the description covers the essential aspects: what it returns, why it's used, a key prerequisite, and the fact that it can be called anytime. It is complete enough for an agent to understand when and how to invoke it.
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?
The tool has zero parameters, and the schema is empty, so the baseline is 4. The description provides no parameter details but correctly omits them since they don't exist. It instead mentions a user action (changing NAMESPACE) which is not a parameter, which is fine.
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 opens with a specific verb and resource: "返回 Tampermonkey 油猴脚本全文" (returns the full text of the Tampermonkey userscript). It clearly distinguishes this from sibling tools like list_resources, list_obstacles, and get_all_cells by focusing on the script text rather than game state or resources.
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?
The description states the intended use case: "供用户粘贴进扩展安装" (for users to paste into extension installation) and gives a prerequisite: the user must change the NAMESPACE. It does not explicitly exclude any contexts or mention alternatives, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_obstaclesA
列出所有 kind=OBSTACLE 记忆格(永久地形, 可信).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of behavioral disclosure. It adds semantic context (permanent terrain, trustworthy) but does not explicitly state that the operation is read-only, nor does it describe potential side effects, performance, or return format. The word 'list' implies a read operation, but more detail would be beneficial.
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 a single, well-structured sentence that immediately states the action and scope, and it adds a brief parenthetical clarification. It is concise, front-loaded, and contains no unnecessary 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?
For a simple tool with no parameters, no annotations, and no output schema, the description adequately covers the essential information: it tells what is listed (all obstacle memory cells) and adds helpful clarification. It could be slightly more complete by explicitly stating the return type, but the description is sufficient for the tool's simplicity.
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?
The tool has zero parameters, so the baseline is 4. The description adds value by explaining what kind=OBSTACLE means, which is not captured in the schema. Since there are no parameters to document, this 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 the action ('列出所有' = list all) and the resource (kind=OBSTACLE memory cells), and it further clarifies the meaning of OBSTACLE as 'permanent terrain, trustworthy.' This distinguishes it from sibling tools like list_resources and get_all_cells, which likely handle other cell types or broader scopes.
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?
The usage context is implied: use this tool when you need to retrieve obstacle cells. However, it does not explicitly mention when not to use it or point to alternatives like get_all_cells for a broader query, so it lacks the explicit differentiation seen in higher-scoring examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resourcesA
列出 IndexedDB cells 中所有 kind=RESOURCE 的探索记忆格(你本局探索过的资源节点坐标). 每次调用通过 ws 让浏览器重读 IndexedDB 返回最新. ⚠️ 记忆会过时, 不可当当前可采.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 explains that each call uses websocket (ws) to make the browser re-read IndexedDB for the latest data, and warns about stale memory. This adds meaningful behavioral context beyond the schema, though it does not describe the return format 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?
The description is concise, with two sentences that directly state the purpose, the mechanism (ws re-read), and the key caveat (stale memory). Every sentence earns its place with no redundancy.
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 list tool with no parameters and no output schema, the description covers the essential aspects: what it returns (RESOURCE-kind coordinates), how it fetches data (ws re-read), and the important limitation (memory can be outdated). It does not specify the exact return format, but this is not critical given the tool's simplicity.
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?
The input schema has zero parameters, so there is nothing to explain. The description adds no parameter information, but none is needed. The baseline of 4 for a no-parameter tool 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 it lists all exploration memory cells with kind=RESOURCE in IndexedDB, naming the specific resource (RESOURCE cells) and the context (exploration memory). This distinguishes it from sibling tools like list_obstacles and get_all_cells, so the purpose is unambiguous.
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?
The description implies usage for viewing explored resource nodes and explicitly warns that the memory may be outdated and should not be treated as currently minable. However, it does not explicitly compare to alternatives or state when to use this tool instead of others, leaving some gap in usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refreshB
强制让浏览器重读 IndexedDB 并回推最新快照.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It reveals the tool forces a refresh and pushes a snapshot, but does not disclose side effects, auth requirements, or what happens to existing data. 'Force' implies a mutation, but details are missing.
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 a single, front-loaded sentence with zero waste. It efficiently states the core action without redundancy, appropriate for a parameterless tool.
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?
With no annotations, no output schema, and zero parameters, the description is the only source of context. It fails to explain the return format or the practical effect of the refresh, making it incomplete for an agent to predict what happens.
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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter information, but none is needed. It is clear that invocation requires no arguments.
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 states a specific action: force the browser to re-read IndexedDB and push back the latest snapshot. This clearly distinguishes it from sibling tools like snapshot_info or get_all_cells, though the phrase 'push back' is somewhat ambiguous.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, typical scenarios (e.g., after data changes), or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_infoA
返回最新快照元信息(数量/namespace/更新时间/kind 分布) + 浏览器连接状态.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It states the content of the return value (snapshot metadata and browser connection status) but does not mention side effects, error handling, or any dependencies. For a read-only info tool, this is a basic disclosure, but it leaves some ambiguity around what 'browser connection status' entails.
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 a single, succinct sentence that leads with the verb and resource, then packs the key fields into a parenthetical list. It is front-loaded and contains no filler or repetition. Excellent conciseness.
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?
This is a simple, parameterless tool with no output schema. The description covers the main return elements (count, namespace, update time, kind distribution, browser connection status). While it could elaborate on the meaning of 'browser connection status' or the format of the output, the low complexity makes this description adequately complete.
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?
The tool accepts zero parameters, so there is no parameter semantics to convey. According to the rubric, 0 params gets a baseline score of 4. The description correctly omits any parameter-related details, and no additional meaning is needed.
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 that the tool returns the latest snapshot metadata (count, namespace, update time, kind distribution) plus browser connection status. The verb '返回' (returns) is specific, and the resource is well-defined. This distinguishes it from sibling tools like list_resources or get_all_cells, which focus on other types of data.
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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or comparison with sibling tools. The agent is left to infer usage solely from the purpose statement, which is insufficient for clear decision-making.
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.
6 tool updates
v0.3.1- First observed
get_all_cells - First observed
get_userscript - First observed
list_obstacles - First observed
list_resources - First observed
refresh - First observed
snapshot_info
TDQS
Scored across 6 tools
Each tool serves a clearly distinct purpose: listing resources, listing obstacles, combining both, providing snapshot metadata, forcing a refresh, and retrieving the userscript. No two tools could be easily confused even without reading descriptions in detail.
Tool names mostly follow a verb_noun snake_case pattern (list_resources, get_all_cells, get_userscript) with a few exceptions like snapshot_info (noun_noun) and refresh (bare verb). Still, the naming is consistent in style and readable enough to infer function.
Six tools is a well-scoped count for a specialized server. Each tool earns its place, covering the core read-oriented features and the script installation helper without unnecessary bloat.
The server covers the apparent domain of browsing arena-hero memory cells and installing the userscript, but lacks any mutation or configuration tools (e.g., clearing cache, changing namespace via MCP). These are minor gaps for a primarily read-only toolset.
Maintenance
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Cloud-hosted MCP server for durable AI memory
One connector for 15,000+ MCP servers plus your team's private MCPs, from any AI client.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA minimal WebSocket-based MCP server implementation that enables modern tool integrations with VSCode, Claude, and other applications.9ISC
- AlicenseNot gradedqualityFmaintenanceEnables AI-driven interactions with Minecraft through a WebSocket-based server and MCP protocol, allowing external MCP clients and in-game chat to trigger AI tools.4MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that bridges Unity with AI agents, enabling scene inspection, C# code execution, and screenshot capture via WebSocket communication.MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that provides shared, real-time context across multiple AI agents via WebSocket and MCP resource notifications, enabling collaborative workspaces, memory, tasks, and messaging.151MIT