MCP GameBoy Server
MCP GameBoy 服务器
概述
一个用于 serverboy 的模型上下文协议 (MCP) 服务器,允许法学硕士 (LLM) 与 GameBoy 模拟器进行交互。您的法学硕士 (LLM) 可以……
加载 ROM
按键
看看 Gameboy 屏幕
跳帧
你可以...
使用@modelcontextprotocol/inspector 控制 gameboy 模拟器
使用http://localhost:3001/emulator上的 Web 界面控制 Gameboy 模拟器(并上传 ROM)
在你最喜欢的 MCP 客户端中安装 gameboy 模拟器
Related MCP server: MCP PyBoy Emulator Server
特征
支持 stdio 和 SSE 传输
提供 GameBoy 控制工具(上、下、左、右、A、B、开始、选择)
提供加载不同 ROM 的工具
提供获取当前屏幕的工具
所有工具都返回带有最新屏幕帧的 ImageContent
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 GameBoy 模拟器服务器:
npx -y @smithery/cli install @mario-andreschak/mcp-gameboy --client claude在FLUJO中安装
单击“添加服务器”
将 Github URL 复制并粘贴到 FLUJO 中
单击解析、克隆、安装、构建和保存。
手动安装
# Clone the repository
git clone https://github.com/yourusername/mcp-gameboy.git
cd mcp-gameboy
# Install dependencies
npm install
# Build the project
npm run build通过配置文件安装
!!注意:许多 MCP 客户端要求将 .env 变量中的 ROM 路径指定为绝对路径
要通过配置文件将此 MCP 服务器与 Cline 或其他 MCP 客户端集成:
打开您的 Cline 设置:
在 VS Code 中,转到“文件”->“首选项”->“设置”
搜索“Cline MCP 设置”
点击“在settings.json中编辑”
将服务器配置添加到
mcpServers对象:{ "mcpServers": { "mcp-gameboy": { "command": "node", "args": [ "/path/to/mcp-gameboy/dist/index.js" ], "disabled": false, "autoApprove": [] } } }将
/path/to/mcp-gameboy/dist/index.js替换为项目目录中index.js文件的实际路径。在 Windows 系统中,请使用正斜杠 (/) 或双反斜杠 (\\) 作为路径。保存设置文件。Cline 应该会自动连接到服务器。
用法
环境变量
!!注意:许多 MCP 客户端要求将 .env 变量中的 ROM 路径指定为绝对路径
在根目录中创建一个.env文件,其中包含以下变量:
# Server configuration
PORT=3001
# ROM path for stdio mode
ROM_PATH=./roms/dangan.gb在 stdio 模式下运行
在 stdio 模式下,服务器使用ROM_PATH环境变量中指定的 ROM 路径。它将打开一个浏览器窗口来显示 GameBoy 屏幕。
npm run start在 SSE 模式下运行
在 SSE 模式下,服务器启动一个 Express 服务器,该服务器提供网页以供选择 ROM。
npm run start-sse然后打开浏览器访问http://localhost:3001选择一个 ROM。
工具
该服务器提供以下工具:
press_up:按下 GameBoy 上的向上按钮press_down:按下 GameBoy 上的向下按钮press_left:按下 GameBoy 上的左键press_right:按下 GameBoy 上的右按钮press_a:按下 GameBoy 上的 A 按钮press_b:按下 GameBoy 上的 B 按钮press_start:按下 GameBoy 上的 START 按钮press_select:按下 GameBoy 上的 SELECT 按钮load_rom:加载 GameBoy ROM 文件get_screen:获取当前 GameBoy 屏幕
所有工具都返回具有最新屏幕帧的 ImageContent。
实现细节
此服务器使用模型上下文协议 (MCP) TypeScript SDK 构建。它使用:
来自
@modelcontextprotocol/sdk/server/mcp.js的McpServer用于服务器实现来自
@modelcontextprotocol/sdk/server/stdio.js``StdioServerTransport用于 stdio 传输来自
@modelcontextprotocol/sdk/server/sse.js``SSEServerTransport用于 SSE 传输用于 GameBoy 仿真的
serverboySSE 模式下的 web 服务器
express用于渲染 GameBoy 屏幕的
canvas
执照
麻省理工学院
Available Tools
13 toolsget_screenA
Get the current GameBoy screen (advances one frame)
| 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 full burden. It discloses the key behavioral trait that the tool 'advances one frame', which is crucial for understanding its side effect. However, it doesn't mention other important aspects like whether this requires a loaded ROM, what happens if no ROM is loaded, or what the output format looks like, leaving gaps in behavioral understanding.
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 perfectly concise at 8 words, front-loading the core purpose ('Get the current GameBoy screen') and following with the critical behavioral detail ('advances one frame'). Every word earns its place with no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description provides adequate basic information but lacks completeness. It doesn't specify what 'Get' returns (image data? state description?), prerequisites (must a ROM be loaded?), or error conditions. For a tool that presumably returns visual data, more context about the output would be helpful.
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 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description appropriately doesn't waste space discussing parameters, maintaining focus on the tool's purpose and behavior. This meets the baseline expectation for zero-parameter tools.
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 specific action ('Get the current GameBoy screen') and distinguishes it from siblings by specifying it 'advances one frame', which differentiates it from tools like 'wait_frames' or button presses. It uses a precise verb+resource combination that leaves no ambiguity about what the tool does.
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 context by mentioning 'advances one frame', suggesting this should be used when needing to capture screen state while progressing the emulation. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings like 'wait_frames' for different timing needs, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_rom_loadedA
Check if a ROM is currently loaded in the emulator
| 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 behavioral disclosure. It clearly indicates a read-only check operation ('Check if a ROM is currently loaded'), which implies non-destructive behavior. However, it lacks details on return values (e.g., boolean or status message), error conditions, or dependencies on other tools like 'load_rom'. No contradiction with annotations exists since none are provided.
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, clear sentence that efficiently conveys the tool's purpose without any wasted words. It is front-loaded with the core action ('Check'), making it easy to understand at a glance. Every part of the sentence earns its place by specifying the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is adequate but has gaps. It explains what the tool does but does not cover behavioral aspects like return format or error handling. For a read-only check tool, this is minimally viable, but additional context on output would improve completeness.
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 0 parameters, and the input schema has 100% description coverage (though empty). The description does not need to compensate for any parameter gaps. It appropriately focuses on the tool's function without unnecessary parameter details, aligning with the baseline for zero parameters.
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 tool's purpose with a specific verb ('Check') and resource ('ROM'), making it immediately understandable. It distinguishes from siblings like 'load_rom' (which loads ROMs) and 'list_roms' (which lists available ROMs), though it doesn't explicitly differentiate from all siblings. The purpose is not vague or tautological.
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 in the context of checking ROM status in an emulator, but it does not provide explicit guidance on when to use this tool versus alternatives. For example, it doesn't specify if this should be used before loading a ROM or to verify a successful load. No misleading information is present, but the guidance is limited to implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_romsA
List all available GameBoy ROM files
| 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 behavioral disclosure. It states the tool lists ROMs but doesn't describe return format (e.g., list of filenames, metadata), pagination, error conditions, or performance characteristics. This leaves significant gaps for an agent to understand how to interpret results.
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, efficient sentence that directly states the tool's function with zero wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a read operation. It doesn't explain what 'list' entails (e.g., format, structure, or limitations), leaving the agent uncertain about how to handle the output. For a tool with no structured behavioral hints, more 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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose without redundant parameter details, meeting the baseline for parameterless tools.
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 specific action ('List') and resource ('all available GameBoy ROM files'), distinguishing it from sibling tools like load_rom (which loads a specific ROM) or get_screen (which retrieves screen state). It precisely communicates the tool's function without ambiguity.
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 retrieving ROM lists, but lacks explicit guidance on when to use this versus alternatives like is_rom_loaded (which checks a specific ROM's status) or load_rom (which loads a ROM). It provides basic context but no exclusions or comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_romC
Load a GameBoy ROM file
| Name | Required | Description | Default |
|---|---|---|---|
| romPath | Yes | Path to the ROM file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether loading replaces a current ROM, requires specific file formats, has side effects, or returns any confirmation. This leaves significant gaps for a mutation tool.
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, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the core action, making it easy to parse quickly.
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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after loading (e.g., success indicators, error handling, or interaction with other tools like 'get_screen'), leaving critical context gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the 'romPath' parameter. The description adds no additional meaning beyond what's in the schema, such as file format requirements or path examples, meeting the baseline for high coverage.
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 ('Load') and resource ('a GameBoy ROM file'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_roms' or 'is_rom_loaded', which prevents a perfect score.
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 like 'list_roms' or 'is_rom_loaded'. It doesn't mention prerequisites (e.g., whether a ROM must be listed first) or exclusions, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_aB
Press the A button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action but doesn't disclose behavioral traits like whether this is a read-only or destructive operation, what happens if no GameBoy is connected, whether it requires specific permissions, or what the expected outcome is. The description is minimal and lacks important operational context.
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, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what happens after pressing the button, whether there's visual/audio feedback, error conditions, or how this interacts with other tools like wait_frames or get_screen. For a tool that likely triggers game state changes, more 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?
Schema description coverage is 100%, so the schema already fully documents the single parameter (duration_frames). The description doesn't add any parameter semantics beyond what's in the schema, but since schema coverage is high, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Press') and target resource ('the A button on the GameBoy'), distinguishing it from sibling tools like press_b, press_up, etc. It's unambiguous about what physical/virtual button is being activated.
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 context (GameBoy button pressing) but doesn't explicitly state when to use this tool versus alternatives like press_b or press_start. No guidance is provided about prerequisites (e.g., whether a ROM must be loaded first) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_bB
Press the B button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 behavioral disclosure. It states the action but lacks details on effects (e.g., in-game response, timing), prerequisites (e.g., requires a loaded ROM), or side effects (e.g., might trigger game events). This is a significant gap for a tool that likely interacts with a game system.
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, efficient sentence with zero waste. It is front-loaded with the core action and resource, making it immediately clear and appropriately sized for a simple 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?
Given the complexity of interacting with a GameBoy (implied by sibling tools like load_rom and get_screen), the description is incomplete. With no annotations, no output schema, and minimal behavioral context, it fails to address key aspects like how the press integrates with game state or what feedback to expect, leaving gaps for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'duration_frames' parameter fully. The description adds no additional parameter semantics beyond what the schema provides, such as typical usage scenarios or effects of varying durations, meeting the baseline for high schema coverage.
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 specific action ('Press') and target resource ('the B button on the GameBoy'), distinguishing it from sibling tools like press_a, press_up, etc. It precisely identifies what the tool does without ambiguity.
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. While the description implies it's for pressing the B button, it doesn't specify contexts (e.g., in-game actions, menu navigation) or exclusions compared to other press_* tools, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_downA
Press the DOWN button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 of behavioral disclosure. It states the action but does not explain what 'Press' entails (e.g., is it a tap, hold, or toggle?), potential side effects on the GameBoy state, or any constraints like rate limits or prerequisites. This leaves significant gaps in understanding the tool's behavior.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero waste, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and no output schema, the description is minimally complete but lacks depth. It covers the basic action but does not address behavioral aspects like how the press interacts with the GameBoy or what to expect after invocation, leaving room for improvement in context.
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 100% description coverage, with the parameter 'duration_frames' clearly documented in the schema. The description does not add any meaning beyond what the schema provides, as it mentions no parameters. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Press') and target resource ('DOWN button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, press_left, press_right, press_up, press_select, and press_start. It precisely identifies what the tool does without ambiguity.
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 in the context of GameBoy button pressing, but does not explicitly state when to use this tool versus alternatives like press_up or press_left. It provides basic context but lacks guidance on exclusions or specific scenarios for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_leftA
Press the LEFT button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 states the action but lacks behavioral details such as whether this requires a loaded ROM, what happens if pressed without context, or any side effects. The description is minimal and does not compensate for the absence of annotations.
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, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter with full schema coverage, no output schema), the description is adequate but lacks context about when or why to use it, especially relative to siblings. It covers the basic action but does not provide enough guidance for optimal agent decision-making in a gaming context.
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 description mentions no parameters, while the input schema has one parameter with 100% coverage. Since there are zero parameters described in the description, it meets the baseline of 4, as it does not need to compensate for schema gaps. The schema fully documents the parameter.
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 specific action ('Press') and target resource ('the LEFT button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, etc. It precisely communicates what the tool does without ambiguity.
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 GameBoy button pressing but provides no explicit guidance on when to use this tool versus alternatives (e.g., press_right, press_up) or any prerequisites. It relies on the tool name and context for implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_rightA
Press the RIGHT button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 of behavioral disclosure. It states the action but lacks details on effects (e.g., how it interacts with the GameBoy state), error conditions, or performance traits. The description is minimal and does not compensate for the absence of annotations.
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, clear sentence with zero waste, front-loading the essential action. It is appropriately sized for a simple tool and efficiently communicates the purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is minimally adequate but lacks context on behavioral aspects. It covers the basic action but does not provide completeness for a tool that interacts with a system (GameBoy), leaving gaps in understanding effects or usage scenarios.
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 schema description coverage is 100%, with the parameter 'duration_frames' fully documented in the schema. The description does not add any parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without extra value.
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 specific action ('Press') and target resource ('the RIGHT button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, press_left, etc. It precisely identifies what the tool does without ambiguity.
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 pressing the right button in a GameBoy context, but provides no explicit guidance on when to use this tool versus alternatives (e.g., press_left, press_up) or any prerequisites. Usage is inferred from the action and sibling names, but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_selectB
Press the SELECT button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 mentions pressing the button but lacks behavioral details such as whether this requires the GameBoy to be powered on, if it simulates a physical press, potential side effects, or error conditions. This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence that directly states the tool's purpose with no wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool performs an action (pressing a button) with no annotations or output schema, the description is incomplete. It lacks context on prerequisites (e.g., GameBoy state), behavioral outcomes, or error handling, which are crucial for an agent to use it correctly in a gaming emulation context.
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 description does not mention the parameter 'duration_frames', but the input schema has 100% coverage with a clear description. Since schema coverage is high, the baseline is 3, as the schema adequately documents the parameter without needing additional explanation in the description.
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 specific action ('Press') and target resource ('the SELECT button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, etc. It precisely communicates what the tool does without ambiguity.
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 like other button-press tools (e.g., press_start, press_a) or in what context (e.g., during gameplay, menus). The description only states the action without usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_startA
Press the START button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 of behavioral disclosure. It states the action ('Press') but doesn't describe what happens when the button is pressed (e.g., does it trigger a menu, pause the game, or have other effects?), whether it requires the GameBoy to be in a specific state, or any error conditions. This leaves significant gaps in understanding the tool's behavior beyond the basic action.
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, direct sentence with zero waste—it states the action and target without unnecessary words. It's front-loaded with the core purpose, making it highly efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is minimally adequate but lacks context about behavioral outcomes or prerequisites. It covers the basic action but doesn't explain what pressing START does in the GameBoy context, which could be critical for correct usage. Without annotations or output schema, more detail would improve completeness.
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 schema description coverage is 100%, with the single parameter 'duration_frames' fully documented in the schema. The description doesn't add any parameter semantics beyond what the schema provides (e.g., it doesn't explain what a 'frame' is in this context or typical values). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 specific action ('Press') and target resource ('the START button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, press_up, etc. It precisely identifies which button is being pressed, leaving no ambiguity about its function.
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 when needing to press the START button, but provides no explicit guidance on when to use this tool versus alternatives (e.g., other button-pressing tools or waiting). It doesn't mention prerequisites like whether a game must be loaded or if the GameBoy is powered on, leaving usage context incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_upB
Press the UP button on the GameBoy
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to hold the button |
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 of behavioral disclosure. It states the action ('Press') but does not explain what pressing the button actually does in the context (e.g., triggers a game input, may affect game state), whether it requires a loaded ROM, or any side effects like timing or interactions with other tools. This leaves significant gaps for a tool that likely interacts with game state.
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, clear sentence with zero wasted words. It is front-loaded with the core action and target, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a tool that interacts with a GameBoy emulator (implied by sibling tools like load_rom and get_screen), the description is incomplete. It lacks context on prerequisites (e.g., needing a ROM loaded), behavioral details (e.g., how pressing affects game state), and there is no output schema to clarify return values. With no annotations and minimal description, it does not provide enough information for safe and effective use.
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 description does not mention parameters at all. However, the input schema has 1 parameter with 100% description coverage (duration_frames is well-documented in the schema). Since schema coverage is high, the baseline score is 3, as the description adds no additional parameter information beyond what the schema provides.
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 specific action ('Press') and target resource ('the UP button on the GameBoy'), distinguishing it from sibling tools like press_a, press_b, press_down, etc. It precisely communicates what the tool does without ambiguity.
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 scenarios for pressing UP (e.g., navigating menus, moving characters) or differentiate it from other directional buttons like press_down, press_left, or press_right. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_framesC
Wait for a specified number of frames
| Name | Required | Description | Default |
|---|---|---|---|
| duration_frames | No | Number of frames to wait |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden of behavioral disclosure. The description only states what the tool does ('wait for frames') but doesn't disclose critical behavioral traits like whether this is a blocking operation, how it interacts with other tools (e.g., can other actions be queued during the wait), what happens if interrupted, or timing implications. For a timing tool with zero annotation coverage, this is inadequate.
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 perfectly concise - a single sentence that directly states the tool's function with zero wasted words. It's front-loaded with the essential information and earns its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a timing/waiting tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'wait' means operationally (blocking vs. non-blocking), what constitutes a 'frame' in this context, how this interacts with other emulation tools, or what the agent should expect after the wait completes. For a tool that controls timing in what appears to be a game emulation environment, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'duration_frames' clearly documented in the schema as 'Number of frames to wait' with a default of 100 and exclusiveMinimum of 0. The description adds no additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('wait') and the resource ('frames'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like press_a or press_b, which are also timing-related actions in a gaming/emulation context. The description is specific but lacks sibling distinction.
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. In a gaming emulation context with tools like press_a, press_b, and various press directions, there's no indication of whether wait_frames should be used for timing delays between actions, loading screens, or other scenarios. No explicit when/when-not or alternative tools are mentioned.
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.
13 tool updates
v1.0.0- First observed
get_screen - First observed
is_rom_loaded - First observed
list_roms - First observed
load_rom - First observed
press_a - First observed
press_b - First observed
press_down - First observed
press_left - First observed
press_right - First observed
press_select - First observed
press_start - First observed
press_up - First observed
wait_frames
TDQS
Scored across 13 tools
Every tool has a clearly distinct purpose with no ambiguity. The button press tools are all uniquely named for specific buttons, and the other tools handle distinct emulator operations like screen capture, ROM management, and frame control. There is no overlap in functionality.
All tools follow a consistent verb_noun pattern with snake_case throughout. The naming is perfectly predictable: 'get_screen', 'list_roms', 'load_rom', 'press_a', 'wait_frames', etc. There are no deviations in naming conventions.
13 tools is well-scoped for a GameBoy emulator server. Each tool earns its place with clear purposes: ROM management (3 tools), button controls (8 tools), screen capture (1 tool), and frame control (1 tool). This provides comprehensive coverage without bloat.
The tool surface is nearly complete for GameBoy emulation, covering ROM loading, button inputs, screen capture, and frame control. A minor gap exists in reset/unload functionality, but agents can work around this by reloading ROMs. Core emulator workflows are well-supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with Game Boy games through PyBoy emulation, providing capabilities to load ROMs, control games, capture screens, save/load states, and maintain game knowledge.1MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides LLMs with Pokémon data access and battle simulation capabilities, including an interactive web interface.-
- AlicenseNot gradedqualityDmaintenanceMCP server for the mGBA Game Boy/GBA emulator, enabling full emulator control, memory access, debugging, and screenshot capture through natural language.4MIT