Skip to main content
Glama

MCP 게임보이 서버

대장간 배지

개요

서버보이용 모델 컨텍스트 프로토콜(MCP) 서버로, LLM이 게임보이 에뮬레이터와 상호 작용할 수 있도록 지원합니다. LLM은...

  • ROM 로드

  • 키를 누르세요

  • 게임보이 화면을 보세요

  • 프레임 건너뛰기

당신은 할 수 있습니다...

  • @modelcontextprotocol/inspector를 사용하여 게임보이 에뮬레이터를 제어합니다.

  • http://localhost:3001/emulator 에서 웹 인터페이스를 사용하여 게임보이 에뮬레이터를 제어하고 ROM을 업로드합니다.

  • 좋아하는 MCP-Client에 게임보이 에뮬레이터를 설치하세요

스크린샷 2025-04-25 183528

스크린샷 2025-04-25 081510

영상

Related MCP server: MCP PyBoy Emulator Server

특징

  • stdio와 SSE 전송을 모두 지원합니다

  • GameBoy 컨트롤(위, 아래, 왼쪽, 오른쪽, A, B, 시작, 선택)을 위한 도구를 제공합니다.

  • 다양한 ROM을 로드하기 위한 도구를 제공합니다.

  • 현재 화면을 얻기 위한 도구를 제공합니다

  • 모든 도구는 최신 화면 프레임이 포함된 ImageContent를 반환합니다.

설치

Smithery를 통해 설치

Smithery를 통해 Claude Desktop용 GameBoy Emulator Server를 자동으로 설치하려면:

지엑스피1

FLUJO 에 설치하기

  1. 서버 추가를 클릭하세요

  2. Github URL을 복사하여 FLUJO에 붙여넣기

  3. 분석, 복제, 설치, 빌드 및 저장을 클릭합니다.

수동 설치

# 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 클라이언트와 통합하려면:

  1. Cline 설정을 엽니다.

    • VS Code에서 파일 -> 환경 설정 -> 설정으로 이동합니다.

    • "Cline MCP 설정"을 검색하세요

    • "settings.json에서 편집"을 클릭하세요.

  2. mcpServers 개체에 서버 구성을 추가합니다.

    {
      "mcpServers": {
        "mcp-gameboy": {
          "command": "node",
          "args": [
            "/path/to/mcp-gameboy/dist/index.js"
          ],
          "disabled": false,
          "autoApprove": []
        }
      }
    }
  3. /path/to/mcp-gameboy/dist/index.js 프로젝트 디렉터리에 있는 index.js 파일의 실제 경로로 바꾸세요. Windows에서는 경로에 슬래시(/) 또는 이중 백슬래시(\\)를 사용하세요.

  4. 설정 파일을 저장하세요. 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 모드에서는 서버는 ROM 선택을 위한 웹 페이지를 제공하는 Express 서버를 시작합니다.

npm run start-sse

그런 다음 브라우저를 열어 http://localhost:3001 로 접속하여 ROM을 선택하세요.

도구

서버는 다음과 같은 도구를 제공합니다.

  • press_up : 게임보이의 UP 버튼을 누르세요

  • press_down : 게임보이의 DOWN 버튼을 누르세요

  • press_left : 게임보이의 왼쪽 버튼을 누르세요

  • press_right : 게임보이의 오른쪽 버튼을 누르세요

  • press_a : 게임보이의 A 버튼을 누르세요

  • press_b : 게임보이의 B 버튼을 누르세요

  • press_start : 게임보이의 START 버튼을 누르세요

  • press_select : GameBoy의 SELECT 버튼을 누르세요

  • load_rom : GameBoy ROM 파일을 로드합니다

  • get_screen : 현재 GameBoy 화면을 가져옵니다

모든 도구는 최신 화면 프레임이 포함된 ImageContent를 반환합니다.

구현 세부 사항

이 서버는 MCP(Model Context Protocol) TypeScript SDK를 사용하여 구축되었습니다. 다음을 사용합니다.

  • 서버 구현을 위한 @modelcontextprotocol/sdk/server/mcp.js 의 McpServer

  • stdio 전송을 위한 @modelcontextprotocol/sdk/server/stdio.js 의 StdioServerTransport

  • SSE 전송을 위한 @modelcontextprotocol/sdk/server/sse.js 의 SSEServerTransport

  • GameBoy 에뮬레이션을 위한 serverboy

  • SSE 모드에서 웹 서버를 위한 express

  • GameBoy 화면 렌더링을 위한 canvas

특허

MIT

Available Tools

13 tools
get_screenA

Get the current GameBoy screen (advances one frame)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
romPathYesPath to the ROM file

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already 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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to hold the button

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_framesNoNumber of frames to wait

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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.

  1. 13 tool updatesv1.0.0
    • First observedget_screen
    • First observedis_rom_loaded
    • First observedlist_roms
    • First observedload_rom
    • First observedpress_a
    • First observedpress_b
    • First observedpress_down
    • First observedpress_left
    • First observedpress_right
    • First observedpress_select
    • First observedpress_start
    • First observedpress_up
    • First observedwait_frames

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the mGBA Game Boy/GBA emulator, enabling full emulator control, memory access, debugging, and screenshot capture through natural language.
    4
    MIT