wow-mcp

wow-mcp

A comprehensive MCP server that wraps the complete World of Warcraft retail API into 197 tools for Game Data and Profile information. It enables users to query character statistics, achievements, collections, and game mechanics across all global regions and locales.

Category
访问服务器

README

wow-mcp

MCP server that wraps the complete World of Warcraft retail API (Game Data + Profile) as 197 MCP tools. Authenticates via OAuth 2.0 client credentials and is fully region-agnostic — every tool accepts region and locale as optional parameters, so a single server instance can query any region.

screenshot

Quick start

cp .env.example .env
# Fill in BNET_CLIENT_ID and BNET_CLIENT_SECRET

npm install
npm run build
npm start          # stdio transport

Development

npm run dev        # runs via tsx (no build step)
npm run inspect    # opens MCP Inspector UI
npm run lint       # type-check only
npm test           # run auth integration tests

API coverage

All 196 retail WoW endpoints are registered as individual MCP tools, plus one custom computed tool:

  • Game Data API — 161 tools covering achievements, auctions, azerite essences, connected realms, covenants, creatures, guild crests, heirlooms, items, journals, media, modified crafting, mounts, mythic keystones, mythic raid leaderboards, pets, playable classes, playable races, playable specializations, power types, professions, PvP seasons, PvP tiers, quests, realms, regions, reputations, search endpoints, spells, talents, tech talents, titles, toys, and WoW tokens.
  • Profile API — 35 tools for character profiles, achievements, appearance, collections, dungeons, encounters, equipment, hunter pets, media, mythic keystone profile, professions, PvP, quests, reputations, soulbinds, specializations, statistics, titles, and guild endpoints.
  • Customwow_character_achievementsTimeline builds a chronologically sorted timeline of completed achievements (computed, not a raw Blizzard endpoint).

Region & locale

Every tool accepts two optional parameters:

  • region"us" (default), "eu", "kr", or "tw"
  • locale"en_US" (default), or any locale supported by the target region (e.g. "es_MX", "de_DE", "fr_FR", "ko_KR")

No region configuration is needed in the environment. The same Battle.net credentials work across all regions.

Environment variables

See .env.example. Only two are required:

  • BNET_CLIENT_ID — Battle.net OAuth client ID
  • BNET_CLIENT_SECRET — Battle.net OAuth client secret

Optional auth (OAuth2 client-credentials for the MCP HTTP endpoint):

  • MCP_CLIENT_ID — when set (with MCP_CLIENT_SECRET), the /mcp endpoint requires a Bearer token
  • MCP_CLIENT_SECRET — shared secret for token exchange
  • MCP_TOKEN_TTL_SECONDS — access token lifetime (default: 3600)

To obtain a token, POST /token with grant_type=client_credentials and your client_id + client_secret (form body or HTTP Basic). If neither MCP_CLIENT_ID nor MCP_CLIENT_SECRET is set, the server runs without auth.

Optional tuning:

  • LOG_LEVEL — pino log level (default: info)
  • HTTP_TIMEOUT_MS — request timeout (default: 15000)
  • HTTP_RETRY_LIMIT — retry count (default: 2)
  • CACHE_TTL_SECONDS — response cache TTL (default: 300)
  • CACHE_SIZE — max cached entries (default: 500)

Testing

npm test

Integration tests use Node's built-in test runner (node:test) via tsx — no extra test dependencies. The suite spins up the server on a random port with test credentials and verifies OAuth2 auth end-to-end:

  • Rejects /mcp without a token (401)
  • Rejects /token with wrong credentials (401)
  • Issues a token with correct credentials (200)
  • Allows /mcp with a valid bearer token (200)
  • Rejects /mcp with a bogus token (401)

Docker

docker compose build
docker compose up -d

Secrets are injected via .env on the host (not committed). The container runs as a non-root user with production dependencies only.

Architecture

src/
  index.ts                          # entry point — loads env, starts server
  app.ts                            # HTTP server factory (/mcp, /token, /health)
  auth.ts                           # OAuth2 client-credentials token endpoint + bearer validation
  config/
    env.ts                          # zod env parsing (credentials + tuning)
    regions.ts                      # region enum, API hosts, OAuth URL
  mcp/
    tools.ts                        # auto-registers all endpoints + custom tools
    schemas.ts                      # shared zod input schemas
  blizzard/
    tokenManager.ts                 # OAuth client-credentials + single-flight
    client.ts                       # got wrapper: bearer injection, cache, 401 retry
    endpoints/
      types.ts                      # EndpointDef interface, buildPath(), schema helpers
      gamedata.ts                   # 161 Game Data API endpoint definitions
      profileEndpoints.ts           # 35 Profile API endpoint definitions
    schemas/
      characterSchemas.ts           # zod response schemas
      achievementSchemas.ts
    dto/
      characterDto.ts               # normalized character DTO
      timeline.ts                   # achievement timeline builder
  util/
    http.ts                         # got defaults
    cache.ts                        # TTL cache
    logger.ts                       # pino (stderr)
test/
  auth.test.ts                      # OAuth2 auth integration tests

Endpoints are defined declaratively in gamedata.ts and profileEndpoints.ts. Each entry specifies a tool name, path template, namespace type, and zod input schema. The tools.ts module iterates over the registry and auto-registers every entry as an MCP tool, injecting region and locale parameters automatically.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选