sbox-mcp-documentation
# sbox-mcp-documentation
[](https://www.npmjs.com/package/sbox-mcp-documentation)
[](https://opensource.org/licenses/MIT)
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that provides AI assistants with searchable access to the full **s&box** game engine documentation — 180+ pages of guides, tutorials, and concepts — plus the complete **API reference** with 1,800+ types and 15,000+ members.
## Quick Start
No installation required — use `npx` directly in your MCP config:
```json
{
"servers": {
"sbox-docs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sbox-mcp-documentation"]
}
}
}
```
Or install globally:
```bash
npm install -g sbox-mcp-documentation
```
## Features
### Documentation
- **Full-text search** across all s&box documentation with fuzzy matching and relevance ranking
- **Direct page retrieval** with chunked reading for large pages
- **Category browsing** to discover available documentation topics
### API Reference
- **API type search** across 1,800+ public types (classes, structs, enums, interfaces) with member-aware ranking
- **Detailed type lookup** — methods, properties, fields, events, XML doc comments, and inheritance info
- **Chunked output** for large types so no detail is truncated
### General
- **Automatic caching** — docs cached for 4 hours, API schema cached for 24 hours
- **Background indexing** on startup — both subsystems ready within seconds
- **Built-in self-tests** to verify the server is working correctly
## Data Sources
### Documentation
Documentation is fetched from the official [s&box wiki](https://sbox.game/dev/doc) via the LLM-optimized index at [sbox.game/llms.txt](https://sbox.game/llms.txt). This file lists all available documentation pages, and each page is fetched as raw Markdown from `sbox.game/dev/doc/{page}.md`. The server crawls all listed pages and builds a local search index using [MiniSearch](https://lucaong.github.io/minisearch/).
### API Reference
The API schema is downloaded from the Facepunch CDN as a JSON file (the same data powering [sbox.game/api](https://sbox.game/api)). It contains all public types from the s&box assembly — 1,800+ types with full member signatures, XML doc comments, and inheritance info. The server strips internal/compiler-generated types and indexes everything with MiniSearch for fast fuzzy lookup.
## Installation
### Option 1: npx (recommended)
No install needed. Just reference `npx sbox-mcp-documentation` in your MCP configuration (see below).
### Option 2: Global install
```bash
npm install -g sbox-mcp-documentation
```
### Option 3: From source
```bash
git clone https://github.com/fiedlermarius/sbox-mcp-documentation.git
cd sbox-mcp-documentation
npm install
npm run build
```
## Configuration
### VS Code (GitHub Copilot)
Add to `.vscode/mcp.json` in your workspace:
```json
{
"servers": {
"sbox-docs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sbox-mcp-documentation"]
}
}
}
```
### Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"sbox-docs": {
"command": "npx",
"args": ["-y", "sbox-mcp-documentation"]
}
}
}
```
### Claude Desktop
Add to your Claude Desktop config (`%APPDATA%/Claude/claude_desktop_config.json` on Windows):
```json
{
"mcpServers": {
"sbox-docs": {
"command": "npx",
"args": ["-y", "sbox-mcp-documentation"]
}
}
}
```
#### Local Checkout Example
If you want to use a local checkout instead of `npx`, update your configuration as follows:
```json
{
"servers": {
"sbox-docs": {
"type": "stdio",
"command": "node",
"args": ["<path-to-repo>/dist/index.js"]
}
}
}
```
As shown above, you need to replace `"command": "npx"` and `"args"` with `"command": "node"` and `"args": ["<path-to-repo>/dist/index.js"]`.
## Tools
| Tool | Description |
|------|-------------|
| `sbox_search_docs` | Search documentation with fuzzy matching. Returns titles, URLs, categories, and relevant snippets. Supports category filtering and result limits. |
| `sbox_get_doc_page` | Fetch a specific documentation page as Markdown. Supports chunked reading via `start_index` and `max_length` for large pages. |
| `sbox_list_doc_categories` | List all documentation categories with page counts. Useful for discovering what topics are available. |
| `sbox_search_api` | Search the s&box API reference by type name, namespace, or keyword. Returns matching types with namespace, description, and top member names. |
| `sbox_get_api_type` | Get full details for a specific API type — all methods, properties, fields, events, XML doc comments, and inheritance. Supports chunked output for large types. |
| `sbox_cache_status` | Show cache and index health — page counts, freshness, and whether both docs and API indexing are complete. |
| `sbox_run_tests` | Run built-in self-tests for all six modules (cache, search, crawler — docs and API). Returns pass/fail results per test case. |
## Architecture
```
sbox.game/llms.txt (doc index) cdn.sbox.game (AssemblySchema JSON)
│ │
▼ ▼
DocCrawler ──► GET /llms.txt ApiCrawler ──► resolves schema URL
│ GET /dev/doc/*.md │ downloads + filters types
│ │
▼ ▼
DocCache ──► ~/.sbox-docs-mcp/cache/ ApiCache ──► ~/.sbox-docs-mcp/cache/
│ manifest.json (TTL 4h) │ api-types.json (TTL 24h)
│ │
▼ ▼
DocSearch ──► MiniSearch index ApiSearch ──► MiniSearch index
title (3x), category (2x), name (4x), fullName (3x),
content (1x) members (2x), namespace (1.5x)
```
### Cache Behavior
- **Location:** `~/.sbox-docs-mcp/cache/`
- **Docs TTL:** 4 hours (configurable via `SBOX_DOCS_CACHE_TTL` env var, in seconds)
- **API TTL:** 24 hours — the schema is large (~9 MB) and changes infrequently
- **Custom directory:** Set `SBOX_DOCS_CACHE_DIR` env var
- Both caches are populated on server startup in the background
- Set `SBOX_API_SCHEMA_URL` to pin a specific schema version
## Related Projects
- [Facepunch.AssemblySchema](https://github.com/Facepunch/Facepunch.AssemblySchema) — the schema format this server uses for API reference data
## License
[MIT](LICENSE)
TDQS
Scored across 7 tools
The tools are mostly distinct: search_api vs search_docs clearly separate API reference from general documentation, and get_api_type vs get_doc_page are both retrieval operations but target different content types. list_doc_categories, cache_status, and run_tests are clearly distinct. The only mild ambiguity is between search_api and get_api_type, but their descriptions (search vs get full details) resolve it well.
All tools follow a consistent 'sbox_' prefix convention. The verbs are mixed but predictable: search_* for discovery, get_* for retrieval, list_* for enumeration, cache_status and run_tests are noun-phrase operational commands. The naming is coherent and per-purpose, though not a uniform verb_noun pattern across all tools.
Seven tools is well within the ideal 3-15 range. Each tool serves a distinct purpose: two search operations, two retrieval operations, one listing operation, and two diagnostic/status tools. This is appropriate for a documentation MCP server covering both API reference and guides.
The server covers documentation search (search_docs), API reference lookup (search_api, get_api_type), page retrieval (get_doc_page), discovery (list_doc_categories), and operational diagnostics (cache_status, run_tests). This is a reasonably complete surface for a documentation server. Minor gaps include no direct 'get category' operation and no way to list all API types without searching, but these are workable.