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.
Parameters2
name
string
optional
Exact English skill name, e.g. "Mystic Regeneration"
Search the full GW1 skill database with filters. professionName: Warrior, Ranger, Monk, Necromancer, Mesmer, Elementalist, Assassin, Ritualist, Paragon, Dervish, or None (common/PvE-only skills). campaignName: Core, Prophecies, Factions, Nightfall, Eye of the North. Returns compact records; use get_skill for full details.
Decode an in-game GW1 skill template code (e.g. "OwpiMypMBg1cxcBAMBdmtIKAA") into professions, attribute allocations and the 8 skills with their stats and descriptions.
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.
Parameters1
pwnd
string
required
The full pwnd blob, starting with 'pwnd000'
Raw schema
{
"type": "object",
"properties": {
"pwnd": {
"type": "string",
"description": "The full pwnd blob, starting with 'pwnd000'"
}
},
"required": [
"pwnd"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
encode_template
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.
Parameters6
primary
string
required
Primary profession, e.g. "Dervish"
secondary
string
optional
Secondary profession, e.g. "Monk". Omit or "None" for none.
attributes
array
required
Attribute point allocations
skills
array
required
Exactly 8 skill names in bar order. Use null for an empty slot. Names must be exact English skill names.
forHero
boolean
optional
Set true if this bar is for a hero (PvE-only skills are flagged)
unlockedSkillIds
array
optional
Optional: unlocked skill ids from a GWToolbox account export (/exportaccount). Skills outside this list are flagged as warnings.
Raw schema
{
"type": "object",
"properties": {
"primary": {
"type": "string",
"description": "Primary profession, e.g. \"Dervish\""
},
"secondary": {
"description": "Secondary profession, e.g. \"Monk\". Omit or \"None\" for none.",
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attribute": {
"type": "string",
"description": "Exact attribute name, e.g. \"Mysticism\""
},
"rank": {
"type": "integer",
"minimum": 0,
"maximum": 12,
"description": "Base rank 0-12 (before runes)"
}
},
"required": [
"attribute",
"rank"
]
},
"description": "Attribute point allocations"
},
"skills": {
"minItems": 8,
"maxItems": 8,
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": "Exactly 8 skill names in bar order. Use null for an empty slot. Names must be exact English skill names."
},
"forHero": {
"default": false,
"description": "Set true if this bar is for a hero (PvE-only skills are flagged)",
"type": "boolean"
},
"unlockedSkillIds": {
"description": "Optional: unlocked skill ids from a GWToolbox account export (/exportaccount). Skills outside this list are flagged as warnings.",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 65535
}
}
},
"required": [
"primary",
"attributes",
"skills"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
validate_build
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.
Parameters6
primary
string
required
Primary profession, e.g. "Dervish"
secondary
string
optional
Secondary profession, e.g. "Monk". Omit or "None" for none.
attributes
array
required
Attribute point allocations
skills
array
required
Exactly 8 skill names in bar order. Use null for an empty slot. Names must be exact English skill names.
forHero
boolean
optional
unlockedSkillIds
array
optional
Optional: unlocked skill ids from a GWToolbox account export (/exportaccount). Skills outside this list are flagged as warnings.
Raw schema
{
"type": "object",
"properties": {
"primary": {
"type": "string",
"description": "Primary profession, e.g. \"Dervish\""
},
"secondary": {
"description": "Secondary profession, e.g. \"Monk\". Omit or \"None\" for none.",
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attribute": {
"type": "string",
"description": "Exact attribute name, e.g. \"Mysticism\""
},
"rank": {
"type": "integer",
"minimum": 0,
"maximum": 12,
"description": "Base rank 0-12 (before runes)"
}
},
"required": [
"attribute",
"rank"
]
},
"description": "Attribute point allocations"
},
"skills": {
"minItems": 8,
"maxItems": 8,
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": "Exactly 8 skill names in bar order. Use null for an empty slot. Names must be exact English skill names."
},
"forHero": {
"default": false,
"type": "boolean"
},
"unlockedSkillIds": {
"description": "Optional: unlocked skill ids from a GWToolbox account export (/exportaccount). Skills outside this list are flagged as warnings.",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 65535
}
}
},
"required": [
"primary",
"attributes",
"skills"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
get_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 not most PvE-only skills.
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.
gw1-mcp logo — a golden scythe and an eight-slot skill bar
gw1-mcp
A Guild Wars 1 build compiler for LLMs
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.
Tools
Tool
Purpose
get_skill
Full record for one skill (by exact name or template id), with closest-match suggestions on typos
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
Heroes with professions, campaigns and unlock notes
decode_pawned_team
paw-ned2 team blobs (PvXwiki team pages) → every bar decoded
Resources: gw1://guide/build-workflow (methodology for the LLM) and gw1://heroes.
Quick start
bash
pnpm install
pnpm -r test
pnpm --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 (1484 skills, Reforged-current) imported from build-wars/gw-skilldata (MIT)
The codec is verified four ways: 18 golden fixtures 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
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.
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 --latest
pnpm --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 (heroes, unlocked skills) as JSON to
the clipboard. Paste it in your conversation and pass unlockedAccountSkills
to validate_build / encode_template as unlockedSkillIds — 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 courtesy of the
build-wars/gw-skilldata project
(MIT) and the format documentation on 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.