Skip to content

Latest commit

 

History

History
173 lines (136 loc) · 4.24 KB

File metadata and controls

173 lines (136 loc) · 4.24 KB

azerothcore-wotlk-mcp

MCP server for managing an AzerothCore WoTLK server through its SOAP interface. Exposes 28 Game Master tools that any MCP-compatible client (Claude Code, Claude Desktop, etc.) can call directly via an LLM.

Prerequisites

  • Node.js >= 20.6.0
  • An AzerothCore worldserver with SOAP enabled (SOAP.Enabled = 1 in worldserver.conf)

Setup

git clone <repo-url> && cd azerothcore-wotlk-mcp
npm install
cp .env.example .env   # edit with your SOAP credentials
npm run build

Configuration

Variable Default Description
TRANSPORT stdio Transport mode: stdio or sse
HTTP_PORT 3000 HTTP port for SSE mode (ignored in stdio)
SOAP_HOST 127.0.0.1 AzerothCore SOAP host
SOAP_PORT 7878 AzerothCore SOAP port
SOAP_USERNAME required SOAP account username
SOAP_PASSWORD required SOAP account password

The SOAP account must have security level 3 (SEC_ADMINISTRATOR) on the AzerothCore server.

Usage

stdio (default)

Add to your MCP client configuration (Claude Code, Claude Desktop, etc.):

{
  "mcpServers": {
    "azerothcore": {
      "command": "node",
      "args": ["--env-file=.env", "dist/index.js"],
      "cwd": "/path/to/azerothcore-wotlk-mcp"
    }
  }
}

SSE (HTTP)

Set TRANSPORT=sse in .env, then:

npm start
# MCP SSE server listening on http://localhost:3000/mcp

Client configuration:

{
  "mcpServers": {
    "azerothcore": {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

Tools

Server

Tool Description
server_info Server version, uptime, connected players
server_set_motd Set the Message of the Day
server_reload_config Reload worldserver.conf without restart

Account

Tool Description
account_create Create a game account
account_delete Delete a game account
account_set_gmlevel Set GM security level (0-3)

Character

Tool Description
character_level Set character level (1-80)
character_rename Force rename at next login
character_changerace Force race change at next login
character_changefaction Force faction change at next login

Ban & Mute

Tool Description
ban_account Ban an account (duration + reason)
ban_ip Ban an IP address
ban_character Ban a character
unban_account Remove account ban
unban_character Remove character ban
unban_ip Remove IP ban
mute_player Mute a player for N minutes

Teleport

Tool Description
teleport_player Teleport to a named location
summon_player Summon a player

Mail

Tool Description
send_mail Send in-game mail
send_items Send items via mail
send_money Send copper via mail

Guild

Tool Description
guild_create Create a guild
guild_delete Delete a guild
guild_invite Invite a player to a guild

Announce

Tool Description
announce Server-wide chat announcement
notify Server-wide screen notification

Lookup

Tool Description
player_info Detailed player information
lookup_player_ip Find characters by IP
lookup_player_account Find characters by account

Escape Hatch

Tool Description
raw_command Execute any GM command directly

AzerothCore SOAP Setup

In worldserver.conf:

SOAP.Enabled = 1
SOAP.IP = "127.0.0.1"
SOAP.Port = 7878

The account used for SOAP must be granted admin level:

-- In the auth database
INSERT INTO account (username, sha_pass_hash) VALUES ('admin', SHA1(CONCAT(UPPER('admin'), ':', UPPER('admin'))));
-- Then set GM level 3
INSERT INTO account_access (id, gmlevel, RealmID) VALUES ((SELECT id FROM account WHERE username = 'admin'), 3, -1);

Or via the worldserver console:

.account create admin admin
.account set gmlevel admin 3 -1

License

MIT