Skip to main content
Glama
L3-N0X
by L3-N0X
README.md
# Minecraft Wiki MCP

An MCP Server for browsing the official Minecraft Wiki!

> [!WARNING]
> This is v2 — a complete Python rewrite. If you're upgrading from v1 (TypeScript), see the [migration notes](#migrating-from-v1) below.

> [!TIP]
> **Public Hosted Instance**: You can connect to the public hosted instance of this server directly at `https://minecraft-wiki-mcp.goett.top/mcp` without installing or running anything locally! See [Streamable HTTP Transport](#streamable-http-transport) below for instructions.

## Features

- **Wiki Search** — Find information about Minecraft structures, entities, items, and blocks
- **Page Summaries** — Get a page's intro plus a table of contents to navigate further
- **Section Access** — Read specific sections as raw wikitext
- **Full Page Content** — Retrieve the entire page when you need everything
- **Category Browsing** — Explore wiki categories and their member pages
- **Redirect Resolution** — Follow redirects to find the canonical page
- **Multi-Language Support** — Connect to any language version of the Minecraft Wiki

## Requirements

- [Python 3.12+](https://www.python.org/)
- [uv](https://docs.astral.sh/uv/) (recommended package manager)

## Installation

### Quick Start with uv

```bash
# Clone the repository
git clone https://github.com/L3-N0X/Minecraft-Wiki-MCP.git
cd Minecraft-Wiki-MCP

# Install dependencies
uv sync

# Run the server
uv run minecraft-wiki-mcp
```

### With pip

```bash
pip install -e .
minecraft-wiki-mcp
```

## Configuration

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "minecraft-wiki": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/Minecraft-Wiki-MCP",
        "run", "minecraft-wiki-mcp"
      ]
    }
  }
}
```

### Claude Code

```bash
claude mcp add minecraft-wiki -- uv --directory /path/to/Minecraft-Wiki-MCP run minecraft-wiki-mcp
```

### Multi-Language Support

By default, the server connects to the English wiki (`https://minecraft.wiki/api.php`).
Set the `MINECRAFT_WIKI_API_URL` environment variable to use a different language:

```json
{
  "mcpServers": {
    "minecraft-wiki": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/Minecraft-Wiki-MCP",
        "run", "minecraft-wiki-mcp"
      ],
      "env": {
        "MINECRAFT_WIKI_API_URL": "https://de.minecraft.wiki/api.php"
      }
    }
  }
}
```

### Streamable HTTP Transport

By default, the server uses **stdio** transport (communication via stdin/stdout).
For remote or multi-client access, you can use **Streamable HTTP** transport:

```bash
# Start the HTTP server (default: http://127.0.0.1:8000/mcp)
uv run minecraft-wiki-mcp --transport streamable-http
```

Then connect clients to the HTTP endpoint. For example, to connect to the public hosted instance using Claude Code:

```bash
claude mcp add --transport http minecraft-wiki https://minecraft-wiki-mcp.goett.top/mcp
```

Or for a local server:

```bash
claude mcp add --transport http minecraft-wiki http://localhost:8000/mcp
```

### Connecting Major Platforms to the Public Instance

The public hosted URL `https://minecraft-wiki-mcp.goett.top/mcp` can be easily added across major platforms that support remote MCP connections or custom apps:

* **Claude Code**:
  ```bash
  claude mcp add --transport http minecraft-wiki https://minecraft-wiki-mcp.goett.top/mcp
  ```

* **Claude (Web & Desktop) & Perplexity**:
  1. Open your settings/customization page (e.g., Customize -> Connectors in Claude).
  2. Select the option to add a remote server using the **HTTP/SSE** transport.
  3. Enter `https://minecraft-wiki-mcp.goett.top/mcp` as the server URL.

* **ChatGPT Website (Custom Apps)**:
  ChatGPT supports connecting custom MCP servers natively (even on the free tier) when developer mode is enabled:
  1. Open ChatGPT **Settings** -> **Apps** -> **Advanced Settings** and enable **Developer Mode**.
  2. Go back and create a new app.
  3. Enter `https://minecraft-wiki-mcp.goett.top/mcp` as the MCP server URL to connect.

### Configuration

Configure host, port, and security via environment variables:

| Variable | Default | Description |
|----------|---------|-------------|
| `MINECRAFT_WIKI_HOST` | `127.0.0.1` | Host to bind the HTTP server to |
| `MINECRAFT_WIKI_PORT` | `8000` | Port for the HTTP server |
| `MINECRAFT_WIKI_API_URL` | `https://minecraft.wiki/api.php` | MediaWiki API endpoint |
| `MINECRAFT_WIKI_ENABLE_SECURITY` | *Auto* | Enforce DNS rebinding protection (Host/Origin header check). Defaults to `true` if hosting on localhost/loopback, and `false` otherwise (e.g. when binding to `0.0.0.0` on a VPS). |
| `MINECRAFT_WIKI_ALLOWED_HOSTS` | *Auto* | Comma-separated list of allowed `Host` headers. (e.g. `mcp.example.com:*,123.45.67.89:*`). Only active if security is enabled. |
| `MINECRAFT_WIKI_ALLOWED_ORIGINS` | *Auto* | Comma-separated list of allowed `Origin` headers. (e.g. `https://mcp.example.com:*`). Only active if security is enabled. |

