Python based FAST API and MCP server containing game meta data and content to be used in the wiki or to deploy as an MCP server for an AI agent like Claude. This allows you to easily search for content and details regarding the game 2009scape
README
This project is a WIP, please wait for official release
Turns the raw 2009scape game sources (items, NPCs, shops, drop tables, quests, locations) into one immutable SQLite artifact, and serves it two ways: a FastAPI contract for a wiki front end, and an MCP server so Claude and other agents can answer questions about the game.
flowchart LR
SRC["game sources<br/>+ overlays"] --> PIPE["pipeline/artifact<br/>offline build"]
PIPE --> ART[("knowledge.sqlite3<br/>one immutable build")]
subgraph RUN ["one image, one process, one port"]
REPO["repository<br/>SQLite + FTS5"] --> CORE["core<br/>resolve, walk, search"]
CORE --> HTTP["surfaces/http<br/>FastAPI"]
CORE --> MCP["surfaces/mcp<br/>FastMCP"]
HTTP --> GUARD["guarding<br/>token, rate, bans"]
MCP --> GUARD
end
ART --> REPO
GUARD --> WIKI["wiki front end"]
GUARD --> AGENT["Claude, editors,<br/>any MCP client"]
DOM["domain<br/>entities, relationships<br/>attribute registry"] -.-> PIPE & REPO & CORE
The build is offline and always from source. The dataset ships on Hugging Face and is fetched before a server starts, never committed here. A build holds about 20,000 entities, 83,000 relationships between them, and two years of weekly Grand Exchange prices.
Requires uv, which installs the pinned Python for you.
uv sync --all-extras
uv run poe download-data # the published dataset into data/
uv run poe keys init # the key this deployment answers, once
uv run poe keys issue --label me # one token, saved under tokens/me.json
uv run poe serve # HTTP on :8000, contract at /docs
Then ask it something:
TOKEN=$(jq -r .access_token ~/.config/scape2009-wiki-api/tokens/me.json)
curl -H "authorization: Bearer $TOKEN" \
http://localho