Guild Wars 1 Build Compiler

io.github.GraphmaxerPublished by GitHub account Graphmaxerv1.1.3Updated Nov 2, 2026

GW1 build compiler: skill data, template code encode/decode, validation, hero roster. Read-only.

The publisher's own server: Guild.xyz

VerifiedStreamable HTTPWeb executableKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Guild Wars 1 build compiler: look up skills and heroes, validate builds, and encode or decode official in-game template codes.

What you can do
  • Look up and search skills by name, profession, attribute, campaign, elite flag or name fragment, with closest-match suggestions on typos
  • Decode a single in-game template code into professions, attribute allocations and the eight skills with stats
  • Decode paw-ned2 team blobs into each player or hero bar
  • Validate a build against GW1 rules such as one elite, attribute ownership and duplicates
  • Encode a named build into an official in-game template code
  • Look up or list heroes by name, id, profession or campaign, with unlock notes
When to use it
Useful when an assistant helps with Guild Wars 1 build planning and needs exact skill data, rule-checked builds, or template codes that actually work in game instead of plausible-looking guesses. Also handy for reading build codes and team blobs shared on wiki pages.
Requirements
Remote Streamable HTTP endpoint; no authentication, environment variables or headers declared. The README's self-hosting path needs Node 22 or newer and pnpm, and deploying to Cloudflare Workers needs a wrangler login.
Before you install
Read-only, but the optional GWToolbox export it describes copies account state to the clipboard, including your current character's name, so review it before pasting anywhere public. Skill descriptions come from third-party data under GFDL / CC BY-NC-SA terms.

Installation

In SourceWeft

  1. Open Guild Wars 1 Build Compiler in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.Graphmaxer%2Fgw1-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "guild-wars-1-build-compiler": {
      "type": "http",
      "url": "https://gw1-mcp.graphmaxer.workers.dev/mcp"
    }
  }
}

README

[gw1-mcp logo — a golden scythe and an eight-slot skill bar]

gw1-mcp

A Guild Wars 1 build compiler for LLMs

[coverage] [CI] [CodSpeed] [latest release] [license] [last commit] [live usage dashboard] [LobeHub MCP] [listed on mcp.so] [Glama connector, quality A]

An MCP (Model Context Protocol) server that gives any compatible LLM client (Claude, ChatGPT, Cursor…) reliable, deterministic knowledge of Guild Wars 1 builds: skill data lookup, official template code encoding/decoding, and build validation.

The MCP is a compiler, not a brain. The LLM does the strategic reasoning; this server does the things that must be exact.

Why not just ask the LLM?

Ask an AI assistant for a Guild Wars build without this server and you typically get: a plausible-sounding bar with a skill that does not exist, an attribute spread that exceeds the point budget, stats quoted from a decade-old balance patch — and a template code that decodes to garbage when you paste it in-game, because codes are bit-packed and cannot be hallucinated character-by-character.

With gw1-mcp connected, the same assistant looks up the 1516 real skills (current with Reforged balance, refreshed weekly), validates the build against the actual game rules, and hands you an official template code produced by an encoder — not predicted by a language model. The strategic conversation stays exactly as good as your assistant; the facts stop being wrong.

Tools

  • get_skill — full record for one skill (by exact name or template id), with closest-match suggestions on typos. Official French skill names resolve too (Sceau de guérison -> Healing Signet); every other name field is English-only
  • search_skills — filtered search: profession, attribute, campaign, elite, name substring
  • decode_template — in-game template code → professions, attributes, 8 skills with stats
  • encode_template — named build → validated, official in-game template code
  • validate_build — GW1 rule check: one elite max, profession/attribute ownership, primary attributes, duplicates
  • get_hero — hero record by exact name or GWCA id
  • list_heroes — hero roster with professions, campaigns and unlock notes, filterable by profession/campaign
  • decode_pawned_team — paw-ned2 team blobs (PvXwiki team pages) → every bar decoded

Resources: gw1://guide/build-workflow (methodology for the LLM), gw1://meta (professions, attribute lines, campaigns, skill-type list and data import date) and gw1://heroes.

Quick start

bash
pnpm installpnpm -r testpnpm --filter @gw1-mcp/gw-mcp dev   # stdio server

Packages

  • packages/gw-template — template code codec (zero dependencies; round-trip tested against in-game/PvX codes and differentially fuzzed against @buildwars/gw-templates)
  • packages/gw-data — game data (1516 skills, Reforged-current) imported from build-wars/gw-skilldata (code MIT; skill descriptions under GFDL / CC BY-NC-SA — see THIRD_PARTY_NOTICES.md)

The codec is verified four ways: 27 golden fixtures (including nine live in-game emissions) covering all 10 primary professions and all 5 campaigns (sourced from PvXwiki, gw1builds.com, the official wiki and the pre-2007 in-game format, several verified down to the skill-id level), fuzzed round-trips, differential testing against an independent implementation, and malformed-input rejection tests. Validation rules are table-tested one by one. pnpm test:coverage for the numbers.

  • packages/gw-mcp — the MCP server (transport-agnostic core + stdio entry)
  • packages/gw-worker — Streamable HTTP wrapper (Hono), runs on Cloudflare Workers and Node

Deploy to Cloudflare Workers

bash
pnpm --filter @gw1-mcp/gw-worker check    # offline bundling validationpnpm --filter @gw1-mcp/gw-worker deploy   # needs `wrangler login` once

The server is stateless (a fresh McpServer per request over bundled data), so it fits the Workers model with zero configuration: no Durable Objects, no KV, no secrets. Free plan is plenty.

