@wrathbench/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., "@@wrathbench/mcprun a snippet to make my character say hello, then summarize my state"
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.
wrath-mcp
A client-equivalent agent surface over a stock AzerothCore (World of Warcraft 3.3.5a): packets, not pixels. It gives an agent a game client's eyes and hands on a live character, and nothing a client would not have. Every action goes in as the client opcode a real client would send, through the same server handler, and every observation is a packet the server would send that client.
Three pieces:
Path | What it is |
|
|
|
|
|
|
What an agent may observe and do is docs/CONTRACTS.md; with
module/PROTOCOL.md it is the stack's specification. The stack knows nothing
of episodes, scores or trajectories. A harness plugs those in through the hooks
mcp/ exposes; docs/ARCHITECTURE.md is how the pieces fit and what those
hooks are. WrathBench, an LLM
evaluation harness, is one such harness and the stack's first consumer.
Tested against AzerothCore
3cafaf4a588fd1f287678fdb37438fdedd1ed85c.
Building the module into a worldserver
Check out AzerothCore at the tested commit.
Copy
module/tomodules/mod-wrathbenchin that tree. The directory name matters:mod-wrathbench.cmakenamesmodules/mod-wrathbench/src/when it stamps the build identity.Build as usual; AzerothCore's CMake discovers the module itself. Pass
-DWRATHBENCH_BUILD=<your build id>to name the build onGET /health; without it the module reportsunknown.Copy
module/conf/mod_wrathbench.conf.distbeside the worldserver's config and set it:WrathBench.Secret, the port secret, 32 characters or more. It is required; without it the module does not listen. Keep it out of the file itself and pass it asAC_WRATH_BENCH_SECRETin the worldserver's environment.WrathBench.Accounts, the game accounts sessions may use. Each must exist in the auth database (account create <name> <password>on the worldserver console).WrathBench.BindAddressandWrathBench.Port(default0.0.0.0:8086). Keep that port on a private network.WrathBench.AuditDir, where the per-session audit logs go. Its default is the AzerothCore Docker image's log path; outside that image, point it at a writable directory.
The worldserver needs the 3.3.5a client data (dbc, maps, vmaps,
mmaps) for that core, extracted from a client you own. None of it is in this
repository, and none of it may be committed here.
Related MCP server: llm-battle-mcp
Quick start
With Bun 1.4.4 (.bun-version) and Linux:
bun install --frozen-lockfileCheck the module end to end with the SDK alone. sdk/examples/live-slice.ts
connects, creates or reuses a character, says a line, reads the echo off the
event stream and checks the state cache against it:
MODULE_HOST=127.0.0.1 MODULE_PORT=8086 \
WRATHBENCH_MODULE_SECRET=<the port secret> \
bun sdk/examples/live-slice.tsIt uses the module's default account (WrathBench.Account). live-move.ts
does the same for movement.
Then serve the core tools to an MCP-capable agent:
WRATHBENCH_MODULE_URL=http://127.0.0.1:8086 \
WRATHBENCH_MODULE_SECRET=<the port secret> \
bun mcp/src/main.ts --account <an allowed account>It speaks MCP over stdio, so the agent launches it as its server command. It
leases a session secret with the port secret and hands the sandbox only that.
The sandbox needs Linux 6.7 or later (Landlock with TCP rules) and refuses to
start without it. mcp/README.md has the options; sdk/README.md covers
using the SDK directly.
Development
bun test # sdk, mcp and the boundary check, against an in-process module stub
bun run typecheck # tsc over sdk, mcp and scripts; bun test does not check types
bun run boundary # the stack imports nothing but itself and declared dependencies
bun run docs:api:check # sdk/API.md matches the source it is generated fromNone of these needs a game stack or any game data. The module compiles only
inside an AzerothCore tree; see CONTRIBUTING.md for how a module change is
verified.
Licence
Everything here is MIT under LICENSE, except
module/src/WbNavRecast.cpp, which is derived from Recast Navigation and keeps
its zlib licence notice. A worldserver built with the module is a combined work
under AzerothCore's licence. Nothing here relicenses AzerothCore, Blizzard's
assets or any dependency; see THIRD-PARTY-NOTICES.md.
Nothing Blizzard-derived is in this repository: no client files, no extracted maps or DBCs, no game text. The client data a worldserver needs is the user's own to supply, and the stack runs only against a private AzerothCore server.
This server cannot be deployed
Maintenance
Related MCP Connectors
- RockyOAuthworld.getrocky
Your personal world model for any agent.
Persistent MMORPG where AI agents play alongside humans. 12 tools, 4 resources; free, no pay-to-win.
A public home for AI agents and humans: readable chat, play, and human-controlled access tokens.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables LLM agents to play and survive in Minecraft by abstracting low-level tasks like pathfinding, building, and crafting into high-level transactional commands. It utilizes a "Helix" architecture to handle execution and coordinate math autonomously, allowing models to focus on strategy and high-level intent.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously create characters, join matchmaking, and battle other LLMs in a turn-based game using 7 tools for status, abilities, and actions.ISC
- AlicenseAqualityBmaintenanceAn MCP server that lets LLM agents autonomously play retro games by driving a real OpalEmu emulator in a Playwright-controlled browser, exposing tools for loading ROMs, controlling buttons, and capturing screenshots.65AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceEnables LLMs to control a Minecraft bot and interact with the game through MCP tools, including observing state, moving, mining, crafting, building, farming, managing inventory, enchanting, and chatting in-game.1-