leekwars-mcp-encyclopedia
by Zleub
README.md
# Leekwars MCP Encyclopedia
A standalone, Leekwars-aware MCP server dedicated to encyclopedia search and retrieval.
## Goal
This project exists to separate **knowledge tools** from the main Leekwars MCP server.
The main `leekwars-mcp` repository should focus on authenticated game actions, such as fetching leeks, running fights, managing AIs, buying items, and interacting with the Leekwars API.
This repository focuses only on read-only encyclopedia knowledge:
- searching the Leekwars encyclopedia
- retrieving encyclopedia pages by path
- returning useful snippets and metadata for agents
- exposing domain-aware tools for Leekwars concepts such as chips, weapons, effects, entities, and game mechanics
## Why a separate server?
The encyclopedia search stack may use Python-specific tooling such as `bm25s`. Keeping it in a separate repository avoids adding Python dependencies to the mostly TypeScript game-action server.
This split also creates a clearer MCP model:
- **Leekwars action server**: authenticated, state-changing, game/API operations
- **Leekwars encyclopedia server**: unauthenticated, read-only, knowledge retrieval
An MCP client or agent can connect to both servers when it needs both knowledge and actions.
## Intended MCP tools
Initial tools could include:
- `search_encyclopedia(query, k?)` — search the encyclopedia and return ranked Leekwars-aware results
- `get_encyclopedia_page(path)` — read a full encyclopedia page by path
- `list_encyclopedia_pages()` — list known encyclopedia documents
Future tools may become more domain-specific:
- `find_chip(name)`
- `find_weapon(name)`
- `find_effect(name)`
- `search_game_mechanics(query)`
## Design direction
The server should return structured, domain-aware results rather than generic text blobs. A search result should ideally include:
- title
- path
- score
- snippet
- document/category metadata when available
Example shape:
```json
{
"title": "Chip: Flame",
"path": "chips/flame.md",
"score": 12.34,
"snippet": "Flame deals fire damage...",
"kind": "chip"
}
```
## Setup
Primary workflow with `uv`:
```bash
uv sync
uv run leekwars-mcp-encyclopedia
```
Plain `venv` + `pip` workflow:
```bash
python -m venv .venv
.venv/bin/pip install -e .
.venv/bin/leekwars-mcp-encyclopedia
```
The default command starts the stdio MCP server. The index is generated at startup if `.cache/bm25/` is missing.
## CLI
```bash
leekwars-mcp-encyclopedia
leekwars-mcp-encyclopedia serve
leekwars-mcp-encyclopedia index --rebuild
```
## Vendored encyclopedia content
The server reads encyclopedia markdown only from:
```text
vendor/encyclopedia/root/
```
Generated search indexes live under `.cache/bm25/` and are git-ignored.
## Relationship with `leekwars-mcp`
This repository is intended to replace the encyclopedia-related tools currently living in `leekwars-mcp`, especially:
- `search_encyclopedia`
- `get_encyclopedia_page`
Once this project exists, those tools can be removed from the action server or kept temporarily as deprecated compatibility wrappers.
TDQS
A3.5/5.0
Scored across 2 tools
Disambiguation5/5
The two tools have clearly distinct purposes: one retrieves a specific page by path, the other searches the encyclopedia. No overlap.
Naming Consistency5/5
Both tools use snake_case and follow a consistent verb_noun pattern: 'get_encyclopedia_page' and 'search_encyclopedia'.
Tool Count3/5
With only 2 tools, the server feels thin for an encyclopedia, but it covers basic read and search operations. Could be acceptable for a focused domain.
Completeness2/5
The set lacks tools for discovering pages (e.g., list or browse), which limits the agent's ability to navigate. Significant gaps remain.
Maintenance
ActivityInactive
ResponsivenessNo issues