Everloot MCP server
2026년 11월 14일 커밋AI 클라이언트가 World of Warcraft의 세계관 설정, 플레이어가 관찰한 드롭 아이템, 상인, 퀘스트, 전문 기술 및 특성에 관한 전문 지식 베이스를 조회할 수 있게 합니다.
다른 이름 Everloot/everloot, knowledge
- 스타
- 2
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.9.1
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- AGPL-3.0
Everloot MCP란?
Everloot은(는) MCP server입니다. AI 클라이언트가 World of Warcraft의 세계관 설정, 플레이어가 관찰한 드롭 아이템, 상인, 퀘스트, 전문 기술 및 특성에 관한 전문 지식 베이스를 조회할 수 있게 합니다.
프로젝트 README에서 생성된 요약
Everloot MCP server 정보
Everloot는 AI 클라이언트가 World of Warcraft에 특화된 전문 지식 베이스에 접근할 수 있도록 하는 MCP server를 제공합니다. 게임 세계관, 플레이어가 관찰한 드롭 아이템, 상인, 퀘스트, 전문 기술 및 특성에 관한 데이터를 제공합니다. 이 server는 미리 구축된 SQLite 데이터베이스 공개 릴리스와 함께 사용하도록 설계되었으며, 서비스 시작 전 manifest를 통해 데이터 무결성을 검증합니다.
개발자는 serve-mcp 명령어를 사용하여 로컬에서 server를 실행하거나, serve-mcp-http를 통해 HTTP transport 방식으로 호스팅할 수 있습니다. HTTP 버전을 사용할 경우, 인증은 --token 플래그 또는 환경 변수를 통해 제공되는 bearer token으로 처리됩니다. 이 시스템은 복잡한 데이터베이스 구축 프로세스와 실제 서비스 계층을 분리하여 설계되었으므로, MCP 서비스는 필터링된 공개 가능 데이터 소스와만 상호작용합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Everloot MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 Everloot MCP 설치
$ claude mcp add --transport http knowledge https://everloot.app/mcp/publicCursor에 Everloot MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"knowledge": {
"url": "https://everloot.app/mcp/public"
}
}
}VS Code에 Everloot MCP 설치
.vscode/mcp.json
{
"servers": {
"knowledge": {
"type": "http",
"url": "https://everloot.app/mcp/public"
}
}
}Codex에 Everloot MCP 설치
~/.codex/config.toml
[mcp_servers.knowledge] url = "https://everloot.app/mcp/public"
Gemini CLI에 Everloot MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"knowledge": {
"httpUrl": "https://everloot.app/mcp/public"
}
}
}구성
BLIZZARD_CLIENT_IDBLIZZARD_CLIENT_SECRET
| 이름 | 설명 | 유형 |
|---|---|---|
| BLIZZARD_CLIENT_ID | — | |
| BLIZZARD_CLIENT_SECRET | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능everloot/everloot is public and reachablegithub.com/everloot/everloot ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)AGPL-3.0spdx.org/licenses/AGPL-3.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-13github.com/everloot/everloot ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답initialize answered with protocol 2025-06-18 in 1579 ms통과
README
GitHub에서 보기kb/: the Everloot knowledge base
A local SQLite database of WoW knowledge in which every row carries its source, licence, retrieval
date and URL. Design: ../docs/design/specs/2026-09-27-forever-ai-addon-design.md §2 and §4.
Build it
npm install
npm run kb -- import-wiki data/raw/warcraft.wiki.gg-20231113-history.xml.zst
npm run kb -- import-curated
npm run kb -- validate
The wiki dump is at https://archive.org/details/wiki-warcraft.wiki.gg-20231113 (637 MB). It is a
WikiTeam export, so each page's history is split across many blocks; the importer reads the file
twice and keeps each page's newest revision. Its zstd frame declares a 2 GB window, so decoding needs
about 2 GB of RAM (handled by zstd-napi).
First build (2026-09-27): 257,110 lore pages, 18,713 skipped, 48,341 redirects dropped, 239,941 other-namespace, 0 empty; 1 curated; import took ~16 minutes with peak memory ~2.65 GB. Skipped pages are template-only (item tooltips, TCG cards, disambiguation stubs) and near-empty stubs (under 20 letters); importing item tooltips as structured item rows is the next task.
Sources and what may be published
| Source | Licence | In the public snapshot |
|---|---|---|
| Warcraft Wiki, Internet Archive dump 2023-11-13 | CC BY-SA 4.0 | yes |
Curated entries (curated/*.yaml) |
CC BY-SA 4.0 | yes |
| Blizzard Battle.net API | Blizzard Developer API Terms | no, local cache only |
pfQuest database, Classic 1.12 (pfquest-classic) |
addon MIT; data from VMaNGOS (GPL-2.0) and CMaNGOS (GPL-3.0) | no, local baseline only |
wago.tools is not used: its robots.txt disallows everything but its home page.
npm run kb -- snapshot data/release/<name>.sqlite writes the publishable copy (outside the
database's own folder) and a .manifest.json with its sha256. The file is built and verified in a
work file next to the live database, filtered by the code's source registry, and only then moved
into place.
Classic baseline (local only)
pfQuest's Classic 1.12 database is a checklist for what Forever players still need to confirm. It is never published. With a pfQuest download at the pinned commit and a client snapshot for the zone ids:
git clone https://github.com/shagu/pfQuest <folder> && git -C <folder> checkout 104f3567
npm run kb -- import-pfquest <folder> --client data/client/<snapshot>.sqlite
npm run kb -- baseline-report --db data/everloot-kb.sqlite [--out <folder outside the repository>]
The import reads the Lua files as data and never runs them. The report compares the baseline with the
uploads that EVERLOOT_PUBLIC_CORPUS_URL or EVERLOOT_UPLOADS points at, and writes Markdown and JSON
outside the repository (by default to the system temp folder). Design:
../docs/design/specs/2026-10-17-classic-baseline-design.md.
Serve a public release
The MCP service answers questions; it never builds a database. It takes a public release (the
filtered file snapshot wrote, together with its .manifest.json) and nothing else. A source
database is not a release: it still holds non-publishable sources and API cache rows.
node ./node_modules/tsx/dist/cli.mjs src/cli.ts snapshot data/release/kb.sqlite --db data/wowvault-kb.sqlite
node ./node_modules/tsx/dist/cli.mjs src/cli.ts serve-mcp --db data/release/kb.sqlite
node ./node_modules/tsx/dist/cli.mjs src/cli.ts serve-mcp-http --db data/release/kb.sqlite --port 8787
Invoke it through node directly: some npm and PowerShell combinations swallow the --db value.
Before anything listens, the release is opened read-only and checked against its own manifest. The
manifest must exist, carry this build's licence and notice plus a sha256; the file must match that
hash; the database must hold only registry-publishable sources with an empty API cache, exactly the
expected schema, no free pages and at least one row. Any failure exits non-zero with the reason on
stderr and no port is opened. A leftover -wal/-shm/-journal sidecar means the file is still
being written to, so it is refused as well.
stats and search read an existing knowledge base the same way, create nothing, and both need an
explicit --db. The import commands still default to data/everloot-kb.sqlite.
validate is the one command that writes to the file it opens (it rebuilds the fts5 index), so it
is a diagnostic for a source database and never part of a serving path.
serve-mcp-http binds loopback only and takes --token or EVERLOOT_MCP_TOKEN. A bearer token is
transport authentication; it is not evidence that any particular client can connect.
Blizzard API
Create a free client at https://develop.battle.net/access/clients and put it in kb/.env:
BLIZZARD_CLIENT_ID=...
BLIZZARD_CLIENT_SECRET=...
Then, in Git Bash or PowerShell (no leading slash: Git Bash rewrites paths that start with /):
npm run kb -- blizzard-get data/wow/playable-class/index --game classic1x --kind static
--game forever works: Blizzard's API has had the static-forever-{region}, dynamic-forever-{region}
and profile-forever-{region} namespaces since the 2026-11-04 launch (checked 2026-11-06, US and EU).
Forever has no realm index; rulesets replace realms. See docs/sources/source-catalog.md for the ruleset note.
Test it
npm test
npm run typecheck
The tests build small databases in temporary folders; none of them needs the wiki dump.
npm run kb -- audit-sources <file.sqlite...> lists the rows per source in any database or release
and exits 1 if it holds anything that may not be published.
Where things live
| Path | What |
|---|---|
src/importers/ |
The Warcraft Wiki dump importer (XML, templates, infoboxes, page types), curated entries and the local pfQuest baseline |
src/snapshot.ts, src/public-snapshot.ts |
Building a public release and checking one before it is served |
src/search.ts, src/entities.ts, src/db.ts |
The database, its full-text search and row writes |
src/mcp-server.ts, src/mcp-http-*.ts |
The MCP server and its HTTP transport (the site mounts the same handler) |
src/*-rollup.ts, src/profession-path.ts, src/gold-ledger.ts, … |
The gameplay readers behind the MCP tools and site pages, built from player uploads |
src/blizzard/ |
The Battle.net API client; its cache stays local |
curated/ |
Facts written in our own words, each with its source URL |
wiki/, src/wiki/ |
The wiki's pages (CC BY-SA 4.0, see wiki/README.md) and their parser and page check, npm run kb -- wiki-check |
news/, src/news/ |
The site's news posts (CC BY-SA 4.0, see news/README.md) and their post check, npm run kb -- news-check |
guides/, src/guides/ |
The site's guides (CC BY-SA 4.0, see guides/README.md) and their guide check, npm run kb -- guide-check |
test/ |
Vitest tests and fixtures |
Rules
Read ../docs/DATA_POLICY.md before adding a source, and record it in
../docs/sources/LEDGER.md. Blocked, paid or unlicensed sources go on
the gaps backlog in ../docs/sources/source-catalog.md, never into an importer.
Code licence
AGPL-3.0-only, like the rest of Everloot (see LICENSE at the repository root). Data licence: CC BY-SA 4.0.
Armory crawl
npm run kb -- armory-crawl --region us|eu [--budget 6000] [--dry-run] reads Forever guilds, rosters, characters, equipment and PvP summaries into the separate Supabase armory. Credentials come from BNET_CLIENT_ID, BNET_CLIENT_SECRET, SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY. It uses eight workers and starts at most 50 Blizzard reads per rolling second. It reserves the full row cost before starting, so it can leave up to two calls unused.
For a write-free live probe, set ARMORY_DRY_RUN_GUILD to a known guild name or slug and use --dry-run --budget 2. This reads that guild and roster in memory, needs no Supabase credentials and prints counts without names. Normal runs seed addon guild guesses, read queued then stale rows, defer transient failures for one hour and bad rows for seven days, and purge expired data. The run stops after ten non-transient bad rows. The hourly workflow skips with a notice until all four secrets are configured. Both migrations, 20261109120000_armory.sql and 20261109130000_armory_touch_members.sql, must be applied together, in that order, before the first crawl and before enabling those secrets.
Everloot MCP 질문
Everloot MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --transport http knowledge https://everloot.app/mcp/public를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Everloot MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
MCP 서비스를 어떻게 실행하나요?
node ./node_modules/tsx/dist/cli.mjs src/cli.ts serve-mcp --db data/release/kb.sqlite 명령어를 사용하여 실행할 수 있습니다.
MCP server가 데이터베이스를 직접 구축하나요?
아니요, MCP 서비스는 질문에 답변하는 역할만 수행하며, 미리 구축된 공개 릴리스 데이터베이스와 manifest 파일이 필요합니다.