mediawiki-mcp-server
The MediaWiki MCP server lets you search, read, edit, and analyze MediaWiki wikis via AI assistants or a CLI.
Search & Read
Full-text search, retrieve page content (wikitext or HTML), get sections/summaries, batch-fetch pages, search within a page, get metadata, parse wikitext to HTML, and fuzzy title resolution.
Link Analysis
Get/verify external links, find broken internal links, and get backlinks ("What links here").
Content Discovery & Quality
Find related pages, orphaned pages, similar/duplicate pages, stale pages, compare topic coverage across pages, check terminology against a glossary, find missing translations, and run a comprehensive wiki health audit.
History & Changes
View revision history, compare revisions with diffs, get recent wiki-wide changes (aggregated by user/page/type), and view user contributions.
Listing & Discovery
List pages, categories, category members, users by group, and get overall wiki statistics.
Write & Edit (require authentication)
Create/edit pages, find-and-replace (single page or bulk across pages/categories), apply formatting (bold, italic, strikethrough, code, underline), move/rename pages, manage categories, and upload files from URLs.
File Search
Search text within wiki-hosted PDFs, TXT, MD, CSV, JSON, XML, and HTML files.
Markdown Conversion
Convert Markdown to MediaWiki markup with optional themes (Tieto, neutral, dark), changelog reordering, and emoji prettification.
Safety & Output
All write operations support preview mode to verify changes before applying. Every operation supports JSON output for machine-readable or AI agent consumption.
Enables AI assistants to search, read, and edit content on Fandom-hosted wikis using natural language through MediaWiki API integration.
Provides specialized configuration for connecting to and interacting with Tieto's Public 360° Wiki for content retrieval and search.
Allows users to search Wikipedia, summarize pages, view revision histories, and check for broken links via the Wikipedia API.
MediaWiki MCP Server
Connect your AI assistant to any MediaWiki wiki, or script it directly from the terminal. Search, read, and edit wiki content using natural language or the wiki CLI.
Three ways to use it:
MCP server — Claude Desktop, Claude Code, Cursor, ChatGPT, n8n, VS Code, Google ADK, or any MCP-compatible tool. See SETUP.md.
wikiCLI — same API client, same auth, no AI needed. For shell pipelines, CI checks, cron jobs. See CLI.md.Claude Code plugin —
/plugin marketplace add olgasafonova/mediawiki-mcp-serveradds wiki skills directly to Claude Code. See .claude-plugin/README.md.
Documentation
Document | What it covers |
Get running in 2 minutes | |
Per-tool configuration (Claude Desktop, Cursor, ChatGPT, n8n, VS Code, Google ADK) | |
| |
Full tool reference (43 tools by category) | |
HTTP transport, security, endpoints, env vars | |
Connect to Tieto's Public 360° Wiki (beginner-friendly) | |
Detailed workflows by persona | |
System design | |
How to contribute | |
Security policies | |
Version history |
Related MCP server: mcp-mediawiki-crunchtools
What Can You Do?
The same operation works from a prompt (via MCP) or directly in your shell (via the wiki CLI):
Goal | Prompt your AI | From your terminal |
Search the wiki | "What does our wiki say about onboarding?" |
|
Read a page | "Show me the Getting Started page" |
|
Find broken links | "Are there broken links on the Docs page?" |
|
Find stale content | "Which pages haven't been updated in 90 days?" |
|
Cross-link suggestions | "What pages are similar to the API Reference?" |
|
Audit wiki health | "Run a health check on the wiki" |
|
Publish markdown | "Publish this README to the wiki" |
|
Strike a name | "Strike out John Smith on the Team page" |
|
For the full tool list, see TOOLS.md. The CLI returns typed exit codes for CI-friendly branching — see CLI.md.
30-Second Start
Get the binary. Download from Releases or
go build -o mediawiki-mcp-server .(requires Go 1.24+).Find your wiki API URL — usually
https://your-wiki.com/api.php. Wikipedia ishttps://en.wikipedia.org/w/api.php. VisitSpecial:Versionto confirm.Wire it up to your AI tool — see SETUP.md for the configuration that matches your client.
Reading public wikis works without login. Private/corporate wikis and editing require a bot password — SETUP.md#editing-wiki-pages.
Example Prompts
📖 More examples: see WIKI_USE_CASES.md for detailed workflows by persona (content editors, documentation managers, developers).
Search and read:
"What does our wiki say about deployment?"
"Give me a quick overview of the Configuration page"
"Get the content of Main Page, FAQ, and Setup all at once"
Track changes:
"What pages were updated this week?"
"Show me the diff between the last two versions"
"Who are the most active editors this month?"
Check quality:
"Are there broken links on this page?"
"Find orphaned pages with no links to them"
"Find pages similar to the Installation Guide"
"Find pages not updated in the last 90 days"
Page management (requires auth):
"Rename 'Old Guide' to 'Updated Guide'"
"Strike out John Smith on the Team page"
"Replace 'version 2.0' with 'version 3.0' on Release Notes"
File uploads and search (requires auth):
"Upload this image from URL to the wiki"
"Upload this local file to the wiki" (the agent base64-encodes the bytes; no public URL needed)
"Search for 'budget' in File:Annual-Report.pdf"
Convert Markdown:
"Convert this README to wiki format"
"Convert with Tieto branding and CSS" (use theme="tieto", add_css=true)
PDF Search Setup
PDF search requires the pdftotext tool from poppler-utils. Text file search (TXT, MD, CSV, etc.) works without any dependencies.
Platform | Install Command |
macOS |
|
Ubuntu/Debian |
|
RHEL/CentOS |
|
Windows |
|
Windows alternative: Download binaries from poppler-windows releases and add to PATH.
Verify installation:
pdftotext -vCompatibility
Platform | Transport | Status |
Claude Desktop (Mac/Windows) | stdio | ✅ Supported |
Claude Code CLI | stdio | ✅ Supported |
Cursor | stdio | ✅ Supported |
VS Code | stdio | ✅ Supported |
ChatGPT | HTTP | ✅ Supported |
n8n | HTTP | ✅ Supported |
Google ADK | stdio / HTTP | ✅ Supported |
Works with any wiki: Wikipedia, Fandom, corporate wikis, or any MediaWiki installation.
Troubleshooting
Common issues and fixes live in SETUP.md#troubleshooting. For deeper diagnostics, the HTTP server exposes /health, /ready, and /status endpoints — see DEPLOYMENT.md.
Development
Build, test, and contribute: see CONTRIBUTING.md. For the system design, package layout, and data flow, see ARCHITECTURE.md.
Run the full check before pushing:
go test -race -failfast ./...
golangci-lint run ./...Integration tests run against a real MediaWiki instance via docker-compose.test.yml. See CONTRIBUTING.md for the workflow.
Like This Project?
If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.
More MCP Servers
Check out my other MCP servers:
Server | Description | Stars |
Access GLEIF LEI database. Look up company identities, verify legal entities. | ||
Control Miro whiteboards with AI. Boards, diagrams, mindmaps, and more. | ||
Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden. | ||
Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. | ||
Nordic grocery deal hunting. Find offers, plan meals, track spending. | ||
Go library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers. |
License
MIT License
Credits
Built with Go MCP SDK
Powered by MediaWiki API
Available Tools
43 toolsmediawiki_apply_formattingADestructive
BEST for adding formatting markup to specific text.
USE WHEN: User says "strike out X", "cross out the name", "make X bold", "italicize Y", "mark as code".
NOT FOR: Replacing text (use mediawiki_find_replace).
PARAMETERS:
title: Page name (required)
text: Text to format (required)
format: Formatting type (required):
"strikethrough":
text(for removed/former items)"bold": '''text'''
"italic": ''text''
"underline": text
"code": text
all: Format all occurrences (default false)
preview: Preview changes without saving. Omit to preview (default true); set preview=false to apply.
summary: Edit summary
RETURNS: Preview of formatting applied. Set preview=false to apply. Includes revision ID, diff URL, and undo instructions.
NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.
Inputs: text (required), title (required), format (required), rationale (required), +3 more. Returns: undo, title, changes, message, +7 more
mediawiki_auditARead-only
Run comprehensive wiki health audit with multiple checks.
USE WHEN: User asks "run health check", "audit the wiki", "check wiki quality".
PARAMETERS:
checks: Array of checks to run (default all):
"links": Broken internal links
"terminology": Glossary violations
"orphans": Unlinked pages
"activity": Recent changes
"external": Broken external links (slow)
limit: Max items per check (default 20)
RETURNS: Health score (0-100), detailed results per check, and recommendations.
Inputs: limit, pages, checks, category, +1 more. Returns: errors, summary, wiki_name, audited_at, +7 more
mediawiki_batch_get_pagesARead-only
Retrieve content from MULTIPLE pages in a single API call.
USE WHEN: You need content from 2+ pages. Much faster than individual mediawiki_get_page calls.
NOT FOR: Single page (use mediawiki_get_page). Not for metadata only (use mediawiki_batch_get_pages_info).
PARAMETERS:
titles: Array of page titles (required, max 50)
format: "wikitext" (default) or "html"
RETURNS: Page content for each title, with exists/missing status. Missing pages are reported, not errors.
Inputs: titles (required), format, rationale. Returns: pages, found_count, total_count, missing_count
mediawiki_batch_get_pages_infoARead-only
Get metadata for MULTIPLE pages in a single API call.
USE WHEN: You need info (last edit, size, categories) for 2+ pages without their content.
NOT FOR: Single page (use mediawiki_get_page_info). Not for content (use mediawiki_batch_get_pages).
PARAMETERS:
titles: Array of page titles (required, max 50)
RETURNS: Metadata (size, last edit, categories, protection) per page. Missing pages reported with exists=false.
Inputs: titles (required), rationale. Returns: pages, total_count, exists_count, missing_count
mediawiki_bulk_replaceADestructive
Update text across MULTIPLE pages at once.
USE WHEN: User says "update everywhere", "fix on all pages", "change brand name across docs", "update in all documentation".
NOT FOR: Single page changes (use mediawiki_find_replace - more efficient).
PARAMETERS:
find: Text to find (required)
replace: Replacement text (required)
pages: Array of specific pages (optional)
category: Update all pages in category (optional)
use_regex: Treat find as regex (default false)
preview: Preview changes without saving. Omit to preview (default true) — ALWAYS preview a multi-page run first; set preview=false only once the diff looks right.
limit: Max pages to update (default 50)
summary: Edit summary
WARNING: Always use preview=true first to verify matches before applying.
RETURNS: Changes per page. Set preview=false to apply all changes. Includes revision ID, diff URL, and undo instructions.
NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.
Inputs: find (required), replace (required), rationale (required), limit, +5 more. Returns: message, preview, results, total_changes, +2 more
mediawiki_check_linksARead-only
Verify external URL accessibility via HTTP requests.
USE WHEN: User asks "check if these links work", "find broken URLs", "verify external links".
NOT FOR: Finding broken internal wiki links (use mediawiki_find_broken_internal_links).
PARAMETERS:
urls: Array of URLs to check (required, max 20)
timeout: Request timeout in seconds (default 10)
RETURNS: URL status codes, response times, and broken link identification.
Inputs: urls (required), timeout, rationale. Returns: results, total_links, valid_count, broken_count
mediawiki_check_terminologyARead-only
Scan pages for terminology violations against a glossary.
USE WHEN: User asks "check brand terminology", "find incorrect terms", "verify consistent naming".
PARAMETERS:
pages: Array of pages to check (optional)
category: Check all pages in category (optional)
glossary_page: Wiki page with term mappings (default "Brand Terminology Glossary")
exclude_code_blocks: Skip code blocks (default true)
limit: Max pages (default 10)
RETURNS: Violations with page, line, wrong term, and correct term.
Inputs: limit, pages, category, rationale, +2 more. Returns: pages, issues_found, terms_loaded, glossary_page, +1 more
mediawiki_check_translationsARead-only
Find pages missing translations in specified languages.
USE WHEN: User asks "which pages need German translation", "find missing translations", "check language coverage".
PARAMETERS:
languages: Array of language codes (required, e.g., ["de", "fr", "es"])
base_pages: Specific pages to check (optional)
category: Check pages in category (optional)
pattern: Naming pattern - "subpages" (Page/de), "suffixes" (Page (de)), or "prefixes" (de:Page)
limit: Max pages (default 50)
RETURNS: Missing translations grouped by language.
Inputs: languages (required), limit, pattern, category, +2 more. Returns: pages, pattern, missing_count, pages_checked, +1 more
mediawiki_compare_revisionsARead-only
Compare two revisions and show the diff.
USE WHEN: User asks "what changed between versions", "show the diff", "compare old and new".
NOT FOR: Just listing revisions (use mediawiki_get_revisions). Not for comparing a topic across pages (use mediawiki_compare_topic).
PARAMETERS:
from_rev: Source revision ID, OR
from_title: Source page title (uses latest revision)
to_rev: Target revision ID, OR
to_title: Target page title
RETURNS: HTML-formatted diff showing additions (green) and deletions (red).
Inputs: to_rev, from_rev, to_title, rationale, +1 more. Returns: diff, to_user, to_revid, to_title, +5 more
mediawiki_compare_topicARead-only
Compare how a topic is described across multiple pages.
USE WHEN: User asks "how is X described on different pages", "find inconsistencies about timeout", "compare definitions of Y".
NOT FOR: Comparing page revisions (use mediawiki_compare_revisions).
PARAMETERS:
topic: Topic or term to compare (required)
category: Limit to pages in category (optional)
limit: Max pages to check (default 20)
RETURNS: Page mentions with context, detected value mismatches, and inconsistencies.
Inputs: topic (required), limit, category, rationale. Returns: topic, summary, pages_found, page_mentions, +1 more
mediawiki_convert_markdownARead-only
Convert Markdown text to MediaWiki markup. Use this tool when you need to transform Markdown-formatted content into wiki-compatible format before creating or editing wiki pages.
WHEN TO USE:
User provides Markdown content to add to the wiki
Converting documentation from GitHub/GitLab to wiki format
Transforming README files for wiki publishing
Preparing release notes written in Markdown
THEMES:
"tieto": Tieto brand colors (Hero Blue #021e57 headings, yellow code highlights)
"neutral": Clean output without custom colors (default)
"dark": Dark mode optimized colors
OPTIONS:
add_css: Include CSS styling block for branded appearance
reverse_changelog: Reorder changelog entries newest-first
prettify_checks: Replace plain checkmarks with emoji
EXAMPLE: Input: "# Hello\nbold and italic\n- item 1\n- item 2" Output: "= Hello =\n'''bold''' and ''italic''\n* item 1\n* item 2"
Inputs: markdown (required), theme, add_css, prettify_checks, +1 more. Returns: wikitext, theme_used, input_length, output_length, +1 more
mediawiki_edit_pageADestructive
Create new pages or rewrite entire page content.
USE WHEN: User says "create a new page", "rewrite the entire About page", "replace all content".
NOT FOR: Simple text changes (use mediawiki_find_replace). Not for formatting (use mediawiki_apply_formatting).
PARAMETERS:
title: Page name (required)
content: New page content (required)
section: Edit specific section only (optional)
summary: Edit summary (required for good practice)
minor: Mark as minor edit (default false)
bot: Mark as bot edit (default false)
base_timestamp: Revision timestamp from mediawiki_get_page (optional, recommended). When set, the edit fails with 'editconflict' if someone else changed the page since that revision, instead of silently overwriting their edit. On conflict: re-read with mediawiki_get_page and reapply.
preview: Preview changes without saving. Omit to preview (default true, for safety): the current revision is fetched, a line diff of what would change is returned, and nothing is written and no token is consumed. Set preview=false to apply the edit.
RETURNS: Preview (default): per-line diff of the planned content against the current revision ('changes' entries: before=removed line, after=added line, a modified line appears as its removal followed by its addition), plus new_page=true when the edit would create the page. With preview=false: revision ID, diff URL, and undo instructions.
NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.
WARNING: This overwrites entire page content unless section is specified. Preview first (omit preview) before applying.
Inputs: title (required), content (required), rationale (required), bot, +7 more. Returns: title, changes, message, page_id, +8 more
mediawiki_find_broken_internal_linksARead-only
Find internal wiki [[links]] pointing to non-existent pages.
USE WHEN: User asks "find broken wiki links", "check for dead internal links", "find [[links]] to missing pages".
NOT FOR: Checking external HTTP URLs (use mediawiki_check_links).
PARAMETERS:
pages: Array of pages to scan (optional)
category: Scan all pages in category (optional)
limit: Max pages to scan (default 20)
RETURNS: Broken links with source page, line number, and context.
Inputs: limit, pages, category, rationale. Returns: pages, broken_count, pages_checked
mediawiki_find_orphaned_pagesARead-only
Find pages with no incoming links from other pages.
USE WHEN: User asks "find orphan pages", "which pages have no links", "find undiscoverable content".
PARAMETERS:
namespace: Filter by namespace (default 0 = main)
prefix: Filter by title prefix (optional)
limit: Max orphans to return (default 50)
RETURNS: List of orphaned page titles.
Inputs: limit, prefix, namespace, rationale. Returns: total_checked, orphaned_count, orphaned_pages
mediawiki_find_replaceADestructive
PREFERRED for simple text changes on a single page.
USE WHEN: User says "replace X with Y", "fix the typo", "change the version number", "update the name".
NOT FOR: Creating/rewriting pages (use mediawiki_edit_page). Not for multi-page updates (use mediawiki_bulk_replace). Not for formatting (use mediawiki_apply_formatting).
PARAMETERS:
title: Page name (required)
find: Text to find (required)
replace: Replacement text (required)
all: Replace all occurrences (default false = first only)
use_regex: Treat find as regex (default false)
preview: Preview changes without saving. Omit to preview (default true, for safety); set preview=false to apply.
summary: Edit summary
RETURNS: Match count and preview of changes. Set preview=false to apply. Includes revision ID, diff URL, and undo instructions.
NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.
Inputs: find (required), title (required), replace (required), rationale (required), +5 more. Returns: undo, title, changes, message, +6 more
mediawiki_find_similar_pagesARead-only
Find pages with similar content (potential duplicates or overlaps).
USE WHEN: User asks "find similar pages", "are there duplicates", "what pages overlap with X".
NOT FOR: Finding related pages by links (use mediawiki_get_related).
PARAMETERS:
page: Source page name (required)
category: Limit search to category (optional)
min_score: Minimum similarity threshold 0-1 (default 0.1)
limit: Max similar pages (default 10)
RETURNS: Similar pages with similarity scores and linking recommendations.
Inputs: page (required), limit, category, min_score, +1 more. Returns: message, source_page, similar_pages, total_compared
mediawiki_get_backlinksARead-only
Get pages that link TO a specific page ("What links here").
USE WHEN: User asks "what links to X", "which pages reference the API", "show incoming links".
NOT FOR: Outgoing external links (use mediawiki_get_external_links).
PARAMETERS:
title: Page name (required)
namespace: Filter by namespace (optional)
limit: Max backlinks (default 50)
include_redirects: Include redirect pages (default false)
RETURNS: List of pages that link to the target page.
Inputs: title (required), limit, namespace, rationale, +1 more. Returns: count, title, has_more, backlinks
mediawiki_get_category_membersARead-only
Get all pages that belong to a specific category.
USE WHEN: User asks "show pages in Documentation category", "list all tutorials", "what's in Category:API".
NOT FOR: Listing categories themselves (use mediawiki_list_categories).
PARAMETERS:
category: Category name without "Category:" prefix (required)
type: Filter by type - "page", "subcat", "file", or all (default)
limit: Max members (default 50)
continue_from: Pagination token
RETURNS: Page titles in the category.
Inputs: category (required), type, limit, rationale, +1 more. Returns: members, category, has_more, continue_from
mediawiki_get_external_linksARead-only
Get all external URLs from a wiki page.
USE WHEN: User asks "what external links are on X", "show outgoing URLs", "list http links".
NOT FOR: Incoming wiki links (use mediawiki_get_backlinks). Not for verifying links work (use mediawiki_check_links).
PARAMETERS:
title: Page name (required)
RETURNS: List of external URLs on the page.
Inputs: title (required), rationale. Returns: count, links, title
mediawiki_get_external_links_batchARead-only
Batch retrieve external URLs from multiple pages at once.
USE WHEN: User asks "get links from these 5 pages", "collect URLs from multiple articles".
NOT FOR: Single page (use mediawiki_get_external_links - more efficient).
PARAMETERS:
titles: Array of page names (required, max 10)
RETURNS: External URLs grouped by source page.
Inputs: titles (required), rationale. Returns: pages, total_links
mediawiki_get_imagesARead-only
Get all images and files used on a wiki page.
USE WHEN: User asks "what images are on X", "show files used in the article", "list media on this page".
PARAMETERS:
title: Page name (required)
limit: Max images (default 50)
RETURNS: Image titles, URLs, dimensions, and file sizes.
Inputs: title (required), limit, rationale. Returns: count, title, images
mediawiki_get_pageARead-only
Retrieve full wiki page content.
USE WHEN: User says "show me the X page", "what's on the Main Page", "read the FAQ".
NOT FOR: Getting page structure/TOC (use mediawiki_get_sections). Not for searching content (use mediawiki_search_in_page). Not for metadata only (use mediawiki_get_page_info). If title not found, use mediawiki_resolve_title to handle typos and case sensitivity.
PARAMETERS:
title: Page name (required)
format: "wikitext" (default) or "html"
RETURNS: Page content in requested format. Large pages truncated at 25KB.
Inputs: title (required), format, rationale. Returns: title, format, content, message, +4 more
mediawiki_get_page_infoARead-only
Get page metadata without content.
USE WHEN: User asks "when was X last edited", "who created the FAQ", "is the page protected".
NOT FOR: Getting page content (use mediawiki_get_page). Not for full edit history (use mediawiki_get_revisions).
PARAMETERS:
title: Page name (required)
RETURNS: Last edit timestamp, page size, protection status, creator.
Inputs: title (required), rationale. Returns: title, exists, length, page_id, +10 more
mediawiki_get_page_summaryARead-only
Get lead section + key metadata without loading the full page.
USE WHEN: User asks "what is X about", "quick overview of X", "summarize the X page". Much lighter than mediawiki_get_page for large pages.
NOT FOR: Full page content (use mediawiki_get_page). Not for specific sections (use mediawiki_get_sections with section parameter).
PARAMETERS:
title: Page name (required)
RETURNS: Lead section (intro before first heading), page size, categories, section list, last edit timestamp.
Inputs: title (required), rationale. Returns: title, format, length, message, +9 more
mediawiki_get_recent_changesARead-only
Get recent changes across the entire wiki.
USE WHEN: User asks "what's been changed recently", "show wiki activity", "who's been editing".
NOT FOR: Single page history (use mediawiki_get_revisions). Not for user-specific edits (use mediawiki_get_user_contributions).
PARAMETERS:
limit: Max changes (default 50)
start, end: Time range (ISO 8601)
namespace: Filter by namespace
type: Filter by change type (edit, new, log)
aggregate_by: Group results - "user", "page", or "type"
RETURNS: Recent changes with timestamps, users, and summaries. Aggregation returns counts.
Inputs: end, type, limit, start, +4 more. Returns: changes, has_more, aggregated, continue_from
mediawiki_get_revisionsARead-only
Get revision history for a specific page.
USE WHEN: User asks "who edited the FAQ", "show edit history of X", "when was this page last changed".
NOT FOR: Wiki-wide activity (use mediawiki_get_recent_changes). Not for comparing versions (use mediawiki_compare_revisions).
PARAMETERS:
title: Page name (required)
limit: Max revisions (default 50)
start, end: Time range (ISO 8601)
user: Filter by user
RETURNS: Revision list with timestamps, users, sizes, and edit summaries.
Inputs: title (required), end, user, limit, +2 more. Returns: count, title, page_id, has_more, +1 more
mediawiki_get_sectionsARead-only
Get page section structure (TOC) or specific section content.
USE WHEN: User asks "what sections does X have", "show the table of contents", "get the Installation section".
NOT FOR: Full page content (use mediawiki_get_page).
PARAMETERS:
title: Page name (required)
section: Section index to retrieve content (optional; omit for TOC only)
format: "wikitext" (default) or "html" (for section content)
RETURNS: Section headings with indices, or specific section content.
Inputs: title (required), format, section, rationale. Returns: title, format, message, page_id, +3 more
mediawiki_get_stale_pagesARead-only
Find pages that haven't been edited in a specified number of days.
USE WHEN: User asks "find outdated pages", "which pages need review", "show stale content", "wiki hygiene check".
NOT FOR: Recent activity (use mediawiki_get_recent_changes). Not for orphaned pages (use mediawiki_find_orphaned_pages).
PARAMETERS:
days: Staleness threshold in days (default 90)
category: Limit to pages in this category (optional)
namespace: Namespace to check (default 0 = main)
limit: Max pages to return (default 50, max 200)
RETURNS: Stale pages sorted by last edit (oldest first), with days since edit and last editor.
Inputs: days, limit, category, namespace, +1 more. Returns: message, stale_count, stale_pages, total_scanned, +1 more
mediawiki_get_user_contributionsARead-only
Get all edits made by a specific user.
USE WHEN: User asks "what did John edit", "show user's contributions", "list edits by admin".
NOT FOR: Page-specific history (use mediawiki_get_revisions). Not for wiki-wide activity (use mediawiki_get_recent_changes).
PARAMETERS:
user: Username (required)
limit: Max contributions (default 50)
start, end: Time range (ISO 8601)
namespace: Filter by namespace
RETURNS: List of pages edited with timestamps and summaries.
Inputs: user (required), end, limit, start, +2 more. Returns: user, count, has_more, contributions
mediawiki_get_wiki_infoARead-only
Get information about the wiki itself.
USE WHEN: User asks "what wiki is this", "wiki statistics", "MediaWiki version".
PARAMETERS: None
RETURNS: Wiki name, version, statistics (pages, users, edits).
Inputs: rationale. Returns: server, base_url, language, timezone, +7 more
mediawiki_list_categoriesARead-only
List all categories in the wiki.
USE WHEN: User asks "what categories exist", "show all categories", "list available categories".
NOT FOR: Getting pages in a category (use mediawiki_get_category_members).
PARAMETERS:
prefix: Filter by category name prefix (optional)
limit: Max categories (default 50)
continue_from: Pagination token
RETURNS: Category names and page counts.
Inputs: limit, prefix, rationale, continue_from. Returns: has_more, categories, continue_from
mediawiki_list_pagesARead-only
List wiki pages with optional prefix filter.
USE WHEN: User asks "list all pages", "show pages starting with API", "what pages exist".
NOT FOR: Finding pages by content (use mediawiki_search).
PARAMETERS:
prefix: Filter by title prefix (optional)
namespace: Namespace ID (default 0 = main)
limit: Max pages (default 50)
continue_from: Pagination token from previous response
RETURNS: Page titles and IDs.
Inputs: limit, prefix, namespace, rationale, +1 more. Returns: pages, has_more, total_count, continue_from, +2 more
mediawiki_list_usersARead-only
List wiki users with optional group filtering.
USE WHEN: User asks "who are the admins", "list all users", "show active editors".
PARAMETERS:
group: Filter by group - "sysop" (admins), "bureaucrat", "bot" (optional)
active_only: Only show recently active users (default false)
limit: Max users (default 50)
continue_from: Pagination token
RETURNS: User names, groups, edit counts, and registration dates.
Inputs: group, limit, rationale, active_only, +1 more. Returns: group, users, has_more, total_count, +1 more
mediawiki_manage_categoriesADestructive
Add or remove categories from a page without editing the full content.
USE WHEN: User says "add category X to this page", "remove this from category Y", "categorize this page".
NOT FOR: Listing categories (use mediawiki_list_categories). Not for viewing category members (use mediawiki_get_category_members).
PARAMETERS:
title: Page name (required)
add: Array of category names to add (without "Category:" prefix)
remove: Array of category names to remove (without "Category:" prefix)
preview: Preview changes without saving. Omit to preview (default true, for safety); set preview=false to apply.
summary: Edit summary
RETURNS: Which categories were added, removed, already present, or not found. Includes revision ID, diff URL, and undo instructions.
NOTE: Requires authentication (bot password) to apply changes. Anonymous sessions cannot edit.
Inputs: title (required), rationale (required), add, remove, +2 more. Returns: undo, added, title, message, +8 more
mediawiki_move_pageADestructive
Move (rename) a wiki page. Creates a redirect from the old title.
USE WHEN: User says "rename the page", "move X to Y", "change the page title".
NOT FOR: Editing page content (use mediawiki_edit_page or mediawiki_find_replace).
PARAMETERS:
from: Current page title (required)
to: New page title (required)
reason: Reason for the move (optional)
no_redirect: Don't create redirect from old title (default false)
move_talk: Also move the talk page (default true)
move_subpages: Also move subpages (default false)
RETURNS: Includes revision ID, diff URL, and undo instructions.
WARNING: Requires authentication (bot password) and move permissions. Creates a redirect from the old title by default.
Inputs: to (required), from (required), rationale (required), reason, +3 more. Returns: to, from, reason, message, +3 more
mediawiki_parseARead-only
Parse wikitext and return rendered HTML.
USE WHEN: User wants to preview wikitext rendering, test markup syntax.
PARAMETERS:
wikitext: Wikitext content to parse (required)
title: Context page title for link resolution (optional)
RETURNS: Rendered HTML output.
Inputs: wikitext (required), title, rationale. Returns: html, links, message, truncated, +1 more
mediawiki_resolve_titleARead-only
RECOVERY tool when page not found due to case sensitivity or typos.
USE WHEN: User got "page not found" and suspects wrong capitalization or spelling. E.g., "module overview" should be "Module Overview".
NOT FOR: Finding pages about a topic (use mediawiki_search instead).
PARAMETERS:
title: Approximate page name (required)
fuzzy: Enable fuzzy matching for typos (default true)
max_results: Max suggestions (default 5)
RETURNS: Suggested correct page titles with confidence scores.
Inputs: title (required), fuzzy, rationale, max_results. Returns: message, page_id, exact_match, suggestions, +1 more
mediawiki_searchARead-only
Search ACROSS the entire wiki for pages containing specific text.
USE WHEN: User asks "find pages about X", "where is X documented", "search for X", or doesn't know which page contains information.
NOT FOR: Searching within a specific known page (use mediawiki_search_in_page instead).
PARAMETERS:
query: Search text (required)
limit: Max results (default 20)
RETURNS: Page titles, snippets with highlights, and relevance scores.
Inputs: query (required), limit, offset, rationale. Returns: query, results, has_more, total_hits, +1 more
mediawiki_search_and_readARead-only
Search wiki AND read the top result(s) in a single call.
USE WHEN: User asks a question about wiki content. This is the fastest path from question to answer — eliminates the search-then-read round trip.
NOT FOR: Known page titles (use mediawiki_get_page directly). Not for listing search results without reading (use mediawiki_search).
PARAMETERS:
query: Search text (required)
read_count: How many top results to read (default 1, max 5)
format: "wikitext" (default) or "html"
RETURNS: Full content of top result(s) plus remaining search hits as summaries.
Inputs: query (required), format, rationale, read_count. Returns: pages, query, message, other_hits, +1 more
mediawiki_search_in_fileARead-only
Search for text within wiki-hosted files (PDFs, text files).
USE WHEN: User asks "search the PDF for X", "find X in the uploaded document".
NOT FOR: Searching wiki pages (use mediawiki_search or mediawiki_search_in_page).
PARAMETERS:
filename: File name on wiki (required)
query: Text to search for (required)
RETURNS: Matches with page numbers (for PDFs) or line numbers.
NOTE: Supports text-based PDFs and text files (TXT, MD, CSV, JSON, XML, HTML). Scanned/image PDFs require OCR and are not supported.
Inputs: query (required), filename (required), rationale. Returns: matches, message, filename, file_type, +2 more
mediawiki_search_in_pageARead-only
Search WITHIN a known page (not across wiki).
USE WHEN: User says "find X on page Y", "does page Y mention X", "search for X in the Configuration page".
NOT FOR: Finding which page contains info (use mediawiki_search instead).
PARAMETERS:
title: Page name (required)
query: Text to find (required)
use_regex: Enable regex matching (optional)
context_lines: Lines of context around matches (default 2)
RETURNS: Matches with line numbers and surrounding context.
Inputs: query (required), title (required), rationale, use_regex, +1 more. Returns: query, title, matches, match_count
mediawiki_upload_fileADestructive
Upload a file to the wiki from base64 bytes or a URL.
USE WHEN: User says "upload this image", "add file to wiki", "import document".
PARAMETERS:
filename: Target filename on wiki (required)
file_data: Base64-encoded file contents (one of file_data or file_url required). Use this when you already have the bytes; it skips the URL-fetch path. Mutually exclusive with file_url.
file_url: Source URL for the wiki to fetch (alternative to file_data). Mutually exclusive with file_data.
text: File description page content (optional)
comment: Upload comment (optional)
ignore_warnings: Overwrite existing file (default false)
RETURNS: Upload status and file page URL. Includes revision ID, diff URL, and undo instructions.
NOTE: Requires authentication. For file_url, the URL must be publicly accessible.
SECURITY: file_data uploads bytes directly and never triggers a server-side fetch, so the allowlist/SSRF gates do not apply to that path. For file_url, the source host must be on the MEDIAWIKI_UPLOAD_ALLOWED_DOMAINS env-var allowlist (fail-closed when unset), and private/internal IPs are blocked unconditionally. Decoded file_data is capped at 100 MiB by default — matching MediaWiki's default max upload size — and is adjustable via MEDIAWIKI_MAX_UPLOAD_DATA_BYTES. ignore_warnings=true overwrites existing files; the destructive-hint annotation is set so hosts that gate destructive operations will prompt before this runs.
Inputs: filename (required), rationale (required), text, comment, +4 more. Returns: url, size, message, page_id, +3 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
The descriptions are unusually explicit, using USE WHEN and NOT FOR clauses to route between near-pairs (get_page vs get_page_summary vs get_sections vs get_page_info; search vs search_in_page vs search_in_file; find_replace vs bulk_replace; get_related vs find_similar_pages). The single-vs-batch variants (get_external_links/get_external_links_batch, get_page_info/batch_get_pages_info) are clearly demarcated. The only residual ambiguity is the dense cluster of page-content readers where overlap is inherent.
Almost everything follows a predictable mediawiki_verb_noun snake_case pattern (list_pages, get_revisions, check_links, find_replace). The main blemish is inconsistent placement of the 'batch' qualifier: batch_get_pages (prefix) versus get_external_links_batch (suffix). Naming is still highly readable and uniform overall.
At 43 tools the surface is well beyond the 25+ threshold for 'too many,' and there is real redundancy: single-vs-batch duplicates (get_external_links/get_external_links_batch, get_page_info/batch_get_pages_info), four overlapping content readers, and four search variants. Each tool is individually reasonable, but the set could be consolidated substantially.
Coverage is broad: read/search/edit/replace, categories, moves, uploads, history, terminology and translation checks, and link auditing. Gaps are minor but notable — there is no page-delete or revision-revert/rollback tool, and no protection management. Agents can work around these, so it is not a blocking gap.
Maintenance
Related MCP Connectors
Read and write your team's shared, AI-readable wiki from any MCP client.
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Related MCP Servers
- FlicenseBqualityDmaintenanceA MCP server that allows you to search and retrieve content on any wiki site using MediaWiki with LLMs 🤖. wikipedia.org, fandom.com, wiki.gg and more sites using Mediawiki are supported!227-
- AlicenseBqualityBmaintenanceA secure MCP server for interacting with MediaWiki instances, allowing users to search, read, create, and manage wiki content like pages, categories, and files. It supports both public and private wikis with comprehensive authentication for full read and write operations.19AGPL 3.0
- AlicenseAqualityBmaintenanceMCP server for controlling Miro whiteboards with AI assistants. Create and manage stickies, shapes, frames, connectors, and more.8831MIT
- AlicenseAqualityBmaintenanceMCP server for ProductPlan - enables AI assistants to interact with roadmaps, OKRs, and discovery features.503MIT