npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mediawiki-mcp

v2.0.1

Published

MediaWiki MCP server with multi-wiki support and REST API

Downloads

220

Readme

MediaWiki MCP Server

A Model Context Protocol (MCP) server for MediaWiki instances with multi-wiki support. Uses the modern REST API (MediaWiki 1.42+) and Action API for full read/write access across multiple named wikis.

Features

  • Multi-Wiki Support: Register named wikis, fan-out searches across all of them
  • REST API: Uses the modern /rest.php/v1/ endpoints for page CRUD, search, and revisions
  • Bot Password Auth: Logs in via Special:BotPasswords with per-wiki credentials
  • Page Operations: Read, create, update, delete, and undelete pages
  • Search: Full-text and prefix search across all registered wikis
  • File Operations: Get file metadata, upload files from data or URL
  • Category Browsing: List categories and their members with pagination
  • History & Revisions: Access revision history, view individual revisions
  • Recent Changes: Track wiki activity across all wikis
  • Link Analysis: Explore outgoing links and backlinks
  • Pagination: All list endpoints support continuation tokens
  • Retry Logic: Exponential backoff on 429/5xx errors

Installation

Prerequisites

  • Node.js 18 or higher
  • MediaWiki 1.42 or higher

Local Installation

git clone https://github.com/ttpears/mediawiki-mcp.git
cd mediawiki-mcp
npm install
npm run build

Docker Installation

cp .env.example .env
# Edit .env with your wiki URLs and credentials
docker compose up -d

Authentication

This server uses MediaWiki bot passwords for API authentication. Bot passwords are scoped credentials that limit what the bot can do, separate from your real account password.

