MediaWiki MCP Server

MediaWiki MCP Server

Enables LLM clients to interact with any MediaWiki wiki, supporting page creation/editing, search, file uploads, category browsing, and page history retrieval. Supports multiple wikis with OAuth2 or bot password authentication for both public and private wikis.

Category
Visit Server

README

MediaWiki MCP Server

NPM Version smithery badge MIT licensed

An MCP (Model Context Protocol) server that enables Large Language Model (LLM) clients to interact with any MediaWiki wiki.

Feature

Tools

Name Description Permissions
add-wiki Adds a new wiki as an MCP resource from a URL. -
create-page 🔐 Create a new wiki page. Create, edit, and move pages
delete-page 🔐 Delete a wiki page. Delete pages, revisions, and log entries
get-category-members Gets all members in the category -
get-file Returns the standard file object for a file page. -
get-page Returns the standard page object for a wiki page. -
get-page-history Returns information about the latest revisions to a wiki page. -
get-revision Returns the standard revision object for a page. -
remove-wiki Removes a wiki resource. -
search-page Search wiki page titles and contents for the provided search terms. -
search-page-by-prefix Perform a prefix search for page titles. -
set-wiki Sets the wiki resource to use for the current session. -
undelete-page 🔐 Undelete a wiki page. Delete pages, revisions, and log entries
update-page 🔐 Update an existing wiki page. Edit existing pages
upload-file 🔐 Uploads a file to the wiki from the local disk. Upload new files
upload-file-from-url 🔐 Uploads a file to the wiki from a web URL. Upload, replace, and move files

Resources

mcp://wikis/{wikiKey}

  • Credentials (e.g., token, username, password) are never exposed in resource content.
  • After add-wiki/remove-wiki, the server sends notifications/resources/list_changed so clients refresh.

<details><summary>Example list result</summary>

{
  "resources": [
    {
      "uri": "mcp://wikis/en.wikipedia.org",
      "name": "wikis/en.wikipedia.org",
      "title": "Wikipedia",
      "description": "Wiki \"Wikipedia\" hosted at https://en.wikipedia.org"
    }
  ]
}

</details>

<details><summary>Example read result</summary>

{
  "contents": [
    {
      "uri": "mcp://wikis/en.wikipedia.org",
      "mimeType": "application/json",
      "text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
    }
  ]
}

</details>

Environment variables

Name Description Default
CONFIG Path to your configuration file config.json
MCP_TRANSPORT Type of MCP server transport (stdio or http) stdio
PORT Port used for StreamableHTTP transport 3000

Configuration

Note: Config is only required when interacting with a private wiki or using authenticated tools.

Create a config.json file to configure wiki connections. Use the config.example.json as a starting point.

Basic structure

{
  "defaultWiki": "en.wikipedia.org",
  "wikis": {
    "en.wikipedia.org": {
      "sitename": "Wikipedia",
      "server": "https://en.wikipedia.org",
      "articlepath": "/wiki",
      "scriptpath": "/w",
      "token": null,
      "username": null,
      "password": null,
      "private": false
    }
  }
}

Configuration fields

Field Description
defaultWiki The default wiki identifier to use (matches a key in wikis)
wikis Object containing wiki configurations, keyed by domain/identifier

Wiki configuration fields

