warcraftlogs-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WCL_CLIENT_ID | Yes | OAuth client ID. | |
| WCL_STATE_DIR | No | Private auth and subscription state. | ~/.config/warcraftlogs-mcp |
| WCL_MAX_RETRIES | No | Retries for network/timeout/5xx failures. | 2 |
| WCL_CLIENT_SECRET | Yes | OAuth client secret. | |
| WCL_USER_ACCESS_TOKEN | No | Optional global-site user token override. | |
| WCL_MAX_RETRY_AFTER_MS | No | Longest 429 delay the process will wait. | 2000 |
| WCL_OAUTH_REDIRECT_URI | No | Registered loopback callback. | http://127.0.0.1:8765/callback |
| WCL_REQUEST_TIMEOUT_MS | No | Per-request timeout. | 15000 |
| WCL_CN_USER_ACCESS_TOKEN | No | Optional CN-site user token override. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| parse_wcl_urlA | Safely parse a www.warcraftlogs.com or cn.warcraftlogs.com report URL, including query/hash fight selectors. Rejects look-alike hosts and unsafe URL forms. |
| get_reportB | Get bounded report metadata, visibility, zone, timestamps, and archive status. |
| list_fightsB | List fights with raid and Mythic+ metadata. If a fight selector is present, selectedFightID identifies it. |
| list_playersA | List player actor IDs and map their observed specs and item levels to fights. A fight selector narrows participants. |
| list_dungeon_pullsA | List Mythic+ pull windows, locations, map IDs, and participating enemy NPC IDs. |
| get_talent_import_codeA | Get the Retail talent import string WCL recorded for one player in one fight. |
| get_damage_doneA | Get bounded damage-done evidence. playerID is correctly applied as WCL sourceID. |
| get_damage_takenC | Get bounded damage-taken evidence. WCL table semantics require playerID as sourceID for the selected player perspective. |
| get_castsC | Get bounded cast evidence. playerID is correctly applied as WCL sourceID. |
| get_interruptsA | Get bounded interrupt evidence. playerID is correctly applied as WCL sourceID. |
| get_deathsC | Get bounded death evidence. WCL table semantics require playerID as sourceID for the selected player perspective. |
| get_buffsB | Get bounded buff-uptime evidence on a player. playerID is correctly applied as WCL targetID. |
| get_debuffsB | Get bounded debuff evidence on a player. playerID is correctly applied as WCL targetID. |
| get_dispelsB | Get bounded dispel evidence. playerID is correctly applied as WCL sourceID. |
| get_healingB | Get bounded healing evidence. playerID is correctly applied as WCL sourceID. |
| get_resourcesC | Get bounded resource evidence. playerID is correctly applied as WCL sourceID. |
| get_combatant_infoA | Get bounded CombatantInfo events (gear, talents and player state) for one player source. |
| get_eventsB | Get a bounded event window with WCL pagination. Enforces fight time bounds, max events/pages, and a byte budget. Continue using pagination.nextPageTimestamp as cursor. |
| get_mythic_plus_summaryA | Get a compact Mythic+ overview: key, duration, dungeon, enemy forces, players, DPS/HPS, deaths and interrupts. Optional tables fail independently with warnings. |
| get_player_analysis_contextA | Aggregate bounded damage, casts, damage taken, interrupts, deaths, buffs, resources, CombatantInfo and talent evidence for one player. Components fail independently and return warnings. |
| set_active_characterA | Validate and persist the default character used by character discovery and ranking tools. |
| get_active_characterA | Return the locally persisted active character, if one is configured. |
| clear_active_characterA | Remove the locally persisted active-character default. |
| get_character_summaryA | Resolve a character and summarize its recent report availability and content types. Omit all identity fields to use the active character. |
| get_recent_reportsA | List recent reports for a character, including report visibility and bounded fight metadata. User access can include private reports visible to the authorized WCL account. |
| get_encounter_rankingsA | Get WCL rankings for one character and exactly one encounter or zone. Private parses require user authorization and includePrivateLogs=true. |
| subscribe_characterA | Persist a pull-based subscription. By default current reports become the baseline, so later checks return only newly discovered reports. |
| list_character_subscriptionsA | List locally persisted character report subscriptions and their cursors. |
| check_character_subscriptionsA | Poll WCL for new reports and advance subscription cursors. Omit subscriptionID to check all subscriptions. |
| unsubscribe_characterA | Delete one locally persisted character report subscription. |
| get_fight_summaryA | Get a compact raid or Mythic+ fight summary with player damage, healing, deaths, interrupts, and fight metadata. |
| get_fight_damageC | Compatibility alias for get_damage_done with bounded source semantics. |
| get_fight_healingC | Compatibility alias for get_healing with bounded source semantics. |
| get_fight_damage_takenC | Compatibility alias for get_damage_taken with bounded WCL player/source semantics. |
| get_character_deathsA | Discover recent reports and return bounded, best-effort death evidence for one character across those reports. |
| get_character_castsA | Discover recent reports and return bounded, best-effort cast evidence for one character across those reports. |
| get_buff_uptimeC | Compatibility alias for get_buffs with bounded target semantics. |
| get_fight_eventsB | Compatibility alias for get_events with full pagination, time-window, event-count, page-count, and byte protections. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
The server includes multiple explicit compatibility aliases (e.g., get_fight_damage vs get_damage_done, get_fight_damage_taken vs get_damage_taken, get_fight_healing vs get_healing, get_buff_uptime vs get_buffs, get_fight_events vs get_events) that perform identical operations, creating misselection risk. Additionally, character-scoped discovery tools (get_character_deaths, get_character_casts) overlap with report/fight-scoped evidence tools (get_deaths, get_casts), and get_player_analysis_context duplicates many individual evidence tools. While the core evidence types are distinct, the aliases and overlapping scopes make it hard to choose the right tool.
All tools use snake_case and a clear verb_noun pattern (get_, list_, set_, clear_, check_, subscribe_, unsubscribe_, parse_). However, the aliases introduce inconsistent noun phrasing for the same operation (e.g., get_fight_damage vs get_damage_done), which is a minor deviation from a single predictable naming scheme.
38 tools is excessive for the domain, especially with five redundant compatibility aliases and several overlapping discovery/aggregation tools. While Warcraft Logs data is complex, many tools could be consolidated (e.g., a parameterized get_events could replace multiple evidence tools, and aliases could be removed).
The surface covers a wide range of read operations: reports, fights, players, events, rankings, subscriptions, and character management. It includes discovery, parsing, and aggregation tools. Missing operations like creating reports (not supported by the platform) or retrieving zone/encounter lists are minor gaps that agents can work around using other tools.