Connect it

  • claude.ai / Claude app: Settings → Connectors → Add custom connector → https://gw1-mcp.<your-subdomain>.workers.dev/mcp
  • Claude Code: claude mcp add --transport http gw1 https://…/mcp or locally over stdio: claude mcp add gw1 -- pnpm --filter @gw1-mcp/gw-mcp dev
  • Local HTTP without Cloudflare: pnpm --filter @gw1-mcp/gw-worker dev:node then point any client at http://localhost:8787/mcp

Regenerating game data

bash
pnpm --filter @gw1-mcp/gw-data update @buildwars/gw-skilldata --latestpnpm --filter @gw1-mcp/gw-data run import:data# or, to import the upstream's published release files (what the weekly workflow does):pnpm --filter @gw1-mcp/gw-data run import:data -- https://build-wars.github.io/gw-skilldata

GWToolbox integration

gwtoolbox-plugin/ contains a read-only GWToolbox plugin adding /exportaccount: it copies your account state as JSON to the clipboard — which includes your current character's name, so read it before pasting it somewhere public. The export has two skill lists — learnedCharacterSkills (skills your current character has actually learned) and unlockedAccountSkills (everything unlocked account-wide, e.g. for heroes). Paste it in your conversation and pass the list that matches what you're building for as unlockedSkillIds to validate_build / encode_template: use learnedCharacterSkills for a build your character will equip, or unlockedAccountSkills for hero bars — proposed skills you don't own are flagged. Windows build instructions in gwtoolbox-plugin/README.md.

Roadmap

MCP resources for build archetypes and hero constraints, hero availability from campaign progression, and upstreaming the account export into GWToolbox itself. See CLAUDE.md for the full architecture notes.


This project is not affiliated with ArenaNet or NCSoft. Guild Wars is a trademark of NCSoft Corporation. Game data is imported from build-wars/gw-skilldata; its code is MIT but the skill descriptions originate from the Guild Wars community wikis under the GFDL and CC BY-NC-SA 2.5 (a NonCommercial license) — see THIRD_PARTY_NOTICES.md. Format documentation from the Guild Wars Wiki.

Development

bash
pnpm install && pnpm -r test

Node >= 22, pnpm 11. Nothing builds to dist — exports point at the .ts sources and the worker bundles via wrangler. See CONTRIBUTING.md to get started and CLAUDE.md for the full architecture, conventions and the honest register of known debts.

License

Source code: MIT (see LICENSE). Bundled game data carries separate terms — see THIRD_PARTY_NOTICES.md.

Source: README.md at commit 684b78a

Tools

8

get_skill

Get a Guild Wars 1 skill

Look up a single GW1 skill by exact English name or by template skill id. Returns full stats (energy, activation, recharge, adrenaline, sacrifice), profession, attribute, campaign, elite flag and description. If the name is not found, returns the closest matches so you can correct spelling. Use this when you already know the exact skill; to discover skills by profession, attribute or name fragment, use search_skills instead.

Parametersidname

search_skills

Search Guild Wars 1 skills

Search the full GW1 skill database by profession, attribute, campaign, elite flag or name fragment (valid values are documented per parameter). Returns compact records, at most `limit` of them alongside a `total` count of every match — a full page is not the whole result, page with offset. Use get_skill for full details.

ParameterselitelimitoffsetcampaignNamenameContainsattributeNameprofessionNameincludePvpVersions

decode_template

Decode a skill template code

Decode an in-game GW1 skill template code (e.g. "OwpiMypMBg1cxcBAMBdmtIKAA") into professions, attribute allocations and the 8 skills with their stats and descriptions. Whitespace and line wraps in the pasted code are tolerated. This decodes a SINGLE build code; for a multi-hero paw-ned2 team blob, use decode_pawned_team instead.

Parameterscoderequired

decode_pawned_team

Decode a paw-ned2 team template

Decode a paw-ned2 team build blob (the 'pwnd0001...>...<' format shared on PvXwiki team pages and by the paw-ned2 tool) into its individual builds: player/hero label, description, and each skill bar fully decoded. Whitespace and line wraps in the pasted blob are tolerated. For a single (non-team) build code, use decode_template instead.

Parameterspwndrequired

encode_template

Encode a build into a template code

Compile a build (professions, attributes, 8 skills by exact English name) into an official in-game template code. The build is validated first; on rule violations the errors are returned instead of a code. Unknown skill names return closest-match suggestions. IMPORTANT: template codes MUST come from this tool — never write or guess a code by hand, hand-written codes are invalid in-game. If unsure, verify any code with decode_template.

ParametersforPvpskillsrequiredforHeroprimaryrequiredsecondaryattributesrequiredunlockedSkillIds

validate_build

Validate a build against GW1 rules

Check a build (professions, attributes, 8 skills by exact English name) against Guild Wars 1 rules: one elite max, profession/attribute ownership, primary attributes, duplicates, rank ranges. Returns { valid, errors, warnings } without encoding — use encode_template instead when you also want the template code, since it runs these same rules and refuses on any error.

ParametersforPvpskillsrequiredforHeroprimaryrequiredsecondaryattributesrequiredunlockedSkillIds

get_hero

Get a Guild Wars 1 hero

Look up a GW1 hero by name or by id (GWCA HeroID, matching the AccountExport plugin output). Returns profession, campaign and how the hero is unlocked. Remember: heroes can equip any skill unlocked at ACCOUNT level, but NO PvE-only skill at all — including Signet of Capture. validate_build with forHero=true reports each one as an error, not a warning. Use this for one known hero; to browse or filter the roster, use list_heroes instead.

Parametersidname

list_heroes

List Guild Wars 1 heroes

List all GW1 heroes, optionally filtered by profession or campaign name. Useful for team-building: shows which professions are coverable by heroes and how each hero is unlocked.

ParameterscampaignNameprofessionName

Version history

1
  1. v1.1.3LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Guild integrations