zork-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zork-mcpStart a game of colossal-dungeon"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zork mcp
A text adventure interpreter as an MCP server. The AI is the player, it explores, solves puzzles, fights trolls, and collects treasure, turn by turn, through tool calls.
Games
colossal dungeon, a Zork style dungeon: a grue in the dark, a toll collecting troll, a locked grate, five treasures.
brainrot manor, a meme palace. Collect the aura artifacts. Become the main character.
Related MCP server: DMCP
Tools
list_games, available gamesstart_game(gameId), start/restart, returns your first roomact(command),look,go north,take the lantern,use lantern,attack troll with sword,inventory...hint, a nudge for the current roomscore, treasures, moves, win status
Run
npm install && npm run build && node dist/index.jsExample session
start_game("colossal-dungeon")act("take the lantern")→act("use lantern")act("go north"), a troll blocks you...act("attack troll with sword")...find all 4 treasures to win
Add a game
Games are pure data, see src/games.ts. Rooms, items with use-effects,
hints, and treasures are all declarative; no engine changes needed.
Available Tools
5 toolsactA
Send a command to the current game: move, look, take, use, examine... Returns the game's response.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Natural-language command, e.g. 'go north', 'take the lantern', 'use lantern', 'look', 'inventory' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits on its own. It states that it sends a command and returns the game's response, which implies a state-changing operation, but it does not explicitly mention side effects, prerequisites (e.g., must have an active game), or failure behavior. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant information. Every word contributes to understanding the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is mostly complete: it explains the action and the return value. It omits an explicit note about requiring an active game, but the phrase 'current game' and the existence of a 'start_game' sibling mitigate this gap. Slight incompleteness prevents a perfect score.
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 already provides a detailed description of the single 'command' parameter with concrete examples (e.g., 'go north', 'take the lantern'). The tool description adds generic examples but no additional meaning beyond what the schema covers, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a command to the current game, with a specific verb ('send') and resource ('command to the current game'). The examples (move, look, take, use, examine) distinguish it from sibling tools like list_games and start_game by focusing on in-game actions.
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 when to use: when the agent needs to perform an action in the game. It clearly indicates the context ('current game') but does not explicitly mention when not to use it or alternatives, though sibling names and the phrase 'current game' provide contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hintA
Get a hint for the current room.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only says 'Get a hint' without revealing whether this affects game state, has a cooldown, or is limited per room. This under-discloses potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single, front-loaded sentence that conveys the essential information without waste. Perfectly concise.
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 zero-parameter tool with no output schema, the description is mostly sufficient: it states the action and scope. However, it does not describe what the hint looks like or any behavioral consequences, making it slightly incomplete for an agent that needs to anticipate outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The description adds no parameter information, which is fine because there is nothing to describe. Baseline 4 applies.
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 (get) and resource (hint for the current room), making its purpose unmistakable. It is distinct from sibling tools like `act` or `score` which serve different game actions.
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 the tool is used when the agent needs a hint in the current room, but does not explicitly state when to prefer it over alternatives or any prerequisites/restrictions. No 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.
list_gamesA
List the text-adventure games available to play.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It clearly states that the tool lists available games, which suggests a read-only operation, but it does not explicitly confirm that it has no side effects or describe the format of the returned list. This is adequate for a simple list tool but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It front-loads the verb and resource, making it immediately scannable and easy to understand.
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 tool with no parameters and a simple list operation, the description is sufficient. It tells the agent what the tool does without requiring an output schema. A minor gap is the lack of detail about what fields are returned for each game, but the core purpose is fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema confirms this. The baseline for zero parameters is 4, and the description does not need to add parameter information. It adds no confusion and adequately supports the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'text-adventure games available to play,' which precisely identifies the tool's function. It is immediately distinct from siblings like start_game, act, hint, and score, which are action-oriented rather than listing games.
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 the tool is used to discover available games, but it does not explicitly state when to use it over alternatives or mention any prerequisites (e.g., 'use this before starting a game'). The use case is easy to infer, but the description does not provide explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scoreA
Show your current score, treasures collected, and move count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Show' implies a read-only operation, but the description does not explicitly state that it does not modify game state or any other behavioral constraints. It is adequate for a simple status tool but lacks explicit safety guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action ('Show') and lists the outputs. Every word earns its place, with no redundant or ambiguous phrasing.
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?
The tool is simple, has no parameters, and no output schema. The description fully explains what the user will receive (score, treasures, move count), making it complete for its purpose. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is trivially described (100% coverage). The description does not need to explain parameter semantics, and the baseline for 0 parameters is 4.
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 function with a specific verb ('Show') and three distinct outputs (score, treasures, move count). It implicitly distinguishes from sibling tools like start_game and act, which involve state changes, while score is a status query.
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 the tool is used to check current game state, but it does not explicitly state when to use it versus alternatives or mention any prerequisites. Usage is implied by the context of the game, but no explicit guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_gameB
Start (or restart) a text-adventure game. The AI is the player — explore with 'look', move with 'go north' etc., take items, and collect treasures to win.
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | No | Game id from list_games (default: colossal-dungeon) | colossal-dungeon |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only says 'Start (or restart)', which hints at state reset but does not explain what the tool returns (e.g., initial room description) or that restarting discards existing progress. The gameplay instructions are about the AI's behavior, not the tool's side effects or response format.
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 relatively concise but includes a lengthy gameplay directive ('explore with look, move with go north etc.') that is not directly about the tool's invocation. This extra instruction could belong in the 'act' tool description, making the tool's own description slightly over-specified.
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 tool with one parameter and no output schema, the description covers the core purpose and gives some gameplay context. However, it does not explain what the tool returns (e.g., narrative text) or how it connects to sibling tools like 'act', leaving the overall workflow partially implied rather than explicit.
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 already fully documents the single 'gameId' parameter with a clear description and default value (100% schema coverage). The tool description adds no additional parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts or restarts a text-adventure game, using a specific verb ('Start') and resource ('text-adventure game'). This distinguishes it from sibling tools like 'act' (for in-game actions) and 'list_games' (for listing available games), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is the entry point for gameplay, as it instructs the AI to 'explore with look, move with go north, etc.' after starting. However, it does not explicitly contrast with sibling tools (e.g., 'use act for actions after starting') or state when not to use it, such as when a game is already running.
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.
5 tool updates
v1.0.0- First observed
act - First observed
hint - First observed
list_games - First observed
score - First observed
start_game
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: listing games, starting a game, issuing commands, getting hints, and viewing score. No two tools overlap in functionality.
All tool names are single verbs that directly describe their action: list, start, act, hint, score. This is a consistent and predictable pattern.
Five tools is well-scoped for a text-adventure MCP server. Each tool serves a necessary function in the gameplay loop without redundancy.
The core game lifecycle is covered: discover, start, play, assist, and track progress. Minor features like saving/loading are missing but not essential for basic play.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Cloudflare Workers MCP server: ai-agent-scratchpad
Nifra docs, runnable examples, and API types as an MCP server for any AI assistant.
Related MCP Servers
- MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to act as dynamic dungeon masters for text-based RPGs with dynamically generated rule systems and comprehensive game state management.10 npm11MIT
- FlicenseNot gradedqualityDmaintenanceA proof-of-concept MCP server that enables LLMs to read local text files and fetch real-time weather data through external tools.-
- FlicenseCqualityCmaintenanceAn MCP server that exposes Discord bot actions as tools for LLM clients.291-