Install
$ agentstack add mcp-artsabintsev-everquest-legends-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
EverQuest Legends MCP
Read-only Model Context Protocol server for EverQuest Legends public sources.
Status
Stable (1.0). Read-only. It does not require secrets, cookies, credentials, a Daybreak account, or private API access. The only optional moving part is the yt-dlp helper used by eql_video_transcript (see Optional Dependencies).
Scope
This MCP is for EverQuest Legends. It intentionally excludes general EQ1/EQ2, P99, EQEmu, Project Quarm, and other emulator/background databases unless a specific page is about EverQuest Legends.
Classic EverQuest lore and archive sources are included as historical context for Norrath, not as EverQuest Legends authority. EverQuest Legends is a custom reimagining of classic EverQuest: the classic expansions (Kunark, Velious, Luclin) do not exist in the game, and even in-scope zones, mobs, and items can differ from their classic counterparts. When a source describes expansion content — or any classic-EQ specifics — treat it as background unless an EQL-specific source (wiki, official pages, eqlbuilds/client snapshots) confirms it for Legends.
This server is built around public, unauthenticated sources:
- EQL Wiki:
https://eqlwiki.com/Main_Pagevia MediaWiki API - Official EQL site and news:
https://www.everquestlegends.com - Daybreak help and press pages
- Official EverQuest community note about the Game Jawn collaboration
- Original official 1999 Sony EverQuest history/lore page via Wayback
- The Firiona Vie Project lore category via MediaWiki API
- EQArchives search portal and corpus provenance
- Official EQL YouTube and Twitch channels
- EQL-specific guide/interview/preview pages from EQProgression, EverQuest Guides, and selected press outlets
- Pointer-only EQL community sources such as Reddit
It does not log into Daybreak, manipulate an account, automate a game client, or send requests to private APIs.
Tools
eql_sources: list configured public sourceseql_source_fetch: fetch and extract a curated source pageeql_source_search: search official/support/guide source pageseql_wiki_search: full-text search EQL Wikieql_wiki_page: fetch an EQL Wiki page with extracted text, links, categories, and revision metadataeql_wiki_recent_changes: read recent wiki editseql_wiki_category_pages: list MediaWiki category memberseql_fv_lore_category_pages: list The Firiona Vie Project lore category pageseql_fv_lore_search: search FVProject lore page titleseql_fv_lore_page: fetch an FVProject lore pageeql_eqarchives_search: search the hosted EQArchives historical corpuseql_eqarchives_document: fetch an EQArchives indexed document by ideql_builds_races: list playable races from the eqlbuilds.com dataset (optionally include inactive races)eql_builds_race: read one race (description, starting ability, racial traits) by ideql_builds_classes: list all 16 classes with armor and spell/skill/AA countseql_builds_class: read one class; spell/skill/AA lists are opt-ineql_builds_spell_search: search spells by name/description/skill, with usable-by classeseql_builds_spell: read one spell by id or exact name, with per-class learn levels (the same spell is often learned at different levels by different classes)eql_builds_ability_search: search alternate advancement (AA) with rank costs and eligible classeseql_builds_abilities: enumerate the AA catalog (no query needed), filterable by category/group/class/activationeql_builds_ability: read one AA by id or exact name, with full per-rank costs, rank spells, and requirementseql_builds_skills: list a class's skill lines with caps and trained-at levelseql_builds_modes: list combat stances and invocationseql_builds_provenance: report the eqlbuilds.com snapshot manifest, source wiki revision, and extraction noteseql_client_command_search: search the in-game slash-command reference (name, aliases, syntax, description) from the client manualeql_client_command: read one slash command by name or alias, returning every documented form (e.g./who,/who all,/who)eql_client_races: list or search the authoritative RaceID/model table (playable plus hundreds of NPC-model races) with per-gender model tags and sizeseql_client_race: read a race by RaceID or name; a name returns every RaceID that shares it (playable plus NPC-model variants)eql_client_manual_search: search the client manual supplement and return matching section titles with a snippeteql_client_manual_section: read one manual-supplement section by title, or list all section titleseql_client_zones: list/search the raw zone map inventory shipped in the client (zone keys + POI labels); zones matching classic-EverQuest expansion codes are flagged viaclassicExpansionHintand ranked lasteql_client_zone: read one zone's labeled points of interest with map coordinateseql_client_storyline_search: search the storyline narratives shipped in the client (largely inherited classic-EQ storyline text; results carry aneraAdvisorywhen they reference classic expansion content)eql_client_storyline: read one full storyline by id or titleeql_client_provenance: report the local-client reference snapshot manifest (source files with sizes/hashes/mtimes, counts)eql_official_news: parse official EQL news indexeql_official_article: fetch and extract an official news articleeql_press_assets: list official Daybreak press asset URLs by kindeql_official_youtube_videos: list official EQL YouTube video metadata from the channel RSS feedeql_youtube_sources: list official and selected creator YouTube channel feedseql_youtube_videos: list recent official and creator YouTube videos with source attributioneql_creator_program: read structured metadata for the official Creator Legends programeql_video_transcript: fetch an existing transcript from a YouTube video's published captions (usesyt-dlp, auto-downloaded on first use; see Optional Dependencies)eql_class_combos: generate three-class combinations from the public 16-class list
Resources
eql://sources: source registryeql://classes: class metadataeql://races: launch race listeql://youtube-sources: official and selected creator YouTube source registryeql://creator-program: structured official Creator Legends program metadata
Optional Dependencies
eql_video_transcript uses yt-dlp to read a video's published captions. Every other tool works without it, and nothing is downloaded unless you actually call this tool.
yt-dlp is required because YouTube now gates caption downloads behind a bot-check token that plain HTTP requests cannot satisfy. No video or audio is downloaded — captions only.
How yt-dlp is resolved, in order:
YTDLP_PATHenvironment variable, if set.- A
yt-dlpalready on yourPATH(e.g.brew install yt-dlp/pipx install yt-dlp). A system copy you keep updated is preferred and always wins. - A copy previously downloaded by this server (see below).
If none of those is present, the tool does not download anything silently. The first call returns a short message explaining that yt-dlp is needed to pull YouTube captions and asking you to opt in. To proceed, call eql_video_transcript again with installYtDlp: true. That authorizes a one-time download of the official standalone yt-dlp binary from GitHub releases, verified against the release's published SHA-256 checksum, then cached. The macOS/Linux standalone builds are self-contained (no Python required).
Download details:
- Cache location:
~/Library/Caches/everquest-legends-mcp(macOS),$XDG_CACHE_HOME/everquest-legends-mcpor~/.cache/everquest-legends-mcp(Linux),%LOCALAPPDATA%\everquest-legends-mcp(Windows). - The cached binary is refreshed (best-effort) after 7 days to keep up with YouTube changes.
- Set
EQL_YTDLP_AUTODOWNLOAD=1to grant standing consent so the download happens automatically without the per-callinstallYtDlpflag.
Twitch is intentionally unsupported: Twitch VODs do not expose retrievable captions, so the tool returns a clear "not available" result for Twitch URLs.
Usage
Prerequisites:
- Node.js
>=22 - npm
This is a stdio MCP server. Your MCP client starts it as a child process.
It is distributed via GitHub (not the npm registry). MCP clients that accept a JSON config can run it directly from the repository with npx, which clones, builds, and launches it:
Replace `` with the GitHub owner or organization that hosts this repository.
Codex
codex mcp add everquest-legends -- npx -y github:/everquest-legends-mcp
codex mcp list
Claude Code
claude mcp add --scope user everquest-legends -- npx -y github:/everquest-legends-mcp
claude mcp list
Claude Desktop
Merge this into ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"everquest-legends": {
"command": "npx",
"args": ["-y", "github:/everquest-legends-mcp"]
}
}
}
Restart Claude Desktop after changing the file.
Grok
grok mcp add --scope user everquest-legends -- npx -y github:/everquest-legends-mcp
grok mcp list
grok mcp doctor
Start a new Codex, Claude, or Grok session after adding the server. Existing sessions may not pick up newly configured MCP servers.
Pin to a release tag for reproducibility, e.g. github:/everquest-legends-mcp#v1.1.0. For a fixed local install, see Local Development below and point your client at dist/index.js.
Local Development
git clone https://github.com//everquest-legends-mcp.git
cd everquest-legends-mcp
npm install
npm run build
For MCP clients that accept a JSON config:
{
"mcpServers": {
"everquest-legends": {
"command": "node",
"args": ["/dist/index.js"]
}
}
}
npm run typecheck
npm test
npm run build
Refreshing the eqlbuilds.com dataset
The eql_builds_* tools read a committed snapshot under src/data/eqlbuilds/. eqlbuilds.com is a client-rendered SPA that embeds its data in a content-hashed JS bundle, so the snapshot is regenerated by an extractor that re-discovers the bundle and rewrites the JSON, classifying each block by shape (so upstream reordering does not corrupt the mapping):
npm run extract:eqlbuilds # refresh the snapshot from eqlbuilds.com
npm run extract:eqlbuilds:check # verify the snapshot is up to date (non-zero if stale)
.github/workflows/refresh-eqlbuilds.yml runs the extractor on a weekly schedule (and on demand), validates it with typecheck + tests, and commits the refreshed snapshot only when the upstream data actually changes. The build copies src/data to dist/data so the snapshot ships with the package.
Refreshing the local-client reference dataset
The eql_client_* tools read a committed snapshot under src/data/eql-client/ (slash commands, the RaceID/model table, and manual-supplement sections). Unlike eqlbuilds, there is no public mirror of this text — the EverQuest Legends client install is the source — so it is a maintainer-run, local-only extractor and cannot run in CI. On a machine with the game installed:
# --game-dir points at the install root (the folder with eqgame.exe and *_us.txt).
npm run extract:reference -- --game-dir "/path/to/EverQuest Legends"
npm run extract:reference:dry -- --game-dir "/path/to/EverQuest Legends" # parse + summarize, write nothing
# Or set EQL_GAME_DIR once:
EQL_GAME_DIR="/path/to/EverQuest Legends" npm run extract:reference
It reads everquest_manual.txt, eqmanual_supplement.txt, racedata.txt, and dbstr_us.txt, writes the JSON to src/data/eql-client/, and records a manifest with each source file's size, mtime, and SHA-256. Review the diff, run the tests, then commit. See docs/local-client-extraction.md for the client file formats.
Tool Examples
| Tool | Required input | Typical use | | --- | --- | --- | | eql_sources | none | List every configured source and see whether each source is searchable or pointer-only. | | eql_source_fetch | id | Fetch extracted text for a searchable source from eql_sources, such as official-shop. | | eql_source_search | query | Search curated official, guide, and press sources for EQL-specific text; failed fetches are returned in failedSources. | | eql_wiki_search | query | Search the EQL Wiki through MediaWiki full-text search. | | eql_wiki_page | title | Read an EQL Wiki page after finding it with eql_wiki_search. | | eql_wiki_category_pages | category | List pages in an EQL Wiki category. | | eql_fv_lore_category_pages | none | List classic EQ lore pages from The Firiona Vie Project. | | eql_fv_lore_search | query | Search FVProject lore titles, then read with eql_fv_lore_page. | | eql_fv_lore_page | title | Read a classic EQ lore page from FVProject. | | eql_eqarchives_search | query | Search EQArchives preserved EQ websites, mailing lists, patches, logs, and historical records. | | eql_eqarchives_document | id | Read a bounded EQArchives document from a search result id. | | eql_builds_classes | none | List all 16 classes with armor and spell/skill/AA counts from the eqlbuilds.com dataset. | | eql_builds_class | id | Read one class (e.g. shadowKnight); set includeSpells/includeSkills/includeAbilities for full lists. | | eql_builds_races | none | List playable races; set includeInactive to also list disabled races like Drakkin. | | eql_builds_spell_search | query | Search spells across classes (optionally scope to one classId). | | eql_builds_ability_search | query | Search alternate advancement with rank costs (filter by classId or category). | | eql_builds_provenance | none | See when the eqlbuilds.com snapshot was extracted and which EQL Wiki AA revision it uses. | | eql_official_news | none | List official EverQuest Legends news articles. | | eql_official_article | pageNameOrUrl | Read an official EQL news article by slug or https://www.everquestlegends.com/news/... URL. | | eql_press_assets | kind | List official Daybreak press asset metadata for logos, artwork, screenshots, video, or fact-sheets. | | eql_official_youtube_videos | none | List official EverQuest Legends YouTube video metadata from the channel RSS feed. | | eql_youtube_sources | none | List official and selected creator YouTube source feeds. | | eql_youtube_videos | none | List recent videos from official and selected creator YouTube feeds with source attribution. | | eql_creator_program | none | Read official Creator Legends application, requirements, category, review-window, and retention metadata. | | eql_class_combos | none | Generate EQL three-class combinations from the public 16-class list. |
Example user prompts for an MCP client:
- "Use
eql_sources, then fetch the official shop source." - "Search the EQL Wiki for race unlocks, then read the most relevant page."
- "List official press screenshots for EverQuest Legends."
- "Show the latest official EverQuest Legends YouTube videos."
- "List recent creator videos about EverQuest Legends classes."
- "Show the official Creator Legends program requirements."
Source Policy
- Searchable sources should be stable public text pages about EverQuest Legends.
- Official EQL, Daybreak, Game Jawn, original interviews, hands-on previews, and EQL-specific guide pages are preferred.
- Social, Discord, forum, Twitch, and YouTube watch pages are pointer-only unless there is a stable public feed or transcript.
- Creator YouTube channels are unofficial community sources. Use them for coverage discovery, guides, and commentary; verify factual claims against official EQL pages, press pages, or wiki pages.
- Daybreak Help pages are pointer-o
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ArtSabintsev
- Source: ArtSabintsev/everquest-legends-mcp
- License: MIT
- Homepage: https://github.com/ArtSabintsev/everquest-legends-mcp#readme
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.