Creating a Bot Password

  1. Log in to your MediaWiki wiki as a user with the permissions you want the bot to have
  2. Navigate to Special:BotPasswords (e.g., https://wiki.example.com/wiki/Special:BotPasswords)
  3. Enter a bot name (e.g., mcp) and click Create
  4. Select the grants (permissions) the bot needs:
    • High-volume (bot) access — required for API usage
    • Edit existing pages — for update-page
    • Edit protected pages — if the bot needs to edit protected pages
    • Create, edit, and move pages — for create-page, update-page
    • Delete pages and revisions — for delete-page / undelete-page
    • Upload, replace, and move files — for upload-file / upload-file-from-url
    • Patrol changes to pages — if using activity monitoring
    • Rollback changes to pages — if using rollback features
  5. Click Create to generate the password

MediaWiki will display credentials in this format:

Username: Admin@mcp
Password: your-bot-password-here

You need both values. The username (Admin@mcp) goes in MEDIAWIKI_USERNAME_* and the password goes in MEDIAWIKI_PASSWORD_*. The server uses these to log in via the Action API (action=login) and maintains a cookie-based session for all subsequent requests.

Repeat for Each Wiki

If you have multiple wikis, create a bot password on each one. You'll have a username/password pair per wiki.

Configuration

Multi-Wiki Setup

Create a .env file (see .env.example):

# Register multiple wikis (Name:URL pairs, comma-separated)
MEDIAWIKI_WIKIS=Main:https://wiki.example.com,Dev:https://dev.wiki.example.com

# Default wiki when none is specified
MEDIAWIKI_DEFAULT_WIKI=Main

# Per-wiki bot password credentials (uppercase wiki name)
MEDIAWIKI_USERNAME_MAIN=Admin@mcp
MEDIAWIKI_PASSWORD_MAIN=your-bot-password-here
MEDIAWIKI_USERNAME_DEV=Admin@mcp
MEDIAWIKI_PASSWORD_DEV=your-bot-password-here

Single-Wiki Setup

MEDIAWIKI_BASE_URL=https://wiki.example.com
MEDIAWIKI_USERNAME=Admin@mcp
MEDIAWIKI_PASSWORD=your-bot-password-here

HTTP Transport

MEDIAWIKI_MCP_PORT=8009
MEDIAWIKI_MCP_HOST=0.0.0.0

Usage

Stdio Mode (Local)

npm start

HTTP Mode (Remote / Docker)

npm run start:http

Endpoint: http://localhost:8009/mcp

LibreChat Integration

1. Add wiki credentials to the LibreChat .env

Add the MEDIAWIKI_* variables to your LibreChat .env file (e.g. /srv/docker/LibreChat/.env):

# MediaWiki MCP
MEDIAWIKI_WIKIS=Main:https://wiki.example.com,Dev:https://dev.wiki.example.com
MEDIAWIKI_DEFAULT_WIKI=Main
MEDIAWIKI_USERNAME_MAIN=Admin@mcp
MEDIAWIKI_PASSWORD_MAIN=your-bot-password-here
MEDIAWIKI_USERNAME_DEV=Admin@mcp
MEDIAWIKI_PASSWORD_DEV=your-bot-password-here

2. Add to docker-compose.override.yml

services:
  mediawiki-mcp:
    build: /srv/docker/mediawiki-mcp
    container_name: mediawiki-mcp
    env_file:
      - .env
    environment:
      - MEDIAWIKI_MCP_HOST=0.0.0.0
    restart: unless-stopped
    networks:
      - default

This builds the container from source and starts it alongside LibreChat. No need to install Node.js on the host — Docker handles the build.

3. Configure in librechat.yaml

mcpServers:
  mediawiki:
    type: streamable-http
    url: http://mediawiki-mcp:8009/mcp

If you have allowedDomains configured in LibreChat, add mediawiki-mcp to the list.

Tools

All tools that accept a wiki parameter will use the default wiki when omitted. Search and listing tools fan out across all registered wikis when wiki is not specified.

Wiki Management

| Tool | Description | |------|-------------| | add-wiki | Register a new named wiki (name, url, username, password) | | remove-wiki | Remove a registered wiki | | list-wikis | Show all registered wikis |

Search (Fan-Out)

| Tool | Description | |------|-------------| | search-pages | Full-text search across wikis | | search-pages-by-prefix | Title prefix search across wikis |

Parameters: query, wiki?, limit?

Page Operations (Single Wiki)

| Tool | Description | |------|-------------| | get-page | Get page content (wikitext or HTML) and metadata | | create-page | Create a new page | | update-page | Edit an existing page (requires latest_timestamp from get-page) | | delete-page | Delete a page | | undelete-page | Restore a deleted page |

History (Single Wiki)

| Tool | Description | |------|-------------| | get-page-history | Paginated revision list for a page | | get-revision | Get details of a specific revision by ID |

Categories

| Tool | Description | |------|-------------| | list-categories | List categories with member counts (fan-out) | | get-category-members | List pages in a category (single wiki, paginated) |

Files (Single Wiki)

| Tool | Description | |------|-------------| | get-file | Get file metadata, dimensions, and URLs | | upload-file | Upload from base64-encoded data | | upload-file-from-url | Upload from a remote URL |

Activity (Fan-Out)

| Tool | Description | |------|-------------| | get-recent-changes | Recent edits, creations, and deletions across wikis |

Links (Single Wiki)

| Tool | Description | |------|-------------| | get-page-links | Get outgoing links or backlinks for a page |

Development

npm run dev        # Watch mode
npm run type-check # Type checking
npm run build      # Build
npm test           # Run tests (85 tests)
npm run test:watch # Watch mode tests

Architecture

src/
├── index.ts                # Entry point (stdio)
├── stdio.ts                # Stdio transport
├── http-transport.ts       # Streamable HTTP transport
├── wiki-registry.ts        # Named wiki storage and env parsing
├── wiki-orchestrator.ts    # Fan-out routing and client management
├── types.ts                # TypeScript types
├── clients/
│   ├── rest-client.ts      # REST API (/rest.php/v1/)
│   └── action-client.ts    # Action API (/api.php) + bot password login
└── tools/
    ├── index.ts            # Tool registration barrel
    ├── wiki-tools.ts       # Wiki management
    ├── search-tools.ts     # Search (fan-out)
    ├── page-tools.ts       # Page CRUD
    ├── history-tools.ts    # Revision history
    ├── category-tools.ts   # Categories
    ├── link-tools.ts       # Links and backlinks
    ├── file-tools.ts       # File operations
    └── activity-tools.ts   # Recent changes
Transport Layer (stdio.ts, http-transport.ts)
         ↓
   WikiOrchestrator (fan-out / routing)
     ↓              ↓
RestClient      ActionClient
(/rest.php/v1)  (/api.php)
     ↑              ↑
     └── shared session cookies (bot password login)

License

MIT

Contributing

Contributions welcome! Please open issues or pull requests.