wowaudit-mcp-server

wowaudit-mcp-server

Exposes the WoWAudit API as structured tools for guild management, including roster, raid planning, attendance, wishlists, loot history, and applications, with read-only mode by default and optional write support.

Category
访问服务器

README

wowaudit-mcp-server

MCP server for the documented WoWAudit API. It exposes guild roster, raid planning, attendance, weekly activity, wishlists, loot history, and applications as structured tools for Raid Lens and other MCP clients.

The server uses stdio and @modelcontextprotocol/server 2.x. It serves the current MCP protocol and retains the SDK's legacy 2025-era initialize handshake for older clients. Every result includes native structuredContent plus the same JSON as a text block for clients that do not consume structured results.

Requirements

  • Node.js 20 or newer.
  • A WoWAudit team API key. A team administrator can copy it from the team's Settings > Team > API key field, or open https://wowaudit.com/api and select the team. WoWAudit does not currently expose a scoped read-only Public API key; this server enforces read-only access locally by default.

Setup

npm install

Create .env from .env.example, then set:

WOWAUDIT_API_KEY=your-team-api-key

Build the server:

npm run build

The API key is loaded lazily, so the MCP process can start and list tools without a configured key. API calls return a structured configuration error until the key is available.

MCP client configuration

Use the compiled entry point from an MCP client:

{
  "mcpServers": {
    "wowaudit": {
      "command": "node",
      "args": [
        "C:\\programming\\typescript\\wowaudit-mcp-server\\dist\\index.js"
      ]
    }
  }
}

The server resolves .env relative to its installed location, not the MCP client's working directory. Credentials may instead be supplied through the client's env configuration.

Integrators that must preserve the API key's exact UTF-8 bytes can pass it through a dedicated inherited file descriptor instead of an environment variable. Inherit a readable descriptor as FD 3 and set only WOWAUDIT_API_KEY_FD=3. The descriptor contents must be non-empty valid UTF-8 and are read once, cached in memory for the MCP process lifetime, and reused without trimming or newline removal. Do not also set a non-empty WOWAUDIT_API_KEY.

Security model

A WoWAudit team API key can access the team's entire environment. The server applies these safeguards:

  • The key is sent only as an Authorization: Bearer header. It is never put in a URL, result, or error.
  • Only documented /v1/ routes are available. There is no arbitrary HTTP tool.
  • Write tools are not advertised or callable unless WOWAUDIT_ENABLE_WRITES=true. The HTTP client independently blocks mutation requests while disabled. Set WOWAUDIT_WRITE_POLICY=raidlens-create-update-v1 to limit enabled mutations to character tracking and updates, raid creation and updates, and wishlist uploads.
  • Destructive delete tools additionally require confirm: true on each call.
  • Application tools are disabled unless WOWAUDIT_ENABLE_APPLICATIONS=true because applications may contain identities, questionnaire answers, and uploaded-file URLs.
  • Tool annotations identify read-only, idempotent, and destructive operations to modern MCP clients.
  • Responses are limited to 2 MiB by default. Adjust WOWAUDIT_MAX_RESPONSE_BYTES only when necessary.
  • GET responses are cached in process for 30 seconds. Successful writes clear the cache.

Enabling application tools does not provide channel authorization. A Discord integration must enforce officer-only access before exposing those tools. Similarly, a multi-guild bot must bind its trusted Discord guild ID to the correct WoWAudit credential outside model-controlled tool arguments.

Configuration

Variable Default Purpose
WOWAUDIT_API_KEY required unless FD is used Team API key, preserved without trimming
WOWAUDIT_API_KEY_FD unset Inherited API key descriptor, 1 to 1024
WOWAUDIT_BASE_URL https://api.wowaudit.com API origin
WOWAUDIT_REQUEST_TIMEOUT_MS 30000 Request timeout, 5,000 to 120,000 ms
WOWAUDIT_MAX_RESPONSE_BYTES 2097152 Maximum JSON response, 64 KiB to 10 MiB
WOWAUDIT_ENABLE_WRITES false Permit POST, PUT, and DELETE tools
WOWAUDIT_WRITE_POLICY unset Restrict writes to raidlens-create-update-v1
WOWAUDIT_ENABLE_APPLICATIONS false Permit sensitive application tools

The default configuration exposes 11 non-sensitive GET tools. Setting WOWAUDIT_ENABLE_APPLICATIONS=true adds the two read-only application tools. Setting WOWAUDIT_ENABLE_WRITES=true adds mutation tools; leave it unset for a strictly read-only MCP surface. For RaidLens, also set WOWAUDIT_WRITE_POLICY=raidlens-create-update-v1. This policy exposes the 11 non-sensitive GET tools plus only wowaudit_track_character, wowaudit_update_character, wowaudit_create_raid, wowaudit_update_raid, and wowaudit_upload_wishlist when writes are enabled. All application tools are suppressed regardless of WOWAUDIT_ENABLE_APPLICATIONS, and all other mutations remain absent and uncallable. Unknown non-empty policy values prevent startup. Omitting the policy preserves the existing general write surface for current consumers.

Tools

Mutation tools shown below are only registered when WOWAUDIT_ENABLE_WRITES=true and permitted by WOWAUDIT_WRITE_POLICY. Application tools are only registered when WOWAUDIT_ENABLE_APPLICATIONS=true and no policy suppresses them.

Team and roster

Tool API operation
wowaudit_get_team GET /v1/team
wowaudit_get_period GET /v1/period
wowaudit_list_characters GET /v1/characters
wowaudit_track_character POST /v1/characters
wowaudit_update_character PUT /v1/characters/{id}
wowaudit_untrack_character DELETE /v1/characters/{id}

Activity and attendance

Tool API operation
wowaudit_list_historical_data GET /v1/historical_data
wowaudit_get_character_history GET /v1/historical_data/{id}
wowaudit_get_attendance GET /v1/attendance

Raids and signups

Tool API operation
wowaudit_list_raids GET /v1/raids
wowaudit_get_raid GET /v1/raids/{id}
wowaudit_create_raid POST /v1/raids
wowaudit_update_raid PUT /v1/raids/{id}
wowaudit_delete_raid DELETE /v1/raids/{id}

wowaudit_update_raid supports status and schedule changes, encounter enable/disable lists, signup statuses, comments, role/class overrides, selected status, and encounter-specific selections.

Wishlists and loot

Tool API operation
wowaudit_list_wishlists GET /v1/wishlists
wowaudit_get_character_wishlist GET /v1/wishlists/{id}
wowaudit_upload_wishlist POST /v1/wishlists
wowaudit_delete_wishlist DELETE /v1/wishlists/{id}
wowaudit_get_loot_history GET /v1/loot_history/{seasonId}

The all-character wishlist and loot endpoints can be large. Prefer character-specific calls and use limit on collection tools where possible.

Applications

Tool API operation
wowaudit_list_applications GET /v1/applications
wowaudit_get_application GET /v1/applications/{id}
wowaudit_update_application PUT /v1/applications/{id}
wowaudit_delete_application DELETE /v1/applications/{id}

Applications are separately gated by WOWAUDIT_ENABLE_APPLICATIONS=true. Mutating them also requires WOWAUDIT_ENABLE_WRITES=true. The raidlens-create-update-v1 policy suppresses every application tool regardless of these flags.

Result envelope

Successful tools, including wowaudit_get_team, return the canonical { data, meta } envelope consumed by RaidLens:

{
  "data": {
    "teamId": "42",
    "teamDisplayName": "RaidLens Team"
  },
  "meta": {
    "endpoint": "/v1/team",
    "method": "GET"
  }
}

wowaudit_get_team validates the upstream numeric id and name, converts the ID to a string, and returns only teamId (1 to 128 characters) and teamDisplayName (1 to 200 characters). Other upstream team fields are not exposed.

Collection tools accepting limit additionally report totalItems, returnedItems, and truncated. The limit is applied after WoWAudit responds because the public API does not document server-side pagination.

Errors return isError: true, structured { "error": "..." }, and a text fallback. Upstream errors also include kind, HTTP status, and retryAfterSeconds when available.

Development

npm run dev
npm test

Tests compile the server, verify both modern and legacy protocol negotiation, inspect all tool schemas and annotations, exercise security gates, and test the HTTP client without using a real API key.

For a small live read-only check:

npm run test:live

The live smoke test calls team, period, roster, and raid-list endpoints. It never invokes application or write tools.

WoWAudit API caveats

  • The public documentation defines no pagination or rate-limit contract.
  • The documentation primarily supplies response examples rather than strict reusable schemas, so payload fields may evolve.
  • The embedded documentation contains a development-looking server URL. This project uses the confirmed production origin https://api.wowaudit.com by default.
  • WoWAudit accepts an API key in a query parameter, but this server deliberately uses only the authorization header to reduce credential leakage.

License

MIT, copyright WoWAudit MCP Server contributors.

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选