## Available Tools

### Search & Navigation

| Tool | Description |
|------|-------------|
| `minecraft_wiki_search` | Search for pages by name (items, blocks, entities, structures) |
| `minecraft_wiki_get_page` | Get page summary + section list, or full page content |
| `minecraft_wiki_get_section` | Read a specific section's raw wikitext |
| `minecraft_wiki_resolve_redirect` | Check if a title redirects and find the target |

### Categories

| Tool | Description |
|------|-------------|
| `minecraft_wiki_get_categories` | Get categories for a page, or browse categories by prefix |
| `minecraft_wiki_get_category_members` | List all pages in a category |

### Recommended Workflow

For best results, LLMs should follow this pattern:

1. **Search** — `minecraft_wiki_search` to find the right page
2. **Summarize** — `minecraft_wiki_get_page` to see the intro and available sections
3. **Deep dive** — `minecraft_wiki_get_section` to read specific sections

## Development

```bash
# Install dependencies
uv sync

# Run with the MCP Inspector for interactive testing
uv run mcp dev src/minecraft_wiki_mcp/server.py

# Syntax check
uv run python -m py_compile src/minecraft_wiki_mcp/server.py
```

## Acknowledgements

A special thank you to [stone-brick](https://github.com/stone-brick) for developing the fantastic [minecraft-wiki-MDifier](https://github.com/stone-brick/minecraft-wiki-MDifier) library! This library converts complex Minecraft wikitext into clean, easy-to-read Markdown, which not only improves the parsing results of the MCP server but also significantly saves token usage for LLMs. Thank you for the help and for building this great library!

## Migrating from v1

v2 is a complete rewrite from TypeScript to Python. Key changes:

| v1 Tool | v2 Tool | Notes |
|---------|---------|-------|
| `MinecraftWiki_searchWiki` | `minecraft_wiki_search` | Renamed |
| `MinecraftWiki_getPageSummary` | `minecraft_wiki_get_page` | Now includes section list |
| `MinecraftWiki_getPageContent` | `minecraft_wiki_get_page` | Use `include_all_content=true` |
| `MinecraftWiki_getSectionsInPage` | `minecraft_wiki_get_page` | Section list included in response |
| `MinecraftWiki_getPageSection` | `minecraft_wiki_get_section` | Returns wikitext instead of stripped HTML |
| `MinecraftWiki_getCategoriesForPage` | `minecraft_wiki_get_categories` | Pass `title` parameter |
| `MinecraftWiki_listAllCategories` | `minecraft_wiki_get_categories` | Pass `prefix` parameter |
| `MinecraftWiki_listCategoryMembers` | `minecraft_wiki_get_category_members` | Renamed |
| `MinecraftWiki_resolveRedirect` | `minecraft_wiki_resolve_redirect` | Renamed |

**Other breaking changes:**
- Configuration via `MINECRAFT_WIKI_API_URL` env var instead of `--api-url` CLI flag
- Runtime: Python 3.12+ with `uv` instead of Node.js
- Content is raw wikitext instead of HTML-stripped text

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between getPageSummary and getSectionsInPage, as both provide section information. The descriptions clarify their roles (getPageSummary includes a summary and sections, while getSectionsInPage is just sections), but an agent might initially confuse them. Other tools like searchWiki, getPageContent, and resolveRedirect are clearly differentiated.

Naming Consistency5/5

All tool names follow a consistent pattern: they start with 'MinecraftWiki_' followed by a verb_noun structure (e.g., getCategoriesForPage, searchWiki, listAllCategories). This uniformity makes it easy to predict tool names and understand their functions at a glance, with no deviations in naming style.

Tool Count5/5

With 9 tools, the count is well-scoped for a Minecraft Wiki server, covering essential operations like searching, retrieving content, handling categories, and resolving redirects. Each tool serves a specific purpose in the workflow, and there are no extraneous or missing tools for the domain.

Completeness5/5

The tool set provides comprehensive coverage for interacting with a wiki: it includes search, content retrieval (full page, sections, summaries), category management (listing categories and members), and redirect resolution. The recommended workflow in descriptions ensures agents can navigate from search to specific content without gaps, covering the full lifecycle of wiki queries.

Maintenance

ActivityInactive
ResponsivenessResponsive