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.
README
MediaWiki MCP Server
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 sendsnotifications/resources/list_changedso 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
- Navigate to
Special:OAuthConsumerRegistration/propose/oauth2on your wiki - Select "This consumer is for use only by [YourUsername]"
- Grant the necessary permissions
- After approval, you'll receive:
- Client ID
- Client Secret
- Access Token
- Add the
tokento your wiki configuration inconfig.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>
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>
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 runpart of the command withmake(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:
-
Install the MCP server on your MCP client.
-
Change the
commandandargsvalues as shown in themcp.jsonfile (ormcp.docker.jsonif you prefer to run the MCP server in Docker). -
Run the
devcommand 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.jsonandpackage-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
.mcpband 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.