Skip to main content
Glama
YukiSakiko

mcp-server-moegirl-wiki

by YukiSakiko
README.md
# mcp-server-moegirl-wiki

[![PyPI version](https://img.shields.io/pypi/v/mcp-server-moegirl-wiki.svg)](https://pypi.org/project/mcp-server-moegirl-wiki/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

English | [简体中文](README.zh-CN.md)

MCP server for [萌娘百科 (Moegirl Wiki)](https://zh.moegirl.org.cn/). Two tools: search entries and fetch a page's intro.

## Install

```bash
uvx mcp-server-moegirl-wiki         # recommended
pipx run mcp-server-moegirl-wiki
pip install mcp-server-moegirl-wiki
```

## Tools

### `search_moegirl(keyword: str, limit: int = 5)`

Returns `{"results": [{"title", "url", "snippet"}, ...], "count": int}`.

### `get_page(title: str, max_length: int = 6250)`

Returns `{"title", "content", "url", "page_id"}` — full plain-text rendering of the page (all sections, templates expanded, links resolved). Auto-follows redirects. `content` is truncated to `max_length` characters; default 6250 covers a typical character page in full, pass larger (e.g. 20000) for very long pages.

## Environment variables

| Variable | Default | Description |
|---|---|---|
| `MOEGIRL_MAX_LENGTH` | `6250` | Default `max_length` for `get_page` when the caller does not specify one. Useful for tuning per-deployment without forking the package. Invalid/non-positive values are ignored with a warning. |

## Configuration

### Claude Desktop

```json
{
  "mcpServers": {
    "moegirl-wiki": {
      "command": "uvx",
      "args": ["mcp-server-moegirl-wiki"]
    }
  }
}
```

### MaiBot (`config/bot_config.toml`)

MaiBot's default config already has the `[mcp]` block — just replace the `servers` line:

```toml
servers = [{name = "moegirl", enabled = true, transport = "stdio", command = "uvx", args = ["mcp-server-moegirl-wiki"], env = {MOEGIRL_MAX_LENGTH = "6250"}, url = "", headers = {}, http_timeout_seconds = 30.0, read_timeout_seconds = 300.0, authorization = {mode = "none", bearer_token = ""}}]
```

Tweak `MOEGIRL_MAX_LENGTH` to taste (raise to `20000` for very long pages, lower to `1500` for quick lookups). If `uvx` is not on `PATH`, swap `command`/`args` for `command = "pipx", args = ["run", "mcp-server-moegirl-wiki"]`.

## Development

```bash
git clone https://github.com/XXXxx7258/mcp-server-moegirl-wiki
cd mcp-server-moegirl-wiki
uv sync --group dev
uv run pytest -m network
uv run ruff check .
```

## Limitations

- `get_page` returns rendered plain text (templates expanded, links resolved). Raw wikitext (`prop=revisions`, `action=parse`, `?action=raw`, `Special:Export`) is blocked by Moegirl Wiki's site-wide ACL — empirically verified that bot-password login does **not** unlock it; only `sysop`/staff groups can call these actions.
- Uses the `mzh.moegirl.org.cn` mirror.

## License

[MIT](LICENSE)

TDQS

A3.8/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one searches for pages, the other retrieves the content of a specific page. There is no overlap or ambiguity.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern (get_page, search_moegirl), using snake_case. The naming is clear and predictable.

Tool Count3/5

With only two tools, the server feels minimal for a wiki. While it covers basic search and retrieval, the scope is narrow; typically 4-8 tools would be more appropriate.

Completeness2/5

The tool surface has significant gaps for a wiki domain: missing operations like listing pages, retrieving sections, getting categories, or browsing history. Agents will likely fail to accomplish common wiki tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues