MediaWiki MCP Server

io.github.ProfessionalWikiPublished by GitHub account ProfessionalWikiv0.21.0Updated Nov 7, 2026

MCP server enabling AI clients to interact with any MediaWiki wiki through standard tools

VerifiedSTDIODesktop onlyFiles & StorageKnowledge & Memory

Overview

AI-generated overview

Lets an assistant read, search, edit, upload to and manage pages on any MediaWiki wiki, including Wikipedia, through 31 tools.

What you can do
  • Read pages, revisions, history, recent changes, categories, backlinks and site info, and diff two versions
  • Search page titles and full text, or look up titles by prefix
  • Render wikitext without saving to preview an edit
  • Create, update, move, delete, undelete and protect pages, and upload or replace files from disk or a URL
  • Manage configured wikis and OAuth sessions, and check the signed-in identity
  • Run extension queries where installed: NeoWiki, Semantic MediaWiki, Bucket, Cargo and Wikibase
When to use it
Useful when an assistant should work with wiki content: researching and citing articles, drafting and applying edits, syncing page families, or querying structured wiki data through Cargo, Semantic MediaWiki or Wikibase.
Requirements
Runs locally over stdio via npx or the .mcpb desktop bundle; Node.js needed for the npm route. A config.json (path in CONFIG) defines the wikis; without it the server targets English Wikipedia. Writes need authentication: browser OAuth, a manual OAuth2 token or a bot password. Uploads require allowed directories to be configured.
Before you install
Write tools change live wiki content: create, update, move, delete, undelete, protect, and file uploads, acting as the configured identity. Credentials and tokens live in a config file and an OAuth credentials store. Uploads from a URL make the server fetch remote addresses, and upload directories must be explicitly allowed. On a public wiki, edits are visible and logged.

Installation