Field Required Description
sitename Yes Display name for the wiki
server Yes Base URL of the wiki (e.g., https://en.wikipedia.org)
articlepath Yes Path pattern for articles (typically /wiki)
scriptpath Yes Path to MediaWiki scripts (typically /w)
token No OAuth2 access token for authenticated operations (preferred)
username No Bot username (fallback when OAuth2 is not available)
password No Bot password (fallback when OAuth2 is not available)
private No Whether the wiki requires authentication to read (default: false)

Authentication setup

For tools marked with 🔐, authentication is required.

Preferred method: OAuth2 Token

  1. Navigate to Special:OAuthConsumerRegistration/propose/oauth2 on your wiki
  2. Select "This consumer is for use only by [YourUsername]"
  3. Grant the necessary permissions
  4. After approval, you'll receive:
    • Client ID
    • Client Secret
    • Access Token
  5. Add the token to your wiki configuration in config.json

Note: OAuth2 requires the OAuth extension to be installed on the wiki.

Fallback method: Username & Password

If OAuth2 is not available on your wiki, you can use bot credentials (from Special:BotPasswords ) instead of the OAuth2 token.

Installation

<details><summary><b>Install via Smithery</b></summary>

To install MediaWiki MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @ProfessionalWiki/mediawiki-mcp-server --client claude

</details>

<details> <summary><b>Install in Claude Desktop</b></summary>

Follow the guide, use following configuration:

{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": [
        "@professional-wiki/mediawiki-mcp-server@latest"
      ],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

</details>

<details><summary><b>Install in VS Code</b></summary>

Install in VS Code Install in VS Code Insiders

code --add-mcp '{"name":"mediawiki-mcp-server","command":"npx","args":["@professional-wiki/mediawiki-mcp-server@latest"]}'

</details>

<details> <summary><b>Install in Cursor</b></summary>

Install in Cursor

Go to Cursor Settings -> MCP -> Add new MCP Server. Name to your liking, use command type with the command npx @professional-wiki/mediawiki-mcp-server. You can also verify config or add command like arguments via clicking Edit.

{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": [
        "@professional-wiki/mediawiki-mcp-server@latest"
      ],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

</details>

<details> <summary><b>Install in Windsurf</b></summary>

Follow the guide, use following configuration:

{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": [
        "@professional-wiki/mediawiki-mcp-server@latest"
      ],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

</details>

<details> <summary><b>Install in Claude Code</b></summary>

Follow the Claude Code MCP docs.

Run the below command, optionally with -e flags to specify environment variables.

claude mcp add mediawiki-mcp-server npx @professional-wiki/mediawiki-mcp-server@latest

You should end up with something like the below in your .claude.json config:

"mcpServers": {
  "mediawiki-mcp-server": {
    "type": "stdio",
    "command": "npx",
    "args": [
      "@professional-wiki/mediawiki-mcp-server@latest"
    ],
    "env": {
      "CONFIG": "path/to/config.json"
    }
  }
},

</details>

Development

🐋 Develop with Docker: Replace the npm run part of the command with make (e.g. make inspector).

MCP Inspector

Test and debug the MCP server without a MCP client and LLM.

To start the development server and the MCP Inspector together:

npm run inspector

The command will build and start the MCP Proxy server locally at 6277 and the MCP Inspector client UI at http://localhost:6274.

MCPJam Inspector

Test and debug the MCP server, with a built-in MCP client and support for different LLMs.

To start the development server and the MCP Inspector together:

npm run mcpjam

Test with MCP clients

To enable your MCP client to use this MediaWiki MCP Server for local development:

  1. Install the MCP server on your MCP client.

  2. Change the command and args values as shown in the mcp.json file (or mcp.docker.json if you prefer to run the MCP server in Docker).

  3. Run the dev command so that the source will be compiled whenever there is a change:

    npm run dev
    

Release process

To release a new version:

<details> <summary><b>1. Use npm version to create a release</b></summary>

# For patch release (0.1.1 → 0.1.2)
npm version patch

# For minor release (0.1.1 → 0.2.0)
npm version minor

# For major release (0.1.1 → 1.0.0)
npm version major

# Or specify exact version
npm version 0.2.0

This command automatically:

  • Updates package.json and package-lock.json
  • Syncs the version in server.json, mcpb/manifest.json, Dockerfile (via the version script)
  • Creates a git commit
  • Creates a git tag (e.g., v0.2.0) </details>

<details> <summary><b>2. Push to GitHub</b></summary>

git push origin master --follow-tags

The release GitHub workflow will trigger automatically:

  • Build a MCP bundle .mcpb and publish to GitHub
  • Build and publish to NPM
  • Publish to the MCP Registry </details>

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue for bugs, feature requests, or suggestions.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured