PluginBench
MCP Server
Active
MIT

MediaWiki MCP Server MCP Server

io.github.ProfessionalWiki/mediawiki-mcp-server

MCP server enabling AI clients to read and write pages, search, and query any MediaWiki wiki

What is the MediaWiki MCP Server MCP server?

The MediaWiki MCP Server is an MCP (Model Context Protocol) server that enables LLM clients to interact with any MediaWiki wiki, including Wikipedia. It provides tools for reading and writing wiki pages, searching, querying structured data, and managing wiki resources through a unified interface.

This server bridges AI assistants to MediaWiki wikis, allowing them to fetch pages, search content, create or edit articles, upload files, and query extension-specific data (Semantic MediaWiki, Wikibase, Cargo, etc.). Use it to integrate wiki knowledge into AI workflows, automate wiki edits, or enable AI to contribute to collaborative knowledge bases.

How to install MediaWiki MCP Server

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • CONFIG

    Path to your configuration file

  • MCP_ALLOW_STATIC_FALLBACK

    Set to 'true' to allow HTTP startup when config.json has static credentials. Otherwise the server refuses to start, preventing silent shared-identity fallback for unauthenticated requests.

  • MCP_CONTENT_MAX_BYTES

    Byte cap for the content bodies and result blocks tools return (wikitext, rendered HTML, diffs, statement and row listings). An oversized response is truncated with a trailing marker describing what was left out.

  • MCP_FILE_DATA_MAX_BYTES

    Hard cap on the base64-encoded size of a get-file-data response. A transport/safety backstop; callers tune actual size with the tool's width parameter. Over-cap responses error rather than truncate.

  • MCP_LOG_LEVEL

    Minimum severity for logger output (stderr telemetry and sendLoggingMessage broadcast). Invalid values fail loudly on first log call.

  • MCP_MAX_REQUEST_BODY

    Maximum HTTP request body size on the StreamableHTTP transport. Accepts size strings like 1mb or 512kb.

  • MCP_METRICS

    Set to 'true' to expose Prometheus metrics at GET /metrics on the HTTP transport. Has no effect on the stdio transport.

  • MCP_OAUTH_ALLOWED_REDIRECTS

    Additional allowed redirect URIs for hosted-proxy client registration: comma-separated exact URIs (which must include a host) and https prefix patterns ending in /*. Loopback, claude.ai, and verified first-party clients (ChatGPT, Cursor, VS Code) are always allowed; unset means no additional clients.

  • MCP_OAUTH_CIMD_ALLOWED_HOSTS

    Comma-separated additional client_id document hosts trusted for CIMD (bare host or host:port). Verified first-party hosts are always trusted.

  • MCP_OAUTH_CREDENTIALS_FILE

    Override the default OAuth credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json on Linux/macOS, %APPDATA%\mediawiki-mcp\credentials.json on Windows.

  • MCP_OAUTH_NO_BROWSER

    Set to '1' to skip launching a browser during the OAuth dance and log the auth URL to stderr instead. Useful in headless environments and CI.

  • MCP_OAUTH_PROXY_STORE_FILE

    Path to the hosted OAuth proxy's encrypted state file, which lets sign-ins survive restarts. Default: proxy-store.enc under the mediawiki-mcp config dir; /app/data/proxy-store.enc in the Docker image.

  • MCP_PUBLIC_URL

    Override the request-derived public URL used in the protected-resource discovery doc and WWW-Authenticate header. Set this when running behind a proxy that rewrites the request Host.

  • MCP_SHUTDOWN_GRACE_MS

    Maximum milliseconds to wait for in-flight /mcp calls to drain on SIGTERM/SIGINT before exiting. Capped at 600000.

  • MCP_TRANSPORT

    Type of MCP server transport

  • MCP_UPLOAD_MAX_BYTES

    Memory cap on the server-side fetch used by upload-file-from-url and update-file-from-url. Files larger than this are routed to the wiki's own copy-upload instead of being buffered by the server. Guards this server's memory, not the wiki's $wgMaxUploadSize.

  • PORT

    Port used for StreamableHTTP transport

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@professional-wiki/mediawiki-mcp-server"
      ],
      "env": {
        "CONFIG": "<YOUR_CONFIG>",
        "MCP_ALLOW_STATIC_FALLBACK": "<YOUR_MCP_ALLOW_STATIC_FALLBACK>",
        "MCP_CONTENT_MAX_BYTES": "<YOUR_MCP_CONTENT_MAX_BYTES>",
        "MCP_FILE_DATA_MAX_BYTES": "<YOUR_MCP_FILE_DATA_MAX_BYTES>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
        "MCP_MAX_REQUEST_BODY": "<YOUR_MCP_MAX_REQUEST_BODY>",
        "MCP_METRICS": "<YOUR_MCP_METRICS>",
        "MCP_OAUTH_ALLOWED_REDIRECTS": "<YOUR_MCP_OAUTH_ALLOWED_REDIRECTS>",
        "MCP_OAUTH_CIMD_ALLOWED_HOSTS": "<YOUR_MCP_OAUTH_CIMD_ALLOWED_HOSTS>",
        "MCP_OAUTH_CREDENTIALS_FILE": "<YOUR_MCP_OAUTH_CREDENTIALS_FILE>",
        "MCP_OAUTH_NO_BROWSER": "<YOUR_MCP_OAUTH_NO_BROWSER>",
        "MCP_OAUTH_PROXY_STORE_FILE": "<YOUR_MCP_OAUTH_PROXY_STORE_FILE>",
        "MCP_PUBLIC_URL": "<YOUR_MCP_PUBLIC_URL>",
        "MCP_SHUTDOWN_GRACE_MS": "<YOUR_MCP_SHUTDOWN_GRACE_MS>",
        "MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
        "MCP_UPLOAD_MAX_BYTES": "<YOUR_MCP_UPLOAD_MAX_BYTES>",
        "PORT": "<YOUR_PORT>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • get-page — Fetch a wiki page
  • get-pages — Fetch multiple wiki pages in one call (up to 50)
  • get-page-history — List recent revisions of a wiki page
  • get-revision — Fetch a specific revision of a page
  • search-page — Search wiki page titles and contents
  • search-page-by-prefix — Search page titles by prefix
  • compare-pages — Diff two versions of a wiki page by revision, title, or supplied wikitext
  • get-category-members — List members of a category (up to 500 per call, paginated)
  • get-links-here — List pages that reference a wiki page, including through redirects (up to 500 per call)
  • get-file — Fetch a file page
  • get-file-data — Fetch a file's image bytes inline (base64) for visual analysis
  • get-recent-changes — List recent change events across the wiki, filterable by timestamp, namespace, user, tag, type
  • get-site-info — Get a wiki's key settings: MediaWiki version, content language, namespaces, extensions, license
  • parse-wikitext — Render wikitext to HTML without saving
  • whoami — Report the identity the current session is authenticated as
  • create-page — Create a new wiki page (requires authentication)
  • update-page — Update an existing wiki page (requires authentication)
  • delete-page — Delete a wiki page (requires authentication)
  • move-page — Move (rename) a wiki page (requires authentication)
  • undelete-page — Undelete a wiki page (requires authentication)

Use cases

  • Search and retrieve content from Wikipedia or any MediaWiki wiki to augment AI responses with current information
  • Create, edit, and manage wiki pages programmatically, enabling AI to contribute documentation or structured content
  • Query structured data from Semantic MediaWiki, Wikibase, or Cargo extensions to access knowledge graphs and databases
  • Upload and manage files on wikis, automating media organization and documentation
  • Analyze wiki history and recent changes to monitor edits, track contributors, or audit content modifications

MediaWiki MCP Server MCP server FAQ

What is the MediaWiki MCP Server?

It's an MCP server that connects AI assistants to any MediaWiki wiki (Wikipedia, private wikis, etc.), providing tools to read pages, search, create/edit content, upload files, and query structured data from extensions like Semantic MediaWiki and Wikibase.

Is it free?

Yes, the MediaWiki MCP Server is MIT licensed and open-source.

How do I install it in Cursor or VS Code?

Use the install badges in the README: click 'Install in Cursor' or 'Install in VS Code' to add it via the MCP installer. Alternatively, run `npx -y @professional-wiki/mediawiki-mcp-server@latest` as the command.

How do I install it in Claude Desktop?

Download the MediaWiki-MCP-Server.mcpb file from the releases page and double-click it. You'll be prompted to provide a configuration file path to point it at your wiki.

Do I need authentication to use it?

No for reading public wikis like Wikipedia (the default). For writing pages or accessing private wikis, you'll need to configure authentication via OAuth2 (browser-based, recommended), bot password, or manual access token in config.json.

Can I use it with multiple wikis?

Yes, configure multiple wikis in config.json and specify which wiki to target per tool call, or set a default wiki. The `list-wikis` tool shows all configured wikis.

README (reference)

Source of truth, from the repository.

MediaWiki MCP Server

NPM Version MIT licensed

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

Features

Tools

Every tool that operates on a wiki accepts an optional wiki argument naming the wiki to act on (the wiki-management and OAuth tools do not) — pass a wiki key (e.g. en.wikipedia.org) or the full mcp://wikis/{wikiKey} URI. Omit it to use the configured default wiki (see Configuration). Each tool response reports the wiki the call ran against.

Page reads

NameDescription
compare-pagesDiff two versions of a wiki page by revision, title, or supplied wikitext.
get-category-membersList members of a category (up to 500 per call, paginated via continueFrom).
get-fileFetch a file page.
get-file-dataFetch a file's image bytes inline (base64) for visual analysis — for clients that can't reach the wiki host. Returns a scaled rendition (set width); non-renderable types (audio, video, binaries) error. For metadata or a download URL, use get-file.
get-links-hereList pages that reference a wiki page — pages that link to it, embed it as a template, or display it as a file (select via type), including pages that reach it through a redirect. Up to 500 per call, paginated via continueFrom.
get-pageFetch a wiki page.
get-page-historyList recent revisions of a wiki page.
get-pagesFetch multiple wiki pages in one call (up to 50).
get-recent-changesList recent change events across the wiki, filterable by timestamp, namespace, user, tag, type, and hide flags (up to 50 per call, paginated via continue).
get-revisionFetch a specific revision of a page.
get-site-infoGet a wiki's key settings: MediaWiki version, content language, title-case rules, namespaces, installed extensions, license, and (optionally) statistics.
list-wikisList every configured wiki — its key, sitename, server, whether it is read-only or the default, whether it is reachable, which extension-gated tools work on it, and, for an OAuth-configured wiki, its authorization server. Disabled when fewer than two wikis are configured.
parse-wikitextRender wikitext to HTML without saving. Returns parse warnings, wikilinks, templates, and external URLs.
search-pageSearch wiki page titles and contents.
search-page-by-prefixSearch page titles by prefix.
whoamiReport the identity the current session is authenticated as on the targeted wiki — username, whether it is anonymous, and group memberships (optionally user rights).

Page writes

NameDescriptionPermissions
create-page 🔐Create a new wiki page.Create, edit, and move pages
delete-page 🔐Delete a wiki page.Delete pages, revisions, and log entries
move-page 🔐Move (rename) a wiki page.Create, edit, and move pages
undelete-page 🔐Undelete a wiki page.Delete pages, revisions, and log entries
update-file 🔐Upload a new revision of an existing file from local disk.Upload, replace, and move files
update-file-from-url 🔐Upload a new revision of an existing file from a URL.Upload, replace, and move files
update-page 🔐Update an existing wiki page.Edit existing pages
upload-file 🔐Upload a file to the wiki from local disk.Upload new files
upload-file-from-url 🔐Upload a file to the wiki from a URL.Upload, replace, and move files

Wiki management

NameDescription
add-wikiAdd a wiki as an MCP resource from its URL. Disabled when allowWikiManagement is false.
remove-wikiRemove a wiki resource. Disabled when allowWikiManagement is false or fewer than two wikis are configured.

OAuth

NameDescription
oauth-logoutRemove stored OAuth tokens. Stdio only.
oauth-statusList stored OAuth tokens with scopes and expiry (no token values). Stdio only.

Extension packs

Each pack's tools register only on wikis where its extension is installed.

NeoWiki

NameDescription
neowiki-list-schemasList schemas (entity types) and their property counts.
neowiki-get-schemaGet one schema's property definitions, relations, and select options.
neowiki-cypher-queryRun a read-only Cypher query against the knowledge graph.
neowiki-search-subjectsFind subject IDs by label within a schema.
neowiki-get-subjectFetch one subject's structured data by ID.
neowiki-get-page-subjectsList the subjects attached to a wiki page.
neowiki-create-subjectCreate a subject (child or main) on a page. Requires the edit right.
neowiki-update-subjectReplace a subject's label and statements. Requires the edit right.
neowiki-delete-subjectDelete a subject by ID. Requires the edit right.
neowiki-set-main-subjectSet or clear a page's main subject. Requires the edit right.
neowiki-validate-subjectDry-run validate a proposed subject and return violations.

Semantic MediaWiki

NameDescription
smw-list-propertiesList Semantic MediaWiki properties with copy-paste templates for smw-query.
smw-queryRun a Semantic MediaWiki #ask query.

Bucket

NameDescription
bucket-queryRun a Bucket Lua query.

Cargo

NameDescription
cargo-list-tablesList Cargo tables defined on the wiki.
cargo-describe-tableList a Cargo table's fields with their types and list-flags.
cargo-queryRun a Cargo SQL-style query.

Wikibase

NameDescription
wikibase-search-entitiesFind items and properties by label or alias.
wikibase-get-entityRead one entity's terms and statements, with referenced IDs resolved to labels.
wikibase-queryRun a SPARQL query against the wiki's query service. Offered only for a repository whose siteinfo publishes one.
wikibase-edit-entityCreate or change an entity from Wikibase entity JSON. Requires the edit right.
wikibase-add-statementAdd one statement with an item, string, external-id or url value. Requires the edit right.

Resources

mcp://wikis/{wikiKey} — per-wiki resource exposing sitename, server (the wiki's public address), articlepath, scriptpath, and the private and readOnly flags.

  • Those fields are the whole of it: the resource publishes a fixed list, so credentials and server-side settings in your configuration file are never exposed in resource content.
  • After add-wiki or remove-wiki, the server sends notifications/resources/list_changed so clients refresh.
<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

The variables below are relevant to any setup. Variables that only apply when self-hosting the HTTP transport (ports, timeouts, Host/Origin and SSRF guards) or running the hosted OAuth proxy are in docs/deployment.md — environment variables. Config-file substitution and upload-directory variables are in docs/configuration.md.

NameDescriptionDefault
CONFIGPath to your configuration fileconfig.json
MCP_TRANSPORTType of MCP server transport (stdio or http)stdio
MCP_LOG_LEVELMinimum severity for logger output. One of debug, info, notice, warning, error, critical, alert, emergency, or silent.debug
MCP_CONTENT_MAX_BYTESByte cap for the content bodies and result blocks tools return (wikitext, rendered HTML, diffs, statement and row listings). Tune to the target LLM client's tool-response budget.50000
MCP_FILE_DATA_MAX_BYTESHard cap on the base64-encoded size of a get-file-data response. A transport/safety backstop; tune the actual size per call with the tool's width. Over-cap calls error rather than truncate.1000000
MCP_UPLOAD_MAX_BYTESMemory cap on the server-side fetch used by upload-file-from-url / update-file-from-url. Files larger than this are handed to the wiki's own copy-upload instead of being buffered by the server. Guards this server's memory, not the wiki's $wgMaxUploadSize.104857600
MCP_OAUTH_CREDENTIALS_FILEOverride the default credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json (Linux/macOS) or %APPDATA%\mediawiki-mcp\credentials.json (Windows).unset
MCP_OAUTH_NO_BROWSERSet to 1 to skip launching a browser during the OAuth flow; the auth URL is logged to stderr instead. Useful in headless environments.unset

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.

{
  "defaultWiki": "en.wikipedia.org",
  "wikis": {
    "en.wikipedia.org": {
      "sitename": "Wikipedia",
      "server": "https://en.wikipedia.org",
      "articlepath": "/wiki",
      "scriptpath": "/w"
    }
  }
}

Internal vs public address. The server you configure may be an internal hostname (e.g. http://mediawiki in Docker); URLs handed back to the caller are built from the wiki's public address, so internal hostnames don't leak into links. See docs/configuration.md — per-wiki fields.

For the full field reference, env-var substitution, secret sources, change tags, upload directories, and authentication options, see docs/configuration.md.

Authentication

Tools marked 🔐 require authentication. Write tools (including extension-pack writes) are hidden from tools/list when the configured default wiki has readOnly: true — see Deployment.

The Cargo tools (cargo-query, cargo-list-tables, cargo-describe-table) call API actions gated by the runcargoqueries user right. Most wikis grant this to all users by default; wikis that restrict it require the Create, query and delete data through the Cargo extension grant on the bot password or OAuth consumer. The Cargo extension is also detected on wiki.gg-hosted wikis (Helldivers, Terraria, Ark, etc.), where it ships under the rebranded name LIBRARIAN.

Installation

Pick your client below, or use the standard configuration if it is not listed. CONFIG is optional; without it the server targets English Wikipedia. To point it at your own wiki and set up authentication for writes, see docs/configuration.md.

Claude Code

Add this repository as a plugin marketplace, then install the bundled server:

/plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
/plugin install mediawiki-mcp-server@professional-wiki

The plugin takes an optional configuration file, which points the server at your own wiki. Set it from the prompt when enabling the plugin, or at any time with /plugin configure mediawiki-mcp-server@professional-wiki. A command-line install takes the same value via claude plugin install mediawiki-mcp-server@professional-wiki --config configPath=path/to/config.json.

When installed as a plugin, the tools are namespaced mcp__plugin_mediawiki-mcp-server_mediawiki__<tool>; update any tool allowlists or hooks accordingly.

To configure the server directly instead, see the Claude Code MCP docs. The short version:

claude mcp add mediawiki-mcp-server -- npx -y @professional-wiki/mediawiki-mcp-server@latest
# Environment variables go before the `--`:
claude mcp add mediawiki-mcp-server -e CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest

Codex

Add this repository as a plugin marketplace, then install the bundled server:

codex plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
codex plugin add mediawiki-mcp-server@professional-wiki

To point the plugin at your own wiki, set CONFIG in the shell you launch Codex from, for example export CONFIG=path/to/config.json. Codex has no per-plugin configuration; if you would rather not set an environment variable, codex mcp add mediawiki --env CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest registers the server directly and takes precedence over the plugin's copy.

See the Codex plugins documentation for how to list, update, or remove plugins.

Claude Desktop

Download MediaWiki-MCP-Server.mcpb and double-click it to install the extension, which prompts for a configuration file path so you can point it at your own wiki instead of English Wikipedia.

VS Code and Cursor

Install in VS Code Install in VS Code Insiders Install in Cursor

Or add the standard configuration by hand.

Antigravity

Add the standard configuration to Antigravity's MCP config, either globally in ~/.gemini/config/mcp_config.json or per-workspace in .agents/mcp_config.json.

If you previously installed the Gemini CLI extension, Antigravity's setup wizard offers to import your existing Gemini CLI configuration.

OpenCode

OpenCode uses its own configuration shape rather than mcpServers; add this to opencode.json in your project root, or ~/.config/opencode/opencode.json for a global install.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mediawiki-mcp-server": {
      "type": "local",
      "command": ["npx", "-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "environment": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

Standard configuration

Most clients read the same server block. Paste it into the file listed for your client, replacing mcpServers with that client's root key:

ClientConfiguration fileRoot key
Cursor~/.cursor/mcp.json, or .cursor/mcp.json per projectmcpServers
VS Code.vscode/mcp.json per workspace, or the MCP: Open User Configuration commandservers
Devin Desktop (formerly Windsurf)~/.codeium/windsurf/mcp_config.jsonmcpServers
Zed~/.config/zed/settings.jsoncontext_servers
LM Studio~/.lmstudio/mcp.jsonmcpServers
{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": ["-y", "@professional-wiki/mediawiki-mcp-server@latest"],
      "env": {
        "CONFIG": "path/to/config.json"
      }
    }
  }
}

For any other client, npx add-mcp @professional-wiki/mediawiki-mcp-server may work: add-mcp is a community CLI that writes your client's configuration file for you. It sets the launch command only; add CONFIG yourself to point at your own wiki.

Deployment

Running the server as a remote HTTP endpoint for other users has its own configuration requirements — see docs/deployment.md. A pre-built image is published at ghcr.io/professionalwiki/mediawiki-mcp-server. For day-2 operations (logs, /health//ready, metrics, graceful shutdown), see docs/operations.md.

Security

Defaults are safe for single-user use. Before exposing the HTTP transport to others, lock down three things:

  • Terminate TLS at your reverse proxy. Don't expose the MCP port directly on an untrusted network. See docs/deployment.md — security checklist.
  • Pair MCP_BIND with MCP_ALLOWED_HOSTS and MCP_ALLOWED_ORIGINS. The HTTP transport binds to 127.0.0.1 by default. When you open it up with MCP_BIND=0.0.0.0, set MCP_ALLOWED_HOSTS to the hostnames your proxy forwards and MCP_ALLOWED_ORIGINS to the browser origins allowed to call the server — these block DNS-rebinding and cross-origin attacks respectively.
  • Uploads are opt-in. upload-file is disabled until you list allowed directories in uploadDirs or MCP_UPLOAD_DIRS. See docs/configuration.md — upload directories.
  • Internal destinations need MCP_TRUSTED_HOSTS. Outbound fetches are SSRF-guarded: a destination resolving to a private or loopback address (e.g. a Docker-network alias like mediawiki.svc) is refused until you list its host in MCP_TRUSTED_HOSTS. See docs/deployment.md — outbound SSRF guard.

Report a vulnerability via GitHub's security advisory form — full policy in SECURITY.md.

Contributing

Contributions are welcome — pull requests and issues (bugs, feature requests, suggestions) both work.

  • Working on tool code? Start from AGENTS.md for repo layout, commands, and testing patterns.
  • Adding or modifying a tool? Read docs/tool-conventions.md — it covers description voice, parameter docs, annotation hints, and MediaWiki terminology conventions.
  • Running a release? See docs/releasing.md.

License

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

Related MCP servers

Reddit reader for LLMs — full comment trees, 94% fewer tokens, one binary

2
Go
MIT
View repository →

MCP bridge for BindAlias Minecraft mod: game state, screenshots, aliases, and config editing.

0
JavaScript
View repository →

MCP bridge for BindAliasPlus Minecraft mod: game state, screenshots, aliases, and config editing.

0
JavaScript
View repository →

Monitor Bluesky for new brand mentions, keywords and account posts. Alerts only on new results.

Export full Bluesky follower/following lists with profile stats. Audience and lead research.

Scrape Bluesky posts, profiles, followers, threads and keyword search. Clean JSON, pay per result.