In SourceWeft

  1. Open MediaWiki MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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. Each successful response carries its payload as prose in content and as JSON in structuredContent; see response channels.

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-random-pagesList a random sample of wiki pages from one namespace (main by default, redirects excluded by default, up to 500 per call).
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 (full-text). Searches the wiki's content namespaces unless given other namespace IDs.
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
protect-page 🔐Protect or unprotect a wiki page.Protect and unprotect 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: overwrite it, add to it, or rewrite one passage of it.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 name, in one schema or all.
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 (main or other) 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.
neowiki-mint-subject-idsMint unused subject IDs for dependent subjects written with their host.

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.
Example read result
json
{  "contents": [    {      "uri": "mcp://wikis/en.wikipedia.org",      "mimeType": "application/json",      "text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"    }  ]}

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), applied once per response. Tune to the target LLM client's tool-response budget.75000
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_USER_AGENTReplaces the User-Agent header of every outbound request, so wiki operators can reach you. Give a name and an email or URL, e.g. ExampleBot/1.0 ([email protected]).mediawiki-mcp-server/<version> (https://github.com/ProfessionalWiki/MediaWiki-MCP-Server)
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.

json
{  "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, once the internal host is listed in MCP_TRUSTED_HOSTS. See docs/configuration.md — per-wiki fields.

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

Authentication

Tools marked 🔐 require authentication. Write tools (including extension-pack writes) are refused on a wiki that has readOnly: true, and hidden from tools/list when every configured wiki has it — see Deployment.

cargo-query needs the Create, query and delete data through the Cargo extension grant on a bot password or OAuth consumer, even on a wiki that lets every user run Cargo queries. The Cargo extension is also detected on wiki.gg wikis, which run LIBRARIAN, wiki.gg's fork of Cargo.

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:

bash
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:

bash
codex plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Servercodex 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.

json
{  "$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
json
{  "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.

Source: README.md at commit ab9d4c9

Tools

31

get-page

Get page

Returns a single wiki page (wikitext source, rendered HTML, or metadata only). If the title does not exist, an error is returned. Use metadata=true to retrieve the revision ID (for edit-conflict detection), page size, and section outline. Set content="none" to fetch only metadata. Large content is truncated at 75000 bytes by default, with a marker reporting how much of it was returned and which sections a narrower read can target; a follow-up call with section=N fetches a specific section. For more than one page at a time, use get-pages. For a specific historical revision, use get-revision.

Parameterswikititlerequiredcontentsectionmetadata

get-pages

Get pages

Returns multiple wiki pages in one call (wikitext source or metadata only). Suited to reading a cluster of related pages, diffing a page family, or syncing pages to local storage. Accepts up to 50 titles; missing pages are reported inline (not as errors). One byte budget covers the whole response, 75000 bytes by default: pages come back whole in the order asked for until it is spent, and the pages past that point are named rather than returned, so a follow-up call for those names fetches the rest. Only a first page larger than the budget on its own is truncated, with a marker reporting how much of it was returned and which sections a narrower read can target. For a single page or HTML output, use get-page. requestedTitle is included only when it differs from the resolved title.

ParameterswikititlesrequiredcontentmetadatafollowRedirects

get-page-history

Get page history

Returns revision metadata (revision ID, timestamp, user, comment, size, minor flag) for a wiki page, in segments of 20 revisions, newest first. Paginate with olderThan or newerThan (mutually exclusive). If the title does not exist, an error is returned. Boolean flags appear only when true.

ParameterswikititlerequiredfilternewerThanolderThan

get-recent-changes

Get recent changes

Returns recent change events, newest first, in segments of 50. Defaults to edits and page creations; set types to include log actions, categorizations, or external changes. Each row includes title, timestamp, user, revision IDs, size change, flags (minor/bot/new/anon), tags, and change type. Filter by timestamp window, namespaces, user, change tag, or hide flags (hideBots/hideMinor/hideAnon/hideRedirects/hidePatrolled). Pass showPatrolStatus to include per-row patrol state (requires patrol rights). Paginate with the continue token from the truncation marker. For a single page's revision history, use get-page-history. Boolean flags appear only when true; rows report the size delta, not raw old/new lengths.

ParameterstaguserwikisincetypesuntilcontinuehideAnonhideBotshideMinornamespaceexcludeUser+3 more

search-page

Search page

Searches wiki page titles and page content (full-text) for the provided terms. Returns matching pages with a snippet, size, timestamp, and the namespace the match came from. Covers the namespaces the wiki counts as content unless namespaces names the namespace IDs to search; get-site-info lists a wiki's namespaces and flags which of them hold content. Accepts up to 100 matches per call (default 10); additional matches beyond the cap are flagged in the response — narrow the query to surface more. For title-prefix lookup (e.g. autocomplete), use search-page-by-prefix.

Parameterswikilimitqueryrequirednamespaces

search-page-by-prefix

Search page by prefix

Returns wiki page titles beginning with a given prefix (suited to autocomplete and title lookup). Only titles are returned — no snippets, sizes, or IDs. Accepts up to 500 titles per call (default 10); additional matches beyond the cap are flagged in the response. For full-text content search, use search-page.

Parameterswikilimitprefixrequirednamespace

parse-wikitext

Preview wikitext

Renders wikitext through the live wiki without saving. Returns HTML, parse warnings, categories, wikilinks, templates, external URLs, and display title. Suited to dry-running a planned edit before create-page or update-page, or previewing standalone wikitext (template combinations, sanitizer checks) with no target page. HTML output is truncated at 75000 bytes by default, with a marker reporting how much of it was returned; a smaller wikitext fragment in a follow-up call returns the rest.

ParameterswikititlewikitextrequiredapplyPreSaveTransform

compare-pages

Compare pages

Returns the changes between two versions of a wiki page as a compact text diff. Each side accepts a revision ID, page title (latest revision), or supplied wikitext; text-vs-text is rejected. Only the changes are returned over the wire. For the full text of both sides, fetch with get-page instead. If a title or revision ID does not exist, an error is returned. Set includeDiff=false for a cheap change-detection response that skips diff rendering and returns just the change flag, revision metadata, and size delta. Diff output is truncated at 75000 bytes by default, with a marker reporting how much of it was returned; a narrower revision range or includeDiff=false avoids truncation.

ParameterswikitoTexttoTitlefromTextfromTitletoRevisionincludeDifffromRevision

get-file

Get file

Returns metadata for a file (uploader, timestamp, size, MIME type) along with download URLs for the thumbnail, preview, and original. The File: prefix is added automatically if omitted.

Parameterswikititlerequired

get-file-data

Get file data

Fetches a wiki file server-side and returns the image inline as a content block, for clients that cannot reach the wiki host (sandboxed or network-restricted) and need the image sent to the model for visual analysis. Returns a scaled rendition sized by width. Files MediaWiki can rasterize (images, SVG, PDF, DjVu) come back as an image; other types (audio, video, arbitrary binaries) error — for those, and for metadata or a download URL, use get-file.

Parameterswikititlerequiredwidthformat

get-revision

Get revision

Returns a specific historical revision of a wiki page by revision ID (wikitext source, rendered HTML, or metadata only). If the revision ID does not exist, an error is returned. Content is truncated at 75000 bytes by default; a past revision has no narrower read, so for a large one use compare-pages to see what changed. For the latest revision plus metadata, use get-page with metadata=true.

ParameterswikicontentmetadatarevisionIdrequired

get-site-info

Get site info

Returns key facts about the targeted wiki from its MediaWiki siteinfo: general settings (sitename, MediaWiki version, content language, page-title case-sensitivity, live read-only state, and maxarticlesize in bytes), the namespace map with localized names and aliases, the list of installed extension names, and the content license. Set includeStatistics to also return page, article, edit, image, user, active-user, and admin counts.

ParameterswikiincludeStatistics

get-category-members

Get category members

Lists members of a category, returning each member's page ID, namespace ID, and wiki page title. Optionally filter by member type (page, file, subcat) or by namespace ID — filters apply server-side before the cap. Returns up to 500 members per call; paginate with continueFrom (opaque cursor echoed from the previous response). A member's type is omitted when it is an ordinary page (present only for files and subcategories).

ParameterswikilimittypescategoryrequirednamespacescontinueFrom

get-random-pages

Get random pages

Returns randomly chosen wiki pages from one namespace, as each page's title, page ID, and namespace ID; the API counterpart of Special:Random. One call's pages are a fair random sample; separate calls can overlap because they read the same ordering from different starting points. There is no continuation; each call picks a new starting point. For page content, pass the titles to get-pages.

Parameterswikilimitfilternamespace

list-wikis

List wikis

Lists every configured wiki: its key (pass as the `wiki` argument to other tools), sitename, server URL, whether it is read-only or the default, whether it is currently reachable, and which extension-gated tools work on it. Use to discover the configured wikis, their keys, and which extension tools each supports.

Takes no parameters.

whoami

Who am I

Returns the identity the current session is authenticated as on the targeted wiki: the username, whether the session is anonymous (no user is logged in), and the user groups it belongs to. Set includeRights to also return the full list of user rights. Use to confirm who edits and uploads will be attributed to before writing — for example, to resolve your own username before building a title under your own user namespace (User:<username>/…). Reports anonymous access rather than failing when the session has no credentials. For which wikis have stored OAuth tokens and their scopes, use oauth-status instead.

ParameterswikiincludeRights

create-page

Create page

Creates a new wiki page with the provided content and returns the new page's title, page ID, and first revision ID. Fails if a page with the given title already exists; for existing pages, use update-page. The optional contentModel parameter selects a non-default content format (e.g. javascript, css); when omitted, MediaWiki picks the default for the title's namespace. For building up a large page across multiple calls, pair create-page with chained update-page(operation='append') calls, each adding a chunk.

ParametersbotwikititlerequiredsourcerequiredcommentcontentModel

update-page

Update page

Writes to an existing wiki page and returns the new revision ID. Fails if the page does not exist; for new pages, use create-page. operation says what the write does and section says where: omit section to act on the whole page, or set it to confine the write to one section. For changing part of a page, use operation='find-replace', which carries only the text being rewritten, so nothing outside find can be lost and the rest of the page never has to travel to or from the caller; a find that matches nothing, or more than one place, is refused without writing, which also makes it safe to resend a call whose result never arrived. For replacing a target outright, use operation='replace', whose source must carry every byte meant to survive; it is refused when source would shorten a target too large for one read to return whole, since the rest was never seen. With section set above 0 it also takes out that section's heading, so source begins with a heading unless it is empty, and takes out every subsection nested under that section, is refused when source would drop them, and needs latestId to say which revision the section number was read from. operation='append' and 'prepend' add a delta: a new section at the end of the page is an append whose source begins with the heading, and with section set a prepend inserts one immediately above that section. Pass latestId (reported as latestRevisionId by any get-page read that returns wikitext) for edit-conflict detection: the write is rejected rather than silently clobbering a concurrent change. Each call is a separate revision, and resending an append or prepend whose result never arrived adds the delta a second time.

ParametersbotfindmodewikititlerequiredsourcecommentsectionlatestIdoperationreplaceWithremoveSubsections+1 more

move-page

Move page

Renames a wiki page, moving it — and by default its talk page — to a new title, and returns the old and new titles plus whether a redirect was left behind. By default leaves a redirect at the old title; set leaveRedirect=false to suppress it (requires the suppressredirect right, otherwise the redirect is left regardless). Fails if the source page does not exist, if the target title already exists (unless it is a redirect and ignoreWarnings is set), or if the authenticated user lacks the move permission. Moving a File page additionally requires the file-move permission.

ParameterswikicommenttoTitlerequiredmoveTalkfromTitlerequiredmoveSubpagesleaveRedirectignoreWarnings

delete-page

Delete page

Removes a wiki page from public view and returns the deleted title. This is a soft delete: the page and its revision history remain in the database and can be restored with undelete-page until an administrator purges them. Fails if the page does not exist or the authenticated user lacks the delete permission.

Parameterswikititlerequiredcomment

undelete-page

Undelete page

Restores a previously deleted wiki page, including its full revision history, and returns the restored title. The page must currently be in a deleted state (from delete-page); fails if no deleted revisions exist for the title or the authenticated user lacks the undelete permission.

Parameterswikititlerequiredcomment

protect-page

Protect page

Changes the protection of a wiki page and returns its title, its own protections afterwards with their expiries, and whether cascading is on. Each action named in protections is set to its level until expiry. Actions left out keep their current protection, so lifting all protection means naming every action the page takes with "all". Protection the page inherits from a cascade-protected page that transcludes it is neither changed nor listed. Fails if the authenticated user lacks the protect permission, if the wiki does not accept an action or level for this page, or if the expiry is invalid or in the past.

Parameterswikititlerequiredexpirycascadecommentprotectionsrequired

upload-file

Upload file

Uploads a file from the local disk into the wiki's File namespace and returns the resulting file title and URL. The upload appears in the wiki's upload log. The operator restricts which directories are readable; filepath must be an absolute path inside a configured upload directory, or the call fails before contacting the wiki. Fails if a file with the target title already exists (the wiki does not silently overwrite existing files). To upload directly from a remote web address instead of a local path, use upload-file-from-url. To replace an existing file with a new revision, use update-file.

Parameterstextrequiredwikititlerequiredcommentfilepathrequired

upload-file-from-url

Upload file from URL

Fetches a file from a remote web URL and uploads it into the wiki's File namespace, returning the resulting file title and URL. The upload appears in the wiki's upload log. Works whether or not the wiki has upload-by-URL enabled: the server retrieves the file and uploads it directly, falling back to wiki-side fetching only when it cannot reach the URL itself. Fails if a file with the target title already exists. To replace an existing file with a new revision, use update-file-from-url.

Parametersurlrequiredtextrequiredwikititlerequiredcomment

update-file

Update file

Uploads a new revision of an existing file from the local disk, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. The operator restricts which directories are readable; filepath must be an absolute path inside a configured upload directory, or the call fails before contacting the wiki. Fails if no file exists at the target title; for the initial upload, use upload-file. To upload a new revision from a remote web address instead of a local path, use update-file-from-url.

Parameterswikititlerequiredcommentfilepathrequired

update-file-from-url

Update file from URL

Fetches a file from a remote web URL and uploads it as a new revision of an existing file, preserving prior revisions in the file history, and returns the file title and URL. The upload appears in the wiki's upload log. Replaces the file content (bytes) only; for editing the wikitext on a file's description page, use update-page. Works whether or not the wiki has upload-by-URL enabled: the server retrieves the file and uploads it directly, falling back to wiki-side fetching only when it cannot reach the URL itself. Fails if no file exists at the target title; for the initial upload, use upload-file-from-url.

Parametersurlrequiredwikititlerequiredcomment

oauth-status

OAuth status

Lists wikis with stored OAuth tokens, their scopes, and expiry. Stdio only. Never returns token values.

Takes no parameters.

oauth-logout

OAuth logout

Removes stored OAuth tokens. With no argument, removes all stored tokens; with `wiki`, removes only that wiki. Stdio only.

Parameterswiki

add-wiki

Add wiki

Registers a new wiki as an MCP resource by fetching its sitename and API configuration from any URL on the wiki (e.g. a page URL). The wiki becomes available at mcp://wikis/<servername> and can be targeted by passing its key as the `wiki` argument to any wiki tool. Fails if the URL is not a MediaWiki wiki or if a wiki with the same key is already registered.

ParameterswikiUrlrequired

remove-wiki

Remove wiki

Removes a wiki from the MCP resources. Clears any cached credentials and license metadata for the wiki. Fails if the specified wiki is the configured default wiki.

Parametersurirequired

Version history

5
  1. v0.21.0LatestNov 5, 2026
  2. v0.20.1Oct 29, 2026
  3. v0.20.0Oct 22, 2026
  4. v0.19.0Sep 26, 2026
  5. v0.18.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts